Short answers about compatibility, safety, NAOqi, older robots, licensing and what comes next.
The NAO6 (NAO V6) only. It was developed and tested on a NAO6 with body version 6.0.0 and head version 6.0.0. Older NAOs have a different head computer and are not supported.
Today, yes: nao-rs installs on top of HULKs-OS 9.0.1 (kernel 6.12 with
PREEMPT_RT) and uses its kernel drivers and its nao user. A flashable image
with nao-rs preinstalled is planned and stays compatible with what HULKs-OS
9.0.1 runs.
No. Flashing HULKs-OS replaces NAOqi. nao-rs replaces the hardware layer that NAOqi's HAL and LoLA provided.
Every motor board of a NAO6 that once ran NAOqi 2.8.7 reports configuration version 11. nao-rs accepts only version 10 by default, exactly like the HAL in HULKs-OS, until the first movement has been tested step by step on the robot: lying down, one joint, low stiffness. That is the next milestone.
No. nao-rs reads version 11 directly. A firmware downgrade or a compatibility layer in front of HAL were the alternatives and are not needed.
nao-rs doesn't serve LoLA's socket: a program links the runtime as a Rust
library instead. Its state and commands use LoLA's arrays, order and units, so
code that converts LoLA's messages keeps its conversions. HULKs' hulk runs on
nao-rs this way, with the runtime linked in instead of talking to HULA.
The guard notices within 60 ms that the runtime stopped beating, kills it and sends all-off frames itself. The motors go limp, so a standing robot falls, but no motor keeps pushing. See Safety model.
On purpose: anyone near the robot must be able to stop it, from any device on its network, even when the API is stuck. A stop can only switch motors off; re-arming needs a person on the robot.
No. Only naoctl rearm on the robot re-arms it. This is deliberate. A re-arm
doesn't wake the robot either: it stays limp until the app or an API wakes it.
Yes, under nao-rs, with the curve of Aldebaran's own fan daemon. Under HULKs-OS without nao-rs, nothing controls it.
No. nao-rs is written from scratch in Rust. Its behaviour was matched to the original software by observing it: recordings of the robot's USB and I2C traffic, and differential tests that call Aldebaran's original libraries next to the port. None of Aldebaran's files are part of nao-rs.