禁止转载!
2020年的寒假在家安装ROS,kinetic遇到了很多失败,最后成功安装了ROS melodic。安装ROS melodic时也对kinetic过程的失败有了一些理解,现记录安装过程在知乎,一是为了记录,二也希望对后来装ROS的人有所启发。
ROS的版本与Ubuntu版本相关,ROS kinetic适用于Ubuntu15.10,而ROS melodic适用于Ubuntu18.04(2020年春季Ubuntu较新版本)。如果没有注意版本对应问题,安装过程会出错。本文记录的是ROS melodic的成功经验,以及对ROS kinetic失败的回顾。
ROS的安装都是通过Linux的命令行完成。接下来记录安装过程的命令行和正确执行的terminal窗口。
- 配置Ubuntu软件库
进入Ubuntu software,如图设置。建议软件源选国内的镜像源,图上选择的是阿里云的镜像源。这一步一般是默认勾选的,软件源可以稍作设置。在安装kinetic时这一步与我拿到的教程有冲突,稍后在文末详细说明。
2. 添加软件库到sources.list文件
推荐使用国内镜像源,这一步使用了中科大的镜像源。命令行如下
sudo sh -c 'echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
这一步只是添加了ROS的软件库,因此没有运行结果显示
3. 设置密钥
我写这篇文章时重新查看了安装过程的命令行,发现漏了这一步。设置密钥的道理我并不清楚,现将我使用的教材对这一部分的说明摘录如下
这一步是为了确认原始的代码是正确的,并且没有人在未经所有者授权的情况下修改任何程序代码。通常情况下,当添加完软件库时,你就已经添加了软件库的密钥,并将其添加到操作系统的可信任列表中。
4. 安装ROS
先升级软件以做准备,安装ROS kinetic时在这一步遇到了很多问题,文末附上回顾
sudo apt update
如图所示是我认为正确的运行结果,之前update失败时可以看到运行中有很多Ign和Err,且在最后有报错提示。在网上搜索解决方法时,我注意到很多教程都没有提到正确的应该是什么样,我这样完全从0开始的玩家经常陷入困惑。现把我的运行结果截图。
kinetic版本卡到这里结束,后面的步骤仅在Ubuntu18.04下尝试。
推荐的安装方式,也是最简单的安装方式。但desktop-full要求足够的硬盘空间。
如果没有注意版本对应的问题,可能会出现报错。我这里使用Ubuntu18.04系统,安装melodic。如果Ubuntu15.10进行顺利,命令行里的melodic改为kinetic即可。同理也有其他版本,推荐安装最新版本的Ubuntu与对应的ROS。
sudo apt install ros-melodic-desktop-full
运行后terminal如下,由于整个运行日志很长,仅截取开头和结尾的部分以供参考。
5. 初始化rosdep
使用ROS之前必须安装和初始化rosdep命令行工具,ROS中一些核心组件也需要rosdep,因此rosdep的安装已经包含在ROS安装中。用以下的命令行初始化
sudo rosdep init
rosdep update
update这一步很容易出现timeout的报错,网上很多教程推荐使用4G热点就可以解决报错。我这里可能网络太差了,热点并没有解决问题。此外还看到贴吧有网友推荐这种方法
sudo apt-get install python-rosdep
但如图所见,并没有解决我的问题。截图截到了这步故贴上来,也许能给其他人一些启发。
我最终解决这个问题是反复update了一晚上,可能的确是网络的问题吧,失败过程中发现有的进度明显要更多一点。
附上成功的界面
6. 配置环境
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
每次用户打开terminal时,.bashrc文件会加载命令行窗口或终端配置。用上述命令行在.bashrc文件末尾添加脚本,以避免每次打开新terminal时都要重复输入命令。
source ~/.bashrc
上述这个命令是执行.bashrc文件以使配置生效,也可以重启terminal使之生效。
7. 安装rosinstall
安装基于python的命令工具
sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential
到这里就完成了安装ROS的全部步骤。
8. 测试新安装的ROS
在terminal里输入
roscore
新开一个terminal再输入
rosrun turtlesim turtlesim_node
会出现一个蓝色的海龟图像窗口,如下图所示
到此ROS安装圆满结束。
【ROS kinetic的失败回顾】
起因是我在图书馆借到了一本讲ROS的书,是以Ubuntu15.10为基础安装ROS kinetic,另一方面我在学校使用的Ubuntu版本也是15.10。
如我前文所述,这本书上第一步是在Ubuntu software里配置Ubuntu软件库,但后来我遇到了执行sudo apt-get update反复报错的情况,在网上搜了很多解答后,最有用的一个方法是修改sources.list文件,原因是由于Ubuntu旧版本已经停止支持,所以要用old-release的源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
sudo gedit /etc/apt/sources.list
将sources.list里的内容修改为
deb http://old-releases.ubuntu.com/ubuntu/ natty main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ natty-security main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ natty-updates main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ natty-proposed main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ natty-backports main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ natty main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ natty-security main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ natty-updates main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ natty-proposed main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ natty-backports main restricted universe multiverse
sudo apt-get update确实没有报错了,但第一步里默认勾选的几个选项也都不在了。更致命的报错是安装desktop-full时也会有报错,如图所示。
在网上查询了这种问题如何解决,大部分回答都是说update有问题,重新sudo apt-get update就能解决。事实上我重新update并没有解决,推测是前面几个步骤的错误形成了闭环,解决一个错误的方法反而形成了另一个错误。不过这也是我的推测罢了。除试图解决报错之外,我还尝试了重新安装虚拟机,重装了三四次左右,最后决定不按教程走,比较顺利地安装了Ubuntu18.04下的ROS melodic。
如今安装成功后,我推测随着Ubuntu版本更新,适用于15.10的kinetic版本安装教程可能存在漏洞,最大可能是Ubuntu的源出了问题,大概就会变成前朝的剑无法斩本朝的官的情况。个人愚见,不知道是我的个例还是通病。