Skip to content

Forgevolt Hexapod

A six-legged walking robot built on an ESP32-S3 that drives 18 Dynamixel servos with inverse kinematics at 200 Hz, walking in three gaits and self-levelling on uneven ground.

  • Other
  • Open source
  • arduino
  • 3D printable

Suggested by Robotheca, created by @forgevolt (opens in a new tab), from github.com/forgevolt/Hexapod (opens in a new tab). Pinned to commit 2dc13b2 (opens in a new tab).

Hardware license
MIT (opens in a new tab)
Software license
MIT (opens in a new tab)
Commercial use
Allowed

This repository contains executable files that Robotheca doesn't check. Only run them if you trust the creator.

Which files (1 script)

Photo and 3D model

Forgevolt Hexapod, photo from its repository
Photo:@forgevolt (opens in a new tab)MITsource file (opens in a new tab)

3D preview converted from github.com/forgevolt/Hexapod at 2dc13b2, under MIT. View the original files from GitHub (4.2 MB) (opens in a new tab)

What it can do

Written by Robotheca from the project's documents.

  • Walks as a six-legged robot, with inverse kinematics solved per leg at 200 Hz.
  • Offers three walking gaits (tripod, tetrapod, ripple) selectable while walking, with step length, height and clearance adjustable from the transmitter.
  • Levels its chassis against uneven ground using an onboard IMU in balancing mode.
  • Poses the body in roll, pitch and yaw with the feet planted.
  • Shows an animated face on a 128x64 OLED that tracks the joystick and reports faults at startup.
  • Plays startup, shutdown and error tones over I2S audio and shows state through a 19-LED strip.
  • Releases servo torque after inactivity and parks itself if the radio link drops.
  • Is driven from a separate handheld transmitter over ESP-NOW.

Bill of materials

This repository has no parts list Robotheca can read yet.

Build guide

The guide appears here as you scroll.

Guide by @forgevolt (README.md), under MIT.

More guides

Wiring and electronics

Notes written by Robotheca from the project's documents.

Main parts

  • Custom ESP32-S3 controller board with 16 MB flash and 8 MB PSRAM.
  • 18 Dynamixel XC430-T240BB-T servos, three joints per leg.
  • MPU6050 IMU on I2C.
  • SH1106 128x64 monochrome OLED on I2C.
  • 19 WS2812B LEDs on a single data line.
  • I2S DAC and amplifier for 44.1 kHz stereo audio.
  • On/off power switch and USB sense input.
  • Separate handheld transmitter using ESP-NOW on WiFi channel 1.

Connections

  • Dynamixel bus uses one half-duplex line at 3 Mbaud with protocol 2.0, driven on GPIO 18 (RX), 17 (TX) and 16 (direction).
  • Display and IMU share one I2C bus on GPIO 8 (SDA) and 9 (SCL).
  • Audio I2S uses GPIO 14 (BCLK), 21 (word select) and 13 (data out).
  • LED strip data line is on GPIO 11.
  • On/off switch input is on GPIO 48 and USB sense input is on GPIO 10.
  • The authoritative pin mapping is the PinMap.h file, and the schematic is in hardware/schematic.pdf.