本书的范围
在卷1我们学习了使用机器人编程的基础,包括在移动端对机器人进行控制,SLAM, 机器人视觉(OpenCV, OpenNI 以及很少的PCL), 语音识别,使用动态伺服服务,这卷书中我们将会接触更多比较高级的ROS概念和包,能够使我们真正达到无人为干扰的机器人行为:
使用Smatch和behavior trees进行复杂的可执行任务管理
使用URDF/Xacro创建自己机器人描述 : 头部的倾斜和平移,多节点手臂抓握,伸缩躯干,传感器放置(激光扫描仪等)
控制动态伺服机使用配置arbotix包
使用ROS诊断包监控机器人本身系统,例如电量低和伺服电机的温度
使用dynamic_reconfigure改变运行中机器人的参数设置
使用mux和yocs进行多重ROS主题,优先级的输入以及互斥操作
使用AR_tags进行物体检测和跟踪
跟踪3D物体,去感知机器人本身和空间的关系
使用MoveIt框架进行多关节手臂控制和抓具,还可以执行正向和反向运动,障碍规避,抓取,以及捡起和放置任务等
使用复杂的Gazebo模拟器对机器人行为进行模拟
使用rosbridge,HTML, javascript通过web-gui对机器人进行控制
即使用全书也只能覆盖这部分主题的全部内容,因此我们会更强调关键的概念,如果你对内容感兴趣可以根据我们提供的参考文档进行深入学习,就像第一卷一样我们的sample code都是用python,对于介绍性质的书籍来说,可能比C++更有弹性一些
一旦你精通了本书的内容,你就能自己为自己的机器人创建URDF模型,手臂节点,平移和旋转的头部,编写一些程序叫机器人能够完成一些自主的运动行为,监控自己的子系统,根据当前的状态确定输入的优先级,在3D空间追踪物体,能够对对关节手臂以及正向和反向运动的夹具进行程序设计,编写你自己的HTML / JavaScript接口对机器人进行监视和控制通过浏览器
安装ROS-BY-EXAMPLE代码
本书的代码使用的ROS Indigo版本,强烈推荐你使用ROS Indigo版本进行学习,一些先决条件的包安装我们在下面的列表中已经给出了,手臂导航的例子是专门使用Indigo运行的
在安装本书例子代码之前,你一定要安装必要的ROS安装包,简单的拷贝粘贴下面的命令到终端窗口安装你所需要的ROS安装包,\ 字符以一个链接字符,保证下面的字符串是在一个命令行当你在linux下面做拷贝粘贴这个动作的时候
sudo apt-get install ros-indigo-arbotix \ ros-indigo-dynamixel-
motor ros-indigo-rosbridge-suite \ ros-indigo-mjpeg-server ros-
indigo-rgbd-launch \ ros-indigo-openni-camera ros-indigo-moveit-
full \ ros-indigo-turtlebot-* ros-indigo-kobuki-* ros-indigo-moveit-python \
python-pygraph python-pygraphviz python-easygui \ mini-httpd
ros-indigo-laser-pipeline ros-indigo-ar-track-alvar \
ros-indigo-laser-filters ros-indigo-hokuyo-node \ ros-indigo-
depthimage-to-laserscan ros-indigo-moveit-ikfast \
ros-indigo-gazebo-ros ros-indigo-gazebo-ros-pkgs \ ros-indigo-
gazebo-msgs ros-indigo-gazebo-plugins \ ros-indigo-gazebo-ros-
control ros-indigo-cmake-modules \ ros-indigo-kobuki-gazebo-plugins
ros-indigo-kobuki-gazebo \ ros-indigo-smach ros-indigo-smach-ros
ros-indigo-grasping-msgs\ ros-indigo-executive-smach ros-indigo-
smach-viewer \ ros-indigo-robot-pose-publisher ros-indigo-tf2-web-
republisher \ graphviz-dev libgraphviz-dev gv python-scipy
你可可以通过rbx2-prereq.sh这脚本来运行这个命令 :
$ cd ~
$ wget https://raw.githubusercontent.com/pirobot/rbx2/indigo-devel/rbx2prereq.sh
$ sh rbx2-prereq.sh
我们也需要从卷1拿到代码,如果你没有相关的资料,你可以安装rbx1代码(如果你还没有安装的情况下), 你可以使用下面的命令: