Install ROS 2 on the Modalix SoM DevKit
Use this guide to install Robot Operating System 2 (ROS 2) on the Modalix SoM DevKit and understand how it fits physical AI workloads.
What is ROS 2?
ROS 2 is the second-generation Robot Operating System, an open-source set of software libraries and tools for building robot and physical AI applications. It is not a monolithic operating system. It is a middleware layer that runs on Linux and lets independent robot processes, such as sensors, actuators, perception models, planners, and controllers, discover one another and exchange data.
Key features include:
- Node-based architecture. Each capability (a camera driver, a detector, a motor controller, a SLAM stack) runs as an independent node. Nodes are composed at runtime, so the same perception node can be reused across very different robots.
- DDS-based communication. ROS 2 builds on the Data Distribution Service (DDS) standard for real-time, peer-to-peer pub/sub messaging with configurable Quality-of-Service (reliability, durability, deadline, liveliness) — a hard requirement for safety-critical and time-sensitive robotics.
- Standard message types. A large catalog of common message definitions (
sensor_msgs,geometry_msgs,nav_msgs,vision_msgs, etc.) lets perception, planning, and control components from different vendors interoperate without custom glue code. - Cross-platform and real-time friendly. ROS 2 runs on Linux, supports ARM64 and x86_64, and is designed to coexist with real-time kernels and microcontroller stacks (micro-ROS).
- Rich tooling ecosystem.
rviz2for 3D visualization,rqtfor introspection,rosbag2for recording and replaying sensor streams, andros2 launchfor declarative system bring-up.
Why run ROS 2 on the Modalix SoM?
Physical AI systems, including autonomous mobile robots, drones, robotic arms, AMRs, and smart cameras with actuation, need both high-throughput neural inference and a deterministic software fabric for sensors, control, and safety. The Modalix SoM supports that combination:
- Offload perception to the MLA, keep ROS 2 on the Arm cores. Perception nodes (object detection, segmentation, depth, pose, BEV fusion) can call into the MLSoC's MLA, while ROS 2 publishers forward the results as standard
vision_msgsorsensor_msgs— no proprietary IPC required. - Single board, full stack. Camera ingest, ML inference, ROS 2 middleware, planning, and motor control can all run on the same Modalix SoM, reducing the need for a separate companion compute board.
- Power-efficient edge deployment. Modalix's performance-per-watt envelope supports battery-powered platforms such as drones, AMRs, and handheld inspection units.
- eLxr Debian base. The Modalix SoM runs an eLxr Debian-derived runtime, so standard ROS 2
aptpackages install cleanly — no cross-compilation or custom Yocto layers needed for the common case.
Prerequisites
ROS 2 installation on the Modalix SoM requires SDK release 2.1.0 or higher running on the eLxr runtime. To check or convert the runtime, see Convert to eLxr.
You also need:
- A Modalix SoM DevKit powered on and reachable over the network or serial console.
sima-cliinstalled on the DevKit.- An active internet connection on the DevKit for package download.
Install ROS 2
sima-cli provides an installer that pulls the correct ROS 2 distribution for the Modalix SoM, configures the apt sources, and installs the base packages and standard tooling.
Step 1. Install ROS 2 via sima-cli
From the Modalix shell, run:
sima@modalix:~$ sima-cli install tools/ros2
The installer:
- Add the required Debian
bookwormand ROS 2 apt sources, along with the ROS signing key. - Install build dependencies (
cmake,colcon,vcstool), Qt and OpenCV development packages, the GStreamer plugin set, and the other libraries required to build and run ROS 2 nodes on the SoM. - Install the
ros2andcolconpackages. - Append
source /usr/local/ros2/local_setup.bashto/home/sima/.bash_profileso the ROS 2 environment is loaded automatically on every login, and source it for the current shell.
Step 2. Verify the Installation
After sima-cli install tools/ros2 finishes, the ROS 2 environment is sourced in the current shell. Confirm the ros2 CLI is on the path:
sima@modalix:~$ ros2
Then run the standard talker/listener demo across two shells to confirm the DDS middleware is working end-to-end:
sima@modalix:~$ ros2 run demo_nodes_cpp talker
In a second shell on the same device:
sima@modalix:~$ ros2 run demo_nodes_py listener
The listener should print I heard: [Hello World: N] messages as the talker publishes them. ROS 2 is ready to host perception, planning, and control nodes alongside SiMa.ai ML pipelines on the Modalix SoM.