描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111621997
本书首先深入介绍ROS框架,帮助你清晰地了解ROS是如何工作的。然后,你将学习如何构建复杂机器人的模型,并用运动规划库(ROS MoveIt!)和ROS导航软件包集(Navigation)对机器人进行仿真和交互。之后,你将了解如何把I/O开发板、传感器和执行机构与ROS连接,还将学习如何连接硬件设备,以及如何用ROS和ROS-Industrial对复杂机器人进行仿真。*后,你将了解ROS程序设计的*佳实战技巧与经验。
通过阅读本书,你将学到:
·创建一个7-DOF机械臂,以及一个差速轮式移动机器人
·在ROS中,用Gazebo和V-REP进行机器人仿真
·用MoveIt!对7-DOF机械臂进行运动规划
·在ROS中用SLAM和AMCL实现差速驱动机器人的自主导航
·深入了解ROS pluginlib、 ROS小节点和Gazebo插件
·将I/O开发板(如Arduino)、机器人传感器及高端执行机构与ROS连接
·用ROS-Industrial对ABB机械臂和UR机械臂进行仿真和运动规划
·用ROS新版本探究ROS的开放框架
全书共15章,第1章简要介绍ROS基本概念;第2章解释如何使用ROS软件包;第3章讨论7-DOF机械臂和差速驱动机器人的设计;第4章和第5章通过示例详细讲解如何使用Gazebo和V-REP这两个的机器人仿真软件;第6章介绍如何使用ROS MoveIt!和导航软件包集的现有功能;第7章讨论ROS pluginlib、小节点和控制器等一些高级概念;第8章进一步讨论RViz插件和ROS控制器;第9章讨论一些硬件组件与ROS的接口;第10章讨论如何使用ROS连接各种视觉传感器,并利用开源计算机视觉库(OpenCV)和点云库(PCL)进行编程;第11章介绍如何构建差速驱动的自主移动机器人,并将其与ROS连接;第12章介绍MoveIt!的高级功能;第13章讨论如何将Matlab和Simulink软件与ROS连接;第14章介绍ROS-Industrial软件包;第15章讨论如何在ROS中安装集成开发环境,并介绍ROS实战技巧与调试方法。
前言
作者简介
译者简介
第1章 ROS简介 1
1.1 为什么要学习ROS 1
1.2 在机器人开发中,人们为什么更愿意选择ROS 2
1.3 为什么有些人不愿意选择ROS 3
1.4 理解ROS的文件系统 4
1.4.1 ROS软件包 5
1.4.2 ROS超软件包 7
1.4.3 ROS消息 7
1.4.4 ROS服务 9
1.5 理解ROS的计算图 9
1.5.1 ROS节点 11
1.5.2 ROS消息 12
1.5.3 ROS话题 13
1.5.4 ROS服务 13
1.5.5 ROS消息记录包 14
1.5.6 ROS节点管理器 14
1.5.7 应用ROS参数 16
1.6 ROS的社区 17
1.7 学习ROS需要做哪些准备 17
1.8 习题 20
1.9 本章小结 20
第2章 ROS编程入门 21
2.1 创建一个ROS软件包 21
2.1.1 学习ROS话题 23
2.1.2 创建ROS节点 23
2.1.3 编译生成节点 26
2.2 添加自定义的msg和srv文件 28
2.3 使用ROS服务 30
2.3.1 使用ROS动作库 34
2.3.2 编译ROS动作服务器和客户端 37
2.4 创建启动文件 39
2.5 话题、服务和动作库的应用 41
2.6 维护ROS软件包 41
2.7 发布ROS软件包 42
2.7.1 准备发布ROS软件包 43
2.7.2 发布软件包 43
2.7.3 为ROS软件包创建维基页面 45
2.8 习题 47
2.9 本章小结 47
第3章 在ROS中为3D机器人建模 48
3.1 机器人建模的ROS软件包 49
3.2 利用URDF理解机器人建模 50
3.3 为机器人描述创建ROS软件包 52
3.4 创建我们的第一个URDF模型 52
3.5 详解URDF文件 54
3.6 在RViz中可视化机器人3D模型 55
3.7 向URDF模型添加物理属性和碰撞属性 57
3.8 利用xacro理解机器人建模 58
3.8.1 使用属性 58
3.8.2 使用数学表达式 59
3.8.3 使用宏 59
3.9 将xacro转换为URDF 59
3.10 为7-DOF机械臂创建机器人描述 60
3.10.1 机械臂规格 61
3.10.2 关节类型 61
3.11 解析7-DOF机械臂的xacro模型 61
3.11.1 使用常量 61
3.11.2 使用宏 62
3.11.3 包含其他xacro文件 62
3.11.4 在连杆中使用网格模型 63
3.11.5 使用机器人夹爪 63
3.11.6 在RViz中查看7-DOF机械臂 63
3.12 为差速驱动移动机器人创建机器人模型 66
3.13 习题 70
3.14 本章小结 70
第4章 使用ROS和Gazebo进行机器人仿真 71
4.1 使用Gazebo和ROS仿真机械臂 71
4.2 为Gazebo创建机械臂仿真模型 72
4.2.1 为Gazebo机器人模型添加颜色和纹理 73
4.2.2 添加transmission标签来驱动模型 74
4.2.3 添加gazebo_ros_control插件 74
4.2.4 在Gazebo中添加3D视觉传感器 75
4.3 仿真装有Xtion Pro的机械臂 76
4.4 在Gazebo中使用ROS控制器 78
4.4.1 认识ros_control软件包 78
4.4.2 不同类型的ROS控制器和硬件接口 79
4.4.3 ROS控制器如何与Gazebo交互 79
4.4.4 将关节状态控制器和关节位置控制器连接到手臂 80
4.4.5 在Gazebo中启动ROS控制器 81
4.4.6 控制机器人的关节运动 83
4.5 在Gazebo中仿真差速轮式机器人 83
4.5.1 将激光雷达添加到机器人中 85
4.5.2 在Gazebo中控制机器人移动 86
4.5.3 在启动文件中添加关节状态发布者 87
4.6 添加ROS遥控节点 88
4.7 习题 89
4.8 本章小结 89
第5章 用ROS和V-REP进行机器人仿真 91
5.1 安装带有ROS的V-REP 91
5.2 理解vrep_plugin 95
5.2.1 使用ROS服务与V-REP交互 96
5.2.2 使用ROS话题与V-REP交互 98
5.3 使用V-REP和ROS仿真机械臂 101
5.4 在V-REP下仿真差速轮式机器人 107
5.4.1 在V-REP中添加激光传感器 109
5.4.2 在V-REP中添加3D视觉传感器 110
5.5 习题 112
5.6 本章小结 112
第6章 ROS MoveIt!与导航软件包集 113
6.1 安装MoveIt! 113
6.2 使用配置助手工具生成MoveIt!配置软件包 118
6.2.1 第1步:启动配置助手工具 118
6.2.2 第2步:生成自碰撞矩阵 120
6.2.3 第3步:增加虚拟关节 120
6.2.4 第4步:添加规划组 121
6.2.5 第5步:添加机器人姿态 122
6.2.6 第6步:设置机器人的末端执行器 122
6.2.7 第7步:添加被动关节 123
6.2.8 第8步:作者信息 123
6.2.9 第9步:生成配置文件 123
6.3 使用MoveIt!配置软件包在RViz中进行机器人运动规划 124
6.3.1 使用RViz运动规划插件 125
6.3.2 MoveIt!配置软件包与Gazebo的接口 128
6.4 理解ROS导航软件包集 133
6.4.1 ROS导航硬件的要求 133
6.4.2 使用导航软件包 134
6.5 安装ROS导航软件包集 136
6.6 使用SLAM构建地图 136
6.6.1 为gmapping创建启动文件 137
6.6.2 在差速驱动机器人上运行SLAM 138
6.6.3 使用amcl和静态地图实现自主导航 141
6.6.4 创建amcl启动文件 141
6.7 习题 144
6.8 本章小结 144
第7章 使用pluginlib、小节点和Gazebo 插件 145
7.1 理解pluginlib 145
7.2 理解ROS小节点 151
7.3 理解Gazebo插件 156
7.4 习题 160
7.5 本章小结 160
第8章 ROS控制器和可视化插件编程 161
8.1 理解 ros_control软件包集 162
8.1.1 controller
本书是按照如下顺序来组织的。在介绍了ROS的基本概念之后,开始讨论如何对机器人进行建模和仿真。Gazebo和V-REP仿真器将用于控制机器人建模并与之交互,还将用于连接机器人与MoveIt!和ROS导航软件包。然后讨论ROS插件、控制器和小节点。最后,本书还会讨论如何将Matlab和Simulink软件与ROS连接。
本书的读者对象
本书为有激情的机器人开发人员或想充分利用ROS功能的研究人员而写。本书也适合已经熟悉典型机器人应用的用户,或者想要进阶学习ROS,学习如何建模、构建、控制自己机器人的用户。如果你想轻松理解本书的所有内容,强烈建议你先掌握GNU/Linux和C++编程的基础知识。
本书主要内容
第1章介绍ROS的核心基本概念。
第2章解释如何使用ROS软件包。
第3章讨论两类机器人的设计:一类是七自由度(7-DOF)机械臂,另一类是差速驱动机器人。
第4章讨论7-DOF机械臂、差速轮式机器人和ROS控制器的仿真,这些控制器有助于控制Gazebo中的机器人关节。
第5章介绍如何使用V-REP仿真器和vrep_plugin将ROS连接到仿真场景中。然后讨论7-DOF机械臂和差速移动机器人的控制。
第6章介绍如何使用ROS MoveIt!和导航软件包集的现有功能,如机器人机械臂运动控制和机器人自主导航。
第7章展示ROS中的一些高级概念,例如ROS pluginlib、小节点和Gazebo插件。本章还将讨论每个概念的功能和应用,并通过一个示例介绍其工作原理。
第8章展示如何为类似于PR2的机器人编写基本的ROS控制器。在创建控制器后,我们将使用Gazebo中的PR2来运行控制器。与此同时,我们还将看到如何为RViz创建插件。
第9章讨论一些硬件组件(如传感器和执行器)与ROS的接口。我们将看到如何使用I/O开发板(如Arduino、树莓派和Odroid-XU4)与ROS的传感器通信。
第10章讨论如何使用ROS连接各种视觉传感器,并利用开源计算机视觉库(OpenCV)和点云库(PCL)与AR Markers一起对其进行编程。
第11章介绍如何构建具有差速驱动器配置的自主移动机器人,并将其与ROS连接。
第12章讨论MoveIt!的功能,例如碰撞规避,使用3D传感器进行感知、抓握、拾取和放置。在此之后,我们将学习如何将机器人控制器硬件与MoveIt!连接。
第13章讨论如何将Matlab和Simulink软件与ROS连接。
第14章帮助大家了解和安装ROS中的ROS-Industrial软件包。我们将学习如何为工业机器人开发MoveIt! IKFast插件。
第15章讨论如何在Eclipse IDE中设置ROS开发环境,并介绍ROS中的最佳实战经验与调试技巧。
如何学习本书
为了运行本书中的示例,你需要一台运行Linux系统的计算机。这里推荐安装的Linux发行版是Ubuntu 16.04,Debian 8也可以。建议计算机配置至少有4GB的内存和一款性能优异的处理器(Intel i系列)来执行Gazebo仿真和图像处理算法。
读者甚至可以在Windows系统上托管的虚拟机或VMware软件上安装Linux系统,在这样的虚拟系统中也可以工作。但这种选择的缺点是需要更多的计算资源来运行示例,并且当ROS与真实的硬件连接时,可能会遇到各种问题。
本书中使用的ROS版本是Kinetic Kame。需要的其他软件有V-REP仿真器、Git、Matlab和Simulink。
最后,某些章节要求读者将ROS与商用硬件连接,例如I/O开发板(Arduino、Odroid和树莓派)、视觉传感器(Kinect/Asus Xition Pro)和驱动器。你必须购买这些硬件才能运行本书中的一些示例,但这并不是学习ROS必须要购买的。
下载示例代码
你可以从www.packtpub.com通过个人账号下载本书的示例代码,也可以访问华章图书官网http://www.hzbook.com,通过注册并登录个人账号下载。
本书的代码也在GitHub上托管,网址为https://github.com/PacktPublishing/Mastering-ROS-for-Robotics-Programming-Second-Edition。如果代码有更新的话,会将更新提交到GitHub代码仓库中。
除此之外,我们还在https://github.com/PacktPublishing/中提供了其他书籍和视频,这里还有一些其他代码,有兴趣就去看看吧!
下载彩图
我们还提供了一个PDF文件,其中包含本书中使用的所有截图和样图。可以在此处下载:http://www.packtpub.com/sites/default/files/downloads/MasteringROSforRoboticsProgrammingSecondEdition_ColorImages.pdf。
排版约定
在本书中使用了许多排版约定。
代码格式如下:
命令行输入或输出格式如下:
粗体:表示你看到的是新术语、重要单词或句子。例如,菜单或对话框中的单词会出现在文本中。下面就是一个示例:在主工具栏上,选择“File | Open Workspace”,然后选择代表ROS工作区的目录。
警告或重要说明标志。
提示和技巧标志。
评论
还没有评论。