在Ubuntu18.04(Bionic)上安装ROS Melodic

引言

本文介绍了在Ubuntu18.04(Bionic)操作系统上安装ROS Melodic的过程,以及在安装过程中遇到的问题和解决方法。

一、官方指导文档

http://wiki.ros.org/melodic/Installation/Ubuntu

在这里插入图片描述

1、注意区分ROS仓库中的ROS功能包(original ROS packages)与Debian/Ubuntu仓库里的ROS功能包(upstream ROS packages)。

(1)Debian/Ubuntu仓库里的ROS功能包是从original ROS packages适配而来的,但并没有适配所有的original ROS packages。

(2)来自两个仓库的ROS功能包在一起工作时,可能彼此会有冲突,所以建议尽量不要将来自两个仓库的ROS功能包混在一起使用。

2、注意ROS Melodic支持的Ubuntu版本和CPU架构。

3、ROS Melodic有两种安装方式:从Ubuntu的软件仓库安装(推荐);源码安装。


下面是从Ubuntu的软件仓库安装ROS Melodic的过程:

二、安装过程

1.1 安装ROS前的准备

1、首先准备一台计算机(可以是虚拟机),CPU的架构要符合ROS Melodic的要求。

2、在计算机上安装Ubuntu 18.04操作系统。

3、打开Ubuntu的Software Updater的设置(Settings);确保勾选了 “restricted” 、"universe"和 “multiverse” ;将Ubuntu的软件仓库换成国内的仓库,如:阿里云的Ubuntu仓库;最后单击Close。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.2 安装步骤

1.2.1 设置安装源

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

以上这个命令是将ROS的安装源设置成ROS官方的安装源,但从官方安装源安装ROS的速度可能比较慢。建议将ROS功能包的安装源设置成国内的镜像源。

http://wiki.ros.org/ROS/Installation/UbuntuMirrors

(1)USTC镜像

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)Tsinghua University镜像

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'

(3)Beijing Foreign Studies University镜像

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.bfsu.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'

(4)Shanghai Jiao Tong University镜像

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.sjtug.sjtu.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'

1.2.2 设置密钥

sudo apt install curl 
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

1.2.3 安装ros-melodic-desktop-full

sudo apt install ros-melodic-desktop-full

官方提供了三种安装配置: Desktop-FullDesktopROS-Base ,我们这里选择安装 Desktop-Full

在这里插入图片描述

如果要安装某个具体的ROS功能包,可以使用以下形式的命令:

sudo apt install ros-melodic-PACKAGE

注意:PACKAGE换成ROS功能包的名字,但名字中的下划线(underscores)要用中划线(dashes)代替。例如:安装ROS包slam_gmapping的命令如下,

sudo apt install ros-melodic-slam-gmapping

查找ROS功能包的命令是:

apt search ros-melodic

1.2.4 设置环境变量

如果使用的是bash,

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

如果使用的是zsh,

echo "source /opt/ros/melodic/setup.zsh" >> ~/.zshrc
source ~/.zshrc

1.2.5 安装一些ROS工具和依赖

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

1.2.6 初始化rosdep

1、如果还没有安装python-rosdep,先用以下命令安装。

sudo apt install python-rosdep

rosdep使用python写的命令行工具,也可以下载源码安装,参见:

http://wiki.ros.org/rosdep
https://pypi.org/project/rosdep/
https://github.com/ros-infrastructure/rosdep

2、执行以下命令,初始化rosdep。

sudo rosdep init
rosdep update

这一步经常会因为网络问题出错,例如:执行命令sudo rosdep init的时候,可能会出现下图所示错误:

在这里插入图片描述

命令sudo rosdep init的作用其实就是将下面这个网站中的20-default.list文件下载到本地文件夹/etc/ros/rosdep/source.list.d里面。

https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list

执行rosdep update命令时,也经常因为网络问题而中断。


小伙伴们针对以上这个问题提出来很多解决方法,个人认为目前比较好的 解决方法 如下:


1、从下面这个网页将rosdistro下载到Ubuntu的某个文件夹(例如: /home/jzy/Downloads)。

https://github.com/ros/rosdistro

注意: jzy是我的用户名,你需要换成你自己的用户名。

在这里插入图片描述

2、把下载到的rosdistro-master.zip解压,得到文件夹:rosdistro-master

unzip rosdistro-master.zip

3、编辑文件夹rosdistro-master/rosdep/sources.list.d中的文件20-default.list

将文件中所有的

https://raw.githubusercontent.com/ros/rosdistro/master

改成

file:///home/jzy/Downloads/rosdistro-master

在这里插入图片描述

4、将修改过的文件20-default.list拷贝到/etc/ros/rosdep/sources.list.d目录下。

cp 20-default.list /etc/ros/rosdep/sources.list.d/

注:其实这就是命令sudo rosdep init干的事。你也可以跳过这一步操作,此后执行sudo rosdep init命令即可;否则,就不用再执行sudo rosdep init命令了。

注:如果目录/etc/ros/rosdep/sources.list.d不存在,就先创建一下。

5、修改4个文件:__init__.pygbpdistro_support.pyrep3.pysources_list.py

修改的方法都是将文件中的

https://raw.githubusercontent.com/ros/rosdistro/master

改成

file:///home/jzy/Downloads/rosdistro-master

(1)修改__init__.py,位置:/usr/lib/python2.7/dist-packages/rosdistro

(2)修改gbpdistro_support.pyrep3.pysources_list.py,位置:/usr/lib/python2.7/dist-packages/rosdep2

如下图所示:

(1)__init__.py

在这里插入图片描述

(2)gbpdistro_support.py

在这里插入图片描述

(3)rep3.py

在这里插入图片描述

(4)sources_list.py

在这里插入图片描述

6、执行以下命令,初始化rosdep:

sudo rosdep init

在这里插入图片描述

rosdep update

在这里插入图片描述


如果觉得上面这个方法麻烦,也可以用国内的镜像:

http://wiki.ros.org/rosdep

在这里插入图片描述

https://mirrors.tuna.tsinghua.edu.cn/help/rosdistro/
https://mirrors.bfsu.edu.cn/help/rosdistro/

将这两个步骤:

sudo rosdep init
rosdep update

更换为以下步骤:

# 手动模拟 rosdep init
sudo mkdir -p /etc/ros/rosdep/sources.list.d/
sudo curl -o /etc/ros/rosdep/sources.list.d/20-default.list https://mirrors.tuna.tsinghua.edu.cn/github-raw/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
# 为 rosdep update 换源
export ROSDISTRO_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml
rosdep update

# 每次 rosdep update 之前,均需要增加该环境变量
# 为了持久化该设定,可以将其写入 .bashrc 中,例如
echo 'export ROSDISTRO_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml' >> ~/.bashrc

或者,更换为以下步骤:

# 手动模拟 rosdep init
sudo mkdir -p /etc/ros/rosdep/sources.list.d/
sudo curl -o /etc/ros/rosdep/sources.list.d/20-default.list https://mirrors.bfsu.edu.cn/github-raw/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
# 为 rosdep update 换源
export ROSDISTRO_INDEX_URL=https://mirrors.bfsu.edu.cn/rosdistro/index-v4.yaml
rosdep update

# 每次 rosdep update 之前,均需要增加该环境变量
# 为了持久化该设定,可以将其写入 .bashrc 中,例如
echo 'export ROSDISTRO_INDEX_URL=https://mirrors.bfsu.edu.cn/rosdistro/index-v4.yaml' >> ~/.bashrc

三、测试

安装完毕后,可以测试一下安装是否成功。

1、打开一个终端,执行以下命令,启动roscore。

roscore

如果出现下图所示错误,说明是~/.ros文件夹下的文件的权限问题。

在这里插入图片描述

执行以下命令后,重新启动roscore即可。

sudo chmod 777 -R ~/.ros/

2、打开一个新的终端,启动小乌龟仿真节点。

rosrun turtlesim turtlesim_node

在这里插入图片描述

之前安装的ros-melodic-desktop-full应该已经集成了turtlesim功能包,如果没有可以用以下命名安装:

sudo apt install ros-melodic-turtlesim

3、再开一个新的终端,启动小乌龟的键盘控制节点。

rosrun turtlesim turtle_teleop_key 

用键盘上的方向键,可以控制小乌龟的移动。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u013819452/article/details/127688752