Blog:
Accelerating Robot Prototyping with ROS 2 on Toradex Hardware:
A Technical Perspective from SiBrain

Thursday, December 11, 2025
ROS
ROS
Introduction:
Solving the Technical Challenges of Modern Robotics Systems

Robotic systems present an embedded computing challenge, as they require real-time communication with low latency, multi-sensor integration, and deterministic performance, all as part of a complex middleware stack. ROS 2 (Robot Operating System 2) has become a de-facto standard for robotics due to its Data Distribution Service (DDS) communication architecture, modular package ecosystem, and support for embedded Linux.

This blog post documents our technical exploration of bringing a ROS 2-based robotic prototype onto Toradex’s Verdin iMX8M Plus System on Module, a platform well-suited for robotics due to its NPU, heterogeneous cores, and camera interfaces.

The goal of this post is not to serve as a step-by-step robotics tutorial, but rather to document our engineering evaluation of ROS 2 workflows on Toradex hardware. We highlight what worked, what didn’t, and how Yocto-based builds compare to Torizon’s containerized approach, in terms of speed, maintainability, and deployment. We also provide example commands so readers can reproduce key steps.

What Is ROS 2 and Why We Use It

ROS 2 is not an operating system in the traditional sense; rather, it is an open-source software framework that helps developers build robotic applications. You can think of it this way: Linux is the processor’s OS, while ROS 2 is the OS of the actual robot.

A reason why ROS 2 is widely used in robotics is because of its support for real-time communication. This is enabled by DDS, which allows developers to tune how messages are delivered depending on the needs of each task. ROS 2 also benefits from a large ecosystem of ready-to-use packages for navigation, perception, visualization, and hardware drivers.

SiBrain - ROS 2-based Robot Prototype

For our project, we chose ROS 2 Humble because it offers long-term support and runs well on ARM-based embedded hardware like the Toradex Verdin iMX8M Plus. Using ROS 2 made it easier to organize the robot’s software, integrate multiple sensors, and reuse existing tools while still having the flexibility to build our own features.

Starting Point: Yocto + ROS 2
For our proof-of-concept robot, we leveraged:
  • Yocto Scarthgap 5.0 with the meta-ros layer.
  • ROS 2 Humble distribution.
  • A range of onboard sensors:
    • DHT20 (temperature/humidity)
    • Ambient light sensor
    • IMU (accelerometer, gyroscope, magnetometer)
    • Ultrasonic range finders
    • 8 m indoor LiDAR
    • USB camera

We packaged the application in a Debian-style build on an Ubuntu base container, which enabled quick iteration. The robot ran successfully on the Toradex Dahlia and Mallow carrier board with the Verdin iMX8M Plus System on Module.

Mallow Carrier Board with Verdin iMX8M Plus
Challenges with Yocto
We started with Yocto as our embedded developer team already had prior Yocto Project experience. However, while Yocto provided flexibility, it also introduced complexity:
  • Kernel patching & driver integration were needed for custom sensors.
  • Maintaining custom Yocto layers required significant overhead.
  • System updates had to be manually managed.

Although we achieved functional results, it became clear we were duplicating tooling that Toradex already provides through Torizon OS.

Transition to Torizon OS

Torizon OS is Toradex’s open-source industrial Linux platform, built on Yocto but designed for ease of development and maintenance.

Key advantages we realized when migrating our ROS 2 robot to Torizon:
  1. Stable Base OS
    • Long-term support (LTS) with regular security patches.
    • No need to maintain custom Yocto builds.
  2. Containerized Deployment
    • Encapsulated ROS 2 stack in Docker containers.
    • Eliminated conflicts with the base OS.
    • Identical environments across development and deployment devices.
  3. Developer-Friendly Tooling
  4. Future-Proof with OTA Updates

With this, iteration cycles shrank drastically. Instead of rebuilding entire Yocto images, we now develop inside an Ubuntu-based ROS container and deploy via Torizon in minutes.

ROS 2 on Toradex Torizon
Running Custom and Prebuilt ROS 2 Packages on Toradex Torizon
Thanks to Docker support in Torizon, running both prebuilt and custom ROS 2 packages is straightforward. Below is a step-by-step guide:
  1. Prerequisites
  2. Flash Torizon OS
    • Use Toradex Easy Installer to flash Torizon OS from the online server.
    • Boot the board and open the debug console.
    • Login:
      • Username: torizon
      • Password: torizon
  3. Running a Prebuilt ROS 2 Package

    # Step 1: Pull Sibrain’s prebuilt ROS 2 base image
    docker pull sibrain/rosbase
    # Step 2: Run container with host networking
    docker run --network host -it sibrain/rosbase:latest
    # Step 3: Setup ROS environment
    source /opt/ros/humble/setup.bash 
    # Step 4: Run demo talker node
    ros2 run demo_nodes_py talker
    From your host PC (on the same network):
    ros2 topic list  
    ros2 topic echo /chatter
    
  4. Running a Custom ROS 2 Package
    We use two containers:
    • rosbase → ROS setup container
    • hello_ros → Custom package container
    # Step 1: Pull required images
    docker pull sibrain/rosbase
    docker pull sibrain/hello_ros  
    
    # Step 2: Start containers
    docker run -d --name rosbase_running --network host -v ros_opt:/opt -it sibrain/rosbase:latest  
    docker run -d --name hello_ros --network host -v ros_opt:/opt -it sibrain/hello_ros  
    
    # Step 3: Build custom ROS package
    docker exec -it hello_ros bash  
    cd src/  
    source /opt/ros/humble/setup.bash  
    colcon build  
    source install/setup.bash  
    
    # Step 4: Run custom node
    ros2 run ros_py_pkg py_node  
    From your host PC:
    ros2 topic list  
    ros2 topic echo /helloros  
    

This workflow enables rapid testing of both generic and application-specific ROS packages on Toradex hardware.

Lessons Learned

For robotics teams starting with Toradex hardware, we strongly recommend using Torizon OS with ROS 2 containers to accelerate prototyping and achieve faster time-to-market. Torizon OS abstracted complexity by providing faster prototyping, maintained updates, and OTA deployment. This would not have been possible if we had followed our initial approach to use Yocto builds. Additionally, ROS 2 containers offered reproducibility, portability, and minimal integration effort.

What’s Next
SiBrain is working with Toradex to:
  • Publish ROS 2 containers in the Torizon Demo Gallery.
  • Provide a ROS 2 template for the Torizon IDE.
  • Showcase upcoming demos at trade events, including a ROS 2 drone prototype.

With ROS 2 + Torizon on Toradex hardware, you can focus on robot intelligence and innovation instead of infrastructure maintenance.

Learn More

We also recommend reading the How Torizon and ROS 2 Empower your Robotics Projects blog post to get a deeper look at how you can start your ROS 2 project with Torizon and SiBrain’s blog post on their step by step development process for the robot prototype.

Author:

Leave a comment

Please login to leave a comment!

Get in Touch with Our Experts


Latest Blog

Tuesday, December 16, 2025
Bringing Displays to Life: Developing a MIPI DSI Panel Driver for Linux
Tuesday, July 8, 2025
定制 Linux Kernel Driver 编译示例
Wednesday, July 2, 2025
Deep Dive into the i.MX 95 NPU and Vision Pipeline:
Unlocking Next-Gen Edge AI Performance
Have a Question?