Skip to main content

Do I need to know ROS2?

For most developers: no. The Agent and Skill abstractions handle all the ROS2 complexity for you. You can build powerful robot applications without ever touching a ROS2 topic or service directly. However, if you’re a roboticist who wants low-level access to sensor data, custom motion control, or integration with other ROS2 systems, MARS gives you full access to the underlying ROS2 layer.

What is ROS2?

ROS2 (Robot Operating System 2) is a middleware framework for robotics. It provides:
  • Topics: Pub/sub messaging for streaming data (camera images, odometry, commands)
  • Services: Request/response calls for one-off operations (turn on lights, get status)
  • Actions: Long-running tasks with feedback (navigate to a point, execute a trajectory)
MARS runs ROS2 Humble on Ubuntu 22.04, with Zenoh as the DDS (networking) layer.

Architecture Overview

The Innate OS has two main package groups:

Brain (the “thinking” layer)

  • brain_client: The main orchestrator that runs agents, loads skills, and bridges to BASIC (cloud agent)
  • brain_messages: Custom message types for the brain system
  • manipulation: Behavior server for arm control using learned policies

Maurice Bot (the “body” layer)

  • maurice_bringup: Hardware initialization (cameras, battery, UART)
  • maurice_arm: Arm kinematics and motion planning (MoveIt2)
  • maurice_nav: Navigation stack (Nav2, SLAM)
  • maurice_cam: Camera drivers (OAK-D via DepthAI)
  • maurice_msgs: Custom messages for MARS hardware
  • And several more for simulation, logging, and Bluetooth provisioning

Common Use Cases

“I want to read raw camera data” → Subscribe to /oak/rgb/image_raw (sensor_msgs/Image) “I want to manually drive the robot” → Publish to /cmd_vel (geometry_msgs/Twist) “I want to check battery level” → Subscribe to /battery_state (sensor_msgs/BatteryState) “I want to move the arm to a specific position” → Use the /goto_js service or MoveIt2 interfaces (see advanced docs)

Visualization

You can visualize ROS2 data with either RViz or Flora. If you are on Linux, RViz is the standard option. If you are not on Linux, use flora.fan with the Foxglove Bridge running on MARS.

RViz (Linux)

Use RViz to inspect frames, point clouds, LiDAR, trajectories, and robot state directly from a Linux ROS2 workstation.

Flora + Foxglove Bridge (non-Linux)

If you do not have Linux, run Foxglove Bridge on the robot and connect from flora.fan: flora.dan Typical flow:
1

SSH into MARS

Connect to the robot over SSH on the same network.
2

Start Foxglove Bridge

Run the Foxglove Bridge node on MARS so topics are exposed over WebSocket.
3

Open flora.fan and connect

In your browser, open flora.fan (link above) and connect to the robot bridge endpoint.

Going Deeper

Use these ROS2 sections: