Here you will learn how to install ROS Noetic on Ubuntu 20.04. Specifically, you will learn how to set up the official ROS repo, add official ROS keyring to get authentic ROS packages, and set up ROS environment.
Contents
ROS Noetic & Ubuntu 20.04
Robot Operating System (ROS or in lowercase ros) is the most widely used framework to program robots, more than 50% robots run on ROS. Targeted to Ubuntu 20.04, ROS Noetic Ninjemys is the latest and 13th ROS LTS distribution. It also marks the last ROS 1 release; ROS 2 will become the new normal. It was released on May 23, 2020 and supported until May 2025. The last release was ROS Melodic and will reach end of support in May 2023. The architecture ROS Noetic supported are amd64, armhf, and arm64. Most of our computers will be running on the amd64 architecture, so we should be fine.
Ubuntu 20.04 is the latest Ubuntu LTS and has code name Focal Fossa. It has been released in April 2020 and is supported for 5 years until April 2025 (standard support). For ROS users, Ubuntu 20.04 features Python 3 and if you are using ROS Noetic, you will need to fix the errors and warnings.
Before Installing ROS Noetic
You should have Ubuntu 20.04 installed on your machine. Otherwise, you can still use Docker for ROS Noetic installation. If you cannot upgrade to 20.04 or install 20.04, which means you are stuck with 18.04 unfortunately, we recommend you continue using or installing ROS Melodic.
You should also have root access in order to install Noetic system wide. Installing just for one normal non-root account is not supported.
Step 1 — Set up ROS Noetic repo for Ubuntu 20.04
To install Noetic on Ubuntu 20.04, first we will need to add the official ROS Noetic repo to sources.list
. Instead of adding directly to /etc/apt/sources.list
, we will create a new list file ros-noetic.list
. Note that this is different from the official wiki article as ros-latest.list
won’t stay true if there is a new release of ROS.
echo "deb http://packages.ros.org/ros/ubuntu focal main" | sudo tee /etc/apt/sources.list.d/ros-focal.list
After running the command above, you will see the output: deb http://packages.ros.org/ros/ubuntu focal main
.
Step 2 — Add official ROS keyring
Next, we will need to add the ROS Noetic keyring to get authenticated ROS packages to install on your Ubuntu 20.04 system and avoid man-in-middle attack. There are two ways to add the official key, and you can choose any of them. Choose the first one if you are in doubt.
The first is to use apt-key
to add the key to be downloaded from Ubuntu key server. Note that if this does not work, you can also try to replace hkp://keyserver.ubuntu.com:80
with hkp://pgp.mit.edu:80
.
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
If you see the following output starting with executing, it means the key is successfully added. As you can see, the key is issued by Open Robotics, which is the maintainer of ROS. Another detail is that apt-key
downloads the key to the directory tmp
and the key will be removed automatically.
Executing: /tmp/apt-key-gpghome.mdMVphTCAR/gpg.1.sh --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 gpg: key F42ED6FBAB17C654: public key "Open Robotics info@osrfoundation.org" imported gpg: Total number processed: 1 gpg: imported: 1
The second way is to use curl
to download the official ROS key and add it locally. This is preferred if you are trying to install Noetic on a computer that has no internet access, or you are behind a proxy server.
curl -sSL 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xC1CF6E31E6BADE8868B172B4F42ED6FBAB17C654' | sudo apt-key add -
If you see output “OK”, the key is successfully added.
Step 3 — Update ROS package index
Next, we will need to get the ROS Noetic package information from the repository we just added using apt update
.
sudo apt update
You will see output like the following, especially the text in bold:
Hit:1 http://security.ubuntu.com/ubuntu focal-security InRelease Hit:2 http://dl.google.com/linux/chrome/deb stable InRelease Hit:3 http://packages.ros.org/ros/ubuntu focal InRelease Hit:4 http://archive.ubuntu.com/ubuntu focal InRelease Hit:5 https://download.docker.com/linux/ubuntu bionic InRelease Hit:6 http://archive.ubuntu.com/ubuntu focal-updates InRelease Hit:7 http://archive.ubuntu.com/ubuntu focal-backports InRelease Reading package lists… Done Building dependency tree Reading state information… Done 48 packages can be upgraded. Run 'apt list --upgradable' to see them.
Step 4 — Install ROS Noetic package
Now we are ready to install Noetic on Ubuntu 20.04 after all the preparation work. Like Ubuntu’s ubuntu-dektop
, ubuntu-desktop-mini
packages, ROS comes with metapackages for you to install.
The four officially documented ROS Noetic metapackages are:
- ros-noetic-desktop-full
- ros-noetic-desktop
- ros-noetic-ros-base
- ros-noetic-ros-core
If you installed the Ubuntu desktop version, you would want to install ros-noetic-desktop-full
with all the desktop packages. This metapackage is what we run here. But occasionally, if you are installing on a robot that does not have to have any GUI, you want to install ros-noetic-ros-base
to save some space and avoid some ROS packages using your CPU and memory resources. In the following, I will explain each ROS metapackage.
Install ros-noetic-desktop-full
The package ros-noetic-desktop-full
includes all the packages in ros-noetic-desktop
and also the perception (ros-noetic-perception
) and simulation (ros-noetic-simulators
) packages.
To install ros-noetic-desktop-full
, run
sudo apt install ros-noetic-desktop-full
After you run the command above, you will see the following output. As you can see, 992 new packages will be installed and takes 2.7 GB space. I paste the output after the screenshot just for your reference.
Press Y and enter or simply press enter to continue installing. As this desktop-full
metapackage depends on a lot of other messages, this whole installation will take about 10 minutes.
vh@varhowto-com:~$ sudo apt install ros-noetic-desktop-full Reading package lists… Done Building dependency tree Reading state information… Done The following additional packages will be installed: autoconf automake autopoint autotools-dev blt bzip2-doc cmake cmake-data comerr-dev cpp-8 cython3 debhelper default-libmysqlclient-dev dh-autoreconf dh-strip-nondeterminism docutils-common dwz fltk1.3-doc fluid fonts-lato fonts-lyx freeglut3 freeglut3-dev gazebo11 gazebo11-common gazebo11-plugin-base gcc-8 gcc-8-base gdal-data gettext gfortran gfortran-8 gfortran-9 gir1.2-gtk-2.0 gir1.2-harfbuzz-0.0 google-mock googletest graphviz hddtemp hdf5-helpers ibverbs-providers icu-devtools ignition-tools intltool-debian javascript-common krb5-multidev libaec-dev libaec0 libann0 libapr1 libapr1-dev libaprutil1 libaprutil1-dev libarchive-cpio-perl libarchive-zip-perl libarmadillo-dev libarmadillo9 libarpack2 libarpack2-dev libassimp-dev libassimp5 libassuan-dev libatk-bridge2.0-dev libatk1.0-dev libatspi2.0-dev libavcodec-dev libavdevice-dev libavdevice58 libavfilter-dev libavformat-dev libavresample-dev libavresample4 libavutil-dev libblas-dev libblas3 libblkid-dev libboost-all-dev libboost-atomic-dev libboost-atomic1.71-dev libboost-atomic1.71.0 libboost-chrono-dev libboost-chrono1.71-dev libboost-chrono1.71.0 libboost-container-dev libboost-container1.71-dev libboost-container1.71.0 libboost-context-dev libboost-context1.71-dev libboost-context1.71.0 libboost-coroutine-dev libboost-coroutine1.71-dev libboost-coroutine1.71.0 libboost-date-time-dev libboost-date-time1.71-dev libboost-dev libboost-exception-dev libboost-exception1.71-dev libboost-fiber-dev libboost-fiber1.71-dev libboost-fiber1.71.0 libboost-filesystem-dev libboost-filesystem1.71-dev libboost-graph-dev libboost-graph-parallel-dev libboost-graph-parallel1.71-dev libboost-graph-parallel1.71.0 libboost-graph1.71-dev libboost-graph1.71.0 libboost-iostreams-dev libboost-iostreams1.71-dev libboost-locale-dev libboost-locale1.71-dev libboost-log-dev libboost-log1.71-dev libboost-log1.71.0 libboost-math-dev libboost-math1.71-dev libboost-math1.71.0 libboost-mpi-dev libboost-mpi-python-dev libboost-mpi-python1.71-dev libboost-mpi-python1.71.0 libboost-mpi1.71-dev libboost-mpi1.71.0 libboost-numpy-dev libboost-numpy1.71-dev libboost-numpy1.71.0 libboost-program-options-dev libboost-program-options1.71-dev libboost-program-options1.71.0 libboost-python-dev libboost-python1.71-dev libboost-python1.71.0 libboost-random-dev libboost-random1.71-dev libboost-random1.71.0 libboost-regex-dev libboost-regex1.71-dev libboost-regex1.71.0 libboost-serialization-dev libboost-serialization1.71-dev libboost-serialization1.71.0 libboost-stacktrace-dev libboost-stacktrace1.71-dev libboost-stacktrace1.71.0 libboost-system-dev libboost-system1.71-dev libboost-system1.71.0 libboost-test-dev libboost-test1.71-dev libboost-test1.71.0 libboost-thread-dev libboost-thread1.71-dev libboost-timer-dev libboost-timer1.71-dev libboost-timer1.71.0 libboost-tools-dev libboost-type-erasure-dev libboost-type-erasure1.71-dev libboost-type-erasure1.71.0 libboost-wave-dev libboost-wave1.71-dev libboost-wave1.71.0 libboost1.71-dev libboost1.71-tools-dev libbullet-dev libbullet2.88 libbz2-dev libcaf-openmpi-3 libcairo-script-interpreter2 libcairo2-dev libcdt5 libcfitsio-dev libcfitsio-doc libcfitsio8 libcgraph6 libcharls-dev libcharls2 libclang1-10 libcoarrays-dev libcoarrays-openmpi-dev libconsole-bridge-dev libconsole-bridge0.4 libcroco3 libcurl4-openssl-dev libdap-dev libdap25 libdapclient6v5 libdapserver7v5 libdatrie-dev libdbus-1-dev libdc1394-22 libdc1394-22-dev libdebhelper-perl libdouble-conversion3 libegl-dev libegl1-mesa-dev libeigen3-dev libepoxy-dev libepsilon-dev libepsilon1 libevent-core-2.1-7 libevent-dev libevent-extra-2.1-7 libevent-openssl-2.1-7 libevent-pthreads-2.1-7 libexif-dev libexif-doc libexpat1-dev libfabric1 libffi-dev libfile-stripnondeterminism-perl libflann-dev libflann1.9 libfltk-cairo1.3 libfltk-forms1.3 libfltk-gl1.3 libfltk-images1.3 libfltk1.3 libfltk1.3-dev libfontconfig1-dev libfreeimage-dev libfreeimage3 libfreetype-dev libfreetype6-dev libfreexl-dev libfreexl1 libfribidi-dev libfyba-dev libfyba0 libgazebo11 libgazebo11-dev libgcc-8-dev libgdal-dev libgdal26 libgdcm-dev libgdcm3.0 libgdk-pixbuf2.0-dev libgeos-3.8.0 libgeos-c1v5 libgeos-dev libgeotiff-dev libgeotiff5 libgfortran-8-dev libgfortran-9-dev libgfortran5 libgif-dev libgl-dev libgl1-mesa-dev libgl2ps-dev libgl2ps1.4 libgles-dev libgles1 libglew-dev libglew2.1 libglib2.0-dev libglib2.0-dev-bin libglu1-mesa-dev libglvnd-dev libglx-dev libgpg-error-dev libgpgme-dev libgphoto2-dev libgraphite2-dev libgssrpc4 libgtest-dev libgtk-3-dev libgtk2.0-dev libgts-0.7-5 libgts-bin libgts-dev libgvc6 libgvpr2 libharfbuzz-dev libharfbuzz-gobject0 libhdf4-0-alt libhdf4-alt-dev libhdf5-103 libhdf5-cpp-103 libhdf5-dev libhdf5-mpi-dev libhdf5-openmpi-103 libhdf5-openmpi-dev libhwloc-dev libhwloc-plugins libhwloc15 libibverbs-dev libibverbs1 libice-dev libicu-dev libignition-cmake2-dev libignition-common3 libignition-common3-av libignition-common3-av-dev libignition-common3-core-dev libignition-common3-dev libignition-common3-events libignition-common3-events-dev libignition-common3-graphics libignition-common3-graphics-dev libignition-common3-profiler libignition-common3-profiler-dev libignition-fuel-tools4 libignition-fuel-tools4-dev libignition-math6 libignition-math6-dev libignition-msgs5 libignition-msgs5-dev libignition-tools-dev libignition-transport8 libignition-transport8-core-dev libignition-transport8-dev libignition-transport8-log libignition-transport8-log-dev libilmbase-dev libilmbase24 libjbig-dev libjpeg-dev libjpeg-turbo8-dev libjpeg8-dev libjs-jquery libjs-jquery-ui libjson-c-dev libjsoncpp-dev libjsoncpp1 libjxr0 libkadm5clnt-mit11 libkadm5srv-mit11 libkdb5-9 libkml-dev libkmlbase1 libkmlconvenience1 libkmldom1 libkmlengine1 libkmlregionator1 libkmlxsd1 libkrb5-dev liblab-gamut1 liblapack-dev liblapack3 libldap2-dev liblept5 libllvm10 liblog4cxx-dev liblog4cxx10v5 libltdl-dev liblz4-dev liblzma-dev libmail-sendmail-perl libminizip-dev libminizip1 libmount-dev libmpx2 libmysqlclient-dev libnetcdf-c++4 libnetcdf-cxx-legacy-dev libnetcdf-dev libnetcdf15 libnl-3-dev libnl-route-3-dev libnorm-dev libnuma-dev libodbc1 libogdi-dev libogdi4.1 libogg-dev libogre-1.9-dev libogre-1.9.0v5 libopenal-data libopenal1 libopencv-calib3d-dev libopencv-calib3d4.2 libopencv-contrib-dev libopencv-contrib4.2 libopencv-core-dev libopencv-core4.2 libopencv-dev libopencv-dnn-dev libopencv-dnn4.2 libopencv-features2d-dev libopencv-features2d4.2 libopencv-flann-dev libopencv-flann4.2 libopencv-highgui-dev libopencv-highgui4.2 libopencv-imgcodecs-dev libopencv-imgcodecs4.2 libopencv-imgproc-dev libopencv-imgproc4.2 libopencv-ml-dev libopencv-ml4.2 libopencv-objdetect-dev libopencv-objdetect4.2 libopencv-photo-dev libopencv-photo4.2 libopencv-shape-dev libopencv-shape4.2 libopencv-stitching-dev libopencv-stitching4.2 libopencv-superres-dev libopencv-superres4.2 libopencv-ts-dev libopencv-video-dev libopencv-video4.2 libopencv-videoio-dev libopencv-videoio4.2 libopencv-videostab-dev libopencv-videostab4.2 libopencv-viz-dev libopencv-viz4.2 libopencv4.2-java libopencv4.2-jni libopenexr-dev libopenexr24 libopengl-dev libopengl0 libopenjp2-7-dev libopenmpi-dev libopenmpi3 libopenni-dev libopenni-sensor-pointclouds0 libopenni0 libopenni2-0 libopenni2-dev liborocos-kdl-dev liborocos-kdl1.4 libpango1.0-dev libpathplan4 libpcl-apps1.10 libpcl-common1.10 libpcl-dev libpcl-features1.10 libpcl-filters1.10 libpcl-io1.10 libpcl-kdtree1.10 libpcl-keypoints1.10 libpcl-ml1.10 libpcl-octree1.10 libpcl-outofcore1.10 libpcl-people1.10 libpcl-recognition1.10 libpcl-registration1.10 libpcl-sample-consensus1.10 libpcl-search1.10 libpcl-segmentation1.10 libpcl-stereo1.10 libpcl-surface1.10 libpcl-tracking1.10 libpcl-visualization1.10 libpcre16-3 libpcre2-16-0 libpcre2-dev libpcre2-posix2 libpcre3-dev libpcre32-3 libpcrecpp0v5 libpgm-dev libpixman-1-dev libpmix2 libpng-dev libpng-tools libpoco-dev libpococrypto62 libpocodata62 libpocodatamysql62 libpocodataodbc62 libpocodatasqlite62 libpocoencodings62 libpocofoundation62 libpocojson62 libpocomongodb62 libpoconet62 libpoconetssl62 libpocoredis62 libpocoutil62 libpocoxml62 libpocozip62 libpoppler-dev libpoppler-private-dev libpostproc-dev libpq-dev libpq5 libproj-dev libproj15 libprotobuf-dev libprotobuf-lite17 libprotoc-dev libprotoc17 libpsm-infinipath1 libpsm2-2 libpthread-stubs0-dev libpyside2-dev libpyside2-py3-5.14 libpython3-dev libpython3.8-dev libqhull-dev libqhull-r7 libqhull7 libqt5concurrent5 libqt5core5a libqt5dbus5 libqt5designer5 libqt5designercomponents5 libqt5gui5 libqt5help5 libqt5network5 libqt5opengl5 libqt5opengl5-dev libqt5positioning5 libqt5printsupport5 libqt5qml5 libqt5quick5 libqt5quickparticles5 libqt5quickshapes5 libqt5quicktest5 libqt5quickwidgets5 libqt5sensors5 libqt5sql5 libqt5sql5-sqlite libqt5svg5 libqt5test5 libqt5webchannel5 libqt5webkit5 libqt5webkit5-dev libqt5widgets5 libqt5x11extras5 libqt5xml5 libqwt-qt5-6 libqwt-qt5-dev libraw1394-dev libraw1394-tools librdmacm1 librhash0 libruby2.7 libsctp-dev libsctp1 libsdformat9 libsdformat9-dev libsdl2-2.0-0 libselinux1-dev libsepol1-dev libshiboken2-dev libshiboken2-py3-5.14 libsimbody-dev libsimbody3.6 libsm-dev libsndio7.0 libsocket++1 libsodium-dev libspatialite-dev libspatialite7 libspnav0 libsqlite3-dev libsub-override-perl libsuperlu-dev libsuperlu5 libswresample-dev libswscale-dev libsys-hostname-long-perl libsz2 libtar-dev libtar0 libtbb-dev libtbb2 libtcl8.6 libtesseract4 libthai-dev libtheora-dev libtiff-dev libtiffxx5 libtinyxml-dev libtinyxml2-dev libtinyxml2.6.2v5 libtk8.6 libtool liburdfdom-dev liburdfdom-headers-dev liburdfdom-model liburdfdom-model-state liburdfdom-sensor liburdfdom-world liburiparser-dev liburiparser1 libusb-1.0-0-dev libusb-1.0-doc libvtk6.3 libvtk7-dev libvtk7-java libvtk7-jni libvtk7-qt-dev libvtk7.1p libvtk7.1p-qt libvulkan-dev libwayland-bin libwayland-dev libwebp-dev libx11-dev libxau-dev libxcb-render0-dev libxcb-shm0-dev libxcb-xinerama0 libxcb-xinput0 libxcb1-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxerces-c-dev libxerces-c3.2 libxext-dev libxfixes-dev libxft-dev libxi-dev libxinerama-dev libxkbcommon-dev libxml2-dev libxml2-utils libxmu-dev libxmu-headers libxnvctrl0 libxrandr-dev libxrender-dev libxss-dev libxt-dev libxtst-dev libyaml-cpp-dev libyaml-cpp0.6 libyaml-dev libzip-dev libzmq3-dev libzstd-dev libzzip-0-13 m4 mpi-default-bin mpi-default-dev odbcinst odbcinst1debian2 opencv-data openmpi-bin openmpi-common openni-utils pango1.0-tools po-debconf proj-bin proj-data protobuf-compiler pyqt5-dev python-matplotlib-data python3-autobahn python3-catkin-pkg python3-catkin-pkg-modules python3-cbor python3-cycler python3-defusedxml python3-dev python3-distutils python3-docutils python3-empy python3-gnupg python3-kiwisolver python3-lz4 python3-matplotlib python3-mpi4py python3-nose python3-numpy python3-opencv python3-opengl python3-png python3-psutil python3-pycryptodome python3-pydot python3-pygments python3-pykdl python3-pyparsing python3-pyqrcode python3-pyqt5 python3-pyqt5.qtopengl python3-pyqt5.qtsvg python3-pyqt5.qtwebkit python3-pyside2.qtcore python3-pyside2.qtgui python3-pyside2.qtsvg python3-pyside2.qtwidgets python3-roman python3-rosdep-modules python3-rosdistro python3-rosdistro-modules python3-rospkg python3-rospkg-modules python3-setuptools python3-sip python3-sip-dev python3-snappy python3-tk python3-trie python3-txaio python3-u-msgpack python3-ubjson python3-vtk7 python3-wsaccel python3.8-dev qdoc-qt5 qhelpgenerator-qt5 qt5-assistant qt5-gtk-platformtheme qt5-qmake qt5-qmake-bin qt5-qmltooling-plugins qtattributionsscanner-qt5 qtbase5-dev qtbase5-dev-tools qtchooser qtdeclarative5-dev qtdeclarative5-dev-tools qttools5-dev qttools5-dev-tools qttools5-private-dev qttranslations5-l10n rake ros-noetic-actionlib ros-noetic-actionlib-msgs ros-noetic-actionlib-tutorials ros-noetic-angles ros-noetic-bond ros-noetic-bond-core ros-noetic-bondcpp ros-noetic-bondpy ros-noetic-camera-calibration ros-noetic-camera-calibration-parsers ros-noetic-camera-info-manager ros-noetic-catkin ros-noetic-class-loader ros-noetic-cmake-modules ros-noetic-common-msgs ros-noetic-common-tutorials ros-noetic-compressed-depth-image-transport ros-noetic-compressed-image-transport ros-noetic-control-msgs ros-noetic-control-toolbox ros-noetic-controller-interface ros-noetic-controller-manager ros-noetic-controller-manager-msgs ros-noetic-cpp-common ros-noetic-cv-bridge ros-noetic-depth-image-proc ros-noetic-desktop ros-noetic-diagnostic-aggregator ros-noetic-diagnostic-analysis ros-noetic-diagnostic-common-diagnostics ros-noetic-diagnostic-msgs ros-noetic-diagnostic-updater ros-noetic-diagnostics ros-noetic-diff-drive-controller ros-noetic-dynamic-reconfigure ros-noetic-eigen-conversions ros-noetic-executive-smach ros-noetic-filters ros-noetic-forward-command-controller ros-noetic-gazebo-dev ros-noetic-gazebo-msgs ros-noetic-gazebo-plugins ros-noetic-gazebo-ros ros-noetic-gazebo-ros-control ros-noetic-gazebo-ros-pkgs ros-noetic-gencpp ros-noetic-geneus ros-noetic-genlisp ros-noetic-genmsg ros-noetic-gennodejs ros-noetic-genpy ros-noetic-geometry ros-noetic-geometry-msgs ros-noetic-geometry-tutorials ros-noetic-gl-dependency ros-noetic-hardware-interface ros-noetic-image-common ros-noetic-image-geometry ros-noetic-image-pipeline ros-noetic-image-proc ros-noetic-image-publisher ros-noetic-image-rotate ros-noetic-image-transport ros-noetic-image-transport-plugins ros-noetic-image-view ros-noetic-interactive-marker-tutorials ros-noetic-interactive-markers ros-noetic-joint-limits-interface ros-noetic-joint-state-controller ros-noetic-joint-state-publisher ros-noetic-joint-state-publisher-gui ros-noetic-kdl-conversions ros-noetic-kdl-parser ros-noetic-laser-assembler ros-noetic-laser-filters ros-noetic-laser-geometry ros-noetic-laser-pipeline ros-noetic-librviz-tutorial ros-noetic-map-msgs ros-noetic-media-export ros-noetic-message-filters ros-noetic-message-generation ros-noetic-message-runtime ros-noetic-mk ros-noetic-nav-msgs ros-noetic-nodelet ros-noetic-nodelet-core ros-noetic-nodelet-topic-tools ros-noetic-nodelet-tutorial-math ros-noetic-pcl-conversions ros-noetic-pcl-msgs ros-noetic-pcl-ros ros-noetic-perception ros-noetic-perception-pcl ros-noetic-pluginlib ros-noetic-pluginlib-tutorials ros-noetic-polled-camera ros-noetic-position-controllers ros-noetic-python-qt-binding ros-noetic-qt-dotgraph ros-noetic-qt-gui ros-noetic-qt-gui-cpp ros-noetic-qt-gui-py-common ros-noetic-qwt-dependency ros-noetic-realtime-tools ros-noetic-resource-retriever ros-noetic-robot ros-noetic-robot-state-publisher ros-noetic-ros ros-noetic-ros-base ros-noetic-ros-comm ros-noetic-ros-core ros-noetic-ros-environment ros-noetic-ros-tutorials ros-noetic-rosbag ros-noetic-rosbag-migration-rule ros-noetic-rosbag-storage ros-noetic-rosbash ros-noetic-rosboost-cfg ros-noetic-rosbuild ros-noetic-rosclean ros-noetic-rosconsole ros-noetic-rosconsole-bridge ros-noetic-roscpp ros-noetic-roscpp-core ros-noetic-roscpp-serialization ros-noetic-roscpp-traits ros-noetic-roscpp-tutorials ros-noetic-roscreate ros-noetic-rosgraph ros-noetic-rosgraph-msgs ros-noetic-roslang ros-noetic-roslaunch ros-noetic-roslib ros-noetic-roslint ros-noetic-roslisp ros-noetic-roslz4 ros-noetic-rosmake ros-noetic-rosmaster ros-noetic-rosmsg ros-noetic-rosnode ros-noetic-rosout ros-noetic-rospack ros-noetic-rosparam ros-noetic-rospy ros-noetic-rospy-tutorials ros-noetic-rosservice ros-noetic-rostest ros-noetic-rostime ros-noetic-rostopic ros-noetic-rosunit ros-noetic-roswtf ros-noetic-rqt-action ros-noetic-rqt-bag ros-noetic-rqt-bag-plugins ros-noetic-rqt-common-plugins ros-noetic-rqt-console ros-noetic-rqt-dep ros-noetic-rqt-graph ros-noetic-rqt-gui ros-noetic-rqt-gui-cpp ros-noetic-rqt-gui-py ros-noetic-rqt-image-view ros-noetic-rqt-launch ros-noetic-rqt-logger-level ros-noetic-rqt-moveit ros-noetic-rqt-msg ros-noetic-rqt-nav-view ros-noetic-rqt-plot ros-noetic-rqt-pose-view ros-noetic-rqt-publisher ros-noetic-rqt-py-common ros-noetic-rqt-py-console ros-noetic-rqt-reconfigure ros-noetic-rqt-robot-dashboard ros-noetic-rqt-robot-monitor ros-noetic-rqt-robot-plugins ros-noetic-rqt-robot-steering ros-noetic-rqt-runtime-monitor ros-noetic-rqt-rviz ros-noetic-rqt-service-caller ros-noetic-rqt-shell ros-noetic-rqt-srv ros-noetic-rqt-tf-tree ros-noetic-rqt-top ros-noetic-rqt-topic ros-noetic-rqt-web ros-noetic-rviz ros-noetic-rviz-plugin-tutorials ros-noetic-rviz-python-tutorial ros-noetic-self-test ros-noetic-sensor-msgs ros-noetic-shape-msgs ros-noetic-simulators ros-noetic-smach ros-noetic-smach-msgs ros-noetic-smach-ros ros-noetic-smclib ros-noetic-stage ros-noetic-stage-ros ros-noetic-std-msgs ros-noetic-std-srvs ros-noetic-stereo-image-proc ros-noetic-stereo-msgs ros-noetic-tf ros-noetic-tf-conversions ros-noetic-tf2 ros-noetic-tf2-eigen ros-noetic-tf2-geometry-msgs ros-noetic-tf2-kdl ros-noetic-tf2-msgs ros-noetic-tf2-py ros-noetic-tf2-ros ros-noetic-theora-image-transport ros-noetic-topic-tools ros-noetic-trajectory-msgs ros-noetic-transmission-interface ros-noetic-turtle-actionlib ros-noetic-turtle-tf ros-noetic-turtle-tf2 ros-noetic-turtlesim ros-noetic-urdf ros-noetic-urdf-parser-plugin ros-noetic-urdf-sim-tutorial ros-noetic-urdf-tutorial ros-noetic-vision-opencv ros-noetic-visualization-marker-tutorials ros-noetic-visualization-msgs ros-noetic-visualization-tutorials ros-noetic-viz ros-noetic-webkit-dependency ros-noetic-xacro ros-noetic-xmlrpcpp ruby ruby-minitest ruby-net-telnet ruby-power-assert ruby-test-unit ruby-xmlrpc ruby2.7 rubygems-integration sbcl sdformat9-sdf shiboken2 sip-dev tango-icon-theme tcl tcl-dev tcl-vtk7 tcl8.6 tcl8.6-dev tk tk-dev tk8.6 tk8.6-blt2.5 tk8.6-dev ttf-bitstream-vera ttf-dejavu-core unixodbc-dev uuid-dev vtk7 wayland-protocols x11proto-core-dev x11proto-dev x11proto-input-dev x11proto-randr-dev x11proto-record-dev x11proto-scrnsaver-dev x11proto-xext-dev x11proto-xinerama-dev xorg-sgml-doctools xtrans-dev Suggested packages: autoconf-archive gnu-standards autoconf-doc blt-demo cmake-doc ninja-build doc-base gcc-8-locales cython-doc dh-make gazebo11-doc gcc-8-multilib gcc-8-doc gettext-doc libasprintf-dev libgettextpo-dev gfortran-multilib gfortran-doc gfortran-8-multilib gfortran-8-doc gfortran-9-multilib gfortran-9-doc gsfonts graphviz-doc apache2 | lighttpd | httpd krb5-doc python libitpp-dev liblapack-doc libboost-doc libboost1.71-doc gccxml libboost-contract1.71-dev libmpfrc++-dev libntl-dev xsltproc doxygen docbook-xsl default-jdk fop libcairo2-doc libcurl4-doc libidn11-dev librtmp-dev libssh2-1-dev libdatrie-doc libeigen3-doc freetype2-doc libgdal-doc libgeotiff-epsg geotiff-bin gdal-bin glew-utils libgirepository1.0-dev libglib2.0-doc libgraphite2-utils krb5-user libgtk-3-doc libgtk2.0-doc libgts-doc libhdf4-doc hdf4-tools libhdf5-doc libhwloc-contrib-plugins libice-doc icu-doc libjs-jquery-ui-docs liblog4cxx-doc libtool-doc liblzma-doc netcdf-bin netcdf-doc libnorm-doc libmyodbc odbc-postgresql tdsodbc unixodbc-bin ogdi-bin ogre-1.9-doc libogre-1.9.0v5-dbg libportaudio2 opencv-doc openmpi-doc openni-doc openni2-doc imagemagick libpango1.0-doc libpcl-doc postgresql-doc-12 qt5-image-formats-plugins qtwayland5 libraw1394-doc lksctp-tools libsm-doc sndiod spacenavd sqlite3-doc libsuperlu-doc libtbb-doc libthai-doc libtinyxml-doc gcj-jdk vtk7-doc vtk7-examples java-virtual-machine libwayland-doc libx11-doc libxcb-doc libxerces-c-doc libxext-doc libxt-doc libyaml-doc m4-doc libmail-box-perl python-cycler-doc docutils-doc fonts-linuxlibertine | ttf-linux-libertine texlive-lang-french texlive-latex-base texlive-latex-recommended dvipng ffmpeg inkscape ipython3 python-matplotlib-doc python3-cairocffi python3-gobject python3-scipy python3-tornado texlive-extra-utils texlive-latex-extra ttf-staypuft python-nose-doc python-numpy-doc python3-pytest python3-numpy-dbg libgle3 python-psutil-doc python-pygments-doc python-pyparsing-doc python3-pyqt5-dbg python-pyside2-doc python-setuptools-doc python-sip-doc tix python3-tk-dbg python-trie-doc python-txaio-doc mayavi2 qt5-doc firebird-dev ri ruby-dev bundler sbcl-doc sbcl-source slime gnome-icon-theme kdelibs-data tcl-doc tcl-tclreadline tcl8.6-doc tk-doc tk8.6-doc The following NEW packages will be installed: autoconf automake autopoint autotools-dev blt bzip2-doc cmake cmake-data comerr-dev cpp-8 cython3 debhelper default-libmysqlclient-dev dh-autoreconf dh-strip-nondeterminism docutils-common dwz fltk1.3-doc fluid fonts-lato fonts-lyx freeglut3 freeglut3-dev gazebo11 gazebo11-common gazebo11-plugin-base gcc-8 gcc-8-base gdal-data gettext gfortran gfortran-8 gfortran-9 gir1.2-gtk-2.0 gir1.2-harfbuzz-0.0 google-mock googletest graphviz hddtemp hdf5-helpers ibverbs-providers icu-devtools ignition-tools intltool-debian javascript-common krb5-multidev libaec-dev libaec0 libann0 libapr1 libapr1-dev libaprutil1 libaprutil1-dev libarchive-cpio-perl libarchive-zip-perl libarmadillo-dev libarmadillo9 libarpack2 libarpack2-dev libassimp-dev libassimp5 libassuan-dev libatk-bridge2.0-dev libatk1.0-dev libatspi2.0-dev libavcodec-dev libavdevice-dev libavdevice58 libavfilter-dev libavformat-dev libavresample-dev libavresample4 libavutil-dev libblas-dev libblas3 libblkid-dev libboost-all-dev libboost-atomic-dev libboost-atomic1.71-dev libboost-atomic1.71.0 libboost-chrono-dev libboost-chrono1.71-dev libboost-chrono1.71.0 libboost-container-dev libboost-container1.71-dev libboost-container1.71.0 libboost-context-dev libboost-context1.71-dev libboost-context1.71.0 libboost-coroutine-dev libboost-coroutine1.71-dev libboost-coroutine1.71.0 libboost-date-time-dev libboost-date-time1.71-dev libboost-dev libboost-exception-dev libboost-exception1.71-dev libboost-fiber-dev libboost-fiber1.71-dev libboost-fiber1.71.0 libboost-filesystem-dev libboost-filesystem1.71-dev libboost-graph-dev libboost-graph-parallel-dev libboost-graph-parallel1.71-dev libboost-graph-parallel1.71.0 libboost-graph1.71-dev libboost-graph1.71.0 libboost-iostreams-dev libboost-iostreams1.71-dev libboost-locale-dev libboost-locale1.71-dev libboost-log-dev libboost-log1.71-dev libboost-log1.71.0 libboost-math-dev libboost-math1.71-dev libboost-math1.71.0 libboost-mpi-dev libboost-mpi-python-dev libboost-mpi-python1.71-dev libboost-mpi-python1.71.0 libboost-mpi1.71-dev libboost-mpi1.71.0 libboost-numpy-dev libboost-numpy1.71-dev libboost-numpy1.71.0 libboost-program-options-dev libboost-program-options1.71-dev libboost-program-options1.71.0 libboost-python-dev libboost-python1.71-dev libboost-python1.71.0 libboost-random-dev libboost-random1.71-dev libboost-random1.71.0 libboost-regex-dev libboost-regex1.71-dev libboost-regex1.71.0 libboost-serialization-dev libboost-serialization1.71-dev libboost-serialization1.71.0 libboost-stacktrace-dev libboost-stacktrace1.71-dev libboost-stacktrace1.71.0 libboost-system-dev libboost-system1.71-dev libboost-system1.71.0 libboost-test-dev libboost-test1.71-dev libboost-test1.71.0 libboost-thread-dev libboost-thread1.71-dev libboost-timer-dev libboost-timer1.71-dev libboost-timer1.71.0 libboost-tools-dev libboost-type-erasure-dev libboost-type-erasure1.71-dev libboost-type-erasure1.71.0 libboost-wave-dev libboost-wave1.71-dev libboost-wave1.71.0 libboost1.71-dev libboost1.71-tools-dev libbullet-dev libbullet2.88 libbz2-dev libcaf-openmpi-3 libcairo-script-interpreter2 libcairo2-dev libcdt5 libcfitsio-dev libcfitsio-doc libcfitsio8 libcgraph6 libcharls-dev libcharls2 libclang1-10 libcoarrays-dev libcoarrays-openmpi-dev libconsole-bridge-dev libconsole-bridge0.4 libcroco3 libcurl4-openssl-dev libdap-dev libdap25 libdapclient6v5 libdapserver7v5 libdatrie-dev libdbus-1-dev libdc1394-22 libdc1394-22-dev libdebhelper-perl libdouble-conversion3 libegl-dev libegl1-mesa-dev libeigen3-dev libepoxy-dev libepsilon-dev libepsilon1 libevent-core-2.1-7 libevent-dev libevent-extra-2.1-7 libevent-openssl-2.1-7 libevent-pthreads-2.1-7 libexif-dev libexif-doc libexpat1-dev libfabric1 libffi-dev libfile-stripnondeterminism-perl libflann-dev libflann1.9 libfltk-cairo1.3 libfltk-forms1.3 libfltk-gl1.3 libfltk-images1.3 libfltk1.3 libfltk1.3-dev libfontconfig1-dev libfreeimage-dev libfreeimage3 libfreetype-dev libfreetype6-dev libfreexl-dev libfreexl1 libfribidi-dev libfyba-dev libfyba0 libgazebo11 libgazebo11-dev libgcc-8-dev libgdal-dev libgdal26 libgdcm-dev libgdcm3.0 libgdk-pixbuf2.0-dev libgeos-3.8.0 libgeos-c1v5 libgeos-dev libgeotiff-dev libgeotiff5 libgfortran-8-dev libgfortran-9-dev libgfortran5 libgif-dev libgl-dev libgl1-mesa-dev libgl2ps-dev libgl2ps1.4 libgles-dev libgles1 libglew-dev libglew2.1 libglib2.0-dev libglib2.0-dev-bin libglu1-mesa-dev libglvnd-dev libglx-dev libgpg-error-dev libgpgme-dev libgphoto2-dev libgraphite2-dev libgssrpc4 libgtest-dev libgtk-3-dev libgtk2.0-dev libgts-0.7-5 libgts-bin libgts-dev libgvc6 libgvpr2 libharfbuzz-dev libharfbuzz-gobject0 libhdf4-0-alt libhdf4-alt-dev libhdf5-103 libhdf5-cpp-103 libhdf5-dev libhdf5-mpi-dev libhdf5-openmpi-103 libhdf5-openmpi-dev libhwloc-dev libhwloc-plugins libhwloc15 libibverbs-dev libibverbs1 libice-dev libicu-dev libignition-cmake2-dev libignition-common3 libignition-common3-av libignition-common3-av-dev libignition-common3-core-dev libignition-common3-dev libignition-common3-events libignition-common3-events-dev libignition-common3-graphics libignition-common3-graphics-dev libignition-common3-profiler libignition-common3-profiler-dev libignition-fuel-tools4 libignition-fuel-tools4-dev libignition-math6 libignition-math6-dev libignition-msgs5 libignition-msgs5-dev libignition-tools-dev libignition-transport8 libignition-transport8-core-dev libignition-transport8-dev libignition-transport8-log libignition-transport8-log-dev libilmbase-dev libilmbase24 libjbig-dev libjpeg-dev libjpeg-turbo8-dev libjpeg8-dev libjs-jquery libjs-jquery-ui libjson-c-dev libjsoncpp-dev libjsoncpp1 libjxr0 libkadm5clnt-mit11 libkadm5srv-mit11 libkdb5-9 libkml-dev libkmlbase1 libkmlconvenience1 libkmldom1 libkmlengine1 libkmlregionator1 libkmlxsd1 libkrb5-dev liblab-gamut1 liblapack-dev liblapack3 libldap2-dev liblept5 libllvm10 liblog4cxx-dev liblog4cxx10v5 libltdl-dev liblz4-dev liblzma-dev libmail-sendmail-perl libminizip-dev libminizip1 libmount-dev libmpx2 libmysqlclient-dev libnetcdf-c++4 libnetcdf-cxx-legacy-dev libnetcdf-dev libnetcdf15 libnl-3-dev libnl-route-3-dev libnorm-dev libnuma-dev libodbc1 libogdi-dev libogdi4.1 libogg-dev libogre-1.9-dev libogre-1.9.0v5 libopenal-data libopenal1 libopencv-calib3d-dev libopencv-calib3d4.2 libopencv-contrib-dev libopencv-contrib4.2 libopencv-core-dev libopencv-core4.2 libopencv-dev libopencv-dnn-dev libopencv-dnn4.2 libopencv-features2d-dev libopencv-features2d4.2 libopencv-flann-dev libopencv-flann4.2 libopencv-highgui-dev libopencv-highgui4.2 libopencv-imgcodecs-dev libopencv-imgcodecs4.2 libopencv-imgproc-dev libopencv-imgproc4.2 libopencv-ml-dev libopencv-ml4.2 libopencv-objdetect-dev libopencv-objdetect4.2 libopencv-photo-dev libopencv-photo4.2 libopencv-shape-dev libopencv-shape4.2 libopencv-stitching-dev libopencv-stitching4.2 libopencv-superres-dev libopencv-superres4.2 libopencv-ts-dev libopencv-video-dev libopencv-video4.2 libopencv-videoio-dev libopencv-videoio4.2 libopencv-videostab-dev libopencv-videostab4.2 libopencv-viz-dev libopencv-viz4.2 libopencv4.2-java libopencv4.2-jni libopenexr-dev libopenexr24 libopengl-dev libopengl0 libopenjp2-7-dev libopenmpi-dev libopenmpi3 libopenni-dev libopenni-sensor-pointclouds0 libopenni0 libopenni2-0 libopenni2-dev liborocos-kdl-dev liborocos-kdl1.4 libpango1.0-dev libpathplan4 libpcl-apps1.10 libpcl-common1.10 libpcl-dev libpcl-features1.10 libpcl-filters1.10 libpcl-io1.10 libpcl-kdtree1.10 libpcl-keypoints1.10 libpcl-ml1.10 libpcl-octree1.10 libpcl-outofcore1.10 libpcl-people1.10 libpcl-recognition1.10 libpcl-registration1.10 libpcl-sample-consensus1.10 libpcl-search1.10 libpcl-segmentation1.10 libpcl-stereo1.10 libpcl-surface1.10 libpcl-tracking1.10 libpcl-visualization1.10 libpcre16-3 libpcre2-16-0 libpcre2-dev libpcre2-posix2 libpcre3-dev libpcre32-3 libpcrecpp0v5 libpgm-dev libpixman-1-dev libpmix2 libpng-dev libpng-tools libpoco-dev libpococrypto62 libpocodata62 libpocodatamysql62 libpocodataodbc62 libpocodatasqlite62 libpocoencodings62 libpocofoundation62 libpocojson62 libpocomongodb62 libpoconet62 libpoconetssl62 libpocoredis62 libpocoutil62 libpocoxml62 libpocozip62 libpoppler-dev libpoppler-private-dev libpostproc-dev libpq-dev libpq5 libproj-dev libproj15 libprotobuf-dev libprotobuf-lite17 libprotoc-dev libprotoc17 libpsm-infinipath1 libpsm2-2 libpthread-stubs0-dev libpyside2-dev libpyside2-py3-5.14 libpython3-dev libpython3.8-dev libqhull-dev libqhull-r7 libqhull7 libqt5concurrent5 libqt5core5a libqt5dbus5 libqt5designer5 libqt5designercomponents5 libqt5gui5 libqt5help5 libqt5network5 libqt5opengl5 libqt5opengl5-dev libqt5positioning5 libqt5printsupport5 libqt5qml5 libqt5quick5 libqt5quickparticles5 libqt5quickshapes5 libqt5quicktest5 libqt5quickwidgets5 libqt5sensors5 libqt5sql5 libqt5sql5-sqlite libqt5svg5 libqt5test5 libqt5webchannel5 libqt5webkit5 libqt5webkit5-dev libqt5widgets5 libqt5x11extras5 libqt5xml5 libqwt-qt5-6 libqwt-qt5-dev libraw1394-dev libraw1394-tools librdmacm1 librhash0 libruby2.7 libsctp-dev libsctp1 libsdformat9 libsdformat9-dev libsdl2-2.0-0 libselinux1-dev libsepol1-dev libshiboken2-dev libshiboken2-py3-5.14 libsimbody-dev libsimbody3.6 libsm-dev libsndio7.0 libsocket++1 libsodium-dev libspatialite-dev libspatialite7 libspnav0 libsqlite3-dev libsub-override-perl libsuperlu-dev libsuperlu5 libswresample-dev libswscale-dev libsys-hostname-long-perl libsz2 libtar-dev libtar0 libtbb-dev libtbb2 libtcl8.6 libtesseract4 libthai-dev libtheora-dev libtiff-dev libtiffxx5 libtinyxml-dev libtinyxml2-dev libtinyxml2.6.2v5 libtk8.6 libtool liburdfdom-dev liburdfdom-headers-dev liburdfdom-model liburdfdom-model-state liburdfdom-sensor liburdfdom-world liburiparser-dev liburiparser1 libusb-1.0-0-dev libusb-1.0-doc libvtk6.3 libvtk7-dev libvtk7-java libvtk7-jni libvtk7-qt-dev libvtk7.1p libvtk7.1p-qt libvulkan-dev libwayland-bin libwayland-dev libwebp-dev libx11-dev libxau-dev libxcb-render0-dev libxcb-shm0-dev libxcb-xinerama0 libxcb-xinput0 libxcb1-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxerces-c-dev libxerces-c3.2 libxext-dev libxfixes-dev libxft-dev libxi-dev libxinerama-dev libxkbcommon-dev libxml2-dev libxml2-utils libxmu-dev libxmu-headers libxnvctrl0 libxrandr-dev libxrender-dev libxss-dev libxt-dev libxtst-dev libyaml-cpp-dev libyaml-cpp0.6 libyaml-dev libzip-dev libzmq3-dev libzstd-dev libzzip-0-13 m4 mpi-default-bin mpi-default-dev odbcinst odbcinst1debian2 opencv-data openmpi-bin openmpi-common openni-utils pango1.0-tools po-debconf proj-bin proj-data protobuf-compiler pyqt5-dev python-matplotlib-data python3-autobahn python3-catkin-pkg python3-catkin-pkg-modules python3-cbor python3-cycler python3-defusedxml python3-dev python3-distutils python3-docutils python3-empy python3-gnupg python3-kiwisolver python3-lz4 python3-matplotlib python3-mpi4py python3-nose python3-numpy python3-opencv python3-opengl python3-png python3-psutil python3-pycryptodome python3-pydot python3-pygments python3-pykdl python3-pyparsing python3-pyqrcode python3-pyqt5 python3-pyqt5.qtopengl python3-pyqt5.qtsvg python3-pyqt5.qtwebkit python3-pyside2.qtcore python3-pyside2.qtgui python3-pyside2.qtsvg python3-pyside2.qtwidgets python3-roman python3-rosdep-modules python3-rosdistro python3-rosdistro-modules python3-rospkg python3-rospkg-modules python3-setuptools python3-sip python3-sip-dev python3-snappy python3-tk python3-trie python3-txaio python3-u-msgpack python3-ubjson python3-vtk7 python3-wsaccel python3.8-dev qdoc-qt5 qhelpgenerator-qt5 qt5-assistant qt5-gtk-platformtheme qt5-qmake qt5-qmake-bin qt5-qmltooling-plugins qtattributionsscanner-qt5 qtbase5-dev qtbase5-dev-tools qtchooser qtdeclarative5-dev qtdeclarative5-dev-tools qttools5-dev qttools5-dev-tools qttools5-private-dev qttranslations5-l10n rake ros-noetic-actionlib ros-noetic-actionlib-msgs ros-noetic-actionlib-tutorials ros-noetic-angles ros-noetic-bond ros-noetic-bond-core ros-noetic-bondcpp ros-noetic-bondpy ros-noetic-camera-calibration ros-noetic-camera-calibration-parsers ros-noetic-camera-info-manager ros-noetic-catkin ros-noetic-class-loader ros-noetic-cmake-modules ros-noetic-common-msgs ros-noetic-common-tutorials ros-noetic-compressed-depth-image-transport ros-noetic-compressed-image-transport ros-noetic-control-msgs ros-noetic-control-toolbox ros-noetic-controller-interface ros-noetic-controller-manager ros-noetic-controller-manager-msgs ros-noetic-cpp-common ros-noetic-cv-bridge ros-noetic-depth-image-proc ros-noetic-desktop ros-noetic-desktop-full ros-noetic-diagnostic-aggregator ros-noetic-diagnostic-analysis ros-noetic-diagnostic-common-diagnostics ros-noetic-diagnostic-msgs ros-noetic-diagnostic-updater ros-noetic-diagnostics ros-noetic-diff-drive-controller ros-noetic-dynamic-reconfigure ros-noetic-eigen-conversions ros-noetic-executive-smach ros-noetic-filters ros-noetic-forward-command-controller ros-noetic-gazebo-dev ros-noetic-gazebo-msgs ros-noetic-gazebo-plugins ros-noetic-gazebo-ros ros-noetic-gazebo-ros-control ros-noetic-gazebo-ros-pkgs ros-noetic-gencpp ros-noetic-geneus ros-noetic-genlisp ros-noetic-genmsg ros-noetic-gennodejs ros-noetic-genpy ros-noetic-geometry ros-noetic-geometry-msgs ros-noetic-geometry-tutorials ros-noetic-gl-dependency ros-noetic-hardware-interface ros-noetic-image-common ros-noetic-image-geometry ros-noetic-image-pipeline ros-noetic-image-proc ros-noetic-image-publisher ros-noetic-image-rotate ros-noetic-image-transport ros-noetic-image-transport-plugins ros-noetic-image-view ros-noetic-interactive-marker-tutorials ros-noetic-interactive-markers ros-noetic-joint-limits-interface ros-noetic-joint-state-controller ros-noetic-joint-state-publisher ros-noetic-joint-state-publisher-gui ros-noetic-kdl-conversions ros-noetic-kdl-parser ros-noetic-laser-assembler ros-noetic-laser-filters ros-noetic-laser-geometry ros-noetic-laser-pipeline ros-noetic-librviz-tutorial ros-noetic-map-msgs ros-noetic-media-export ros-noetic-message-filters ros-noetic-message-generation ros-noetic-message-runtime ros-noetic-mk ros-noetic-nav-msgs ros-noetic-nodelet ros-noetic-nodelet-core ros-noetic-nodelet-topic-tools ros-noetic-nodelet-tutorial-math ros-noetic-pcl-conversions ros-noetic-pcl-msgs ros-noetic-pcl-ros ros-noetic-perception ros-noetic-perception-pcl ros-noetic-pluginlib ros-noetic-pluginlib-tutorials ros-noetic-polled-camera ros-noetic-position-controllers ros-noetic-python-qt-binding ros-noetic-qt-dotgraph ros-noetic-qt-gui ros-noetic-qt-gui-cpp ros-noetic-qt-gui-py-common ros-noetic-qwt-dependency ros-noetic-realtime-tools ros-noetic-resource-retriever ros-noetic-robot ros-noetic-robot-state-publisher ros-noetic-ros ros-noetic-ros-base ros-noetic-ros-comm ros-noetic-ros-core ros-noetic-ros-environment ros-noetic-ros-tutorials ros-noetic-rosbag ros-noetic-rosbag-migration-rule ros-noetic-rosbag-storage ros-noetic-rosbash ros-noetic-rosboost-cfg ros-noetic-rosbuild ros-noetic-rosclean ros-noetic-rosconsole ros-noetic-rosconsole-bridge ros-noetic-roscpp ros-noetic-roscpp-core ros-noetic-roscpp-serialization ros-noetic-roscpp-traits ros-noetic-roscpp-tutorials ros-noetic-roscreate ros-noetic-rosgraph ros-noetic-rosgraph-msgs ros-noetic-roslang ros-noetic-roslaunch ros-noetic-roslib ros-noetic-roslint ros-noetic-roslisp ros-noetic-roslz4 ros-noetic-rosmake ros-noetic-rosmaster ros-noetic-rosmsg ros-noetic-rosnode ros-noetic-rosout ros-noetic-rospack ros-noetic-rosparam ros-noetic-rospy ros-noetic-rospy-tutorials ros-noetic-rosservice ros-noetic-rostest ros-noetic-rostime ros-noetic-rostopic ros-noetic-rosunit ros-noetic-roswtf ros-noetic-rqt-action ros-noetic-rqt-bag ros-noetic-rqt-bag-plugins ros-noetic-rqt-common-plugins ros-noetic-rqt-console ros-noetic-rqt-dep ros-noetic-rqt-graph ros-noetic-rqt-gui ros-noetic-rqt-gui-cpp ros-noetic-rqt-gui-py ros-noetic-rqt-image-view ros-noetic-rqt-launch ros-noetic-rqt-logger-level ros-noetic-rqt-moveit ros-noetic-rqt-msg ros-noetic-rqt-nav-view ros-noetic-rqt-plot ros-noetic-rqt-pose-view ros-noetic-rqt-publisher ros-noetic-rqt-py-common ros-noetic-rqt-py-console ros-noetic-rqt-reconfigure ros-noetic-rqt-robot-dashboard ros-noetic-rqt-robot-monitor ros-noetic-rqt-robot-plugins ros-noetic-rqt-robot-steering ros-noetic-rqt-runtime-monitor ros-noetic-rqt-rviz ros-noetic-rqt-service-caller ros-noetic-rqt-shell ros-noetic-rqt-srv ros-noetic-rqt-tf-tree ros-noetic-rqt-top ros-noetic-rqt-topic ros-noetic-rqt-web ros-noetic-rviz ros-noetic-rviz-plugin-tutorials ros-noetic-rviz-python-tutorial ros-noetic-self-test ros-noetic-sensor-msgs ros-noetic-shape-msgs ros-noetic-simulators ros-noetic-smach ros-noetic-smach-msgs ros-noetic-smach-ros ros-noetic-smclib ros-noetic-stage ros-noetic-stage-ros ros-noetic-std-msgs ros-noetic-std-srvs ros-noetic-stereo-image-proc ros-noetic-stereo-msgs ros-noetic-tf ros-noetic-tf-conversions ros-noetic-tf2 ros-noetic-tf2-eigen ros-noetic-tf2-geometry-msgs ros-noetic-tf2-kdl ros-noetic-tf2-msgs ros-noetic-tf2-py ros-noetic-tf2-ros ros-noetic-theora-image-transport ros-noetic-topic-tools ros-noetic-trajectory-msgs ros-noetic-transmission-interface ros-noetic-turtle-actionlib ros-noetic-turtle-tf ros-noetic-turtle-tf2 ros-noetic-turtlesim ros-noetic-urdf ros-noetic-urdf-parser-plugin ros-noetic-urdf-sim-tutorial ros-noetic-urdf-tutorial ros-noetic-vision-opencv ros-noetic-visualization-marker-tutorials ros-noetic-visualization-msgs ros-noetic-visualization-tutorials ros-noetic-viz ros-noetic-webkit-dependency ros-noetic-xacro ros-noetic-xmlrpcpp ruby ruby-minitest ruby-net-telnet ruby-power-assert ruby-test-unit ruby-xmlrpc ruby2.7 rubygems-integration sbcl sdformat9-sdf shiboken2 sip-dev tango-icon-theme tcl tcl-dev tcl-vtk7 tcl8.6 tcl8.6-dev tk tk-dev tk8.6 tk8.6-blt2.5 tk8.6-dev ttf-bitstream-vera ttf-dejavu-core unixodbc-dev uuid-dev vtk7 wayland-protocols x11proto-core-dev x11proto-dev x11proto-input-dev x11proto-randr-dev x11proto-record-dev x11proto-scrnsaver-dev x11proto-xext-dev x11proto-xinerama-dev xorg-sgml-doctools xtrans-dev 0 upgraded, 992 newly installed, 0 to remove and 49 not upgraded. Need to get 529 MB of archives. After this operation, 2,706 MB of additional disk space will be used. Do you want to continue? [Y/n]
Install ros-noetic-desktop
ros-noetic-desktop
is a trimmed-down version of ros-noetic-desktop-full
, also containing most tutorials packages. Specifically, it includes the following packages:
- robot
- vis
- angles
- common_tutorials
- geometry_tutorials
- joint_state_publisher_gui
- ros_tutorials
- roslint
- urdf_tutorial
- visualization_tutorials
To install ros-noetic-desktop
, run
sudo apt install ros-noetic-desktop
Install ros-noetic-base
As you might guess, ros-noetic-base
only contains the basic ROS packages. It extends ros_core
and includes other basic non-robot tools like actionlib, dynamic reconfigure, nodelets, and pluginlib.
To install ros-noetic-base
, run
sudo apt install ros-noetic-base
Install ros-noetic-core
The ros-noetic-core
is a collection of the bare minimum core packages. The packages are required for publishers, subscribers, services, launch files, and other core ROS concepts. Here is the full list:
- catkin
- class_loader
- cmake_modules
- common_msgs
- gencpp
- geneus
- genlisp
- genmsg
- gennodejs
- genpy
- message_generation
- message_runtime
- pluginlib
- ros
- ros_comm
- rosbag_migration_rule
- rosconsole
- rosconsole_bridge
- roscpp_core
- rosgraph_msgs
- roslisp
- rospack
- std_msgs
- std_srvs
To install ros-noetic-core
, run
sudo apt install ros-noetic-core
Set up ROS Noetic environment
After installing ROS Noetic on your Ubuntu 20.04 computer, we will now set up your environment. In order to use ROS terminal commands and let catkin
find your ROS program files such as header files in your includes directory, you will need to run the setup.bash
file after you run apt install
. To do that, run the following command:
source /opt/ros/noetic/setup.bash
To avoid run the command above every time, which is especially true when you are developing with ROS, it is recommended to put it in the .bashrc
file located in the home directory ~
. To do it run the following:
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
Run tail ~/.bashrc
to double check, you should see the setup.bash
is being sourced:
To make it take effect, either open a new terminal tab (Ctrl-Shift-t in the default GNOME terminal) or run source ~/.bashrc
or . ~/.bashrc
. The dot .
is a shortcut of source
.
In case you are using zsh
instead of bash
, run the follow command instead:
echo "source /opt/ros/noetic/setup.zsh" >> ~/.zshrc
Again, to make it take effect, either open a new terminal tab (Ctrl-Shift-t) or window (Ctrl-Shift-n) or run source ~/.zshrc
.
Verify Noetic installation
Congratulations! Now you learned how to install ROS Noetic on Ubuntu 20.04. But how do we know it is installed successfully?
We can simply run roscd
. You can see the current directory of your prompt is changed to where we installed Noetic: /opt/ros/noetic
.
We can also verify the installation by running roscore
to start a ros master. You will see the roscore
is logging in a log file in ~/.ros/log/
. You can also see the ros distro and the ros version in the summary. In addition, you also know the ROS master URI is on the 11311 port which is the default ROS port.
Have fun programming your robot with the latest ROS release ROS Noetic on the latest Ubuntu — Ubuntu 20.04!
Reference:
http://wiki.ros.org/noetic/Installation/Ubuntu
http://wiki.ros.org/Distributions#Noetic_Ninjemys
4 Steps to Install ROS Noetic on Ubuntu 20.04
Time Needed : 20 minutes
- Set up ROS Noetic repo on Ubuntu 20.04
Run this command to add the ROS Noetic repo to apt's source list:
echo "deb http://packages.ros.org/ros/ubuntu focal main" | sudo tee /etc/apt/sources.list.d/ros-focal.list
- Add Official ROS keyring
Run the following command to add the ROS key to authenticate the ROS packages:
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
- Update ROS package index
Simply run
sudo apt update
. - Install ROS Noetic desktop full metapackage on Ubuntu 20.04
Run
sudo apt install ros-noetic-desktop-full
to finally install Noetic on you Ubuntu 20.04 machine.
Tools
- Terminal
- curl
- apt
Materials
- Ubuntu 20.04
FAQ
- How to fix “Unable to locate package ros-noetic-desktop-full”?
There are multiple reasons why you see
Unable to locate package ros-noetic-desktop-full
.
1. Make sure you followed the first 3 steps: add ROS Noetic repo, add ROS keyring, and runsudo apt update
to have a local copy of the meta information of all Noetci packages.
2. Make sure you have Ubuntu 20.04 or Debian 10 Buster, not older Ubuntu version like 18.04 or Debian 9. Noetic only supports Ubuntu 20.04 and Debian 10, otherwise you will get this error message: “Unable to locate package ros-noetic-desktop-full”.
Options to fix it:
The computer architectures that Noetic supports are amd64, armhf, and arm64, which does not include Raspberry Pi. You will have to compile Noetic packages from source on Raspberry Pi, see our guide on this.
If you have to install Noetic on other unsupported OS, consider use Docker for ROS Noetic installation. - How to install ROS Noetic on Ubuntu 18.04?
The official answer is no. ROS Noetic uses and depends system libraries on Ubuntu 20.04 and The libraries are old on 18.04 and may have introduced breaking changes. The ROS version for 18.04 is Melodic; we have a tutorial to install ROS Melodic on Ubuntu 18.04.
However, what you can do to install ROS Noetic on Ubuntu 18.04 is to install Noetic through Docker. Click the links to see our step-by-step guide.
Let us know if you have any other questions in the comment!
16 replies on “How to Install ROS Noetic on Ubuntu 20.04”
Hi,
I am operating Ubuntu 20.04 on a VM, the ‘sudo apt install ros-neotic-desktop-full’ command shows ‘Reading package lists… Done
Building dependency tree
Reading state information… Done
E: Unable to locate package ros-neotic-desktop-full’
After following the steps to create the repo, get the key and ‘sudo apt update’.
Can you please help what could be a possible solution here?
Thanks.
Hi, I receive the following errors after running ‘sudo apt install ros-noetic-desktop-full’ :
Ign:1 http://au.archive.ubuntu.com/ubuntu focal/main amd64 ruby-net-telnet all 0.1.1-2
Err:2 http://au.archive.ubuntu.com/ubuntu focal/universe amd64 libtar0 amd64 1.2.20-8
403 Forbidden [IP: 202.158.214.106 80]
Ign:3 http://au.archive.ubuntu.com/ubuntu focal/main amd64 python3-constantly all 15.1.0-1build1
Err:1 http://au.archive.ubuntu.com/ubuntu focal/main amd64 ruby-net-telnet all 0.1.1-2
403 Forbidden [IP: 202.158.214.106 80]
Err:3 http://au.archive.ubuntu.com/ubuntu focal/main amd64 python3-constantly all 15.1.0-1build1
403 Forbidden [IP: 202.158.214.106 80]
E: Failed to fetch http://au.archive.ubuntu.com/ubuntu/pool/main/r/ruby-net-telnet/ruby-net-telnet_0.1.1-2_all.deb 403 Forbidden [IP: 202.158.214.106 80]
E: Failed to fetch http://au.archive.ubuntu.com/ubuntu/pool/universe/libt/libtar/libtar0_1.2.20-8_amd64.deb 403 Forbidden [IP: 202.158.214.106 80]
E: Failed to fetch http://au.archive.ubuntu.com/ubuntu/pool/main/c/constantly/python3-constantly_15.1.0-1build1_all.deb 403 Forbidden [IP: 202.158.214.106 80]
E: Unable to fetch some archives, maybe run apt-get update or try with –fix-missing?
I have tried running ‘sudo apt-get update’ and ‘sudo apt-get update –fix-missing’ but to no effect.
Hi Yang. The Ubuntu package repo mirror permission is not configured properly. You can remove the ‘au.’ part from the url by editing the ‘/etc/apt/source.list’ (you can use ‘sudo nano’)
I have the following error while trying to install noetic desktop full on Ubuntu 20.04.2 LTS
I tried installing the libraries manually but all of them are up to date.
sudo apt install ros-noetic-desktop-full
Reading package lists… Done
Building dependency tree
Reading state information… Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
ros-noetic-desktop-full : Depends: ros-noetic-simulators but it is not going to be installed
Depends: ros-noetic-urdf-sim-tutorial but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
There are 2 ways that may solve the problem.
Run
sudo apt update && sudo apt install ros-noetic-desktop-full
If the first way doesn’t work, try install individual packages under
ros-noetic-desktop-full
:sudo apt install ros-noetic-desktop ros-noetic-perception ros-noetic-simulators ros-noetic-urdf-sim-tutorial
. This way, if one of its dependencies are not met, you can still install other dependencies.better you check the version of libc6 or try installing libc6-dev if you see a conflict, just reinstall it with the required version.
did you find how to fix this?
I have a problem, after entering its product it showed:
Executing: /tmp/apt-key-gpghome.2rzZXNEMFZ/gpg.1.sh –keyserver hkp://keyserver.ubuntu.com:80 –recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
gpg: key F42ED6FBAB17C654: “Open Robotics info@osrfoundation.org” not changed
gpg: Total number processed: 1
gpg: unchanged: 1
Instead of import, it showed unchanged, could I know why and can somebobdy assist me?
awesome how-to guide! thanks a lot for spending time writing the details!
works like champ the first try!
How to install moveit package for ros-noetic? Are there any Binaries released?
MoveIt is just released for Noetic today (9/15). You should be able to install it by
sudo apt install ros-noetic-moveit
.sir i checked and it is available but for five times
export DISPLAY={192.168.****}:0.0
export DISPLAY={192.168.****}:0.0
export DISPLAY=192.168.****:0.0
export DISPLAY=192.168.****:0.0
export DISPLAY=192.168.****:0.0
export DISPLAY=172.29****:0
source /opt/ros/noetic/setup.bash
source /opt/ros/noetic/setup.bash
source /opt/ros/noetic/setup.bash
source /opt/ros/noetic/setup.bash
source /opt/ros/noetic/setup.bash
source /opt/ros/noetic/setup.bash
Try to only leave one there and see if that solves the problem…
WARNING: unable to configure logging. No log files will be generated
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
Resource not found: roslaunch
The traceback for the exception was written to the log file
Traceback (most recent call last):
File “/usr/lib/python3/dist-packages/roslaunch/init.py”, line 322, in main
p.start()
File “/usr/lib/python3/dist-packages/roslaunch/parent.py”, line 277, in start
self._start_infrastructure()
File “/usr/lib/python3/dist-packages/roslaunch/parent.py”, line 226, in _start_infrastructure
self._load_config()
File “/usr/lib/python3/dist-packages/roslaunch/parent.py”, line 137, in _load_config
self.config = roslaunch.config.load_config_default(self.roslaunch_files, self.port,
File “/usr/lib/python3/dist-packages/roslaunch/config.py”, line 447, in load_config_default
load_roscore(loader, config, verbose=verbose)
File “/usr/lib/python3/dist-packages/roslaunch/config.py”, line 92, in load_roscore
f_roscore = get_roscore_filename()
File “/usr/lib/python3/dist-packages/roslaunch/config.py”, line 84, in get_roscore_filename
return os.path.join(r.get_path(‘roslaunch’), ‘resources’, ‘roscore.xml’)
File “/usr/lib/python3/dist-packages/rospkg/rospack.py”, line 207, in get_path
raise ResourceNotFound(name, ros_paths=self._ros_paths)
rospkg.common.ResourceNotFound: roslaunch
sir iam getting this error
above error happens whenever i am launching ROS roscore
It looks like you don’t have the
setup.bash
in your.bashrc
properly.Could you check if you have
source /opt/ros/noetic/setup.bash
in your.bashrc
file? (Having it only once is better.)