ROS (Robot Operating System)) is an open source robotics middleware suite, provides libraries and tools to help software developers create robot applications. It provides hardware abstraction, device drivers, libraries, visualizers, message-passing, package management, and more. ROS is licensed under an open source, BSD license.
This tutorial is compatible with the Jetson Nano 4GB, Jetson Xavier NX and Jetson AGX Xavier.
Currently (02/21/2021) the recommended ROS distribution for Jetson boards is ROS Melodic Morenia because it is optimized to run on Ubuntu 18 Bionic Beaver. More current versions of ROS are available as ROS Noetic Ninjemys and ROS 2 Foxy Fitzroy both for Ubuntu 20.04 Focal Fossa. Ubuntu Focal is not yet (02/21/2021) officially CUDA compatible and is not available on Nvidia Jetson boards.
Open the terminal by pressing Ctrl + Alt + T
or use the application launcher and search for “Terminal”.
Setup your sources.list to accept software from packages.ros.org.
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
Set up your keys
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
Update your Debian package index
sudo apt update
There are many different libraries and tools in ROS, for Jetson boards the recommend is the ROS-Desktop package which includes ROS, rqt, rviz, and robot-generic libraries. Other ROS packages such as ROS-Desktop-Full include 2D and 3D simulation tools which require more storage space and more processing power, these are not necessary in this case.
sudo apt install ros-melodic-desktop
The most convenient way is to add the ROS environment variables to the .bashrc
file so that they are loaded automatically every time a new terminal is launched.
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc && source ~/.bashrc
to install the dependencies for building ROS packages, run:
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
sudo apt install python-rosdep
sudo rosdep init && rosdep update
At this point ROS is installed and ready to run.
To install ROS packages or create our own packages it is necessary to create a catkin workspace where the packages will be stored.
mkdir -p ~/catkin_ws/src && cd ~/catkin_ws/ && catkin_make
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
we can check that everything is working correctly by starting the ROS master with the command in the terminal.
roscore
Now our Jetson is ready to compile ROS packages that we create ourselves or additional packages that we install.