Bootstrap

Ubuntu18.04下ROS安装

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

在这里插入图片描述

ROS—(Robot Operating System)是一个机器人软件平台,它能为异质计算机集群提供类似操作系统的功能。ROS的前身是斯坦福人工智能实验室为了支持斯坦福智能机器人STAIR而建立的交换庭(switchyard)项目。到2008年,主要由威楼加拉吉继续该项目的研发;
ROS提供一些标准操作系统服务,例如硬件抽象,底层设备控制,常用功能实现,进程间消息以及数据包管理。ROS是基于一种图状架构,从而不同节点的进程能接受,发布,聚合各种信息(例如传感,控制,状态,规划等等),目前ROS主要支持Ubuntu;
ROS可以分成两层,低层是上面描述的操作系统层,高层则是广大用户群贡献的实现不同功能的各种软件包,例如定位绘图,行动规划,感知,模拟等等。ROS(低层)使用BSD许可证,所有是开源软件,并能免费用于研究和商业用途。而高层的用户提供的包则可以使用很多种不同的许可证。


一、Ubuntu操作系统版本对应

ROS安装一定要对应相应的操作系统版本,Ubuntu与ROS版本对应关系:

UbuntuROS 1.0ROS 2.0
16.04 LTSKinetic LTSArdent
18.04 LTSMelodic LTSDashing LTS
20.04 LTSNoetic LTSFoxy LTS

这里我使用是Ubuntu的18.04版本,因此选择安装Ros-Melodic版本。

二、安装ROS

1.换源

在应用面板中打开“软件和更新”,打开后按照下图进行配置(确保“restricted”, “universe” 和 “multiverse”打上勾),然后在ubuntu软件栏将“下载自”的地址改为国内源,这里选择的是科大源,配置完关闭窗口即可。
在这里插入图片描述

2.添加国内源

我选择科大源:

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'

3.设置密钥

配置公网密钥,为了确保系统认为该路径安全。

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

4.安装ROS

在添加新源后,更新一下源列表。

sudo apt-get update

然后安装桌面完整版的ROS melodic。

sudo apt-get install ros-melodic-desktop-full

注意:这一步可能会出现如下问题(如果没出现直接跳到第5步):
输入指令:sudo apt-get install ros-melodic-desktop-full 后有如下报错:

ros-melodic-desktop-full : 依赖: ros-melodic-desktop 但是它将不会被安装
                            依赖: ros-melodic-perception 但是它将不会被安装
                            依赖: ros-melodic-simulators 但是它将不会被安装
                            依赖: ros-melodic-urdf-sim-tutorial 但是它将不会被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

----------------------------------------------------------------解决方法-----------------------------------------------------------------:
参考:解决ros-melodic-desktop-full安装过程中未满足的依赖关系问题
利用aptitude安装所提到的四个依赖软件包(aptitude是个更智能的安装手段,可以更好地处理包间的相互依赖,并给出解决方案供用户选择):

sudo aptitude install ros-melodic-desktop ros-melodic-perception ros-melodic-simulators ros-melodic-urdf-sim-tutorial

会出现一个未满足依赖关系的软件包libgpgme11,但是提示我这个软件包已经安装了,就是版本太高不匹配才报错。
在这里插入图片描述在这里插入图片描述询问是否接受该解决方案?先选择“n”,拒绝第一个解决方案。然后会给出一个建议降级软件包的方案,这里选择“y”,确定降级libgpgme11。
接受方案后,开始安装:
在这里插入图片描述
安装好4个依赖包后,就可以正常安装ros-melodic了:
在这里插入图片描述----------------------------------------------------------------解决方法-----------------------------------------------------------------:

5.初始化 rosdepc

rosdepc 可以帮助安装被想要编译的源代码,或被某些 ROS 核心组件需要的系统依赖。(这里我们不再用rosdep了,改用大佬 鱼香ROS 的rosdepc)

sudo apt-get install python3-pip
sudo pip install rosdepc

sudo rosdepc init
rosdepc update

注意:这一步可能会出现如下问题(如果没出现直接跳过这段解决方法):

sudo: pip:找不到命令

----------------------------------------------------------------解决方法-----------------------------------------------------------------:
参考:1)在ubuntu中使用sudo找不到命令,2)linux中pip命令找不到怎么解决
原因分析:主要是因为当 sudo以管理权限执行命令的时候,linux将PATH环境变量进行了重置,当然这主要是因为系统安全的考虑,但却使得sudo搜索的路径不是我们想要的PATH变量的路径,因此无法找到我们想要的命令。

1、首先打开sudo的配置文件:

sudo vim /etc/sudoers

找到如下部分:

Defaults env_reset

将这项改为:

Defaults !env_reset

取消掉对PATH变量的重置。

2、然后编辑配置文件~/.bashrc:

sudo vim ~/.bashrc

添加;

alias sudo='sudo env PATH=$PATH'

使修改生效:

source ~/.bashrc

这样sudo执行命令时所搜寻的路径就是系统的PATH变量中的路径,可以使用sudo pip安装了。

----------------------------------------------------------------解决方法-----------------------------------------------------------------:

6.设置环境变量

关于ROS的启动,我们需要在启动终端窗口的时候,生效一下我们的ROS功能内径, 但是每次打开一个窗口手动生效依次很麻烦,所有可以将需要生效的内容放在~/.bashrc文 件内,这样在每次启动终端的时候就可以自动生效了。

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc

7.安装生成包依赖

sudo apt-get install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential

至此ROS已经成功安装完成了。

三、验证ROS

ROS系统的启动需要一个ROS Master,即节点管理器,可以在终端输入roscore指令来启动ROS Master:

roscore

新打开一个终端,启动一个小海龟的例程:

rosrun turtlesim turtlesim_node

再打开一个终端,输入:

rosrun turtlesim turtle_teleop_key

测试结果是,你可以用键盘的↑、↓、←、→来控制小乌龟移动。
在这里插入图片描述
注意:这一步可能会出现如下问题(如果没出现直接跳过这段解决方法):

IOError: [Errno 13] Permission denied: “/home/XXXX /.ros/roscore-11311.pid"

----------------------------------------------------------------解决方法-----------------------------------------------------------------:
参考:roscore 运行失败,提示 /.ros/roscore-11311.pid 没权限的问题
原因分析:这个文件夹的权限不够,只要把~/.ros/ 整个文件夹权限设置一下就可以了。

sudo chmod 777 -R ~/ .ros/

----------------------------------------------------------------解决方法-----------------------------------------------------------------:

总结

新人第一次安装,记录以供自己使用,如有错误敬请谅解。
安装教程主要参考:
1)ROS教程(一):ROS安装教程(详细图文)
2)百分百成功的ros安装教程,有手就能看懂!!!

;