文章目录
安装前必看
本次更新于 2022年10月18 日
2021年暑假我在这篇文章中记载了安装过程,但现在有了更快捷方便的方法。可以节省大量时间。
执行下面的命令 然后按照脚本指示文件操作即可
wget http://fishros.com/install -O fishros && sudo ./fishros
给 linux 新手的解释下命令的含义:wget + 网址 -O = 将某网址的文件下载下来并输出(output -O) 到指定的位置也可以重命名。 & 前半段意思是 将文件的下载放在当前目录下并命名为fishros
后半段的意思是 ./fishros 执行 fishros 命令
这个脚本是别人做好的,可以替代我下面几千字的所有操作。非常推荐新手使用。
安装过程中如果有什么地方 不知道怎么操作 看不懂脚本的提示信息 。可以去看我后面的内容。
安装完毕后 直接跳到我所说检查步骤去检查整体的安装情况。** 这个很重要! **
我目前在ubuntu1804 2004 2204 三个平台上都测试过。
安装完ros后 建议检查安装情况,可以直接跳转到旧文章的检查段落。
后面的内容是我去年写的,但是我还是推荐你看一变以了解整个流程。毕竟很多时候安装软件配置环境依赖他人写好的脚本 将来如果出问题了就手足无措。
同时后面的内容还记载了常见的问题,
注意:
- 如果遇到错误 请先浏览完整篇文章看是否有提及该错误。
- 浏览评论区看是否有人遇到相同的错误。
旧博文的前言
下方的内容仅适用于Ubuntu1804 且 操作比较原始,建议使用上面的最新方法安装。但建议阅读一遍了解安装的整个过程
Unbuntu安装Ros教程众多但时间太久大多不再能解决现在安装遇到的问题,本文发布于2021.7.15
保证及时更新,保证时效。
安装Ros 时将自动安装旧版的Cmake3.10.2。所以在安装Ros之前,请先检查此先是否有安装Cmake。
如果有请再查看它的版本例如 :
cmake -version
显示:cmake version 3.20.5
安装Ros之后可能出现这种情况:在终端的命令行输入cmake-version
将会显示cmake version 3.10
也就是说此时cmake命令指向的是Ros安装下来的旧版cmake。对于这个问题的解决办法“软链接”补充在本文末尾。
如果在此之前没有安装cmake,那对于Ros安装没什么影响。完全可以在安装ROS后,去Cmake官网安装一个新版的cmake 再更改软链接即可。Cmake安装和软链接设置见本文末尾
注意:如果遇到问题,先去评论区看看有没有其他人和你的问题相同的。
提示:以下是本篇文章正文内容,下面案例可供参考
一、版本选择
不同的Unbutn安装的Ros版本不同。Ubuntu18.04对应的ros版本为ROS Melodic
提示:请安装对应版本,不要安装错了。版本对应如下
如果你的版本不在上面的图提示中 先搜索下版本对应关系。
二、下载步骤
提示:接下来的步骤将参考Ros官网的步骤详解 :RosMelodic官网
注:国内网络打开该网址需要等待非常长的时间,我下面的几个安装步骤和官网是一样的。当然你也可以去参考官网
注:请保证这个环节中网络的稳定,建议插有线网或链接高速wifi
1.检查Unbuntu的软件和更新源
将四个选项全部选上,同时将下载源更换为国内源。我这里用的是阿里云,换成清华中科大都是可以的。
2.设置Ros的下载源
解释:接下来是将ros 的下载源设置为中科大源,使用外国的源下载速度很慢:详情见RosMelodic网址
2.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'
2.2 设置公钥: 在终端输入如下命令后回车
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
注解:我这里已经安装过一次钥匙了,所以显示不太一样。
注解:如果遇到问题 请尝试亲手在Unbutu终端输入以上命令。CSDN复制黏贴进终端有可能会出问题。
2.3 更新最新可用软件包列表:在终端输入以下命令后回车
sudo apt update
常见问题:
设置钥匙时候如果不能设置,可能是因为电脑中没有安装相应钥匙功能的包 可以执行以下命令解决 并重复设置钥匙的步骤。
3.安装ROS
在终端输入以下命令后回车
sudo apt install ros-melodic-desktop-full
接下来就是漫长的等待
注解:这个命令将安装完整的ROS软件,包括ROS,rqt,rviz,机器人通用库,2D / 3D模拟器,导航和2D / 3D感知等等的全套基础组件(新手强烈建议安装这个就好)
4.设置环境变量
在终端输入以下命令后回车
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
注解:这个步骤是让你的 bash终端 以后可以识别 roscore,rosrun等命令。
ZSH用户 : 如果你用的不是bash,例如zsh fish等其他终端,那你就在zsh的配置文件里添加环境变量。
echo "source /opt/ros/melodic/setup.bash" >> ~/.zshrc
source ~/.zshrc
注意: zsh 的终端环境配置我不确定是不是这么弄,我只是写出来让zsh用户参考, 如果不行,你自己去home文件夹下添加zsh配置即可。
另外给Linux新手补充一点:如果你在bash中添加了环境,那你在zsh终端是无法启动的ros 的。 反过来也是一样。我建议你在常用终端下都添加环境变量。
5.下载其他功能组件
在终端输入以下命令后回车
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
这些组件可以构建和管理开发者自己的ROS工作空间,强烈建议安装。详情见 :[Ros官网]
6.rosdep init 初始化
1.在终端输入以下命令后回车
sudo rosdep init
2.常见报错
第一种报错:
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.
第二种报错
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.
[1] : http://www.ros.org/wiki/rosdep
rosdep version: 0.21.0
Traceback (most recent call last):
File “/usr/lib/python2.7/dist-packages/rosdep2/main.py”, line 146, in rosdep_main
exit_code = _rosdep_main(args)
、、、、、、
、、、、、、
、、、、、、
SSLError: (‘The read operation timed out’,)
3.原因:初始化的这一步将会从外国的网站raw.githubusercontent.com
拉取一些信息和文件。这个网站现在被墙了,导致这一步出错。
4.解决办法:
法一:Unbuntu||爬楼梯||后再次尝试,没有方法的同学用下面的方法- 法二:让手机开热点让电脑连接,再次执行次命令。看别人的博客评论区说电信的热点就秒成。不一定成功吧,毕竟网站被墙了。而且那个作者的文章写于2020.5.10 有兴趣可以试试。反正我自己试了不行,╮(╯▽╰)╭。建议直接进入方法三。
- 法三:给不能||爬楼梯||的朋友使用,强行绕过墙。以下是具体步骤
首先修改/etc/hosts
文件
1.终端输入以下命令并回车:sudo gedit /etc/hosts
2.把下面这些地址拷贝到hosts文件末尾,然后保存
注解:这个步骤的作用是让你的linux在访问外国网站时会绕过去, 你可以在安装完ros之后把这些设置删除。
199.232.28.133 raw.githubusercontent.com
192.30.253.118 gist.github.com
185.199.110.153 github.io
151.101.113.194 github.global.ssl.fastly.net
52.216.227.168 github-cloud.s3.amazonaws.com
52.74.223.119 github.com
199.232.28.133 avatars1.githubusercontent.com
199.232.28.133 avatars2.githubusercontent.com
199.232.28.133 avatars0.githubusercontent.com
199.232.28.133 avatars3.githubusercontent.com
199.232.28.133 user-images.githubusercontent.com
199.232.28.133 avatars.githubusercontent.com
199.232.28.133 github.map.fastly.net
199.232.28.133 avatars7.githubusercontent.com
54.239.31.69 aws.amazon.com
54.239.30.25 console.aws.amazon.com
54.239.96.90 ap-northeast-1.console.aws.amazon.com
54.240.226.81 ap-southeast-1.console.aws.amazon.com
54.240.193.125 ap-southeast-2.console.aws.amazon.com
54.239.54.102 eu-central-1.console.aws.amazon.com
177.72.244.194 sa-east-1.console.aws.amazon.com
176.32.114.59 eu-west-1.console.aws.amazon.com
54.239.31.128 us-west-1.console.aws.amazon.com
54.240.254.230 us-west-2.console.aws.amazon.com
54.239.38.102 s3-console-us-standard.console.aws.amazon.com
54.231.49.3 s3.amazonaws.com
52.219.0.4 s3-ap-northeast-1.amazonaws.com
54.231.242.170 s3-ap-southeast-1.amazonaws.com
54.231.251.21 s3-ap-southeast-2.amazonaws.com
54.231.193.37 s3-eu-central-1.amazonaws.com
52.218.16.140 s3-eu-west-1.amazonaws.com
52.92.72.2 s3-sa-east-1.amazonaws.com
54.231.236.6 s3-us-west-1.amazonaws.com
54.231.168.160 s3-us-west-2.amazonaws.com
52.216.80.48 github-cloud.s3.amazonaws.com
54.231.40.3 github-com.s3.amazonaws.com
52.216.20.171 github-production-release-asset-2e65be.s3.amazonaws.com
52.216.228.168 github-production-user-asset-6210df.s3.amazonaws.com
————————————————
版权声明:本文为CSDN博主「银时大魔王」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sinat_25923849/article/details/107976434
————————————————
此解决办法 乃是参考 CSDN作者"银时大魔王" 大家可以去看他的原文。我将其中的一行ip映射调整顺序放在了首行。
接下来修改/etc/resolv.conf
文件
1.终端输入以下命令并回车sudo gedit /etc/resolv.conf
2.将原有的nameserver那一行注释,并添加以下两行后保存:
nameserver 8.8.8.8 #google域名服务器
nameserver 8.8.4.4 #google域名服务器
最后再次执行:sudo rosdep init
可能有如下报错:
ERROR: default sources list file already exists: /etc/ros/rosdep/sources.list.d/20-default.list
Please delete if you wish to re-initialize
这说明20-default.list 这个文件已经存在
解决办法:删除20-default.list这个文件。
1.终端输入以下命令并回车删除文件:sudo rm /etc/ros/rosdep/sources.list.d/20-default.list,
2.再次执行:sudo rosdep init
显示如下信息,则rosdep初始化成功
wrote /etc/ros/rosdep/sources.list.d/20-default.list
Recommended: please run
rosdep update
7.rosdep update 更新
在终端输入以下命令并回车rosdep update
1.常见错误:更新超时read operation timed out
2.原因:raw.githubusercontent.com
这个网站被墙,国内网拉取信息网速缓慢。
3.解决办法:
-
法一:||爬楼梯||并重复此操作 -
法二:多次执行
rosdep update
操作,网络良好的情况下有可能完成所有更新。也可以开手机热点更新。如果20来次都不行的话建议使用方法三。 -
法三:将更新所需要的文件下载放在本地文件夹,并修改执行更新的路径。在本地完成更新,避免向外国网站拉取信息和文件。
第一步: 本地更新所需文件下载
CSDN作者银时大魔王已经将更新所需的文件整理好上传云中(大家可以去观摩原文):
链接: https://pan.baidu.com/s/1PhTCqtvScV_XGf9ac0CcCg 提取码: w3ix第二步:将提取出的文件夹移动到
/etc/ros
文件夹下
终端输入:sudo cp -r ../ros_github/ /etc/ros/
注:../ros_github/
为你自己提取安放的路径
第三步:修改更新文件路径
注:下文将原作者的讲述简化并配以图解,如需看原作者博客点击此链接
1.修改
index-v4.yaml
路径
终端输入以下命令回车:sudo gedit /usr/lib/python2.7/dist-packages/rosdistro/__init__.py
,
将该文件中第68行代码注释并添加file:///etc/ros/ros_github/index-v4.yaml
如下第一张图所示:
2.修改/etc/ros/rosdep/sources.list.d/20-default.list
文件。
终端输入以下命令回车:sudo gedit /etc/ros/rosdep/sources.list.d/20-default.list
再将原有内容全部注释 或者 删除。最后添加以下内容在文档中。如下第二张图所示
---
#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
#newer distributions (Groovy, Hydro, …) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead
---
第四步:再次执行rosdep update
一般情况下,这次更新就能成功了。成功更新的界面时这样子的 注:此图参考自这个博客
常见问题:如果遇到Hit缺失,更新不完整的情况 ,可以尝试关闭终端 再次执行更新命令。多尝试几次就能成功。甚至可以重复上面一到两个步骤。(我的fuerte就有几次Hit不到,重复了几次才成功) 到此为止就成功安装ROS了。
8.检查安装情况:运行小海龟和rviz
建议再执行以下环境配置命令(有的同学可能漏了,且再来一次无妨):
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
1.终端输入命令回车:roscore
… logging to /home/hyj/.ros/log/b76e3992-e577-11eb-bf00-00e04c360b88/roslaunch-hyjlaptop-20795.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://hyjlaptop:38805/
ros_comm version 1.14.11
SUMMARY
========
PARAMETERS
* /rosdistro: melodic
* /rosversion: 1.14.11
NODES
auto-starting new master
process[master]: started with pid [20805]
ROS_MASTER_URI=http://hyjlaptop:11311/
出现以上提示则代表安装成功。
2.检查基础功能
在终端成功输入roscore
后,开启第二个终端输入rosrun turtlesim turtlesim_node
会出现一个小海龟,最后开启第三个终端输入rosrun turtlesim turtle_teleop_key
接下来就可以通过方向键控制海龟的移动。下面时我画的一只小狗,是不是很可爱呀 n(≧▽≦)n
3.检查rviz等高级功能的运行
打开第一个终端输入roscore
打开第二个终端输入rosrun rviz rviz
看到下图画面则rviz等其他组件安装成功。
三、总结
以上就是Unbuntu18.04安装Ros的过程,本文是用来帮助那些没有linux||爬楼梯||方法的同学的。如果有||爬楼||方法,可以尝试开启后,直接执行 估计是一路通畅不会遇到什么问题的。
最后向CSDN作者银时大魔王 表示谢意,针对文中 rosdep init 和update 的问题先前做了很多工作。他的文章写于2020-08-13。 关于可能出现的问题 我也做了一些补充,并且将安装的全流程记录于此。希望能帮助更多的人。
四、!!!新手检查!!! 安装Ros后cmake版本倒退为3.10怎么办?
在安装Ros之前 如果你的Ubuntu中已经安装有Cmake。例如Cmake 3.20.5 。但是在安装Ros后 命令行输入Cmake -version 显示的版本为3.10.2。
这说明此时电脑中存在有多个版本的Cmake。
那么如何让Cmake命令指向我们所需的特定版本呢?此时可以参考我的另一篇博客解决该问题。
有些新接触linux系统的同学项目任务要求使用Cmake3.20等新版本,安装ros后,cmake指向旧版也可以由此解决。
可以查阅我的另一篇博客[安装Ros后Cmake变为3.10.2]。