Skip to main content

ROS2 Install

Main introduction to setting up the ROS2 Humble version environment.

tip
  • It is recommended to perform the following operations based on VNC / NoMachine remote desktop or by connecting a display.
  • The ROS2 environment is built in a Docker container. It is recommended to install and learn how to use Docker first.
  • Ubuntu is the officially preferred and primarily supported distribution for ROS2. We will build the ROS2 environment based on Docker's Ubuntu image.

Pull Docker Image

Use the docker pull command to pull the Ubuntu 22.04 Docker image.

radxa@device$
docker pull ubuntu:22.04

Write Docker Script

Use a script to start the Ubuntu 22.04 Docker container.

You need to write a startup script ros_humble.sh:

radxa@device$
vi ros_humble.sh

Add the following content to the script:

#!/bin/bash
xhost +

docker run -it \
--net=host \
--env="DISPLAY" \
--env="QT_X11_NO_MITSHM=1" \
-v /tmp/.X11-unix:/tmp/.X11-unix \
--name ros2 \
ubuntu:22.04 /bin/bash

Parameter description:

  • xhost +: Allow Docker container to access X11 server
  • -it: Run container in interactive mode
  • --net=host: Use host's network stack
  • --env="DISPLAY": Set environment variable for displaying X11 graphical interface
  • --env="QT_X11_NO_MITSHM=1": Set environment variable for Qt application display
  • -v /tmp/.X11-unix:/tmp/.X11-unix: Mount X11 Unix domain socket for displaying X11 graphical interface
  • --name ros2: Specify name for the container
  • ubuntu:22.04: Use Ubuntu 22.04 image
  • /bin/bash: Start Bash shell inside the container

Start Docker Container

Use the bash command to start the script.

radxa@device$
bash ros_humble.sh

Install Humble

Check Encoding Environment

Ensure that the environment for installing Humble supports UTF-8 encoding.

radxa@device$
locale

If the system encoding format is UTF-8, you can see similar information output in the terminal:

LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

If the terminal output information is not UTF-8 encoded, you can enter the following commands in the terminal to install and modify the encoding environment:

radxa@device$
apt update && apt install locales
locale-gen en_US en_US.UTF-8
echo "export LANG=en_US.UTF-8" >> ~/.bashrc
source ~/.bashrc

Set Software Sources and Keys

Ensure the system is in the latest environment, then enable the Ubuntu Universe repository and add ROS2 keys.

radxa@device$
apt-cache policy | grep universe
apt install software-properties-common curl -y
add-apt-repository universe
curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

If you encounter the error: curl: (7) Failed to connect to raw.githubusercontent.com port 443 after 43 ms: Connection refused Solution: Visit https://www.ipaddress.com/ to search for the raw.githubusercontent.com domain, and add the resulting IP address to the /etc/hosts file.

radxa@device$
vi /etc/hosts

Add the following content:

185.199.110.133 raw.githubusercontent.com

Then re-run the command to add ROS2 keys.

radxa@device$
curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

Add the repository to the sources list:

radxa@device$
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | tee /etc/apt/sources.list.d/ros2.list > /dev/null

Install Humble

Use the following command to install Humble full desktop version.

radxa@device$
apt update && apt upgrade
apt install ros-humble-desktop-full -y

Install ROS2 Development Tools

Use the following command to install ROS2 development tools.

radxa@device$
apt install ros-dev-tools -y

Set Environment Variables

Use the following command to set environment variables:

radxa@device$
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc

Save Docker Image

Currently, all our modifications are based on the Ubuntu 22.04 Docker container. We need to save this modified container as an image for direct use next time.

Note: If not saved as an image, you will need to reinstall the ROS2 environment when starting the container next time.

radxa@device$
docker commit ros2 ros_humble:1.0

Parameter description:

  • ros2: The previously specified container name
  • ros_humble:1.0: The name of the saved image

Wait for the commit to complete. After completion, you will see similar information output:

sha256:32288d439ffab73505d0754d4c43d8aad83210441b41553118e81ff6ab2887af

Modify Startup Script

Modify the startup image in the startup script ros_humble.sh to the image name just saved:

ros_humble.sh
#!/bin/bash

xhost +

docker run -it \
--net=host \
--env="DISPLAY" \
--env="QT_X11_NO_MITSHM=1" \
-v /tmp/.X11-unix:/tmp/.X11-unix \
ros_humble:1.0 /bin/bash

    You need to be logged into GitHub to post a comment. If you are already logged in, please ignore this message.

    Radxa-docs © 2026 by Radxa Computer (Shenzhen) Co.,Ltd. is licensed under CC BY 4.0