Not yet verified on hardware. - shared/HexapodProtocol: CmdPacket (now 20 bytes, adds remote_roll / remote_pitch), FLAG_* bits and radio settings as the single protocol definition; static payload size = sizeof(CmdPacket) on both radios. - robot: use the shared protocol; vx = forward (harness w/x <-> q/e); InputMapper adds remote tilt on top of the right stick when FLAG_REMOTE_GYRO is set, and robot.ino no longer zeroes stick roll/pitch when it's off. - remote (Teensy 4.1): Sticks (calibration, EEPROM), RemoteIMU, RemoteState (interlocks, link-loss disarm, smoothing), PacketBuilder, RadioLink, NextionUI, SerialConsole. - CLAUDE.md, README.md, remote/README.md, remote/NEXTION.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Hexapod
A six-legged walking robot (Teensy 4.0) and its handheld remote (Teensy 4.1 + Nextion touchscreen), linked over nRF24L01.
robot/ robot firmware: IK, gait, body pose, IMU stabilization, state machine
remote/ remote firmware: 2 x 3-axis sticks, MPU6050 tilt, Nextion UI, RF24 TX
shared/ HexapodProtocol: the CmdPacket wire format + radio settings used by both
scripts/ PlatformIO helper (per-environment sketch folder)
Build (PlatformIO)
pio run # build both
pio run -e robot -t upload
pio run -e remote -t upload
pio device monitor -e robot
Where to go next
- robot/README.md: placeholder geometry to measure, the bench-check checklist, and the serial test harness for driving the robot without a remote.
- remote/README.md: wiring, control scheme, stick calibration, and the remote's serial console.
- remote/NEXTION.md: how to build the touchscreen HMI.
- shared/HexapodProtocol/HexapodProtocol.h: the protocol. Change it only by reflashing both boards.