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.
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.

Control System – Touchdesigner Network
Technical Highlights & Learnings
-
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.
- 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.
- 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.
- Robust Communication: Implemented the industry-standard OSC protocol over UDP for reliable, high-speed communication between the control software and the microcontroller.
- Rapid Physical Prototyping: Built and tested physical setups using LEGOs for rapid iteration of both individual servo control and more complex multi-servo mechanisms.
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