ROS机器人编程:原理与应用

本书共分为六部分。部分介绍了如何编写ROS节点和ROS工具,也覆盖了消息、类和服务器。第二部分是用ROS进行模拟和可视化,其中包括坐标转换。第三部分讨论了ROS的感知过程。第四部分介绍了ROS中的移动机器人控制和导航。第五部分介绍了ROS机器人臂的相关知识。第六部分涉及系统集成和更高级别的控制,包括基于感知的移动操作。
立即购买

内容简介:

本书共分为六部分。部分介绍了如何编写ROS节点和ROS工具,也覆盖了消息、类和服务器。第二部分是用ROS进行模拟和可视化,其中包括坐标转换。第三部分讨论了ROS的感知过程。第四部分介绍了ROS中的移动机器人控制和导航。第五部分介绍了ROS机器人臂的相关知识。第六部分涉及系统集成和更高级别的控制,包括基于感知的移动操作。

作者简介:

Wyatt S. Newman是凯斯西储大学电气工程和计算机科学系的教授,自1988年开始执教。他的研究领域是机电一体化、机器人学和计算智能,拥有12项专利并发表了超过150篇学术出版物。他在哈佛大学获得了工程科学专业的学士学位,在麻省理工学院热流体科学系获得了机械工程专业的硕士学位,在哥伦比亚大学获得了控制理论和网络理论专业的电机工程理学硕士学位,在麻省理工学院设计与控制系获得了机械工程专业的博士学位。他是机器人学方面的NSF青年研究员,担任过以下职务:飞利浦实验室高级研究员、飞利浦Natuurkundig实验室的访问科学家、美国桑迪亚国家实验室智能系统和机器人中心的访问学者、NASA格伦研究中心的NASA夏季教员、普林斯顿大学神经科学的访问学者、爱丁堡大学信息学院的杰出访问学者、香港大学的Hung Hing Ying杰出客座教授。他带领机器人团队参加了2007年DARPA城市挑战赛和2015年DARPA机器人挑战赛,并将继续致力于机器人的广泛应用。

目录:

译者序
前言
第一部分 ROS基础 / 1
第1章 概述:ROS工具和节点 / 2
1.1 ROS基础概念 / 2
1.2 编写ROS节点 / 5
1.2.1 创建ROS程序包 / 5
1.2.2 编写一个最小的ROS发布器 / 8
1.2.3 编译ROS节点 / 11
1.2.4 运行ROS节点 / 12
1.2.5 检查运行中的最小发布器节点 / 13
1.2.6 规划节点时间 / 15
1.2.7 编写一个最小ROS订阅器 / 17
1.2.8 编译和运行最小订阅器 / 19
1.2.9 总结最小订阅器和发布器节点 / 21
1.3 更多的ROS工具:catkin_simple、roslaunch、rqt_console和rosbag / 21
1.3.1 用catkin_simple简化CMakeLists.txt / 21
1.3.2 自动启动多个节点 / 23
1.3.3 在ROS控制台观察输出 / 25
1.3.4 使用rosbag记录并回放数据 / 26
1.4 最小仿真器和控制器示例 / 28
1.5 小结 / 32
第2章 消息、类和服务器 / 33
2.1 定义自定义消息 / 33
2.1.1 定义一条自定义消息 / 34
2.1.2 定义一条变长的消息 / 38
2.2 ROS服务介绍 / 43
2.2.1 服务消息 / 43
2.2.2 ROS服务节点 / 45
2.2.3 与ROS服务手动交互 / 47
2.2.4 ROS服务客户端示例 / 48
2.2.5 运行服务和客户端示例 / 50
2.3 在ROS中使用C++类 / 51
2.4 在ROS中创建库模块 / 56
2.5 动作服务器和动作客户端介绍 / 61
2.5.1 创建动作服务器包 / 62
2.5.2 定义自定义动作服务器消息 / 62
2.5.3 设计动作客户端 / 68
2.5.4 运行示例代码 / 71
2.6 参数服务器介绍 / 80
2.7 小结 / 84
第二部分 ROS中的仿真和可视化 / 85
第3章 ROS中的仿真 / 86
3.1 简单的2维机器人仿真器 / 86
3.2 动力学仿真建模 / 93
3.3 统一的机器人描述格式 / 95
3.3.1 运动学模型 / 95
3.3.2 视觉模型 / 98
3.3.3 动力学模型 / 99
3.3.4 碰撞模型 / 102
3.4 Gazebo介绍 / 104
3.5 最小关节控制器 / 112
3.6 使用Gazebo插件进行关节伺服控制 / 118
3.7 构建移动机器人模型 / 124
3.8 仿真移动机器人模型 / 132
3.9 组合机器人模型 / 136
3.10 小结 / 139
第4章 ROS中的坐标变换 / 141
4.1 ROS中的坐标变换简介 / 141
4.2 转换侦听器 / 149
4.3 使用Eigen库 / 156
4.4 转换ROS数据类型 / 161
4.5 小结 / 163
第5章 ROS中的感知与可视化 / 164
5.1 rviz中的标记物和交互式标记物 / 168
5.1.1 rviz中的标记物 / 168
5.1.2 三轴显示示例 / 172
5.1.3 rviz中的交互式标记物 / 176
5.2 在rviz中显示传感器值 / 183
5.2.1 仿真和显示激光雷达 / 183
5.2.2 仿真和显示彩色相机数据 / 189
5.2.3 仿真和显示深度相机数据 / 193
5.2.4 rviz中点的选择 / 198
5.3 小结 / 201
第三部分 ROS中的感知处理 / 203
第6章 在ROS中使用相机 / 204
6.1 相机坐标系下的投影变换 / 204
6.2 内置相机标定 / 206
6.3 标定立体相机内参 / 211
6.4 在ROS中使用OpenCV / 217
6.4.1 OpenCV示例:寻找彩色像素 / 218
6.4.2 OpenCV示例:查找边缘 / 223
6.5 小结 / 224
第7章 深度图像与点云信息 / 225
7.1 从扫描LIDAR中获取深度信息 / 225
7.2 立体相机的深度信息 / 230
7.3 深度相机 / 236
7.4 小结 / 237
第8章 点云数据处理 / 238
8.1 简单的点云显示节点 / 238
8.2 从磁盘加载和显示点云图像 / 244
8.3 将发布的点云图像保存到磁盘 / 246
8.4 用PCL方法解释点云图像 / 248
8.5 物体查找器 / 257
8.6 小结 / 261
第四部分 ROS中的移动机器人 / 263
第9章 移动机器人的运动控制 / 264
9.1 生成期望状态 / 264
9.1.1 从路径到轨迹 / 264
9.1.2 轨迹构建器库 / 268
9.1.3 开环控制 / 273
9.1.4 发布期望状态 / 274
9.2 机器人状态估计 / 282
9.2.1 从Gazebo获得模型状态 / 282
9.2.2 里程计 / 286
9.2.3 混合里程计、GPS和惯性传感器 / 292
9.2.4 混合里程计和LIDAR / 297
9.3 差分驱动转向算法 / 302
9.3.1 机器人运动模型 / 303
9.3.2 线性机器人的线性转向 / 304
9.3.3 非线性机器人的线性转向 / 306
9.3.4 非线性机器人的非线性转向 / 308
9.3.5 仿真非线性转向算法 / 309
9.4 相对于地图坐标系的转向 / 312
9.5 小结 / 317
第10章 移动机器人导航 / 318
10.1 构建地图 / 318
10.2 路径规划 / 323
10.3 move_base客户端示例 / 328
10.4 修改导航栈 / 331
10.5 小结 / 335
第五部分 ROS中的机械臂 / 337
第11章 底层控制 / 338
11.1 单自由度移动关节机器人模型 / 338
11.2 位置控制器示例 / 339
11.3 速度控制器示例 / 342
11.4 力控制器示例 / 344
11.5 机械臂的轨迹消息 / 349
11.6 7自由度臂的轨迹插值动作服务器 / 353
11.7 小结 / 354
第12章 机械臂运动学 / 355
12.1 正向运动学 / 356
12.2 逆向运动学 / 360
12.3 小结 / 365
第13章 手臂运动规划 / 366
13.1 笛卡儿运动规划 / 36

 

电子版下载:

书籍

BOOKS

◆ 书籍介绍