An Autonomous Puppeteering System
Project Idea
This project is an electronic puppeteering system inspired by Neferpitou’s Nen-based manipulation from Hunter x Hunter. It explores themes of control, autonomy, and possession through a controller entity that governs the movement of a skeletal puppet.
The system operates autonomously through pre-programmed motion sequences. I'm thinking movements like slow head tilt - pause - sudden jerk, arm lifts as if resisting then drops. Repetitive, clinical movements. Each sequence is loopable, time-based and/or triggered by presence or touch.
From here 2 things can be explored:
- The puppeteer is programmed to control the puppet.
- The puppet moves as if possessed, while the puppeteers digits/hand move out of sync which sell the whole eerie part and acts as a visual representation of invisible electronic control.
Project Architecture Overview:
This project consists of two primary entities:
- Controller Entity (Puppeteer Unit)
- Skeletal Puppet (Actuated Entity)
System Structure:
At its core, the system is built around a custom electronics architecture:
- Microcontroller: XIAO (RP2040) with custom PCB design
- Power Supply: LiPo battery with voltage regulation
- Actuation: Servo motors driving articulated joints
- Optional Inputs: Environmental sensors or manual interface devices
- Outputs: Movement, light feedback, and possible sound elements
Rather than directly mirroring user input, the system filters and transforms signals through timing logic, motion constraints, and behavioural state switching. This creates movement that feels delayed, resistant, and semi-autonomous rather than fully obedient.
The behaviour-state framework allows the puppet to transition between idle, active, disturbed, and looping motion patterns, reinforcing themes of mediated control and constrained autonomy.
The controller entity houses the electronics, power system, and logic.
The puppet receives processed signals and translates them into constrained physical motion.
Control Logic:
The project does not rely solely on fixed choreography. Instead, it operates through a flexible control framework that may include:
-
· Sensor-driven responses (light, sound, proximity)
· Manual input (joystick or button interface)
· Hybrid interaction models
Physical Fabrication:
-
· Controller Entity: Laser-cut or 3D-printed enclosure housing electronics
· Puppet Entity: Abstract skeletal structure fabricated through 3D printing and optional molding/casting
· Threads: Led strips/physical strings connecting both entities as a symbolic representation of control
Design Evolution
The project underwent multiple iterations before arriving at its final form. Each iteration explored a different method of interaction and helped define the final experience.
Trying out stuff
The initial concept explored the idea of a puppet responding to music and sound. A sound sensor was used to detect volume levels and drive servo movements. While technically feasible, the interaction lacked intentionality and expressive control.
Figuring out the UI
I wanted to explore voice-based commands. This allowed more direct interaction and gave the puppet performative qualities. Commands such as wave, bow and dance could be triggered through a browser interface.
Protyping:
I 3D printed a model from Grabcad and tied some strings to figure out the movement range, type, the no. of threads etc. So first I tried using two dowel sticks to actually use it as a puppet.
System Architecture
User↓
Web Interface
↓
WiFi Communication
↓
ESP32-S3
↓
PCA9685 Servo Driver
↓
Servo Motors
↓
Strings & Pulleys
↓
Puppet Motion
The system receives user commands through a browser-based interface. These commands are transmitted wirelessly to the ESP32-S3, which interprets the input and sends motion commands to the PCA9685 servo driver. The servos actuate a system of strings and pulleys, generating expressive puppet movements.
Digital Fabrication
Laser cutting was used to fabricate the puppet body and stage structure.
Custom pulleys and mounting components were designed and 3D printed to support the cable-driven mechanism.
Extensive sanding and finishing were performed to improve fit and assembly quality.
A custom PCB was designed using EasyEDA to integrate the ESP32-S3, power distribution and communication interfaces.
Electronics Failures
Failure 01 — Mirrored PCB
A PCB was successfully milled only to discover that the design had been mirrored before fabrication.
Failure 02 — Lifted Copper Trace
During assembly, the copper trace detached from the substrate, rendering the PCB unusable.
Failure 03 — Missing Antenna
Several hours were spent debugging WiFi connectivity before realizing that the external antenna had not been connected.
Programming
[SCREENSHOT: Arduino IDE] [SCREENSHOT: WebSocket Code] [SCREENSHOT: Serial Monitor] Command ↓ WebSocket ↓ ESP32-S3 ↓ PCA9685 ↓ Servo MotionThe ESP32-S3 hosts a WebSocket server that receives commands from a browser interface and translates them into coordinated servo movements.
Interface Development
[SCREENSHOT: Main UI] [SCREENSHOT: Voice Commands] [SCREENSHOT: Button Controls]A browser-based control interface was developed to issue commands such as wave, bow, dance and posture changes.
Assembly
[PHOTO TIMELINE] Servo Installation Pulley Installation String Routing Electronics Mounting Final AssemblyTesting & Validation
[VIDEO: Servo Calibration] [VIDEO: Arm Testing] [VIDEO: Head Testing] [VIDEO: Full Puppet Testing]Testing focused on motion quality, cable tension, servo calibration and wireless responsiveness.
Final Result
[LARGE HERO PHOTO] [FINAL DEMO VIDEO] [PHOTO GALLERY]The final prototype successfully demonstrates a gesture-controlled animatronic puppet capable of expressive performance through custom electronics and digitally fabricated mechanisms.