本篇文章以安装ROS Kinetic为例进行讲解。
1.设置网络时间协议(NTP,Network Time Protocol)
在ROS官方安装项目中虽然没有包括NTP,但为了缩小PC间通信中的ROS Time的误差,下面我们设置NTP。设置方法是安装chrony之后用ntpdate命令指定ntp服务器即可。这样一来会表示服务器和当前计算机之间的时间误差,进而会调到服务器的时间。这就是通过给不同的PC指定相同的NTP服务器,将时间误差缩短到最小的方法。
sudo apt-get install -y chrony ntpdate sudo ntpdate -q ntp.ubuntu.com
ps:有些时候,有些朋友会遇到SLAM导航时控制不了机器人,可能与这个有关。需要做的就是让主从机时间同步。
2.添加代码列表
在ros-latest.list添加ROS版本库。打开新的终端窗口,输入如下命令。
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'
3.设置公钥(Key)
为了从ROS存储库下载功能包,下面添加公钥 。作为参考,以下公钥可以根据服务器的操作发生变更,请参考官方wiki页面。
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
4.更新软件包索引
现在用户已经将ROS版本库地址放在代码列表中,我们建议在安装ROS之前刷新软件包列表的索引并升级所有当前安装的Ubuntu软件包,但这不是必选项。
sudo apt-get update
5.安装ROS Kinetic Kame
使用以下命令安装台式机的ROS功能包。这包括ROS、rqt、RViz、机器人相关的库、仿真和导航等等。
sudo apt-get install ros-kinetic-desktop-full
上面的安装只包含基本的rqt,但是笔者将安装所有额外的rqt相关的功能包。用下面的命令安装所有rqt相关的功能包,可以很方便地使用各种rqt插件。
sudo apt-get install ros-kinetic-rqt*
6.初始化rosdep
在使用ROS之前,必须初始化rosdep。rosdep是一个通过在使用或编译ros的核心组件时轻松安装依赖包来增强用户便利的功能。
sudo rosdep init rosdep update
7.安装rosinstall
这是安装ROS的各种功能包的程序。它是被频繁使用的有用的工具,因此务必要安装它。
sudo apt-get install python-rosinstall
8.加载环境设置文件
下面加载环境设置文件。里面定义着ROS_ROOT和ROS_PACKAGE_PATH等环境变量。
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc source ~/.bashrc
9.创建并初始化工作目录
ROS使用一个名为catkin的ROS专用构建系统。为了使用它,用户需要创建并初始化catkin工作目录,如下所示。除非用户创建新的工作目录,否则此设置只需设置一次。
mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src catkin_init_workspace
如果用户已经创建了一个catkin工作目录,下面我们来进行构建。目前,只有src目录和CMakeLists.txt文件在catkin工作目录中,但让我们尝试使用catkin_make命令来构建吧。
cd ~/catkin_ws/ catkin_make
当用户构建没有问题时,运行ls命令。除了自己创建的src目录之外,还出现了一个新的build和devel目录。catkin的构建系统的相关文件保存在build目录中,构建后的可执行文件保存在devel目录中。
ls build devel src
最后,我们加载与catkin构建系统相关的环境文件。
echo “source ~/catkin_ws/devel/setup.bash”>> ~/.bashrc source .bashrc
10.测试安装结果
所有ROS安装已完成。要测试它是否正确安装,请关闭所有终端窗口并运行一个新的终端窗口。现在通过输入以下命令来运行roscore。
roscore
如果运行之后像下面没有出现错误,则说明成功安装。退出是[Ctrl+c]。
... logging to /home/pyo/.ros/log/9e24585a-60c8-11e7-b113-08d40c80c500/roslaunch-pyo-5207.log Checking log directory for disk usage. This may take awhile. Press Ctrl-C to interrupt Done checking log file disk usage. Usage is <1GB. started roslaunch server http://localhost:38345/ ros_comm version 1.12.7 SUMMARY ======== PARAMETERS * /rosdistro: kinetic * /rosversion: 1.12.7 NODES auto-starting new master process[master]: started with pid [5218] ROS_MASTER_URI=http://localhost:11311/ setting /run_id to 9e24585a-60c8-11e7-b113-08d40c80c500 process[rosout-1]: started with pid [5231] started core service [/rosout]