本文主要是介绍Ubuntu20.04安装ROS Noetic (一篇博客走遍天),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 前言
- 一、版本选择
- 二、下载步骤
- 1. 设置ROS的下载源
- 1.1 设置中科大源
- 1.2 设置自己主机的公钥
- 1.3 更新最新可用软件包列表
- 2. 安装ROS
- 2.1 ROS 桌面完全版本
- 2.2 ROS 桌面版本
- 2.3 ROS基础版本
- 2.4 ROS额外功能包 DLC
- 3. 设置环境变量
- 3.1 bash
- 3.2 zsh
- 3.3 随心所欲切换环境
- 4. 下载安装包的依赖
- 5. rosdep初始化
- 常见报错与解决方法
- 报错:Website may be down
- 报错:The read operation timed out
- 成功安装
- 6. rosdep update更新
- 经典报错:更新超时read operation timed out
- 7. 运行ROS功能包检验安装
- 三、总结
前言
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 #google域名服务器
nameserver 8.8.4.4 #google域名服务器 -
最后再执行**
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
解决方法:
最有效的方法:将更新所需要的文件下载放在本地文件夹,并修改执行更新的路径。在本地完成更新,避免向外国网站拉取信息和文件。
- 第一步:本地更新所需文件下载
CSDN博客作者已经将更新所需文件整理好上传云中(大家可以去观摩原文,文后有参考博客链接):
链接: https://pan.baidu.com/s/1PhTCqtvScV_XGf9ac0CcCg 提取码: w3ix
-
第二步:将下载的压缩包解压缩
前往下载压缩包的当前目录下,终端输入
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
三、总结
以上就是Unbuntu20.04安装Ros的过程,本文是用来帮助那些没有linux||爬楼梯||方法的同学的。如果有||爬楼||方法,可以尝试开启后,直接执行 估计是一路通畅不会遇到什么问题的。
在安装ROS的过程中遇到很多问题,十分感谢参考博客的各位作者,文中关于ROS十分麻烦的外网访问超时,都从他们博客中得到可行性十分高的回答。他们的文章有可能出现的问题,我也相应做了一些补充,将安装的全流程记录于此,希望大家只用看一篇博客就可以安装好ROS,抛砖引玉帮助更多人走上ROS的学习之路
如果遇到本文没有提及的问题,可以留下你的评论,大家一起来解决问题,我会不定期更新这篇博客,保证其实时性,帮助更多人,将这篇博客变得更加全面的安装教程!!!
参考博客
ROS安装时:找不到有效的OpenPGP数据
ERROR: cannot download default sources list from: https://raw.githubusercontent.com
解决 rosdep update 问题
Ubuntu18.04安装ROS
这篇关于Ubuntu20.04安装ROS Noetic (一篇博客走遍天)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!