# Ros2 Humble on Voxl2

Source: https://forum.modalai.com/topic/4876/ros2-humble-on-voxl2
Category: VOXL SDK and Software (https://forum.modalai.com/category/47/voxl-sdk-and-software)
Tags: ros
Posted: 2025-11-18 15:34:18 UTC by jmltt
Replies: 3 · Views: 2679

## jmltt · 2025-11-18 15:34:18 UTC

I have several Sentinel drones with ros2 foxy installed via voxl-ros2-foxy and I need to switch to running ros2 humble on the quads. From what I've seen there's no way to get around having to run it via docker, but I have a few questions:

1. Are there instructions on installing docker on target?  The modalai guide (https://docs.modalai.com/docker-on-voxl/) references to just use the docker instructions to install via apt, but the docker install instructions linked to require an ubuntu o.s. newer than 20.04 so I wasn't sure if it would work.

2. In switching to ros2 humble onboard the voxl2 do I need to update the dds client module and rebuild voxl-px4 and rebuild the voxl-microdds-agent as well?  I'm assuming that if they're built to work with ros2 foxy they're going to be dependent on older versions of fast-dds than what humble would be using and might not be compatible

3. Are there any example docker run commands that are recommended for running containers onboard voxl2 with proper permissions for using the networking interfaces and mounting whatever volumes ros2 would need to run and work with px4?

Basically if you guys are running ros2 humble out of docker on voxl2 what did your set-up look like and did you run into any compatibility issues?

Thanks!

## Reply by Zachary Lowell 0 · 2025-11-25 15:04:48 UTC

@jmltt said in [Ros2 Humble on Voxl2](/post/24439):
> Are there instructions on installing docker on target? The modalai guide (https://docs.modalai.com/docker-on-voxl/) references to just use the docker instructions to install via apt, but the docker install instructions linked to require an ubuntu o.s. newer than 20.04 so I wasn't sure if it would work.
> 
> 

@jmltt please find answers for your questions below:

1. Are there instructions on installing docker on target? The modalai guide (https://docs.modalai.com/docker-on-voxl/) references to just use the docker instructions to install via apt, but the docker install instructions linked to require an ubuntu o.s. newer than 20.04 so I wasn't sure if it would work. --> I always just use this file to install docker on target on the voxl2 (works for any ubuntu device as well btw): https://github.com/docker/docker-install/blob/master/install.sh

2. In switching to ros2 humble onboard the voxl2 do I need to update the dds client module and rebuild voxl-px4 and rebuild the voxl-microdds-agent as well? I'm assuming that if they're built to work with ros2 foxy they're going to be dependent on older versions of fast-dds than what humble would be using and might not be compatible -> No you do not need to reinstall the fast dds with a different instance. Keep in mind the DDS is ros2 agnostic and runs as the middleware BUT I will test this out this morning.

3. For examples the best I can do is show you what I do when running something like ros2 docker containers:

E.G: 
```      VOLUMES="-v /usr/include/modal_pipe_interfaces.h:/usr/include/modal_pipe_interfaces.h \
                -v /usr/include/modal_pipe_common.h:/usr/include/modal_pipe_common.h \
                -v /usr/include/modal_pipe_client.h:/usr/include/modal_pipe_client.h \
                -v /usr/include/c_library_v2:/usr/include/c_library_v2 \
                -v /run/mpa:/run/mpa \
                -v /usr/bin/voxl-list-pipes:/usr/bin/voxl-list-pipes \
                -v /usr/include/voxl_cutils.h:/usr/include/voxl_cutils.h \
                -v /usr/include/cJSON.h:/usr/include/cJSON.h \
                -v /usr/include/modal_pipe_deprecated.h:/usr/include/modal_pipe_deprecated.h \
                -v /usr/include/modal_pipe_interfaces.h:/usr/include/modal_pipe_interfaces.h \
                -v /usr/include/modal_pipe_common.h:/usr/include/modal_pipe_common.h \
                -v /usr/include/modal_pipe_client.h:/usr/include/modal_pipe_client.h \
                -v /usr/include/modal_start_stop.h:/usr/include/modal_start_stop.h \
                -v /usr/lib64/libvoxl_cutils.so:/usr/lib/libvoxl_cutils.so \
                -v /usr/lib64/libmodal_json.so:/usr/lib/libmodal_json.so \
                -v /usr/lib64/libmodal_pipe.so:/usr/lib/libmodal_pipe.so \
		-v /usr/lib/libgbm.so:/usr/lib/aarch64-linux-gnu/libgbm.so \
                -v /tmp:/tmp \
                -v /etc/modalai:/etc/modalai \
                -v /dev:/host/dev"

            docker run --rm -it \
                --privileged \
                --net=host \
                --ipc=host \
                ${VOLUMES} \
                -e ROS_DOMAIN_ID=$ROS_DOMAIN_ID \
                --entrypoint "/bin/bash" \
                DOCKER_IMAGE_NAME_AND_TAG -c /bin/bash
```

## Reply by Zachary Lowell 0 · 2025-11-25 15:16:08 UTC

Confirmed - can run the dds with humble running in the docker container:

```
voxl2 (M0054):~$ apt-get install voxl-microdds-agent
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  voxl-microdds-agent
0 upgraded, 1 newly installed, 0 to remove and 40 not upgraded.
Need to get 0 B/4874 kB of archives.
After this operation, 0 B of additional disk space will be used.
Get:1 file:/data/voxl-suite-offline-packages ./ voxl-microdds-agent 3.0.0-0 [4874 kB]
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package voxl-microdds-agent.
(Reading database ... 104493 files and directories currently installed.)
Preparing to unpack .../voxl-microdds-agent_3.0.0-0_arm64.deb ...
Unpacking voxl-microdds-agent (3.0.0-0) ...
Setting up voxl-microdds-agent (3.0.0-0) ...
voxl2 (M0054):~$ systemctl start voxl-microdds-agent
voxl2 (M0054):~$ systemctl status voxl-microdds-agent
● voxl-microdds-agent.service - voxl-microdds-agent
   Loaded: loaded (/usr/bin/MicroXRCEAgent; disabled; vendor preset: enabled)
   Active: active (running) since Tue 2025-11-25 15:13:37 UTC; 14s ago
 Main PID: 3370 (MicroXRCEAgent)
    Tasks: 28 (limit: 4915)
   CGroup: /system.slice/voxl-microdds-agent.service
           └─3370 /usr/bin/MicroXRCEAgent udp4 -p 8888

Nov 25 15:13:38 m0054 MicroXRCEAgent[3370]: [1764083618.308177] info     | ProxyClient.cpp    | create_datawriter        | datawriter created     | client_key: 0x00000001, datawriter_id: 0x0DF(5), publisher_id: 0x0DF(3)
Nov 25 15:13:38 m0054 MicroXRCEAgent[3370]: [1764083618.308829] info     | ProxyClient.cpp    | create_topic             | topic created          | client_key: 0x00000001, topic_id: 0x0E6(2), participant_id: 0x001(1)
Nov 25 15:13:38 m0054 MicroXRCEAgent[3370]: [1764083618.308994] info     | ProxyClient.cpp    | create_publisher         | publisher created      | client_key: 0x00000001, publisher_id: 0x0E6(3), participant_id: 0x001(1)
Nov 25 15:13:38 m0054 MicroXRCEAgent[3370]: [1764083618.309525] info     | ProxyClient.cpp    | create_datawriter        | datawriter created     | client_key: 0x00000001, datawriter_id: 0x0E6(5), publisher_id: 0x0E6(3)
Nov 25 15:13:38 m0054 MicroXRCEAgent[3370]: [1764083618.310013] info     | ProxyClient.cpp    | create_topic             | topic created          | client_key: 0x00000001, topic_id: 0x0EB(2), participant_id: 0x001(1)
Nov 25 15:13:38 m0054 MicroXRCEAgent[3370]: [1764083618.310133] info     | ProxyClient.cpp    | create_publisher         | publisher created      | client_key: 0x00000001, publisher_id: 0x0EB(3), participant_id: 0x001(1)
Nov 25 15:13:38 m0054 MicroXRCEAgent[3370]: [1764083618.310468] info     | ProxyClient.cpp    | create_datawriter        | datawriter created     | client_key: 0x00000001, datawriter_id: 0x0EB(5), publisher_id: 0x0EB(3)
Nov 25 15:13:38 m0054 MicroXRCEAgent[3370]: [1764083618.310981] info     | ProxyClient.cpp    | create_topic             | topic created          | client_key: 0x00000001, topic_id: 0x0F0(2), participant_id: 0x001(1)
Nov 25 15:13:38 m0054 MicroXRCEAgent[3370]: [1764083618.311145] info     | ProxyClient.cpp    | create_publisher         | publisher created      | client_key: 0x00000001, publisher_id: 0x0F0(3), participant_id: 0x001(1)
Nov 25 15:13:38 m0054 MicroXRCEAgent[3370]: [1764083618.311488] info     | ProxyClient.cpp    | create_datawriter        | datawriter created     | client_key: 0x00000001, datawriter_id: 0x0F0(5), publisher_id: 0x0F0(3)
voxl2 (M0054):~$ docker images
REPOSITORY                               TAG        IMAGE ID       CREATED       SIZE
ros2-image   ed11b766   1040efe3dc33   2 weeks ago   2.33GB
voxl2 (M0054):~$ docker run -it --rm --net=host --ipc=host ros2-image /bin/bash
root@m0054:/# cd
root@m0054:~# ls
root@m0054:~# source /opt/ros/humble/setup.bash
root@m0054:~# ros2 topic list
/fmu/in/obstacle_distance
/fmu/in/offboard_control_mode
/fmu/in/onboard_computer_status
/fmu/in/sensor_optical_flow
/fmu/in/telemetry_status
/fmu/in/trajectory_setpoint
/fmu/in/vehicle_attitude_setpoint
/fmu/in/vehicle_command
/fmu/in/vehicle_mocap_odometry
/fmu/in/vehicle_rates_setpoint
/fmu/in/vehicle_trajectory_bezier
/fmu/in/vehicle_trajectory_waypoint
/fmu/in/vehicle_visual_odometry
/fmu/out/battery_status
/fmu/out/failsafe_flags
/fmu/out/position_setpoint_triplet
/fmu/out/sensor_combined
/fmu/out/timesync_status
/fmu/out/vehicle_attitude
/fmu/out/vehicle_control_mode
/fmu/out/vehicle_local_position
/fmu/out/vehicle_odometry
/fmu/out/vehicle_status
/parameter_events
/rosout
```

## Reply by jmltt · 2025-12-02 20:49:15 UTC (in reply to Zachary Lowell 0)

@Zachary-Lowell-0 

Thank you for the feedback! This was very helpful
