Skip to main content

ROS1 Installation

Main introduction to setting up the ROS1 Noetic version environment.

tip
  • It is recommended to perform the following operations based on VNC / NoMachine remote desktop or by connecting a display.
  • The ROS 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 ROS. We will build the ROS environment based on Docker's Ubuntu image.

Pull Docker Image​

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

radxa@device$
docker pull ubuntu:20.04

Write Docker Script​

Use a script to start the Ubuntu 20.04 Docker container.

You need to write a startup script ros_noetic.sh:

radxa@device$
vi ros_noetic.sh

Add the following content to the ros_noetic.sh 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 ros1 \
ubuntu:20.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 ros1: Specify name for the container
  • ubuntu:20.04: Use Ubuntu 20.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_noetic.sh

Install Noetic​

Check Encoding Environment​

Ensure that the environment for installing Noetic 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 add Tsinghua software sources and keys.

radxa@device$
apt update && apt upgrade
apt install lsb-core
sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

Install Noetic​

Use the following command to install Noetic full desktop version.

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

Install Dependencies​

Use the following command to install Noetic dependency packages.

radxa@device$
apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential -y

Initialize rosdep​

Use the following command to initialize rosdep.

radxa@device$
rosdep init
rosdep update

If rosdep init shows the error ERROR: cannot download default sources list from: https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list Website may be down., 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 rosdep initialization command.

Set Environment Variables​

Use the following command to set environment variables:

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

Verify ROS Environment​

Enter the following command in the terminal to verify whether the ROS environment was installed successfully.

radxa@device$
roscore

If the installation is successful, you will see similar information output:

... logging to /root/.ros/log/a9473172-5731-11f0-9a87-5acb6b3cedae/roslaunch-rock-4d-spi-27211.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://rock-4d-spi:34861/
ros_comm version 1.17.4

# SUMMARY

PARAMETERS

- /rosdistro: noetic
- /rosversion: 1.17.4

NODES

auto-starting new master
process[master]: started with pid [27219]
ROS_MASTER_URI=http://rock-4d-spi:11311/

setting /run_id to a9473172-5731-11f0-9a87-5acb6b3cedae
process[rosout-1]: started with pid [27229]
started core service [/rosout]

You can use Ctrl + C to stop roscore.

Save Docker Image​

Currently, all our modifications are based on the Ubuntu 20.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 ROS environment when starting the container next time.

radxa@device$
docker commit ros1 ros_noetic:1.0

Parameter description:

  • ros1: The previously specified container name
  • ros_noetic:1.0: The name of the saved image

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

sha256:43b559a4d879c83477764730e0af90e8904e8fb8aeeeb9b653967e665bb7a7ca

Modify Startup Script​

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

#!/bin/bash

xhost +

docker run -it \
--net=host \
--env="DISPLAY" \
--env="QT_X11_NO_MITSHM=1" \
-v /tmp/.X11-unix:/tmp/.X11-unix \
ros_noetic: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