新书推荐 |《精通ROS机器人编程(原书第2版)》

新书推荐

《精通ROS机器人编程(原书第2版)》

新书推荐 |《精通ROS机器人编程(原书第2版)》_第1张图片

新书推荐 |《精通ROS机器人编程(原书第2版)》_第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 为什么要学习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_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节点API  185

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上配置ROS  199

9.3.2 用ROS控制树莓派2 上的LED灯闪烁  206

9.3.3 在树莓派2上使用ROS测试按钮和LED灯闪烁  208

9.3.4 在树莓派2上运行示例  211

9.4 将DYNAMIXEL驱动器连接到ROS  212

9.5 习题  212

9.6 本章小结  212

第10章 用ROS对视觉传感器编程、OpenCV、PCL  213

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 Pro  225

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 理解AMCL  264

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中使用ROS  309

13.1 学习使用MATLAB与MATLAB-ROS  309

13.1.1 机器人系统工具箱和ROS-MATLAB接口入门  310

13.1.2 ROS话题和MATLAB回调函数  313

13.1.3 为Turtlebot机器人设计一个避障系统  317

13.2 学习使用ROS与Simulink  321

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 为工业机器人创建URDF  336

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-I  345

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 Studio  362

15.1.1 安装和卸载RoboWare Studio  363

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

新书推荐 |《精通ROS机器人编程(原书第2版)》_第3张图片

你与世界

只差一个

公众号

你可能感兴趣的:(python,编程语言,java,大数据,人工智能)