Select Page

Research

Scalable Multi-Servo Control

Tags

Physical Computing, Engineering, Programming, Interactive, TouchDesigner, Prototype, Arduino, ESP32, Leap Motion, GitHub

The Challenge

The challenge was to develop a scalable and versatile system for programming and controlling large arrays of hobby servos in unison. The goal was to create a reusable framework that could serve as the foundation for complex kinetic art installations, enabling the precise, choreographed movement of many individual elements.

Controlling Servos with Leap Motion Camera

My Solution & Approach

I engineered a complete hardware and software control system in two distinct phases. The initial prototype used an Arduino and a wired Serial connection to establish the foundational control logic. This system was then re-engineered around a more powerful ESP32 microcontroller, which enabled a critical upgrade to the more robust and flexible OSC over UDP communication protocol.

A key architectural decision, refined from my robotics research, was to handle all complex control logic within TouchDesigner. This proved far more efficient for creating choreographed animations and processing real-time sensor data, allowing the C++ code on the microcontroller to focus solely on executing clean, simple commands.

Choreographed Servo Movements with C++

Control System – Touchdesigner Network

Technical Highlights & Learnings

  1. Versatile Control System: Designed a flexible network in TouchDesigner that can seamlessly switch between three different input methods:

    • Real-time Gesture Control: Using a Leap Motion sensor for direct, intuitive manipulation.
    • Pre-Programmed Automation: Using TouchDesigner’s Animation COMP for precise, repeatable keyframe sequences.
    • Manual Slider Control: A simple UI for direct control over each individual servo.
  2. Scalable Multi-Actuator Control: The system was designed to drive a large number of actuators (12+ in the prototype) by pairing a microcontroller with a PCA9685 servo driver board.
  3. Efficient Control Logic: By creating choreographed movements in TouchDesigner’s animation editor instead of hard-coding them in C++, the development process became significantly faster and more intuitive.
  4. Robust Communication: Implemented the industry-standard OSC protocol over UDP for reliable, high-speed communication between the control software and the microcontroller.
  5. Rapid Physical Prototyping: Built and tested physical setups using LEGOs for rapid iteration of both individual servo control and more complex multi-servo mechanisms.
TouchDesigner Network showing Leap Motion Servo Control

Project Files

GitHub Repository: The TouchDesigner project file and C++ code for the ESP32 are available on GitHub.

Tools & Technologies Used

Software: TouchDesigner, Arduino IDE
Programming: C++ (for Arduino/ESP32)
Communication Protocols: Serial, OSC, UDP
Hardware: Arduino Uno, ESP32, PCA9685 Servo Driver, Leap Motion Sensor, EMAX ES08MA II Servos