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
将四个选项全部选上,同时将下载源更换为国内源。我这里用的是阿里云,换成清华中科大都是可以的。
解释:接下来是将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
常见问题:
设置钥匙时候如果不能设置,可能是因为电脑中没有安装相应钥匙功能的包 可以执行以下命令解决 并重复设置钥匙的步骤。
在终端输入以下命令后回车
sudo apt install ros-melodic-desktop-full
接下来就是漫长的等待
注解:这个命令将安装完整的ROS软件,包括ROS,rqt,rviz,机器人通用库,2D / 3D模拟器,导航和2D / 3D感知等等的全套基础组件(新手强烈建议安装这个就好)
在终端输入以下命令后回车
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 的。 反过来也是一样。我建议你在常用终端下都添加环境变量。
在终端输入以下命令后回车
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
这些组件可以构建和管理开发者自己的ROS工作空间,强烈建议安装。详情见 :[Ros官网]
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.解决办法:
首先修改/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
在终端输入以下命令并回车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了。
建议再执行以下环境配置命令(有的同学可能漏了,且再来一次无妨):
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之前 如果你的Ubuntu中已经安装有Cmake。例如Cmake 3.20.5 。但是在安装Ros后 命令行输入Cmake -version 显示的版本为3.10.2。
这说明此时电脑中存在有多个版本的Cmake。
那么如何让Cmake命令指向我们所需的特定版本呢?此时可以参考我的另一篇博客解决该问题。
有些新接触linux系统的同学项目任务要求使用Cmake3.20等新版本,安装ros后,cmake指向旧版也可以由此解决。
可以查阅我的另一篇博客[安装Ros后Cmake变为3.10.2]。