Edit on Github

Installing ROS2 via Debian Packages

Debian packages for ROS 2 Crystal (the latest release) and ROS 2 Bouncy are available for Ubuntu Bionic; packages for ROS 2 Ardent are available for Ubuntu Xenial.


Setup Locale

Make sure you have a locale which supports UTF-8. If you are in a minimal environment, such as a docker container, the locale may be something minimal like POSIX. We test with the following settings. It should be fine if you’re using a different UTF-8 supported locale.

sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8

Setup Sources

You will need to add the ROS 2 apt repositories to your system. To do so, first authorize our GPG key with apt like this:

sudo apt update && sudo apt install curl gnupg2 lsb-release
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

And then add the repository to your sources list:

sudo sh -c 'echo "deb [arch=amd64,arm64] http://packages.ros.org/ros2/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list'

Install ROS 2 packages

First set an environment variable for the ROS 2 release you want to install so it can be used in other commands.

export CHOOSE_ROS_DISTRO=crystal  # or bouncy or ardent
sudo apt update

Desktop Install (Recommended): ROS, RViz, demos, tutorials.

sudo apt install ros-$CHOOSE_ROS_DISTRO-desktop

ROS-Base Install (Bare Bones): Communication libraries, message packages, command line tools. No GUI tools.

sudo apt install ros-$CHOOSE_ROS_DISTRO-ros-base

See specific sections below for how to also install the ros1_bridge, TurtleBot packages, or alternative RMW packages.

Environment setup

(optional) Install argcomplete

ROS 2 command line tools use argcomplete to autocompletion. So if you want autocompletion, installing argcomplete is necessary.

Ubuntu 18.04

sudo apt install python3-argcomplete

Ubuntu 16.04 (argcomplete >= 0.8.5)

To install argcomplete on Ubuntu 16.04 (Xenial), you’ll need to use pip, because the version available through apt will not work due to a bug in that version of argcomplete:

sudo apt install python3-pip
sudo pip3 install argcomplete

Sourcing the setup script

Set up your environment by sourcing the following file.

source /opt/ros/$CHOOSE_ROS_DISTRO/setup.bash

You may want to add this to your .bashrc.

echo "source /opt/ros/$CHOOSE_ROS_DISTRO/setup.bash" >> ~/.bashrc

Install additional RMW implementations

By default the RMW implementation FastRTPS is used. If using Ardent OpenSplice is also installed.

To install support for OpenSplice or RTI Connext on Bouncy:

sudo apt update
sudo apt install ros-$CHOOSE_ROS_DISTRO-rmw-opensplice-cpp # for OpenSplice
sudo apt install ros-$CHOOSE_ROS_DISTRO-rmw-connext-cpp # for RTI Connext (requires license agreement)

By setting the environment variable RMW_IMPLEMENTATION=rmw_opensplice_cpp you can switch to use OpenSplice instead. For ROS 2 releases Bouncy and newer, RMW_IMPLEMENTATION=rmw_connext_cpp can also be selected to use RTI Connext.

If you want to install the Connext DDS-Security plugins please refer to this page.

University, purchase or evaluation options are also available for RTI Connext.

Install additional packages using ROS 1 packages

The ros1_bridge as well as the TurtleBot demos are using ROS 1 packages. To be able to install them please start by adding the ROS 1 sources as documented here.

If you’re using Docker for isolation you can start with the image ros:melodic or osrf/ros:melodic-desktop (or Kinetic if using Ardent). This will also avoid the need to setup the ROS sources as they will already be integrated.

Now you can install the remaining packages:

sudo apt update
sudo apt install ros-$CHOOSE_ROS_DISTRO-ros1-bridge

The turtlebot2 packages are available in Bouncy but not Crystal.

sudo apt install ros-$CHOOSE_ROS_DISTRO-turtlebot2-*

Build your own packages

If you would like to build your own packages, refer to the tutorial "Using Colcon to build packages".