应学习要求,需要用到ROS,故记录ROS安装的过程,以便后续学习。本文使用系统为Ubuntu 16.04,ROS版本为kinetic。
1.在虚拟机上安装Ubuntu后,将软件源更换为国内源,清华源,中科大源和阿里源等都可,本文采用中科大源。首先修改源文件,打开终端,输入 sudo gedit /etc/apt/sources.list ,将以下内容覆盖原文件内容。
中科大源
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
之后执行更新源:sudo apt-get update
2.安装ROS,首先添加安装源,依旧采用中科大镜像,操作如下。
(1)添加源
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'
(2)添加密匙
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
(3)更新
sudo apt-get update
(4)安装ROS(桌面完整版)
sudo apt-get install ros-kinetic-desktop-full
大概几分钟就可以下载完,之后进行下一步
3.ROS安装完成后,需进行初始化,命令行输入 sudo rosdep init ,这个命令主要是下载一个叫20-default.list的文件。但在实际初始化中,我会报错,这时连接手机热点多试几次可以成功。如果成功不了,则进行手动创建(好家伙我下不了,那我自己创建不就行了)。
逐级创建目录/etc/ros/rosdep/sources.list.d/,因为ubuntu中没有ros这个目录。并在此目录下创建20-default.list文件,之后用命令行打开这个文件。
sudo gedit /etc/ros/rosdep/sources.list.d/20-default.list
将以下内容复制到此文件并保存。
# os-specific listings first yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx # generic yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml gbpdistro https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml fuerte # newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead
3.而rosdep update命令是通过上述的20-default.list文件中的地址下载配置文件,但因为网站原因,总是会报超时错误,于是我开始慢慢的寻找解决方法(你能翻墙就当我没说),网上有人使用添加最新的ip地址在hosts文件中,也有人使用代理网站,但对于我来说都失败了。最后,我将rosdep update命令所下载的文件直接本地下载到虚拟机中,然后修改20-default.list这个文件。具体过程如下。
(1)下载网盘中的文件后,将该文件放到 /etc/ros 文件夹中。
链接:https://pan.baidu.com/s/1CihkNRbTmwM91c-xDCVaug
提取码:skat(2)打开20-default.list文件,将以下内容覆盖原内容,保存退出。
# os-specific listings first #yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx yaml file:///etc/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx # generic #yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml #yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml #yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml #gbpdistro https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml fuerte yaml file:///etc/ros/rosdistro/master/rosdep/base.yaml yaml file:///etc/ros/rosdistro/master/rosdep/python.yaml yaml file:///etc/ros/rosdistro/master/rosdep/ruby.yaml gbpdistro file:///etc/ros/rosdistro/master/releases/fuerte.yaml fuerte # newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead
(3)执行sudo gedit usr/lib/python2.7/dist-packages/rosdistro/__init__.py,ctrl+F查找“DEFAULT_INDEX_URL”,找到具体位置后,按以下代码修改。
# index information #DEFAULT_INDEX_URL = 'https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml' DEFAULT_INDEX_URL = 'file:///etc/ros/rosdistro/master/index-v4.yaml'
保存退出后执行rosdep update,出现以下打印信息,则成功了。最好还是连接手机热点,多试几次一般会成功。
4.初始化环境变量
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc source ~/.bashrc
到这里ROS基本已经安装好了,让我们运行roscore测试一下。结尾出现“started core service [/rosout]”就ok了。