nao-rs documentation
A Rust software stack for the NAO6 robot. Its own drivers for the chest board, the head and the fan replace Aldebaran's HAL and LoLA and HULKs' HULA, and a death switch stops the motors whatever the rest of the software does.
nao-rs runs on the NAO6's head computer in place of Aldebaran's hardware layer. One real-time process talks USB to the chest board and I2C to the head. A second process, the guard, watches it and takes the chest board over when it hangs. Every part is ported 1:1 on the wire from the software the robot ships with, and each one is checked against recordings of the real robot.
Status: the motors don't move yet
nao-rs reads every body and head sensor, drives the LEDs and the fan, and runs the death switch on a real NAO6. It does not command the motors yet: the robot's motor boards report configuration version 11, and nao-rs accepts them only after the motor session on the robot. Until then every motor stays limp under nao-rs. Status lists what works today.
What nao-rs is
What it replaces, why, and what works today.
Quick start
From a NAO6 on HULKs-OS to nao-rs in a few commands.
Install, flash and rollback
The installer, its health check and how to go back.
Safety model
The death switch: latch, guard, triggers and the hard power-off.
Temperatures and the fan
Fan curve, alerts, halt and the motor stop.
The brain
Voice, eyes and memory on your Mac; connect any ElevenLabs agent.
Party mode
The robot as a speaker in a Downbeat room, in step with the phones.
Architecture
Crates, threads and the cycle in HAL's order.
Hardware reference
Chest board, body sensors, head devices and fan.
LEDs
Every LED group, every index and its colour order.
REST API
HTTP/JSON on port 7702: state, LEDs, audio, cameras, the stop.
Robot API
The MessagePack API on port 7700 the brain uses.
Command-line tools
naoctl on the robot and nao-rs on your computer.
Verification
How each part is proven equal to the original.
Troubleshooting
What to check when something does not work.