Ubuntu 18.04安装ROS 2

  • Post author:
  • Post category:其他


本篇记录一下在Ubuntu 18.04下安装ROS 2 Eloquent Elusor的过程,由于ROS 2首选的系统就是Ubuntu18.04,不过在国内的安装过程里面确实很多坑,记录下来帮助大家避坑。



官方流程

https://index.ros.org/doc/ros2/Installation/Eloquent/Linux-Development-Setup/



系统要求

按照官方,要求是

Ubuntu Linux – Bionic Beaver (18.04) 64-bit

这个就不赘述了



系统设置



更换Ubuntu 清华源

由于国内访问Ubuntu默认的软件源非常慢,所以安装后优先更新为国内的镜像源

Ubuntu 的软件源配置文件是 /etc/apt/sources.list。将系统自带的该文件做个备份,将该文件替换为下面内容,即可使用 清华的软件源镜像。

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse


注意:


清华源镜像仅包含 32/64 位 x86 架构处理器的软件包,在 ARM(arm64, armhf)、PowerPC(ppc64el)、RISC-V(riscv64) 和 S390x 等架构的设备上(对应官方源为ports.ubuntu.com)请使用 ubuntu-ports 镜像。

设置完软件源,可以大大地加速我们的apt更新安装速度。



设置语言区域

官方要求是需要确认支持UTF-8,虽然说起来似乎不一定需要,不过确认一下即可

locale  # check for UTF-8

sudo apt update && sudo apt install locales
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

locale  # verify settings



增加ROS 2 apt软件仓库

我们需要将我们的ROS2 apt软件仓库加入系统。

首先要验证我们的GPG key

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 -

将仓库加入我们的软件源

sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2-latest.list'


注意:


这里如果直接执行的话,会遇到raw.githubusercontent.com的DNS污染问题。


解决方法:

  1. 通过IPAddress.com,可以查到raw.githubusercontent.com的真实IP地址为


    .*

    .

    .

  2. 通过

    sudo vi /etc/hosts


    在hosts文件最后加入IP和域名的绑定即可解决。

***.***.**.*** raw.githubusercontent.com



安装开发工具和ROS工具

sudo apt update && sudo apt install -y \
  build-essential \
  cmake \
  git \
  python3-colcon-common-extensions \
  python3-pip \
  python-rosdep \
  python3-vcstool \
  wget
# install some pip packages needed for testing
python3 -m pip install -U \
  argcomplete \
  flake8 \
  flake8-blind-except \
  flake8-builtins \
  flake8-class-newline \
  flake8-comprehensions \
  flake8-deprecated \
  flake8-docstrings \
  flake8-import-order \
  flake8-quotes \
  pytest-repeat \
  pytest-rerunfailures \
  pytest \
  pytest-cov \
  pytest-runner \
  setuptools
# install Fast-RTPS dependencies
sudo apt install --no-install-recommends -y \
  libasio-dev \
  libtinyxml2-dev
# install Cyclone DDS dependencies
sudo apt install --no-install-recommends -y \
  libcunit1-dev



获取ROS 2代码

创建workspace,clone ROS 2的代码仓库

mkdir -p ~/ros2_eloquent/src
cd ~/ros2_eloquent
wget https://raw.githubusercontent.com/ros2/ros2/eloquent/ros2.repos
vcs import src < ros2.repos



使用rosdep安装依赖

sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro eloquent -y --skip-keys "console_bridge fastcdr fastrtps libopensplice67 libopensplice69 rti-connext-dds-5.3.1 urdfdom_headers"



在workspace中编译代码

虽说是编译代码,其实编译过程中还有不少需要下载的情况,个人就在 rviz_ogre_vendor的编译中遇到了很久的下载错误。大家可以想办法在下载方面采用一些方法。



编译代码

cd ~/ros2_eloquent/
colcon build --symlink-install



环境配置

. ~/ros2_eloquent/install/setup.bash



验证样例

在一个终端(A)里,运行配置,启动C++的talker

. ~/ros2_eloquent/install/local_setup.bash
ros2 run demo_nodes_cpp talker

在另一个终端(B)里,运行配置,启动Python的listener

. ~/ros2_eloquent/install/local_setup.bash
ros2 run demo_nodes_py listener

终端A中显示

HP-ProDesk-680-G1-TWR:~/ros2_eloquent$ ros2 run demo_nodes_cpp talker
[INFO] [talker]: Publishing: 'Hello World: 1'
[INFO] [talker]: Publishing: 'Hello World: 2'
[INFO] [talker]: Publishing: 'Hello World: 3'
[INFO] [talker]: Publishing: 'Hello World: 4'
[INFO] [talker]: Publishing: 'Hello World: 5'
[INFO] [talker]: Publishing: 'Hello World: 6'
[INFO] [talker]: Publishing: 'Hello World: 7'
[INFO] [talker]: Publishing: 'Hello World: 8'
[INFO] [talker]: Publishing: 'Hello World: 9'
[INFO] [talker]: Publishing: 'Hello World: 10'
[INFO] [talker]: Publishing: 'Hello World: 11'
[INFO] [talker]: Publishing: 'Hello World: 12'
[INFO] [talker]: Publishing: 'Hello World: 13'
[INFO] [talker]: Publishing: 'Hello World: 14'
[INFO] [talker]: Publishing: 'Hello World: 15'

终端B中显示

HP-ProDesk-680-G1-TWR:~/ros2_eloquent$ ros2 run demo_nodes_py listener
[INFO] [listener]: I heard: [Hello World: 1]
[INFO] [listener]: I heard: [Hello World: 2]
[INFO] [listener]: I heard: [Hello World: 3]
[INFO] [listener]: I heard: [Hello World: 4]
[INFO] [listener]: I heard: [Hello World: 5]
[INFO] [listener]: I heard: [Hello World: 6]
[INFO] [listener]: I heard: [Hello World: 7]
[INFO] [listener]: I heard: [Hello World: 8]
[INFO] [listener]: I heard: [Hello World: 9]
[INFO] [listener]: I heard: [Hello World: 10]
[INFO] [listener]: I heard: [Hello World: 11]
[INFO] [listener]: I heard: [Hello World: 12]
[INFO] [listener]: I heard: [Hello World: 13]
[INFO] [listener]: I heard: [Hello World: 14]
[INFO] [listener]: I heard: [Hello World: 15]



大功告成~~~



参考

  • https://index.ros.org/doc/ros2/Installation/Eloquent/Linux-Development-Setup/
  • https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/
  • https://alanlee.fun/2018/05/18/ubuntu-ssr/
  • https://wylu.me/posts/eed37a90/



版权声明:本文为amuro_ray027原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。