在Ubuntu16.04上安装ROS-kinetic是一个非常基本的操作,网上也有许多教程,但有几个坑,网上提到的解决方法并不一定能解决,因此记录一下完整的安装过程,以及其中出现的几个比较常规的问题,以备以后再次安装。
我的安装步骤基本是按照ros wiki官网来的,链接: http://wiki.ros.org/cn/kinetic/Installation/Ubuntu.上述链接是ros wiki中文官网中基于Ubuntu16.04安装ROS-kinetic的详细教程。
下面开始按照教程安装:
ROS镜像源有国外的和国内的,国外的有ROS官方镜像源,国内的有中国科学技术大学(USTC)镜像源,中山大学镜像源和易科机器人实验室镜像源。使用ros官方镜像源的时候会导致接下来sudo apt-get update的时候特别缓慢,如果你不想一直等等等等等…推荐使用国内镜像源,具体用哪个就看哪个地理位置距离你较近。本次安装使用的USTC镜像源,添加命令如下:
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'
不同镜像源对应的密匙不同,USTC密匙添加命令如下:
wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -O - | sudo apt-key add -
设置你的电脑以从 packages.ros.org 接收软件。
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
首先,确保你的Debian软件包索引是最新的:
sudo apt-get update
我这里安装的是桌面完整版(推荐) : 包含ROS、rqt、rviz、机器人通用库、2D/3D 模拟器、导航以及2D/3D感知
sudo apt-get install ros-kinetic-desktop-full
在开始使用ROS之前你还需要初始化rosdep。rosdep可以方便在你需要编译某些源码的时候为其安装一些系统依赖,同时也是某些ROS核心功能组件所必需用到的工具。
sudo rosdep init
rosdep update
但是!!!很多时候安装都会卡在这里,在sudo rosdep init后报错,报网站down掉。
不要慌,这个报错是因为连不上服务器,因为ros在github服务器上面,所以直接将github的主机IP地址到/etc/hosts文件中即可解决:
$ sudo gedit /etc/hosts
在打开的文件最后一行输入
151.101.76.133 raw.githubusercontent.com
sudo rosdep init
rosdep update
很不幸,我电脑又报了错:
这个报错大致的意思是读取文件超时了,网上有解法是把网络换成手机热点,我没有这么试,我是直接又重新输入了同样的命令,更新成功了,如下图。
到这里,整个“初始化 rosdep”就已经完成了。
如果每次打开一个新的终端时ROS环境变量都能够自动配置好(即添加到bash会话中),那将会方便很多:
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
到目前为止,你已经安装了运行核心 ROS 包所需的内容。为了创建和管理自己的 ROS 工作区,有各种各样的工具和需求分别分布。例如:rosinstall 是一个经常使用的命令行工具,它使你能够轻松地从一个命令下载许多 ROS 包的源树。
要安装这个工具和其他构建ROS包的依赖项,请运行:
sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential
经过了上述1-7的操作,你的ROS已经安装成功了,那么接下来可以运行一下小海龟来检验一下,具体方法如下:
在三个不同的终端分别执行以下三个指令:
roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key