ROSrover1
The rover, assembled from catalogue parts: it sees, it refuses to hit things, and it tells you why it stopped.
What it doesWatches what is in front of the machine, stops it before it hits anything, and texts a human the moment it does — with the reason, the distance and which camera saw it. The same assembly runs a bench rover today and a full-size vehicle later; only the platform profile and the drivetrain driver change.
Parts
| part | kind | host | health | setup |
| drivetrain 0.1.0 | package | rover | unknown runs on `rover` — not observable from here. To confirm: systemctl is-active rosrover1-rover | configured by this product |
| esp32io 0.1.0 | firmware | board | unknown runs on `board` — not observable from here. To confirm: ros2 topic hz /range/front | |
| messaging 1.1.0 | service | cloud | up HTTP 200 /v1/messaging/health | configure |
| safety 0.2.0 | package | rover | unknown runs on `rover` — not observable from here. To confirm: systemctl is-active rosrover1-rover | configured by this product |
| vision 0.2.0 | package | rover | unknown runs on `rover` — not observable from here. To confirm: systemctl is-active rosrover1-rover | configured by this product |
Each part is configured in its own admin. This page
links to them; it does not replace them.
How they are wiredvision.observations → safety.observeThe camera tells the supervisor what is ahead. Neither imports the other.
safety.approved → drivetrain.executeONLY approved commands reach the hardware. There is deliberately no path from a navigator straight to the drivetrain.
safety.observations → messaging.notify_on_observation (across hosts — a network call)Every veto becomes a text. A machine that 'just stopped' with no record is not diagnosable.
safety.approved → esp32io.drive (across hosts — a network call)The supervisor decides; the board executes. Python to C++ over micro-ROS, joined only by the contract.
v0.1.0 · checked 2026-10-18T13:27:48+00:00