ROS机器人编程实战
作 者: [印度] 库马尔·比平(Kumar Bipin) 著,李华峰,张志宇 译
出版时间: 2020
内容简介
ROS(Robot Operating System)是一个机器人软件平台,是用于实现机器人编程和开发复杂机器人应用的开源软件框架,它能为异质计算机集群提供类似操作系统的功能。ROS的前身是斯坦福人工智能实验室为了支持斯坦福智能机器人STAIR而建立的交换庭(switchyard)项目。本书包含10章内容,循序渐进地介绍了ROS相关的知识,包括ROS入门、结构与概念、可视化和调试工具、传感器和执行器、建模与仿真、移动机器人、机械臂、微型飞行器、ROS工业软件包等。本书适合机器人领域的工程师及研究人员阅读,书中涉及许多实用的案例和解决方案,同时涵盖了未来机器人应用开发中可预见的研究问题。
目录
第 1章 ROS入门 1
1.1 简介 1
1.2 在桌面系统中安装ROS 2
1.2.1 ROS 发行版 2
1.2.2 支持的操作系统 3
1.2.3 如何完成 4
1.3 在虚拟机中安装ROS 8
1.4 在Linux容器中运行ROS 10
1.4.1 准备工作 10
1.4.2 如何完成 10
1.4.3 参考资料 13
1.5 在基于ARM的开发板上安装ROS 13
1.5.1 准备工作 13
1.5.2 如何完成 15
1.5.3 设置系统位置 16
1.5.4 设置sources.list(源列表) 17
1.5.5 设置秘钥 17
1.6 安装ROS包 17
1.6.1 添加单个软件包 17
1.6.2 初始化rosdep 18
1.6.3 环境配置 18
1.6.4 获取rosinstall 18
第 2章 ROS的体系结构与概念Ⅰ 20
2.1 简介 20
2.2 对ROS文件系统的深入解析 21
2.2.1 准备工作 21
2.2.2 如何完成 22
2.2.3 扩展学习 25
2.3 ROS计算图分析 30
2.3.1 准备工作 30
2.3.2 如何完成 32
2.4 加入ROS社区 37
2.5 学习ROS的使用 38
2.5.1 准备工作 38
2.5.2 如何完成 38
2.5.3 工作原理 47
2.6 理解ROS启动(launch)文件 59
第3章 ROS的体系结构与概念Ⅱ 61
3.1 简介 61
3.2 掌握参数服务器和动态参数 62
3.2.1 准备工作 62
3.2.2 如何完成 62
3.3 掌握ROS actionlib 68
3.3.1 准备工作 68
3.3.2 如何完成 69
3.4 掌握ROS pluginlib 78
3.4.1 准备工作 78
3.4.2 如何完成 78
3.5 掌握ROS nodelet 83
3.5.1 准备工作 83
3.5.2 如何完成 83
3.5.3 扩展学习 86
3.6 掌握Gazebo框架与插件 88
3.6.1 准备工作 88
3.6.2 如何完成 89
3.7 掌握ROS的TF(坐标变换) 91
3.7.1 准备工作 92
3.7.2 如何完成 95
3.8 掌握ROS 可视化工具(RViz)及其插件 99
3.8.1 准备工作 99
3.8.2 如何完成 101
第4章 ROS可视化与调试工具 104
4.1 简介 104
4.2 对ROS节点的调试和分析 105
4.2.1 准备工作 105
4.2.2 如何完成 105
4.3 ROS消息的记录与可视化 108
4.3.1 准备工作 108
4.3.2 如何完成 110
4.3.3 更多内容 112
4.4 ROS系统的检测与诊断 114
4.4.1 准备工作 114
4.4.2 如何完成 114
4.5 标量数据的可视化和绘图 118
4.5.1 准备工作 118
4.5.2 如何完成 119
4.5.3 更多内容 120
4.6 非标量数据的可视化—— 2D/3D图像 121
4.6.1 准备工作 122
4.6.2 如何完成 122
4.7 ROS话题的录制与回放 126
4.7.1 准备工作 126
4.7.2 如何完成 126
4.7.3 更多内容 129
第5章 在ROS中使用传感器和执行器 131
5.1 简介 131
5.2 理解Arduino-ROS接口 132
5.2.1 准备工作 132
5.2.2 如何完成 133
5.2.3 工作原理 134
5.3 使用9 DoF(自由度,Degree of Freedom)惯性测量模块 137
5.3.1 准备工作 138
5.3.2 如何完成 138
5.3.3 工作原理 139
5.4 使用GPS系统——Ublox 141
5.4.1 准备工作 142
5.4.2 如何完成 142
5.4.3 工作原理 143
5.5 使用伺服电动机——Dynamixel 144
5.5.1 如何完成 144
5.5.2 工作原理 144
5.6 用激光测距仪——Hokuyo 146
5.6.1 准备工作 146
5.6.2 如何完成 146
5.6.3 工作原理 146
5.7 使用Kinect传感器查看3D环境中的对象 148
5.7.1 准备工作 149
5.7.2 如何完成 149
5.7.3 工作原理 149
5.8 用游戏杆或游戏手柄 151
5.8.1 如何完成 151
5.8.2 工作原理 151
第6章 ROS建模与仿真 153
6.1 简介 153
6.2 理解使用URDF实现机器人建模 154
6.2.1 准备工作 154
6.2.2 工作原理 154
6.3 理解使用Xacro实现机器人建模 163
6.3.1 准备工作 164
6.3.2 工作原理 164
6.4 理解关节状态发布器和机器人状态发布器 165
6.4.1 准备动作 165
6.4.2 工作原理 168
6.4.3 更多内容 172
6.5 理解Gazebo系统结构以及与ROS的接口 174
6.5.1 准备工作 174
6.5.2 如何完成 174
第7章 ROS中的移动机器人 184
7.1 简介 184
7.2 ROS导航功能包集 185
7.2.1 准备工作 185
7.2.2 工作原理 185
7.3 移动机器人与导航系统的交互 196
7.3.1 准备工作 196
7.3.2 如何完成 197
7.3.3 工作原理 198
7.4 为导航功能包集创建launch文件 201
7.4.1 准备工作 201
7.4.2 工作原理 202
7.5 为导航功能包集设置Rviz可视化 203
7.5.1 准备工作 203
7.5.2 工作原理 203
7.5.3 更多内容 210
7.6 机器人定位——自适应蒙特卡罗定位(AMCL) 211
7.6.1 准备工作 211
7.6.2 工作原理 211
7.7 使用rqt_reconfigure配置导航功能包集参数 212
7.8 移动机器人的自主导航——避开障碍物 213
7.8.1 准备工作 213
7.8.2 工作原理 213
7.9 发送目标 214
7.9.1 准备工作 214
7.9.2 工作原理 214
第8章 ROS中的机械臂 217
8.1 简介 217
8.1.1 危险工作场所 218
8.1.2 重复或令人厌烦的工作 218
8.1.3 人类难以操作的工作环境 218
8.2 MoveIt的基本概念 220
8.2.1 MoveIt 220
8.2.2 运动规划 220
8.2.3 感知 221
8.2.4 抓取 221
8.2.5 准备工作 221
8.3 使用图形化界面完成运动规划 223
8.3.1 准备工作 223
8.3.2 如何完成 232
8.3.3 工作原理 234
8.3.4 更多内容 235
8.4 使用控制程序执行运动规划 238
8.4.1 准备工作 238
8.4.2 如何完成 240
8.4.3 执行轨迹 245
8.5 在运动规划中增加感知 246
8.5.1 准备工作 247
8.5.2 如何完成 249
8.5.3 工作原理 251
8.5.4 更多内容 251
8.5.5 参考资料 252
8.6 使用机械臂或者机械手来完成抓取操作 253
8.6.1 准备工作 253
8.6.2 如何完成 256
8.6.3 工作原理 268
8.6.4 参考资料 273
第9章 基于ROS的微型飞行器 276
9.1 简介 276
9.2 MAV系统设计概述 277
9.3 MAV/无人机的通用数学模型 279
9.4 使用RotorS/Gazebo来模拟MAV/无人机 283
9.4.1 准备工作 283
9.4.2 如何完成 285
9.4.3 工作原理 292
9.4.4 更多内容 293
9.4.5 参考资料 296
9.5 MAV/无人机的自主导航框架 297
9.5.1 准备工作 297
9.5.2 如何完成 299
9.5.3 工作原理 314
9.6 操作真正的MAV/drone—— Parrot和Bebop 318
9.6.1 准备工作 319
9.6.2 如何完成 319
9.6.3 工作原理 321
第 10章 ROS-Industrial(ROS-I) 323
10.1 简介 323
10.2 了解ROS-I功能包 324
10.3 工业机器人与MoveIt的3D建模与仿真 326
10.3.1 准备工作 326
10.3.2 如何完成 327
10.4 使用ROS-I软件包——优傲机器人、ABB机器人 336
10.5 ROS-I机器人支持包 342
10.6 ROS-I机器人客户端功能包 345
10.7 ROS-I机器人驱动程序规范 346
10.8 开发自定义的MoveIt IKFast插件 348
10.8.1 准备工作 348
10.8.2 如何完成 351
10.9 了解ROS-I-MTConnect 353
10.9.1 准备工作 354
10.9.2 如何完成 355
10.10 ROS-I的未来——硬件支持、功能和应用 356