ROS 2 安装手册和踩过的坑

  • 官方流程
    • 系统要求
    • 系统设置
      • 更换Ubuntu 清华源
      • 设置语言区域
      • 增加ROS 2 apt软件仓库
      • 安装开发工具和ROS工具
    • 获取ROS 2代码
    • 使用rosdep安装依赖
    • 在workspace中编译代码
      • 编译代码
    • 环境配置
    • 验证样例
  • 参考

本篇记录一下在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-8sudo 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-8locale  # 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/

Ubuntu 18.04安装ROS 2相关推荐

  1. ubuntu 18.04 安装 ROS

    ubuntu 18.04 安装 ROS 1.设置软件源 国外的: sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb ...

  2. Ubuntu 20.04安装Ros Noetic及Ubuntu 18.04安装ROS Melodic(两版本详细填坑)

    Ubuntu 20.04安装Ros Noetic及18.04安装ROS Melodic 表1-1 ROS的历史版本 1. 设置安装源 2. 添加秘钥 3. 更新列表 4. 开始安装 5. 配置ROS环 ...

  3. wsl2 Ubuntu 18.04 安装 ROS

    目录 前期准备 安装ROS 初始化rosdep 测试 前期准备 WSL的安装见旧版 WSL 的手动安装步骤从步骤4开始弄. 图形界面安装见在WSL中使用GPU:WSL2 + Ubuntu 18.04 ...

  4. ubuntu 18.04 安装ROS melodic教程。

    1.首先,我这个ubuntu 18.04是刚刚安装好的,所以我们先换源. sudo nano /etc/apt/sources.list 然后将里面的内容清空,把下面的内容复制进去保存退出. ##中科 ...

  5. Ubuntu 18.04安装ROS Melodic

    设置sources.list 设置源(目前找到的能够正常下载的源) sudo sh -c ' echo "deb http://packages.ros.org/ros/ubuntu $(l ...

  6. Ubuntu 18.04 安装ROS遇到的问题

    一.安装ROS-melodic sudo apt-get updatesudo apt-get install ros-melodic-desktop-fullsudo apt-get install ...

  7. ubuntu 18.04安装 ros melodic提示: 有一些软件包无法被安装。如果您用的是 unstable 发行版...解决方法

    sudo apt install ros-melodic-desktop-full 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 有一些软件包无法被安装.如 ...

  8. Windows10+Ubuntu 18.04.2+ROS 安装笔记(SSD单硬盘)下

    Windows10+Ubuntu 18.04.2+ROS 安装笔记(SSD单硬盘)下 一.前言 二.化繁为简 二.补充说明 三.测试ROS 是否安装成功 一.前言 最近需要学习ROS和python,于 ...

  9. Windows10+Ubuntu 18.04.2+ROS 安装笔记(SSD单硬盘)上

    Windows10+Ubuntu 18.04.2+ROS 安装笔记(SSD单硬盘)上 一.前言 二.化繁为简 三.补充说明 小结 一.前言 最近需要学习ROS和python,于是便需要装Linux系统 ...

最新文章

  1. ORA-01113 file 1 needs media recovery
  2. 使用YOLOv5模型进行目标检测!
  3. mysql优化Analyze Table
  4. QT设置坐标轴XY轴显示范围方法
  5. jsch连接mysql_求用jsch网络工具包通过ssh连接远程oracle数据库并发送sql操作语句(数据库在unix上)java代码例子...
  6. idea插件开发(02)---相关概念介绍
  7. 小程序 - 首次使用
  8. Exception in thread “main” java.lang.NoClassDefFoundError: com/google/common/base/Preconditions
  9. 2020-09-30
  10. Windows7安装教程
  11. 从校园到职场,你对前景很迷茫?
  12. Win7更换锁屏和开机画面
  13. 浅析GPU通信技术(上)-GPUDirect P2P
  14. mysql截断表_mysql – 如何正确截断表?
  15. 初中生也能看懂的狭义相对论(1.世界是什么?)(原子,质子和分子)(看不懂算我输)
  16. 淘宝API接口(item_sku - 获取sku详细信息)
  17. 从多张图片重建3D模型(瞎七瞎八写了好多)
  18. 蘑菇云「行空板Python入门教程」第六课:贪吃蛇小游戏
  19. [淘宝客技术篇006]如何登录阿里妈妈(上)
  20. excel中F4的妙用

热门文章

  1. et操作 python wps_拿起来就用的office二次开发(python,win32com使用经历总结)
  2. 零c语言txt下载,C语言问题c-0是什么意思
  3. nginx 返回动态Html,Nginx负载均衡 -Nginx动态更新upstream
  4. AndroidX 方法数限制 Error:Cannot fit requested classes in a single dex file 64K问题
  5. linux 流量 脚本,linux 检测网络出入流量 当达到一定量时 自动执行另一个脚本。...
  6. php存储session更改,php如何修改SESSION的生存存储时间的实例代码_php实例
  7. vs dll lib 使用记录
  8. React Fiber源码逐个击破系列-scheduler
  9. 2017年哪些网络安全威胁不容忽视?
  10. 应用程序的日志通过rsyslog推送到syslog服务器