Who is this for?

This is an introductory topic for robotics and edge developers who want to get started with making a Robot Operating System 2 (ROS 2) system discoverable and callable by other devices and AI agents using Device Connect, without changing the ROS 2 application itself.

What will you learn?

Upon completion of this Learning Path, you will be able to:

  • Identify how a Device Connect adapter bridges a containerized ROS 2 system to a Device Connect network.
  • Set up ROS 2 in Docker and the Device Connect Python packages on an Arm-based Linux machine.
  • Run the adapter in device-to-device (D2D) mode and call read-only ROS 2 inspection remote procedure calls (RPCs) from a Python client.
  • Describe how deployment profiles map the same adapter onto real hardware such as a Raspberry Pi 5 with a camera.

Prerequisites

Before starting, you will need the following:

  • An Arm-based Linux machine, such as a Raspberry Pi 5, an Arm cloud instance, or an Arm-based laptop, running Ubuntu 22.04 or later
  • Basic familiarity with Python, the Linux command line, and ROS 2 concepts such as nodes and topics

Summary

AI-assisted

This summary was drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.

Close
?
You’ll expose a containerized ROS 2 system on Arm-based Linux as a discoverable Device Connect device. You’ll see how the Device Connect adapter wraps ROS 2 commands as RPCs without changing the application. First, you’ll start a ROS 2 Humble container, install the Device Connect packages, and run the adapter in D2D mode. Then, you’ll inspect the ROS 2 graph from a Python client and explore profiles for a Raspberry Pi 5 camera or robot.

Frequently asked questions

AI-assisted

These FAQs were drafted with an approved AI-assisted workflow and reviewed by Arm contributors before publication. Human technical review remains part of the process so the final page reflects engineering rigor, accuracy, and Arm editorial standards.

Close
?
How do I confirm that I’m running on the right architecture before starting?
Run uname -m on your Arm-based Linux host. You should see aarch64.
What should I see to confirm that the ROS 2 container is working?
After starting the demo publisher, run docker exec ros2_test bash -lc 'source /opt/ros/humble/setup.bash && ros2 node list && ros2 topic list'. You should see /chatter, /parameter_events, and /rosout. You can expect an empty node list because the publisher runs as a hidden node.
How do I know that the adapter is running in D2D mode correctly?
Look for D2D mode: skipping registry registration, using presence announcements in the adapter log. Then, run .venv/bin/python client.py with the client environment settings. You should discover rpi5-d2d, and get_ros_topics should return /chatter.
Which profile should I use if I’m testing without a robot attached?
Use rpi5 with ROS_CONTAINER=ros2_test and WORKSPACE_SETUP=/opt/ros/humble/setup.bash. You can validate the shared inspection RPCs without PuppyPi hardware. You can expect ros_ok: false in get_status because the robot packages are absent.
Which profile should I use for a Raspberry Pi 5 camera?
Use rpi_camera for the Raspberry Pi 5 camera example. Run ./ros2-device-connect/start_camera_ros2.sh to start the pi_ros container and /image_raw publisher, then run DEVICE_PROFILE=rpi_camera ./ros2-device-connect/start_d2d.sh. For other hardware, create or edit a profiles/<name>.env file to select the driver, container, and ROS 2 setup scripts.
Next