If you’re working with embedded systems in robotics, you know how tricky it can be to juggle development, security, and updates all at once. On top of that, finding a full-stack solution - from hardware to cloud - with over-the-air updates, compliance with regulations like the Cybersecurity Resilience Act (CRA), and without the lock-in of a closed-source Operating System (OS) can be a real challenge.
That’s where Torizon comes in.
Torizon is a Linux-based platform built by Toradex to make embedded development easier by handling the heavy lifting using Docker containers. It helps you bring your product to market faster - without getting bogged down by infrastructure headaches. Whether you're building smart devices, industrial systems, or anything in between, Torizon provides a solid and flexible foundation to build on.
Why Torizon Is a Great Fit for Robotics
As robotics grow more sophisticated, many developers are turning to frameworks that can handle increasingly complex robotics and automation tasks. ROS2 (Robotic Operating System) is a powerful middleware framework for building modular and scalable robotic applications due to its capabilities, support for distributed computing, and strong community. That’s why developers in industrial automation systems, and AI-driven robotics are adopting ROS2 - especially when performance, flexibility, and communication across distributed nodes are critical.
That’s why Torizon is the perfect fit for your ROS2 project. As both offer powerful capabilities on their own, their true potential shines when used together in an integrated solution. Torizon helps by making ROS2 development straightforward for embedded hardware, as well as by offering tooling and services that will help you manage and maintain your robots in the field. Moreover, Torizon provides the secure and stable foundation with containerized application management, while ROS2 brings the tools and architecture needed for advanced robotics applications. Torizon’s support for Docker makes it easy to deploy and update ROS2 nodes in a production environment. This combination allows developers to focus on innovation, rather than infrastructure, all while maintaining security, scalability, and maintainability.
How Torizon and ROS2 Communicate
You will see how this communication takes place with a quick getting started with ROS2, Torizon OS and Aquila AM69.
Open Robotics (a.k.a Open Source Robotics Foundation – OSRF) makes available ready-to-use ROS2 (and ROS1) containers in Docker Hub for its several versions and for several platforms.
Here, we will be using ROS2 in its currently latest released version: Jazzy Jalisco.
As a first step, let’s pull it to our host computer. In this example, the host computer is running a Ubuntu 22.04. We will spin two instances of the container (in two different terminals) to quickly try it out.
On terminal 1:
docker run --rm -it --net host --name ros2-01 ros:jazzy
On terminal 2:
docker run --rm -it --net host --name ros2-02 ros:jazzy
To improve the network discovery between the nodes, let’s install on each container and use the Eclipse Cyclone DDS implementation. In order to do this, we need to execute the following lines on both container instances in execution:
apt update \ && apt install -y --no-install-recommends ros-jazzy-rmw-cyclonedds-cpp \ && export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
After this, we can start publishing a message in one container and echo it in the other container. For instance, let’s publish it in the container ros2-01 from terminal 1:
ros2 topic pub /my_topic std_msgs/msg/String "{data: 'hello from ros2-01'}" publishing #1: std_msgs.msg.String(data='hello from ros2-01') publishing #2: std_msgs.msg.String(data='hello from ros2-01') publishing #3: std_msgs.msg.String(data='hello from ros2-01') …
And from the other container (ros2-02 on terminal 2), we can echo the message sent from ros2-01:
ros2 topic echo /my_topic data: hello from ros2-01 --- data: hello from ros2-01 --- data: hello from ros2-01 --- data: hello from ros2-01 ---
So, with just a few lines, we have already two ROS2 nodes communicating. Now we will do the same between the host PC and the Aquila AM69 running Torizon OS. We can keep both containers exchanging messages while we proceed to add a Toradex module and Torizon OS to the ROS2 mix.
We will be using the module Aquila AM69 Octacore 32GB Wi-Fi / Bluetooth IT V1.0A and the Aquila Development Carrier Board V1.2B.
On the module, we will flash Torizon OS 7.2.0, which is currently the latest Quarterly Release, which is a Production release.
With Torizon OS flashed to Aquila AM69, we need to connect the module to the same network as our host PC (e.g. connecting the module via an ethernet cable to the same router as your host PC),which also provides internet access. After connecting both to the same network, we can test their connection, so we are sure that one can reach the other via network. This test can be as simple as making one ping the other.
To get your computer’s and your module’s IP, the following command can be used:
ip address
Knowing the IP address of the host PC, we should be able to ping it from Aquila AM69’s terminal:
ping 192.168.0.200 PING 192.168.0.200 (192.168.0.200): 56 data bytes 64 bytes from 192.168.0.200: seq=0 ttl=64 time=2.492 ms 64 bytes from 192.168.0.200: seq=1 ttl=64 time=1.276 ms 64 bytes from 192.168.0.200: seq=2 ttl=64 time=1.970 ms ^C --- 192.168.0.200 ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 1.276/1.912/2.492 ms
Similarly, we should be able to ping Aquila AM69 from our host PC. In this case, we can either use the module’s IP address, or its host name, which Torizon OS advertises on the network:
ping aquila-am69-12593475.local PING aquila-am69-12593475.local (192.168.0.123) 56(84) bytes of data. 64 bytes from 192.168.0.123 (192.168.0.123): icmp_seq=1 ttl=64 time=1.17 ms 64 bytes from 192.168.0.123 (192.168.0.123): icmp_seq=2 ttl=64 time=4.08 ms ^C --- aquila-am69-12593475.local ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 1.174/2.625/4.077/1.451 ms
After guaranteeing that the host PC can reach the module via network and vice-versa, we can go on and make both communicate using ROS2.
We can stop the Easy Pairing service, since we will not use it for now.
sudo systemctl stop docker-compose.service
Now let’s spin up a ROS2 container on the module:
docker run --rm -it --net host --name ros2-torizon ros:jazzy
After starting it, let’s also install and configure Eclipse Cyclone DDS in the container:
apt update \ && apt install -y --no-install-recommends ros-jazzy-rmw-cyclonedds-cpp \ && export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
Since our topic /my_topic
is still publishing messages from our ros2-01 container in our PC, we can simply echo them in Aquila AM69:
root@aquila-am69-12593475:/# ros2 topic echo /my_topic data: hello from ros2-01 --- data: hello from ros2-01 --- data: hello from ros2-01 --- data: hello from ros2-01 ---
And we can see that it gets messages from our PC.
Going one step further, we can also check teleoperation by using the Turtle Sim demonstration from ROS.
To set it up, we can start the following container on the PC (please note that this container expects your computer to be executing an X server):
docker run --rm -it --name ros2 --net=host --device /dev/dri/ -e DISPLAY=$DISPLAY -v $XAUTHORITY:/root/.Xauthority:ro osrf/ros:jazzy-desktop
It will download a larger container that contains more packages. After this, we need to set up the Eclipse Cyclone DDS just like we did before:
apt update \ && apt install -y --no-install-recommends ros-jazzy-rmw-cyclonedds-cpp \ && export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
To start Turtle Sim via the container on the PC, we need to execute the following command from within the osrf/ros:jazzy-desktop
container:
ros2 run turtlesim turtlesim_node
This will display a graphical interface on our computer with a turtle in the middle:
Every time we open Turtle Sim’s GUI, it can load a different turtle drawing. Now we need to start the other part of this demo on Aquila AM69: the teleoperation. With this, we will be able to control from the little turtle on PC remotely from Aquila AM69. To do so, we can go back to our ROS2 container that is still in execution, stop the echoing of /my_topic
messages (using ctrl+c) and install the ros-jazzy-turtlesim package:
apt update && apt install -y --no-install-recommends ros-jazzy-turtlesim
After its installation, we can start the teleoperation keys ROS package for Turtle Sim demo:
ros2 run turtlesim turtle_teleop_key Reading from keyboard --------------------------- Use arrow keys to move the turtle.
Use g|b|v|c|d|e|r|t keys to rotate to absolute orientations. 'f' to cancel a rotation. 'q' to quit.
And we will be able to use the up and down arrow keys to go forward and backwards. To rotate, we can use left arrow, right arrow or the letters keys g, b, v, c, d, e, r, t. To cancel the movement, we can use the letter key f. With it, we can have some fun drawing with our turtle on our PC via teleoperation from Aquila AM69 with help of ROS2:
Hardware That Powers It: Meet The Aquila AM69
Knowing that Torizon pairs seamlessly with ROS2, let's dive into the hardware side.
Toradex offers a wide portfolio of System on Modules (SoMs) that can support your robotics project. When it comes to demanding workloads like mapping, imaging, and machine learning, the Aquila AM69 is your go-to SoM.
Designed for high-performance applications, Aquila AM69 combines strong compute power with energy efficiency in a compact form factor. Based on the TI AM69 applications processor, it’s built for edge AI, robotics, and industrial automation.
With Aquila, you gain the horsepower needed for complex robotics tasks and the flexibility to scale your solution as your project evolves.
Why Torizon Speeds Up Your Robotics Development
By leveraging Torizon’s container-based ecosystem, you don’t need to build your environment from scratch.
This means:
- Faster time to market
- Easier prototyping and experimentation
- Seamless remote management and updates
- Built-in security and compliance
From day one, you can start experimenting, deploying, and scaling - with the confidence that your system is stable, secure, and production-ready.
Conclusion: Build Smarter, Scale Faster
Combining Torizon with ROS2 gives robotics developers a powerful, secure, and scalable foundation. Whether you're prototyping or moving toward production, this integration helps you innovate faster and manage your robots more effectively.
Get to know more about how Toradex and ROS2 work together.