Concepts
Calibration & the Robot Genome
aether --calibrate walks every safe GPIO pin (BCM 4–27, excluding I2C/SPI/UART), pulses each with a positional servo sweep, and prompts you to label what moved. The result is a physical_map saved in your profile and loaded automatically next startup.
--recalibratere-runs the full walk (preservesrobot_id).--auto-calibrateruns headless with no prompts.- If a known HAT is detected, its Tier 1 adapter loads and registers capabilities automatically.
The map is distilled into a versioned configs/robot.json. Inspect it with:
$ aether --genome show
Robot Genome
ID: f47ac10b-...
Locomotion: differential_drive
Hash: a3f1d92e...
Capabilities (6)
drive_backward drive_forward emergency_stop
stop turn_left turn_right
Capabilities are derived deterministically, so a skill written for a differential_drive genome runs on every matching robot. Skills declare SKILL_REQUIRES and AETHER refuses to run any it can't satisfy — before any hardware moves.
