• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Ubuntu20.04安装ROS Noetic (一篇博客走遍天)

武飞扬头像
瑞雪大侠
帮助1

前言

Ubuntu安装ROS教程众多,但是ROS版本和Ubuntu版本一直更新,ROS有对应的Ubuntu版本下载,版本不一样就会出现不一样的配置问题,甚至导致安装失败或者安装残缺,本文发布于 2022.10.12 保证实时性

一、版本选择

不同的Ubuntu安装的Ros版本不同。Ubuntu20.04对应的ros版本为ROS Noetic ROS安装官网
学新通

ROS版本 Ubuntu版本
Melodic 18.04
Noetic 20.04

二、下载步骤

接下来的步骤参考ROS官网的安装步骤详解:Noetic官网

1. 设置ROS的下载源

因为ROS的官方源是外网下载,速度比较慢,这里推荐选择镜像mirrors下载

1.1 设置中科大源

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'

1.2 设置自己主机的公钥

# 下载一个用来请求 Web 服务器的命令行工具
sudo apt install curl # if you haven't already installed curl

# 从远程服务器下载公钥并添加
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

这里我遇到了一个问题,就是从远程服务器下载公钥时报错

学新通

这是因为http://raw.githubusercontent.com是墙外地址,无法访问

解决方法:

弄个梯子,或者从另一个网址获取密钥,如下

wget http://packages.ros.org/ros.key
sudo apt-key add ros.key

1.3 更新最新可用软件包列表

sudo apt update

2. 安装ROS

安装ROS有许多不同版本可以选择,官网也对其有详细的介绍

2.1 ROS 桌面完全版本

这个版本是包括ROS所有功能包,包括rqt,rviz,机器人通用库,2D / 3D模拟器,导航和2D / 3D感知等等的全套基础组件(新手强烈建议安装这个就好)

学新通

sudo apt install ros-noetic-desktop-full

2.2 ROS 桌面版本

这个版本是包括ROS的基础功能包,还有一个额外的常用工具,例如 rqt (ROS上位机)、rviz(一种ROS强大的仿真软件)

学新通

sudo apt install ros-noetic-desktop

2.3 ROS基础版本

这个版本是ROS最基础的功能包,有ROS的通信包,没有 GUI 可视化的工具

学新通

sudo apt install ros-noetic-ros-base

2.4 ROS额外功能包 DLC

同时ROS还支持安装特定的功能包,通过下面的ROS索引链接来找到想要下载的功能包ROS Index 软件包索引

学新通

sudo apt install ros-noetic-PACKAGE
sudo apt install ros-noetic-slam-gmapping
apt search ros-noetic

3. 设置环境变量

我们现在已经成功安装好ROS了,但是现在终端bash还无法识别ROS相关的命令

Linux是一个多用户的操作系统。多用户意味着每个用户登录系统后,都有自己专用的运行环境。而这个环境是由一组变量所定义,这组变量被称为环境变量。用户可以对自己的环境变量进行修改以达到对环境的要求

所以我们需要为ROS添加环境变量,与python是类似的,让我们的终端可以识别roscore等命令

注意!!!查看自己的终端类型,不同的终端有不同的配置文件,一般是bash

echo $0

3.1 bash

临时添加环境变量

source /opt/ros/noetic/setup.bash

上面的命令是临时只对当前终端的环境配置生效,如果我们新开一个终端就会失效,所以我们可以将激活环境变量的命令写入终端的配置文件里面,每次新启动终端就可以自动加载环境变量

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

3.2 zsh

临时添加环境变量

source /opt/ros/noetic/setup.zsh

永久添加环境变量

echo "source /opt/ros/noetic/setup.zsh" >> ~/.zshrc
source ~/.zshrc

3.3 随心所欲切换环境

这里介绍一个非常好用的命令行命令 alias 他的功能是可以设置命令行命令的别名,以简写命令,提高操作效率(PS:也可以避免出现 sudo rm -rf /* 直接重开的情况)

具体用法:

学新通

参考~/.zshrc 文件给出的例子

4. 下载安装包的依赖

sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential

根据官网的介绍,为了更好构建ROS的工作空间,有很多多样化的工具都会不断更新发布,为了下载这些工具和依赖需要安装上述ROS功能包,强烈建议安装,例如 rosinstall 就是一个非常常用的命令行工具,让你只用一个命令就可以很快速简单下载很多ROS功能包源码

5. rosdep初始化

在使用很多ROS工具之前,你需要初始化rosdep,rosdep能够让你更快简单下载源码的系统依赖,针对本主机的系统适配,大家也可以注意到前面其实我们已经下载了 python3-rosdep

所以我们只需要对rosdep进行初始化和更新

sudo rosdep init

常见报错与解决方法

报错:Website may be down

第一种报错:
ERROR: cannot download default sources list from:
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
Website may be down.

学新通

原因

初始化的这一步将会从外国的网站raw.githubusercontent.com拉取一些信息和文件。这个网站现在被墙了,导致这一步出错。

解决方法

  1. 通过IPAddress.com首页,输入raw.githubusercontent.com查询到真实IP地址

学新通

  1. 修改/etc/hosts文件,终端输入以下命令并回车:sudo gedit /etc/hosts

  2. 添加以下内容保存即可

    185.199.108.133 raw.githubusercontent.com
    185.199.109.133 raw.githubusercontent.com
    185.199.110.133 raw.githubusercontent.com
    185.199.111.133 raw.githubusercontent.com

    这些步骤是让你的linux系统在访问raw.githubusercontent.com这个网站时,会自动根据给定的IP地址直接访问,不需要中转站,没有外网的限制,相当于绕过去了,这些IP地址设置在安装完ROS之后都可以删除

  3. 修改/etc/resolv.conf 文件,终端输入以下命令并回车sudo gedit /etc/resolv.conf

  4. 将原有的nameserver那一行注释,并添加以下两行后保存:

    nameserver 8.8.8.8 #谷歌域名服务器
    nameserver 8.8.4.4 #谷歌域名服务器

  5. 最后再执行**sudo rosdep init**

报错:The read operation timed out

第二种报错:
ERROR: Rosdep experienced an error: The read operation timed out
Please go to the rosdep page [1] and file a bug report with the stack trace below.

解决方法:在我们绕过外网之后,我们已经登录上网站,但是读取操作的时候超时了,我也是在找寻博客时发现,可以尝试让手机开热点让电脑连接,再次执行次 sudo rosdep init 命令,虽然我不太清楚其中的原理是什么,可以推荐大家去试试,我是试了之后成功的,我手机是电信的热点秒成!

成功安装

学新通

显示如上图信息,则rosdep初始化成功

6. rosdep update更新

rosdep update

经典报错:更新超时read operation timed out

解决方法:

最有效的方法:将更新所需要的文件下载放在本地文件夹,并修改执行更新的路径。在本地完成更新,避免向外国网站拉取信息和文件。

  1. 第一步:本地更新所需文件下载
  1. 第二步:将下载的压缩包解压缩

    前往下载压缩包的当前目录下,终端输入

    unzip ros_github.zip  
    
  2. 第三步:将提取出的文件夹移动到/etc/ros文件夹下
    终端输入:

    sudo cp -r ../ros_github/ /etc/ros/
    注:ros_github/为你自己提取安放的路径

  3. 第四步:修改更新文件路径

    1. 修改index-v4.yaml路径,终端输入以下命令

    注意ROS安装的Python版本,我安装的是Python3,不同版本文件存在位置不同

    sudo gedit /usr/lib/python3/dist-packages/rosdistro/__init__.py
    

索引到文件68行,将URL更改为 file:///etc/ros/ros_github/index-v4.yaml

学新通

  1. 修改 /etc/ros/rosdep/sources.list.d/20-default.list文件,终端输入以下命令
sudo gedit /etc/ros/rosdep/sources.list.d/20-default.list

将原有内容全部注释,添加一下新的内容,让ROS update自动索引自己下载的文件

#os-specific listings first
yaml file:///etc/ros/ros_github/osx-homebrew.yaml osx
#generic
yaml file:///etc/ros/ros_github/base.yaml
yaml file:///etc/ros/ros_github/python.yaml
yaml file:///etc/ros/ros_github/ruby.yaml
gbpdistro file:///etc/ros/ros_github/fuerte.yaml fuerte
学新通

  1. 再次执行 rosdep update

安装成功界面

学新通

一般情况下,这次更新很迅速,因为都是索引本地文件安装更新,如果还是显示找不到文件,可以尝试关闭终端再次执行更新命令。(我的fuerte就有几次Hit不到,重复了几次才成功) 到此为止就成功安装ROS了。

7. 运行ROS功能包检验安装

  1. 在终端输入命令:roscore

因为我使用了alias别名 ros 来载入ROS环境,所以要多输入一个ros命令,如果需要常用ROS的话,建议不用别名才开启ROS环境,因为ROS需要开多个终端同时运行程序,一个终端代表一个节点,这样才能实现节点之间的通讯,不过也可以使用launch来一次性发布多个节点,先挖个坑之后填

  1. 运行经典小海龟

第一个终端输入 roscore

第二个终端输入 rosrun turtlesim turtlesim_node

第三个终端输入 rosrun turtlesim turtle_teleop_key
学新通

运行后可以通过方向键来控制小海龟的移动,效果图如上,本人艺术细胞不太好,随便画了一个奇奇怪怪的图案,大家安装ROS之后可以实操尝试画出更可爱的图形 n(≧▽≦)n

三、总结

在安装ROS的过程中遇到很多问题,十分感谢参考博客的各位作者,文中关于ROS十分麻烦的外网访问超时,都从他们博客中得到可行性十分高的回答。他们的文章有可能出现的问题,我也相应做了一些补充,将安装的全流程记录于此,希望大家只用看一篇博客就可以安装好ROS,抛砖引玉帮助更多人走上ROS的学习之路

如果遇到本文没有提及的问题,可以留下你的评论,大家一起来解决问题,我会不定期更新这篇博客,保证其实时性,帮助更多人,将这篇博客变得更加全面的安装教程!!!

参考博客

ROS安装时:找不到有效的OpenPGP数据

ERROR: cannot download default sources list from: https://raw.githubusercontent.com

解决 rosdep update 问题

Ubuntu18.04安装ROS

这篇文章转载于:学新通

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通
  • 本文地址: https://www.swvq.com/boutique/detail/tanhehechi
  • 联系方式: luke.wu●vfv.cc
系列文章
更多 icon
同类精品
更多 icon
我要评论
我的头像
精彩评论
继续加载