新书推荐
《精通ROS机器人编程(原书第2版)》
文章图片
文章图片
长按二维码
了解及购买
聚焦于ROS当前稳定的发布版本Kinect Kame,全方位阐释ROS高级概念及编程技巧,ROS进阶必备。
编辑推荐
本书聚焦于ROS当前稳定的发布版本Kinect Kame,讨论机器人领域的高级概念,并展示如何使用ROS编程。
本书首先深入介绍ROS框架,帮助你清晰地了解ROS是如何工作的。然后,你将学习如何构建复杂机器人的模型,并用运动规划库(ROS MoveIt!)和ROS导航软件包集(Navigation)对机器人进行仿真和交互。之后,你将了解如何把I/O开发板、传感器和执行机构与ROS连接,还将学习如何连接硬件设备,以及如何用ROS和ROS-Industrial对复杂机器人进行仿真。最后,你将了解ROS程序设计的最佳实战技巧与经验。
内容简介
本书主要面向机器人开发人员和想充分利用ROS功能的研究人员,是一本侧重ROS框架高级概念的进阶学习指南。书中既介绍了ROS的基本概念,又系统地讲解了使用ROS进行复杂机器人设计、建模、仿真和交互的实用技术、工具和编程技巧,包含大量示例,可以为你快速提升ROS实战技能提供详实参考。
作者简介
朗坦?约瑟夫(Lentin Joseph)是一名来自印度的作家、创业者。他是印度Qbotics实验室的创始人兼CEO,在机器人领域已经有7年的从业经验,主要研究方向包括机器人操作系统(ROS)、OpenCV、PCL等。
乔纳森?卡卡切(Jonathan Cacace)在意大利那不勒斯腓特烈二世大学获计算机科学硕士学位及信息与自动化工程博士学位。目前,乔纳森是那不勒斯腓特烈二世大学PRISMA实验室的博士后,主要研究工业机器人和服务机器人,曾经开发了几款基于ROS且集成了机器人感知控制的机器人应用。
目录
译者序
前言
作者简介
译者简介
第1章 ROS简介1
1.1 为什么要学习ROS1
1.2 在机器人开发中,人们为什么更愿意选择ROS2
1.3 为什么有些人不愿意选择ROS3
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转换为URDF59
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-REP91
5.2 理解vrep_plugin95
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 在差速驱动机器人上运行SLAM138
6.6.3 使用amcl和静态地图实现自主导航141
6.6.4 创建amcl启动文件141
6.7 习题144
6.8 本章小结144
第7章 使用pluginlib、小节点和Gazebo 插件145
7.1 理解pluginlib145
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_interface软件包162
8.1.2 控制器管理器164
8.2 使用ROS编写一个基本的关节控制器164
8.2.1 第1步:创建控制器软件包165
8.2.2 第2步:创建控制器头文件165
8.2.3 第3步:创建控制器源文件166
8.2.4 第4步:控制器源文件解析166
8.2.5 第5步:创建插件描述文件167
8.2.6 第6步:更新package.xml文件168
8.2.7 第7步:更新CMake-Lists.txt文件168
8.2.8 第8步:编译控制器168
8.2.9 第9步:编写控制器配置文件168
8.2.10 第10步:编写控制器的启动文件169
8.2.11 第11步:在Gazebo中运行控制器和7-DOF机械臂169
8.3 理解ROS可视化工具(RViz)及其插件171
8.3.1 Displays面板172
8.3.2 RViz工具栏172
8.3.3 Views面板172
8.3.4 Time面板172
8.3.5 可停靠面板172
8.4 编写用于遥控操作的RViz插件172
8.5 习题178
8.6 本章小结178
第9章 将ROS与I/O开发板、传感器、执行机构连接179
9.1 理解Arduino-ROS接口179
9.2 Arduino-ROS接口是什么180
9.2.1 理解ROS中的rosserial软件包181
9.2.2 理解Arduino中的ROS节点API185
9.2.3 ROS-Arduino发布者和订阅者实例187
9.2.4 Arduino-ROS接口实例——LED灯闪烁/按按钮190
9.2.5 Arduino-ROS接口实例——ADXL 335加速度计192
9.2.6 Arduino-ROS接口实例——超声波测距传感器194
9.2.7 Arduino-ROS接口实例——里程计发布者197
9.3 非Arduino开发板与ROS接口199
9.3.1 在Odroid-XU4和树莓派2上配置ROS199
9.3.2 用ROS控制树莓派2 上的LED灯闪烁206
9.3.3 在树莓派2上使用ROS测试按钮和LED灯闪烁208
9.3.4 在树莓派2上运行示例211
9.4 将DYNAMIXEL驱动器连接到ROS212
9.5 习题212
9.6 本章小结212
第10章 用ROS对视觉传感器编程、OpenCV、PCL213
10.1 理解ROS-OpenCV开发接口软件包213
10.2 理解ROS-PCL开发接口软件包214
10.3 在ROS中连接USB相机216
10.4 ROS与相机校准218
10.4.1 使用cv_bridge在ROS和OpenCV之间转换图像221
10.4.2 使用ROS和OpenCV进行图像处理221
10.5 在ROS中连接Kinect与华硕Xtion Pro225
10.6 将英特尔Real Sense相机与ROS连接228
10.7 在ROS中连接Hokuyo激光雷达232
10.8 处理点云数据233
10.8.1 如何发布点云234
10.8.2 如何订阅和处理点云235
10.8.3 将点云数据写入点云数据(PCD)文件236
10.8.4 从PCD文件中读取并发布点云237
10.9 物体姿态估计与AR标记检测239
10.10 习题243
10.11 本章小结244
第11章 在ROS中构造与连接差速驱动移动机器人245
11.1 Chefbot DIY移动机器人及其硬件配置246
11.1.1 使用Energia IDE来烧写Chefbot固件248
11.1.2 讨论Chefbot的ROS软件包接口249
11.1.3 从编码器计数计算里程计信息254
11.1.4 根据ROS twist消息计算马达转速256
11.1.5 为Chefbot机器人配置导航软件包集257
11.1.6 配置gmapping节点257
11.1.7 配置导航软件包集259
11.1.8 理解AMCL264
11.1.9 在RViz中使用导航功能267
11.1.10 导航软件包中避障272
11.1.11 Chefbot机器人仿真273
11.1.12 从ROS节点向导航软件包集发送一个目的地276
11.2 习题278
11.3 本章小结278
第12章 探索ROS-MoveIt!的高级功能279
12.1 使用move_group的C++接口进行运动规划279
12.1.1 使用MoveIt! C++ API规划随机路径280
12.1.2 使用MoveIt! C++ API规划自定义路径281
12.2 使用MoveIt!进行机械臂的碰撞检测283
12.2.1 向MoveIt!添加碰撞对象283
12.2.2 从规划场景中移除碰撞对象286
12.2.3 向机器人连杆上添加一个碰撞对象286
12.2.4 使用MoveIt! API检查自碰撞287
12.3 使用MoveIt!和Gazebo处理视觉288
12.4 使用MoveIt!执行拾取和放置任务294
12.4.1 使用GPD计算抓握姿态297
12.4.2 在Gazebo和真实机器人上执行拾取和放置动作300
12.5 理解用于机器人硬件接口的DYNAMIXEL ROS伺服控制器300
12.5.1 DYNAMIXEL伺服舵机300
12.5.2 DYNAMIXEL-ROS接口301
12.6 7-DOF机械臂与ROS MoveIt!302
12.6.1 为COOL机械臂创建一个控制器软件包303
12.6.2 COOL机械臂的MoveIt!配置306
12.7 习题308
12.8 本章小结308
第13章 在MATLAB和Simulink中使用ROS309
13.1 学习使用MATLAB与MATLAB-ROS309
13.1.1 机器人系统工具箱和ROS-MATLAB接口入门310
13.1.2 ROS话题和MATLAB回调函数313
13.1.3 为Turtlebot机器人设计一个避障系统317
13.2 学习使用ROS与Simulink321
13.2.1 在Simulink中创建波形信号积分器321
13.2.2 在Simulink中使用ROS消息323
13.2.3 在Simulink中发布ROS消息323
13.2.4 在Simulink中订阅ROS话题327
13.3 用Simulink开发一个简单的控制系统328
13.4 习题332
13.5 本章小结332
第14章 ROS与工业机器人333
14.1 理解ROS-Industrial软件包333
14.1.1 ROS-Industrial的目标334
14.1.2 ROS-Industrial简史334
14.1.3 ROS-Industrial优点334
14.2 安装ROS-Industrial软件包334
14.3 ROS-Industrial软件包框图335
14.4 为工业机器人创建URDF336
14.5 为工业机器人创建MoveIt!配置337
14.5.1 更新MoveIt!配置文件340
14.5.2 测试MoveIt!配置341
14.6 安装UR机械臂的ROS-Industrial软件包341
14.7 理解UR机械臂的MoveIt!配置343
14.8 使用真实的UR机器人和ROS-I345
14.9 ABB机器人的MoveIt!配置346
14.10 ROS-Industrial机器人支持软件包349
14.11 ROS-Industrial 机器人客户端软件包351
14.12 ROS-Industrial 机器人驱动软件包352
14.13 理解MoveIt! IKFast插件354
14.14 为ABB IRB 6640机器人创建MoveIt! IKFast插件354
14.14.1 开发MoveIt! IKFast插件的前提条件354
14.14.2 OpenRave和IKFast模块354
14.15 为使用OpenRave,创建机器人的COLLADA文件357
14.16 为IRB 6640机器人生成IKFast CPP文件358
14.17 习题361
14.18 本章小结361
第15章 调试方法与最佳实战技巧362
15.1 在Ubuntu中安装RoboWare Studio362
15.1.1 安装和卸载RoboWare Studio363
15.1.2 RoboWare Studio入门363
15.1.3 在RoboWare Studio中创建ROS软件包364
15.1.4 在RoboWare Studio中编译ROS工作区366
15.1.5 在RoboWare Studio中运行ROS节点367
15.1.6 在RoboWare界面启动ROS工具368
15.1.7 处理活动的ROS话题、节点和服务369
15.1.8 使用RoboWare工具创建ROS节点和类370
15.1.9 RoboWare Studio中的ROS软件包管理器371
15.2 ROS的最佳实战技巧与经验372
15.3 ROS软件包中的最佳实战技巧与经验374
15.4 ROS中的重要调试技巧374
15.5 习题377
15.6 本章小结378
文章图片
你与世界
只差一个
【python|新书推荐 |《精通ROS机器人编程(原书第2版)》】公众号
推荐阅读
- 工业AI落地场景案例实战,飞桨EasyDL让工业更智能
- 百度Q4财报(百度智能云2021年营收151亿元,同比大增64%)
- Spring|Spring Boot(九)--------员工管理系统
- 评测有礼 | 飞桨黑客松第二期热身活动上线啦!
- 面由心生,由脸观心(基于AI的面部微表情分析技术解读)
- 快速入门!全国大学生智能汽车竞赛百度创意组首期直播宣讲来啦
- Java学习笔记Day05
- SCI|小学生发SCI论文,中学生发新英格兰,这不是后浪,这是海啸啊
- Smartbi为何出众(我们凭实力入选2021企业服务SaaS高潜企业榜单)