esp32.diy

TNY-360: Build an Open-Source Quadruped Robot Dog with ESP32-S3

Oct 11, 2026 · 6 min read

Advanced 348 stars 28 forks C++ NOASSERTION Updated 2026-10-04

TNY-360 quadruped robot dog — open-source frame, custom PCBs, and 12 modified servos driven by an ESP32-S3.

TL;DR The TNY-360 is a fully open-source robot dog driven by an ESP32-S3, with 12 position-feedback servos running a 200Hz kinematics loop on one core while WebSockets, UI, and orchestration run on the other. You 3D-print the frame, order the custom PCBs, modify the servos with an Op-Amp buffer circuit, and flash the ESP-IDF firmware to bring the dog to life.
What you need
  • ESP32-S3 N16R8 Module
  • 12x MG996R Servos (modified for analog position feedback)
  • 2x MG90D Micro Servos (ears)
  • PCA9685 16-Channel PWM Driver
  • OV2640 Camera Module
  • VL53L0X Time-of-Flight (Lidar) Sensor
  • LSM6DS3 6-Axis IMU
  • SSD1306 OLED Display (128x64)
  • I2S MEMS Microphone
  • I2S Speaker
  • INA219 Voltage/Current Sensor
  • 3S LiPo Battery (6x Samsung INR18650-25R cells)
  • Custom Op-Amp Buffer PCB (servo feedback)
  • Custom Control, Sensor, Brain, and Power PCBs
BoardESP32-S3 N16R8
FrameworkESP-IDF via PlatformIO
LanguageC++
LicenseCC BY-NC-SA 4.0
DifficultyAdvanced
Actuators12x MG996R + 2x MG90D servos

What You Will Build

The TNY-360 is a 12-servo quadruped robot dog — a four-legged walking machine you design, print, solder, and program yourself. Every part of the stack is open: the STL files for the body, the Gerber files for the PCBs, and the C++ firmware that runs on the ESP32-S3.

What makes it stand out from hobby servo projects is the closed-loop feedback system. Standard hobby servos are blind — you send a PWM pulse and hope the leg ended up where you wanted. The TNY-360 modifies MG996R servos with a custom Op-Amp buffer PCB that reads the servo's internal potentiometer without electrical noise, giving the firmware real-time position data at 200 Hz. The result is a robot that can detect and compensate for mechanical backlash and actuator lag at runtime.

The project is built for makers who want to understand the full system — electronics, mechanics, firmware, and motion control — not just assemble a kit.

What You Need

Hardware

The TNY-360 uses a purpose-built stack of components. Every part listed here comes from the official README and BOM.

Core compute and power

Actuators

Sensors and I/O

PCBs and Structure

Software

The full sourcing guide with links is at tny-robotics.com/docs/tny-360.

Typical use cases

Real-Time Quadruped Control

The dual-core ESP32-S3 architecture runs a strict 200 Hz kinematics loop on one core and WebSocket communication on the other, making this a practical study in embedded real-time systems.

Custom PCB and Electronics Practice

Ordering and assembling the custom Control, Sensor, Brain, Power, and Op-Amp buffer boards gives you hands-on experience with Gerber files, JST harnesses, and modular PCB design.

STEM and Block-Based Programming

TNY-Coder lets students and beginners program walking behaviors through a browser-based block interface over WebSocket, with no firmware changes needed.

Closed-Loop Servo Research

The Op-Amp position-feedback mod on MG996R servos is a reusable technique for any project that needs affordable closed-loop actuation without buying specialized hardware.

How It Works

The ESP32-S3 runs two parallel workloads on its two cores, and the firmware keeps them strictly separated:

Core 1 — "Reflex" runs a hard real-time kinematics and control loop at exactly 200 Hz. This core reads the position feedback from all 12 leg servos, runs the inverse kinematics calculations, applies backlash and latency compensation, and pushes new PWM targets to the PCA9685. Nothing else is allowed to interrupt this loop.

Core 0 — "Brain" handles everything that can tolerate variable timing: WebSocket communication with the browser UI or TNY-Coder app, OLED display updates, camera streaming from the OV2640, ToF distance readings from the VL53L0X, and IMU orientation from the LSM6DS3.

The servo modification is the most critical hardware step. A standard MG996R has an internal potentiometer that the servo's own control board reads. The Op-Amp buffer PCB taps that potentiometer output and conditions the analog signal so the ESP32-S3's ADC can read it cleanly without being corrupted by motor noise. This is what enables the 200 Hz closed loop — without feedback, the kinematics loop would be running open-eyed.

The modular PCB ecosystem (Control, Sensor, Brain, Power boards talking through JST cables) eliminates wiring harnesses and makes individual board replacement practical — a design choice aimed at both repairability and STEM education.

Build and Flash Steps

The TNY-360 build is documented in full detail on the official step-by-step guide at tny-robotics.com/docs/tny-360/build-it. Follow that guide for the authoritative assembly sequence. This section gives you a map of the major phases.

Phase 1 — Order parts and PCBs Download the BOM from the BOM/ directory. Order the custom PCBs using the Gerber files from PCBs/. Source all components including the MG996R servos, ESP32-S3 module, sensors, and battery cells.

Phase 2 — Print the frame Open the STL or 3MF files from CAD/ in your slicer. The official guide covers orientation and settings. Print all structural parts.

Phase 3 — Modify the servos This is the most involved hardware step. Each MG996R must be opened, and the Op-Amp buffer PCB must be installed to expose clean analog position feedback. The full procedure is documented in the Servo Modding Tutorial.

Phase 4 — Assemble electronics Mount the custom PCBs, connect boards via JST cables and pin headers, and install the sensors. The modular layout means each board has a defined slot; there is no free-form wiring.

Phase 5 — Flash the firmware The firmware lives in Firmware/ as a PlatformIO project written in C++ against ESP-IDF. Open the project in PlatformIO, connect your ESP32-S3, and use PlatformIO's build and upload commands. Custom sensor and actuator drivers are under Firmware/components/.

Phase 6 — Calibrate The firmware includes a smart auto-calibration routine. Mechanical endstops validate assembly, and runtime algorithms compensate for servo backlash and latency. Run calibration before attempting any walking gaits.

Phase 7 — Program and move Use TNY-Coder to send commands over WebSocket from a browser without writing code, or extend the C++ firmware directly for custom behaviors. The dorsal expansion port exposes I2C and power for add-on modules.

Ideas to Extend It and Known Limitations

Extensions the hardware is ready for

Limitations to be aware of

Verdict

The TNY-360 is one of the most complete open-source quadruped projects available for the ESP32 platform — full mechanical CAD, custom PCBs, and a well-structured ESP-IDF firmware all in one repository. The servo modification and multi-board electronics assembly make this an Advanced build, but the payoff is a robot with genuine closed-loop motion control that you understand end to end. If you can solder, run a 3D printer, and are comfortable with PlatformIO, this is a rewarding and educational long-form build.

Sources

github.comTNY-Robotics/TNY-360 — repository & README tny-robotics.comOfficial website

Facts in this article come from the project's public README and GitHub metadata at the time of writing. Images belong to their respective owners and link back to the original source.