Skip to content

System

Architecture Banner

ROS 2 Jazzy

ubuntu 24.04


System Architecture#


Boot Sequence#

flowchart TD
    A([Power On]) --> B[Jetson Xavier NX boots Ubuntu]
    B --> C[micipsa-hardware.service starts]
    C --> D{Hardware Devices detected?}
    D -- No --> E[Wait / Retry 3 times]
    E --> D
    D -- Yes --> F[micipsa-compose.service starts]
    F --> G[Docker Compose launches container stack]
    G --> H[actuation container]
    G --> I[localization container]
    G --> J[SLAM container]
    G --> K[navigation container]
    G --> L[... other containers]

High-Level Processing#

The robot's brain is an NVIDIA Jetson Xavier NX, a compact embedded computer that runs Ubuntu and hosts the entire ROS 2 software stack. On power-on, the Jetson boots and two systemd services take over in sequence:

  • micipsa-hardware verifies that the required hardware devices (LiDAR, camera, microcontroller) are present and connected before anything else is allowed to start. If any critical device is missing, the rest of the Micipsa stack will not launch, preventing the robot from running in a partially-initialized or unsafe state.
  • micipsa-compose depends on micipsa-hardware succeeding, and is responsible for launching the full software stack as a set of Docker containers.

Each container runs one isolated piece of the ROS 2 stack localization, navigation, SLAM, and so on, all containers communicate with each other over DDS.

Note

It is recommended to read:


Low-Level Processing#

Below the Jetson sits a microcontroller board, responsible for everything real-time and hardware-close, the tasks too time-sensitive such as:

  • Driving the DC gear motors
  • Reading the wheel encoders Data
  • Reading the IMU Raw Data

The microcontroller communicates with the Jetson over a serial USB connection. The Jetson sends motors velocity commands down to the microcontroller, which in turn streams encoder and IMU readings back up closing the loop between high-level decisions and low-level actuation.


Network#

The robot and the base station are connected through a GL.iNet router: the Jetson connects via Ethernet for a stable, low-latency link, while the base station laptop connects over WiFi. Both machines are assigned static IPs so they can reliably find each other on the network regardless of connection order or the network the router is connected to which makes testing and deploying the robot on different places much easier.

DDS runs across this network link, which means ROS 2 topics published on the robot are visible on the base station.

Note

It is recommended to read the Network Documentation for a better understanding of the network architecture and communication flow.


Base Station#

The Base Station is the operator’s workstation, it allows the human to monitor, visualize, and control the robot remotely, it doesn't run any of the robot's core stack.