Ubuntu20.04安装ROS Noetic (一篇博客走遍天)
前言
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
拉取一些信息和文件。这个网站现在被墙了,导致这一步出错。
解决方法
- 通过
IPAddress.com
首页,输入raw.githubusercontent.com查询到真实IP地址
-
修改
/etc/hosts
文件,终端输入以下命令并回车:sudo gedit /etc/hosts
-
添加以下内容保存即可
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之后都可以删除
-
修改
/etc/resolv.conf
文件,终端输入以下命令并回车sudo gedit /etc/resolv.conf
-
将原有的nameserver那一行注释,并添加以下两行后保存:
nameserver 8.8.8.8 #谷歌域名服务器
nameserver 8.8.4.4 #谷歌域名服务器 -
最后再执行**
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
解决方法:
最有效的方法:将更新所需要的文件下载放在本地文件夹,并修改执行更新的路径。在本地完成更新,避免向外国网站拉取信息和文件。
- 第一步:本地更新所需文件下载
-
第二步:将下载的压缩包解压缩
前往下载压缩包的当前目录下,终端输入
unzip ros_github.zip
-
第三步:将提取出的文件夹移动到
/etc/ros
文件夹下
终端输入:sudo cp -r ../ros_github/ /etc/ros/
注:ros_github/
为你自己提取安放的路径 -
第四步:修改更新文件路径
- 修改
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
- 修改
/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
- 再次执行 rosdep update
安装成功界面
一般情况下,这次更新很迅速,因为都是索引本地文件安装更新,如果还是显示找不到文件,可以尝试关闭终端再次执行更新命令。(我的fuerte就有几次Hit不到,重复了几次才成功) 到此为止就成功安装ROS了。
7. 运行ROS功能包检验安装
- 在终端输入命令:roscore
因为我使用了alias别名 ros 来载入ROS环境,所以要多输入一个ros命令,如果需要常用ROS的话,建议不用别名才开启ROS环境,因为ROS需要开多个终端同时运行程序,一个终端代表一个节点,这样才能实现节点之间的通讯,不过也可以使用launch来一次性发布多个节点,先挖个坑之后填
- 运行经典小海龟
第一个终端输入 roscore
第二个终端输入 rosrun turtlesim turtlesim_node
第三个终端输入 rosrun turtlesim turtle_teleop_key
运行后可以通过方向键来控制小海龟的移动,效果图如上,本人艺术细胞不太好,随便画了一个奇奇怪怪的图案,大家安装ROS之后可以实操尝试画出更可爱的图形 n(≧▽≦)n
三、总结
在安装ROS的过程中遇到很多问题,十分感谢参考博客的各位作者,文中关于ROS十分麻烦的外网访问超时,都从他们博客中得到可行性十分高的回答。他们的文章有可能出现的问题,我也相应做了一些补充,将安装的全流程记录于此,希望大家只用看一篇博客就可以安装好ROS,抛砖引玉帮助更多人走上ROS的学习之路
如果遇到本文没有提及的问题,可以留下你的评论,大家一起来解决问题,我会不定期更新这篇博客,保证其实时性,帮助更多人,将这篇博客变得更加全面的安装教程!!!
参考博客
ERROR: cannot download default sources list from: https://raw.githubusercontent.com
这篇文章转载于:学新通
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通
- 本文地址: https://www.swvq.com/boutique/detail/tanhehechi
- 联系方式: luke.wu●vfv.cc
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
photoshop怎么在一张图上加图
PHP中文网 06-24 -
photoshop像素不50怎么改
PHP中文网 06-22 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
photoshop蒙版画笔没反应怎么办
PHP中文网 06-24 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
抖音国际版要用什么加速器能流畅刷Tiktok的加速器
TK小达人 08-02