搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
精通ROS机器人编程 原书第3版
0.00     定价 ¥ 129.00
图书来源: 浙江图书馆(由JD配书)
此书还可采购25本,持证读者免费借回家
  • 配送范围:
    浙江省内
  • ISBN:
    9787111750383
  • 作      者:
    [印]郎坦·约瑟夫(Lentin Joseph) ,[意]乔纳森·卡卡切
  • 出 版 社 :
    机械工业出版社
  • 出版日期:
    2024-05-01
收藏
编辑推荐

机器人操作系统(ROS)是一个用于复杂机器人编程的软件框架,你无须从头开始编写代码,即可用它开发用于构建复杂机器人的软件,从而节省宝贵的开发时间。本书通过通俗易懂的实用示例和对基本概念的逐步解释,全面介绍了可应用于ROS 机器人项目的高级概念。
本书首先帮助你掌握使用ROS对机器人进行编程所需的基本概念。然后带你探索开发仿真机器人和实际机器人,以及从头开始应用导航和操纵等高级功能。随着阅读的深入,你将学习如何创建 ROS 控制器和插件,并探索 ROS 的工业应用程序及其与空中机器人的交互。最后,你将了解高效使用 ROS 的最佳实践和方法。
最终,你将学会如何在 ROS 中创建各种应用程序,并构建自己的第一个ROS机器人。
阅读本书,你将学到:
·使用7自由度机械臂和差动轮式移动机器人创建机器人模型。
·使用Gazebo、CoppeliaSim和Webots等机器人模拟器。
·使用SLAM和AMCL软件包实现差动驱动机器人的自主导航。
·使用ROS与空中机器人进行并对它进行仿真。
·探索ROS pluginlib、ROS nodelets 和 Gazebo等插件。
·连接Arduino、机器人传感器和高端执行器等I/O板。

展开
作者简介

朗坦·约瑟夫(Lentin Joseph)是一名来自印度的作家、创业者。他是印度Qbotics实验室的创始人兼CEO,在机器人领域已经有7年的从业经验,主要研究方向包括机器人操作系统(ROS)、OpenCV、PCL等。
乔纳森·卡卡切(Jonathan Cacace)在意大利那不勒斯腓特烈二世大学获计算机科学硕士学位及信息与自动化工程博士学位。目前,乔纳森是那不勒斯腓特烈二世大学PRISMA实验室的博士后,主要研究工业机器人和服务机器人,曾经开发了几款基于ROS且集成了机器人感知控制的机器人应用。

展开
内容介绍

本书提供了实用且易于理解的示例,对ROS机器人编程的高级概念进行了全面的介绍。本书首先介绍用ROS进行机器人编程所需的基本概念和ROS框架,讨论了如何用运动规划库和ROS导航栈对机器人进行仿真和交互,还讨论了ROS插件、控制器和节点、各种ROS接口(如何把I/O开发板、传感器和执行器等与ROS连接起来),以及如何用ROS和ROS-Industrial对复杂机器人进行仿真。最后,本书介绍了ROS的故障排除和最佳实践。

展开
目录

目 录  Contents

前言

作者简介

审校者简介

第一部分 ROS编程基本技能

第1章 ROS简介 2

1.1 为什么选择ROS 2

1.2 理解ROS文件系统级别 3

1.2.1 ROS功能包 4

1.2.2 ROS元功能包 5

1.2.3 ROS消息 6

1.2.4 ROS服务 7

1.3 理解ROS计算图级别 8

1.3.1 ROS节点 9

1.3.2 ROS信息 11

1.3.3 ROS主题 11

1.3.4 ROS服务 12

1.3.5 ROS bag文件 12

1.3.6 ROS节点管理器 13

1.3.7 使用ROS参数 14

1.4 ROS社区级别 15

1.5 准备工作 15

1.5.1 ROS发行版 15

1.5.2 运行ROS节点管理器和ROS参数服务器 16

1.5.3 检查roscore命令的输出 18

1.6 总结 19

1.7 问题 19

第2章 ROS编程入门 20

2.1 创建ROS功能包 20

2.1.1 使用ROS主题 22

2.1.2 创建ROS节点 22

2.1.3 编译节点 25

2.2 添加自定义的.msg文件和.srv文件 26

2.3 使用ROS 服务 29

2.3.1 使用ROS actionlib 33

2.3.2 编译ROS动作服务器和客户端 36

2.4 创建启动文件 38

2.5 主题、服务和actionlib的应用 40

2.6 总结 40

2.7 问题 41

第二部分 ROS机器人仿真

第3章 使用ROS进行3D建模 44

3.1 用于机器人建模的ROS软件包 44

3.2 使用URDF理解机器人建模 45

3.3 为机器人描述创建ROS软件包 47

3.4 创建我们的第一个URDF模型 48

3.5 解析URDF文件 49

3.6 在RViz中可视化3D机器人模型 51

3.7 向URDF模型添加物理属性和碰撞属性 53

3.8 使用xacro理解机器人建模 54

3.8.1 使用属性 55

3.8.2 使用数学表达式 55

3.8.3 使用宏 55

3.9 将xacro转换为URDF 56

3.10 为7-DOF机械臂创建机器人描述 56

3.11 解析7-DOF机械臂的xacro模型 58

3.11.1 使用常量 58

3.11.2 使用宏 58

3.11.3 包含其他xacro文件 59

3.11.4 在连杆中使用网格模型 59

3.11.5 使用机器人夹爪 60

3.11.6 在RViz中查看7-DOF机械臂 61

3.12 为差速驱动机器人创建机器人模型 63

3.13 总结 66

3.14 问题 67

第4章 使用ROS和Gazebo进行机器人仿真 68

4.1 使用Gazebo 和ROS仿真机械臂 68

4.2 为Gazebo创建机械臂仿真模型 69

4.2.1 为Gazebo机器人模型添加颜色和纹理 70

4.2.2 添加transmission标签来驱动模型 71

4.3 添加gazebo_ros_control插件 71

4.4 仿真装有Xtion Pro的机械臂 73

4.5 在Gazebo中使用ROS控制器移动机器人关节 76

4.5.1 理解ros_control软件包 76

4.5.2 不同类型的ROS控制器与硬件接口 76

4.5.3 ROS控制器如何与Gazebo交互 77

4.5.4 将关节状态控制器和关节位置控制器连接到机械臂 78

4.5.5 在Gazebo中启动ROS控制器 79

4.5.6 移动机器人关节 81

4.6 在Gazebo中仿真差速轮式机器人 82

4.6.1 向Gazebo中添加激光雷达 83

4.6.2 在Gazebo中控制机器人移动 85

4.6.3 为启动文件添加关节状态发布者 86

4.7 添加ROS遥控节点 86

4.8 总结 88

4.9 问题 88

第5章 使用ROS、CoppeliaSim和Webots进行机器人仿真 89

5.1 使用ROS配置CoppeliaSim 89

5.1.1 理解RosInterface插件 92

5.1.2 处理ROS消息 95

5.2 使用CoppeliaSim和ROS仿真机械臂 96

5.3 使用ROS设置Webots 99

5.3.1 Webots仿真器简介 100

5.3.2 使用Webots仿真移动机器人 101

5.4 编写第一个控制器 103

5.5 使用webots_ros编写遥控节点 107

5.6 总结 110

5.7 问题 111

第6章 使用ROS MoveIt!与Navigation栈 112

6.1 MoveIt!架构 113

6.1.1 move_group节点 113

6.1.2 基于MoveIt!的运动规划 114

6.1.3 运动规划请求适配器 115

6.1.4 MoveIt!规划场景 116

6.1.5 MoveIt!运动学处理 117

6.1.6 MoveIt!碰撞检测 117

6.2 基于设置助手生成MoveIt!配置包 117

6.3 在RViz中使用MoveIt!配置包进行机器人运动规划 123

6.3.1 使用RViz的运动规划插件 124

6.3.2 MoveIt!配置包与Gazebo交互 127

6.4 理解ROS导航栈 132

6.4.1 导航栈的硬件需求 132

6.4.2 使用导航软件包 133

6.4.3 使用导航栈 134

6.5 使用SLAM构建地图 135

6.5.1 为gmapping创建启动文件 136

6.5.2 在差速驱动机器人上运行SLAM 137

6.5.3 基于amcl和静态地图实现

自主导航 140

6.5.4 创建amcl启动文件 140

6.6 总结 143

6.7 问题 143

第7章 探索ROS MoveIt!的高级功能 144

7.1 使用move_group的C++接口进行运动规划 144

7.1.1 使用MoveIt! C++ API规划随机路径 144

7.1.2 使用MoveIt! C++ API规划自定义路径 145

7.1.3 使用MoveIt!进行机械臂的碰撞检测 147

7.2 使用MoveIt!和Gazebo进行感知 153

7.3 使用MoveIt!操作对象 158

7.3.1 使用MoveIt!执行拾取和放置任务 158

7.3.2 在Gazebo和真实的机器人中应用抓取和放置动作 162

7.4 了解用于机器人硬件接口的DYNAMIXEL ROS伺服控制器 162

7.4.1 DYNAMIXEL伺服舵机 163

7.4.2 DYNAMIXEL-ROS接口 164

7.5 7-DOF机械臂与ROS MoveIt! 164

7.5.1 为COOL机械臂创建一个控制器软件包 165

7.5.2 COOL机械臂的MoveIt!配置 168

7.6 总结 170

7.7 问题 170

第8章 ROS在空中机器人上的应用 171

8.1 使用空中机器人 171

8.1.1 UAV硬件 172

8.1.2 Pixhawk自动驾驶仪 172

8.2 使用PX4飞行控制栈 173

8.2.1 PX4固件架构 176

8.2.2 PX4 SITL 178

8.3 PC/自动驾驶仪通信 179

8.4 编写ROS-PX4应用程序 181

8.4.1 编写轨迹流线 186

8.4.2 PX4的外部位姿估计 187

8.5 使用RotorS仿真框架 188

8.5.1 安装RotorS  188

8.5.2 RotorS软件包 190

8.5.3 创建一种新的无人机模型 192

8.5.4 与RotorS电机模型交互 199

8.6 总结 200

8.7 问题 200

第三部分 ROS机器人硬件原型开发

第9章 将I/O板传感器和执行器连接到ROS 202

9.1 理解Arduino-ROS接口 202

9.2 Arduino-ROS接口 203

9.2.1 理解ROS中的rosserial包 203

9.2.2 理解Arduino中的ROS节点API 207

9.2.3 ROS-Arduino发布者和订阅者示例 210

9.2.4 ROS-Arduino示例:用按钮闪烁LED 213

9.2.5 ROS-Arduino示例:加速度计ADXL 335 215

9.2.6 ROS-Arduino示例:超声波距离传感器 216

9.2.7 ROS-Arduino示例:里程计数据发布器 220

9.3 将非Arduino板连接到ROS 222

9.3.1 设置Odroid-C4、树莓派4和Jetson Nano用于安装ROS 222

9.3.2 在树莓派4上使用ROS闪烁LED 228

9.3.3 在树莓派2上使用ROS通过按钮闪烁LED 230

9.3.4 在树莓派4上运行示例 233

9.4 将DYNAMIXEL执行器连接到ROS 234

9.5 总结 235

9.6 问题 235

第10章 使用ROS、OpenCV和PCL编程视觉传感器 236

10.1 软硬件需求 236

10.2 理解ROS-OpenCV接口软件包 236

10.3 理解ROS-PCL接口软件包 237

10.4 连接ROS与USB网络摄像头 239

10.5 校准ROS摄像机 241

10.6 将Kinect和Asus Xtion Pro与ROS连接 249

10.7 连接Intel RealSense摄像机与ROS 251

10.8 连接Hokuyo激光雷达与ROS 255

10.9 使用点云数据 257

10.9.1 如何发布点云 257

10.9.2 如何订阅和处理点云 259

10.9.3 从PCD文件读取和发布点云 262

10.10 总结 264

10.11 问题 265

第11章 在ROS中构建与连接差速驱动移动机器人硬件 266

11.1 技术要求 266

11.1.1 软件要求 267

11.1.2 网络设置 268

11.1.3 硬件要求 268

11.2 一款DIY自主移动机器人—Remo简介 268

11.2.1 Remo硬件组件 269

11.2.2 ROS Navigation Stack的软件需求  271

11.3 为差速驱动机器人开发底层

控制器和ROS Control高级

硬件接口 272

11.3.1 为Remo实现底层基本

控制器  274

11.3.2 用于差速驱动机器人的ROS Control高级硬件接口 278

11.3.3 Remo机器人的ROS节点和主题概述 280

11.4 配置和使用Navigation Stack 283

11.4.1 配置gmapping节点并创建地图 284

11.4.2 使用gmapping节点  284

11.4.3 配置move_base节点 285

11.4.4 配置AMCL节点 286

11.4.5 AMCL规划 287

11.4.6 在仿真环境中使用Remo机器人 289

11.5 总结 291

11.6 问题 291

第四部分 高级ROS编程

第12章 使用pluginlib、nodelet

和Gazebo插件 294

12.1 理解pluginlib 294

12.2 理解ROS小节点 300

12.3 理解并创建Gazebo插件 306

12.4 总结 309

12.5 问题 310

第13章 编写ROS控制器和可视化插件 311

13.1 理解ros_control包 311

13.2 在ROS中编写一个基本的关节控制器 314

13.2.1 创建控制器包 314

13.2.2 创建控制器头文件 315

13.2.3 创建控制器源文件 315

13.2.4 控制器源文件的详细说明 317

13.2.5 创建插件描述文件 318

13.2.6 更新package.xml 318

13.2.7 更新CMakeLists.txt 318

13.2.8 构建控制器 319

13.2.9 编写控制器配置文件 319

13.2.10 编写控制器的启动文件 319

13.2.11 在Gazebo中运行控制器和7-DOF机械臂 320

13.3 了解RViz工具及其插件 322

13.3.1 Displays面板 323

13.3.2 RViz工具栏 323

13.3.3 Views面板 323

13.3.4 Time面板 323

13.3.5 可停靠面板 324

13.4 为远程操作编写RViz插件 324

13.5 总结 330

13.6 问题 330

第14章 在MATLAB和Simulink中使用ROS 331

14.1 开始使用MATLAB 331

14.2 开始使用ROS Toolbox和MATLAB 332

14.3 利用MATLAB和Gazebo开发机器人应用程序 338

14.4 开始使用ROS和Simulink 341

14.4.1 在Simulink中创建一个波信号积分器 342

14.4.2 在Simulink中发布ROS消息 344

14.4.3 在Simulink中订阅ROS主题 346

14.5 在Simulink中开发一个简单的控制系统 348

14.6 总结 351

14.7 问题 351

第15章 ROS在工业机器人中的应用 352

15.1 理解ROS-Industrial包 352

15.2 ROS-Industrial的目标 352

15.3 ROS-Industrial简史 353

15.4 安装ROS-Industrial包 353

15.5 为工业机器人创建URDF 355

15.6 为工业机器人创建MoveIt!配置 356

15.7 更新MoveIt!的配置文件 359

15.8 为UR机器人的机械臂安装ROS-Industrial软件包 361

15.9 为UR机器人安装ROS接口 362

15.10 理解UR机械臂的MoveIt!配置 363

15.11 UR硬件和ROS-I 365

15.12 使用MoveIt!配置ABB机器人 366

15.13 了解ROS-Industrial机器人支持包 369

15.14 了解ROS-Industrial机器人客户端包 370

15.15 设计工业机器人客户端节点 371

15.16 了解ROS-Industrial机器人驱动程序包 372

15.17 理解MoveIt! IKFast插件 374

15.18 为ABB IRB 6640机器人创建MoveIt! IKFast插件 374

15.19 OpenRave和IKFast模块 375

15.19.1 MoveIt! IKFast 375

15.19.2 安装MoveIt! IKFast包 375

15.19.3 在Ubuntu 20.04上安装OpenRave 375

15.20 创建使用OpenRave的机器人的COLLADA文件 376

15.21 为IRB 6640机器人生成IKFast CPP文件 378

15.22 创建MoveIt! IKFast插件 379

15.23 总结 380

15.24 问题 380

第16章 ROS的故障排除和最佳实践 381

16.1 为ROS设置Visual Studio Code IDE开发环境 381

16.1.1 安装/卸载Visual Studio Code 382

16.1.2 开始使用Visual Studio Code 382

16.1.3 安装新的Visual Studio Code扩展 383

16.1.4 从Visual Studio Code的 ROS扩展开始 384

16.1.5 检查和构建ROS工作空间 386

16.1.6 使用Visual Studio Code管理ROS包 387

16.1.7 可视化URDF文件的预览 387

16.2 ROS的最佳实践 388

16.3 ROS包的最佳编程实践 391

16.4 ROS中的重要故障排除提示 392

16.5 总结 394

16.6 问题 395


展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证