1.5 安装ROS-Academy-for-Beginners教学包
在1.4节我们已经用apt工具安装好了ROS,apt安装的软件包都是二进制形式,可以在系统中直接运行,它们是ROS官方提供给用户的应用程序。然而很多时候我们需要自己做一些定制改写,或者运行第三方开发的软件包,这个时候就需要下载源代码进行编译。
本节我们下载本书配套的ROS-Academy-for-Beginners软件包,给读者演示源码包下载-编译-运行的完整流程。后续章节的主要代码都基于这个软件包,请读者按照流程下载编译。
下载源码包
在Ubuntu系统上,确保git已经安装
$ sudo apt-get install git
然后在创建一个名为tutorial_ws的工作空间,在它的的src路径下克隆ROS-Academy-for-Beginners软件包
$ cd
$ mkdir -p tutorial_ws/src #创建catkin工作空间
$ cd tutorial_ws/src #进入src路径,克隆教学软件包
$ git clone https://github.com/DroidAITech/ROS-Academy-for-Beginners.git
安装依赖
并且安装ROS-Academy-for-Beginners所需要的依赖
$ cd ~/tutorial_ws
$ rosdep install --from-paths src --ignore-src --rosdistro=kinetic -y
注意:以上命令非常重要,缺少依赖将导致软件包无法正常编译和运行。
在开始编译之前,需要确保Gazebo在7.0版本以上
$ gazebo -v #确认7.0及以上
如果你的Gazebo版本低于7.0,则需要进行升级
$ sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
$ wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get install gazebo7
编译
接着回到catkin_ws下编译
$ cd ~/tutorial_ws
$ catkin_make
$ source ~/tutorial_ws/devel/setup.bash #刷新环境 方法一
$ rospack profile #刷新环境 方法二
注意:source命令,编译完成后必须刷新一下工作空间的环境,否则可能找不到工作空间。许多时候我们为了打开终端就能够运行工作空间中编译好的ROS程序,我们习惯把source ~/tutorial_ws/devel/setup.bash
命令追加到~/.bashrc
文件中(rosacademy_ws替换为你的工作空间名称),这样每次打开终端,系统就会刷新工作空间环境。你可以通过echo "source ~/tutorial_ws/devel/setup.bash" >> ~/.bashrc
命令来追加。
运行仿真程序
编译完成后就可以运行本教学配套的仿真了,输入
$ rospack profile
$ roslaunch robot_sim_demo robot_spawn.launch
你会看到仿真画面启动,仿真界面中包括了软件博物馆和Xbot机器人模型。
再打开一个新的终端,输入以下命令,用键盘控制机器人移动
$ rosrun robot_sim_demo robot_keyboard_teleop.py
聚焦控制程序窗口,按下i、j、l等按键,这样你就可以通过键盘来控制机器人的移动了。
当你完成了这一步,首先恭喜你,你已经完成了ROS最常见的源码下载-安装依赖-编译-运行的流程,在ROS社区有许许多多这样的软件包,基本都按照这样的流程来运行。相信你一定可以举一反三。
键盘控制仿真机器人移动这个demo展现了ROS分布式消息收发的特性。我们打开的虽然是键盘控制程序,但它可以替换为手柄控制、手机平板控制、甚至是路径规划自动控制。模拟器里的机器人并不关心是谁发给它的消息,它只关心这个消息是什么(速度、角速度等指令)。所以,每一个进程(节点)都各司其职,负责不同的任务,同时定义好消息收发的接口。如果我们现在要做路径规划任务,那么我们只用单独再开发一个节点,同样向底盘发送我们解算出的速度/角速度指令就可以了。 你现在可能对ROS工作方式还一无所知,不过不要紧。后续我们会对ROS涉及的这些概念进行详细介绍,等你看完了这本书,你就能明白整个ROS框架运行的原理,甚至自己能编程实现一些功能模块了。