前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Ubuntu18.04安装Ros(最新最详细亲测)「建议收藏」

Ubuntu18.04安装Ros(最新最详细亲测)「建议收藏」

作者头像
全栈程序员站长
发布2022-07-02 15:10:24
4.2K0
发布2022-07-02 15:10:24
举报

大家好,又见面了,我是你们的朋友全栈君。

文章目录


前言

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设置中科大源: 在终端输入如下命令后回车

代码语言:javascript
复制
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 设置公钥: 在终端输入如下命令后回车

代码语言:javascript
复制
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
在这里插入图片描述
在这里插入图片描述

注解:我这里已经安装过一次钥匙了,所以显示不太一样。

注解:如果遇到问题 请尝试亲手在Unbutu终端输入以上命令。CSDN复制黏贴进终端有可能会出问题。

2.3 更新最新可用软件包列表:在终端输入以下命令后回车

代码语言:javascript
复制
sudo apt update

常见问题:      设置钥匙时候如果不能设置,可能是因为电脑中没有安装相应钥匙功能的包 可以执行以下命令解决 并重复设置钥匙的步骤。


3.安装ROS

在终端输入以下命令后回车

代码语言:javascript
复制
sudo apt install ros-melodic-desktop-full

接下来就是漫长的等待

注解:这个命令将安装完整的ROS软件,包括ROS,rqt,rviz,机器人通用库,2D / 3D模拟器,导航和2D / 3D感知等等的全套基础组件(新手强烈建议安装这个就好)


4.设置环境变量

在终端输入以下命令后回车

代码语言:javascript
复制
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc

注解:这个步骤是让你的 bash终端 以后可以识别 roscore,rosrun等命令。

ZSH用户 : 如果你用的不是bash,例如zsh fish等其他终端,那你就在zsh的配置文件里添加环境变量。

代码语言:javascript
复制
echo "source /opt/ros/melodic/setup.bash" >> ~/.zshrc
source ~/.zshrc

注意: zsh 的终端环境配置我不确定是不是这么弄,我只是写出来让zsh用户参考, 如果不行,你自己去home文件夹下添加zsh配置即可。

另外给Linux新手补充一点:如果你在bash中添加了环境,那你在zsh终端是无法启动的ros 的。 反过来也是一样。我建议你在常用终端下都添加环境变量。

在这里插入图片描述
在这里插入图片描述

5.下载其他功能组件

在终端输入以下命令后回车

代码语言:javascript
复制
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential

这些组件可以构建和管理开发者自己的ROS工作空间,强烈建议安装。详情见 :[Ros官网]


6.rosdep init 初始化

1.在终端输入以下命令后回车

代码语言:javascript
复制
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初始化成功

代码语言:javascript
复制
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

建议再执行以下环境配置命令(有的同学可能漏了,且再来一次无妨):

代码语言:javascript
复制
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]。


五、如果你遇到本文没有提及的问题 一定要留下评论哦!真诚的感谢你的参与将这篇博客变得更丰富全面,帮助更多人。感谢你的点赞!O(∩_∩)O~~

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/148184.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 前言
  • 一、版本选择
  • 二、下载步骤
    • 1.检查Unbuntu的软件和更新源
      • 2.设置Ros的下载源
        • 3.安装ROS
          • 4.设置环境变量
            • 5.下载其他功能组件
              • 6.rosdep init 初始化
                • 7.rosdep update 更新
                  • 8.检查安装情况:运行小海龟和rviz
                  • 三、总结
                  • 四、!!!新手检查!!! 安装Ros后cmake版本倒退为3.10怎么办?
                  • 五、如果你遇到本文没有提及的问题 一定要留下评论哦!真诚的感谢你的参与将这篇博客变得更丰富全面,帮助更多人。感谢你的点赞!O(∩_∩)O~~
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档