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框架运行的原理,甚至自己能编程实现一些功能模块了。

results matching ""

    No results matching ""