Custom messages and services. This is the dashboard contract. Field
shapes here must match the TypeScript declarations in
openbrain-dashboard/lib/types.ts;
drift breaks the UI silently because rosbridge passes through unknown
keys as undefined.
For the human-friendly version of every shape, see
docs/api.md.
| File | Used by | Direction |
|---|---|---|
SystemHealth.msg |
openbrain_demos_health → dashboard |
publish |
MissionStatus.msg |
openbrain_demos_missions → dashboard |
publish |
Waypoint.msg |
embedded inside LoadMission.srv |
request |
ThermalZone.msg |
embedded inside SystemHealth.msg |
publish |
PowerRail.msg |
embedded inside SystemHealth.msg |
publish |
| File | Server | Caller |
|---|---|---|
LoadMission.srv |
openbrain_demos_missions |
dashboard |
SetSpeedProfile.srv |
every RobotAdapter subclass |
dashboard |
This contract is v1. Adding new fields to existing messages is
non-breaking (rosbridge JSON ignores unknowns) and may land in any
release. Removing or renaming fields requires a v2 package alongside
v1 and a coordinated dashboard PR — see
docs/api.md#versioning-policy.
colcon build --packages-select openbrain_msgs
colcon test --packages-select openbrain_msgs # rosidl schema + lint
ros2 interface show openbrain_msgs/msg/SystemHealth- Drop the file under
msg/(orsrv//action/). - Add it to the
set(msg_files ...)list inCMakeLists.txt. - If it embeds another type from this package, prefix with the package
name:
openbrain_msgs/Waypoint(the rosidl generator needs the explicit reference even for same-package nesting). - Document the shape in
docs/api.md. The dashboard maintainer should sign off on the PR if the new type is consumed there.