本文介绍了在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、首先准备一台计算机(可以是虚拟机),CPU的架构要符合ROS Melodic的要求。
2、在计算机上安装Ubuntu 18.04操作系统。
3、打开Ubuntu的Software Updater的设置(Settings);确保勾选了 “restricted” 、"universe"和 “multiverse” ;将Ubuntu的软件仓库换成国内的仓库,如:阿里云的Ubuntu仓库;最后单击Close。
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'
sudo apt install curl
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
sudo apt install ros-melodic-desktop-full
官方提供了三种安装配置: Desktop-Full 、 Desktop、 ROS-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
如果使用的是bash,
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
如果使用的是zsh,
echo "source /opt/ros/melodic/setup.zsh" >> ~/.zshrc
source ~/.zshrc
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
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__.py
、gbpdistro_support.py
、rep3.py
、sources_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.py
、rep3.py
、sources_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
用键盘上的方向键,可以控制小乌龟的移动。