The edit → build → restart loop
This is your core workflow. Every change follows the same cycle:Reading the tmux windows
Every ROS node runs inside a tmux session calledros_nodes. Each window has two panes running related nodes side by side.
Ctrl+Bthen0-6— switch windowsCtrl+Bthen←/→— switch panesCtrl+BthenD— detach (nodes keep running)
| Window | Name | Left pane | Right pane |
|---|---|---|---|
| 0 | app-bringup | App controller | Hardware bringup (UART, battery) |
| 1 | arm-recorder | Arm drivers + kinematics | Manipulation recorder |
| 2 | brain-nav | Brain client (cloud connection) | Navigation stack |
| 3 | behaviors-inputs | Behavior server (skills execution) | Input manager |
| 4 | cam-leader | Camera pipeline | UDP leader receiver (teleoperation) |
| 5 | ik-logger | Inverse kinematics solver | Telemetry logger |
| 6 | training-uninavid | On-device training node | UninaVID vision model |
What you can modify
Agents and skills (no build needed)
Files in~/agents/ and ~/skills/ are pure Python. Edit, save, restart — no compilation.
ROS2 packages (build required)
Everything in~/innate-os/ros2_ws/src/ is a ROS2 package. After editing, build:
| Package | What it controls |
|---|---|
brain_client | Cloud agent connection, agent orchestration |
maurice_bringup | Hardware init (UART, battery, LEDs) |
maurice_arm | Arm drivers, kinematics, MoveIt2 |
maurice_nav | Nav2, SLAM, path planning |
maurice_cam | Camera pipeline (OAK-D, WebRTC) |
maurice_control | App control, UDP teleoperation |
manipulation | Behavior server, policy execution |
Launch files
Launch files configure how nodes start. They live inside each package’slaunch/ directory. Edit them to change parameters, remap topics, or add new nodes.
Observability
You need to see what the robot sees. Two options.RViz (Linux)
If you’re on a Linux machine on the same network, RViz plugs directly into the ROS2 topics and gives you the full visualization stack: TF frames, point clouds, camera feeds, navigation costmaps, arm trajectories. Make sure Zenoh DDS discovery is configured so your machine can see the robot’s topics.Foxglove (all platforms)
Not on Linux? Use Foxglove. It connects over WebSocket to a Foxglove Bridge running on MARS and lets you visualize all the same data from any browser. See the dedicated Foxglove Setup guide.Diagnostics
Run hardware diagnostics to check system health:Boot sequence
Understanding what happens at power-on helps with debugging:- systemd starts
zenoh-router.service(DDS discovery layer) - systemd starts
ros-app.servicewhich runslaunch_ros_in_tmux.sh - The script creates a tmux session with 7 windows (14 ROS nodes)
- After 20 seconds, the startup chime plays
Tips
- Build only what changed.
innate build maurice_armis faster thaninnate build. - Check logs in tmux. Each pane scrolls.
Ctrl+Bthen[enters scroll mode,qexits. - Use
ros2 topic echoto inspect live data:ros2 topic echo /cmd_vel. - Use
ros2 node listto verify nodes are alive after a restart.
Reference
Innate CLI
Every command, one page.
Foxglove Setup
Browser-based ROS visualization.
ROS2 Topics
All published topics on MARS.
ROS2 Debugging
Debugging workflows.

