新書推薦:
![高效时间管理:巧妙且明智地利用时间](http://103.6.6.66/upload/mall/productImages/24/31/9787213114342.jpg)
《
高效时间管理:巧妙且明智地利用时间
》
售價:HK$
66.7
![完美咨询 原书第4版](http://103.6.6.66/upload/mall/productImages/24/31/9787115647696.jpg)
《
完美咨询 原书第4版
》
售價:HK$
86.3
![亿万:围剿华尔街大白鲨(珍藏版) [美]茜拉·科尔哈特卡](http://103.6.6.66/upload/mall/productImages/24/31/9787111744436.jpg)
《
亿万:围剿华尔街大白鲨(珍藏版) [美]茜拉·科尔哈特卡
》
售價:HK$
79.4
![水悖论(“同一颗星球”丛书)](http://103.6.6.66/upload/mall/productImages/24/31/9787214274120.jpg)
《
水悖论(“同一颗星球”丛书)
》
售價:HK$
78.2
![空间微电子. 第二卷.空间用集成电路设计](http://103.6.6.66/upload/mall/productImages/24/30/9787515922997.jpg)
《
空间微电子. 第二卷.空间用集成电路设计
》
售價:HK$
250.7
![罪恶与梦想:第二次世界大战个人史](http://103.6.6.66/upload/mall/productImages/24/30/9787521761627.jpg)
《
罪恶与梦想:第二次世界大战个人史
》
售價:HK$
135.7
![古希腊神话与传说全集(特装刷边版,精装彩插,德文原版直译,随书附赠古希腊神谱+诸神图)](http://103.6.6.66/upload/mall/productImages/24/31/9787218174372.jpg)
《
古希腊神话与传说全集(特装刷边版,精装彩插,德文原版直译,随书附赠古希腊神谱+诸神图)
》
售價:HK$
147.2
![英伦历史漫步 探寻世外桃源之旅](http://103.6.6.66/upload/mall/productImages/24/31/9787020184576.jpg)
《
英伦历史漫步 探寻世外桃源之旅
》
售價:HK$
67.9
|
內容簡介: |
本书包含ROS 基础以及ROS 机械臂全过程开发和实践等内容,是编著者在结合国内外方法和技术,总结自己多年机器人开发经验以及教学科研成果的基础上完成的。本书第1~4 章简单概述了机械臂基础和ROS 基础,结合具体实践详细讲解了ROS 通信机制、常用组件、TF2 等进阶功能;第5~7 章基于机械臂控制系统开发的工程实践,详细讲解了ROS 机械臂建模、MoveIt!基础、MoveIt!的编程;第8、第9 章介绍了机械臂的视觉系统和视觉抓取。本书理论与实践相结合,仿真与实物相结合,配有开源教学软件包和课后习题答疑解析,所有教学示例均提供C 和Python 两种编程实现,方便读者更好地理解和实践书中内容。本书可作为普通高校自动化、机器人工程、人工智能等相关专业的教材,也可作为机器人开发者和工程师的技术参考书。
|
目錄:
|
第1章 机械臂基础
1.1 机械臂系统组成 001
1.1.1 机械系统 001
1.1.2 驱动系统 001
1.1.3 感知系统 002
1.1.4 控制系统 002
1.2 机械臂主要技术参数 002
1.2.1 自由度 002
1.2.2 定位精度 003
1.2.3 工作空间 003
1.2.4 速度和加速度 004
1.2.5 承载能力 004
1.3 空间描述和变换 004
1.3.1 位置描述 005
1.3.2 姿态描述 005
1.3.3 机器人位姿 007
1.3.4 坐标变换 007
1.4 机械臂正、逆运动学 008
1.4.1 关节空间和笛卡儿空间 008
1.4.2 正运动学 009
1.4.3 逆运动学 009
1.5 推荐阅读 009
本章小结 009
习题1 010
第2章 认识ROS
2.1 什么是ROS 011
2.2 ROS 的安装与测试 011
2.2.1 操作系统和ROS 版本选择 011
2.2.2 安装ROS Melodic Morenia 版本 012
2.2.3 测试ROS 015
2.3 ROS 文件系统 015
2.3.1 catkin 工作空间和ROS 功能包 015
2.3.2 创建工作空间 017
2.4 教学代码包 018
2.4.1 下载安装教学代码包 018
2.4.2 Qt Creator 开发环境 019
2.4.3 教学代码包简要说明 025
2.5 ROS 的通信架构 026
2.5.1 节点与ROS Master 027
2.5.2 消息 027
2.5.3 话题 027
2.5.4 服务 028
2.5.5 动作 028
2.5.6 话题、服务和动作对比 028
2.5.7 参数服务器 028
2.6 ROS 计算图和命名空间 029
本章小结 029
习题2 030
第3章 ROS 基础实践
3.1 消息的定义和使用 031
3.1.1 消息的描述和类型 031
3.1.2 自定义消息类型 033
3.1.3 消息的使用 035
3.2 rospy 和roscpp 客户端 035
3.3 话题通信和编程实现 036
3.3.1 话题的发布节点(Python) 036
3.3.2 话题的订阅节点(Python) 040
3.3.3 话题的发布节点(C ) 042
3.3.4 话题的订阅节点(C ) 046
3.3.5 话题通信测试 049
3.4 服务通信和编程实现 052
3.4.1 服务的定义 052
3.4.2 自定义服务类型 053
3.4.3 服务的服务端节点(Python) 055
3.4.4 服务的客户端节点(Python) 057
3.4.5 服务的服务端节点(C ) 059
3.4.6 服务的客户端节点(C ) 061
3.4.7 服务通信测试 062
3.5 ROS 中的参数 064
3.5.1 rosparam 命令行工具 064
3.5.2 参数服务器(Python) 066
3.5.3 参数服务器(C ) 068
本章小结 071
习题3 071
第4章 ROS 进阶实践
4.1 动作通信和编程实现 073
4.1.1 Action 的定义 073
4.1.2 Action 的服务端节点(Python) 076
4.1.3 Action 的客户端节点(Python) 079
4.1.4 Action 的服务端节点(C ) 081
4.1.5 Action 的客户端节点(C ) 084
4.1.6 Action 通信测试 085
4.2 ROS 常用组件和工具 089
4.2.1 XML 语法规范 089
4.2.2 launch 启动文件 090
4.2.3 RViz 可视化平台 096
4.2.4 rqt 工具箱 101
4.2.5 rosbag 数据记录与回放 101
4.3 动态参数配置 101
4.3.1 编写.cfg 文件 102
4.3.2 设置动态参数节点(Python) 103
4.3.3 设置动态参数节点(C ) 107
4.3.4 测试动态参数配置 108
4.4 ROS 中的坐标系和TF2 110
4.4.1 ROS 中的TF 110
4.4.2 编写TF2 广播节点(Python) 113
4.4.3 编写TF2 监听节点(Python) 117
4.4.4 编写TF2 广播节点(C ) 119
4.4.5 编写TF2 监听节点(C ) 121
4.4.6 TF 测试和常用工具 123
4.5 扩展阅读 126
本章小结 127
习题4 127
第5章 ROS 机械臂建模
5.1 URDF 建模原理和语法规范 128
5.1.1 什么是URDF 128
5.1.2 urdf 功能包 128
5.1.3 URDF 语法规范 129
5.2 机械臂URDF 建模 133
5.2.1 创建机械臂描述功能包 134
5.2.2 创建机械臂URDF 模型 134
5.2.3 添加机械臂夹爪模型 136
5.2.4 URDF 调试工具 139
5.2.5 在RViz 中可视化模型 140
5.3 xacro 语言简化URDF 模型 142
5.3.1 xacro 模型文件常用语法 143
5.3.2 使用xacro 简化机械臂URDF 模型 145
5.3.3 为机械臂添加移动底盘 148
5.4 sw2urdf 插件 149
5.4.1 sw2urdf 插件简介 150
5.4.2 sw2urdf 插件导出的功能包 150
5.4.3 XBot-Arm 机械臂的URDF 模型 153
5.5 robot_state_publisher 发布TF 157
5.5.1 robot_state_publisher 原理简介 157
5.5.2 编写/joint_states 话题发布节点 160
本章小结 163
习题5 163
第6章 MoveIt!基础
6.1 MoveIt!软件架构 164
6.1.1 move_group 节点 165
6.1.2 运动学求解器 166
6.1.3 运动规划器 166
6.1.4 规划场景 168
6.1.5 碰撞检测 168
6.2 MoveIt!可视化配置 168
6.2.1 安装MoveIt!并启动配置助手 169
6.2.2 生成自碰撞矩阵 170
6.2.3 添加虚拟关节 171
6.2.4 添加规划组 173
6.2.5 添加机器人位姿 176
6.2.6 添加末端执行器 179
6.2.7 添加被动关节 180
6.2.8 ROS 控制 181
6.2.9 Simulation 仿真 182
6.2.10 设置3D 传感器 182
6.2.11 添加作者信息 182
6.2.12 自动生成配置文件 182
6.3 使用RViz 快速上手MoveIt! 183
6.3.1 启动Demo 并配置RViz 插件 184
6.3.2 使用MotionPlanning 交互 187
6.3.3 设置规划场景测试碰撞检测 189
6.4 MoveIt!配置功能包解析 193
6.4.1 SRDF 文件 193
6.4.2 kinematics.yaml 文件 195
6.4.3 joint_limits.yaml 文件 195
6.4.4 ompl_planning.yaml 文件 196
6.4.5 fake_controllers.yaml 文件 196
6.4.6 demo.launch 启动文件 196
6.4.7 move_group.launch 文件 198
6.4.8 setup_assistant.launch 文件 200
6.5 MoveIt!控制真实机械臂 201
6.5.1 通信机制和系统架构 201
6.5.2 添加MoveIt!启动文件 204
6.5.3 真实机械臂测试 205
6.6 使用MoveIt!的命令行工具 206
本章小结 210
习题6 210
第7章 MoveIt!的编程
7.1 关节目标和位姿目标规划 211
7.1.1 演示模式下测试 212
7.1.2 关节目标规划示例(Python) 213
7.1.3 关节目标规划示例(C ) 216
7.1.4 位姿目标规划示例(Python) 218
7.1.5 位姿目标规划示例(C ) 222
7.2 笛卡儿路径规划 223
7.2.1 演示模式下测试 224
7.2.2 直线运动示例(Python) 226
7.2.3 直线运动示例(C ) 230
7.2.4 圆弧运动示例(Python) 232
7.2.5 圆弧运动示例(C ) 235
7.3 避障规划 237
7.3.1 演示模式下测试 237
7.3.2 避障规划示例(Python) 240
7.3.3 避障规划示例(C ) 245
7.4 物品抓取与放置 247
7.4.1 演示模式下测试 247
7.4.2 pick 和place 编程接口 250
7.4.3 编程实现物品抓取与放置(Python) 252
7.4.4 编程实现物品抓取与放置(C ) 257
本章小结 260
习题7 260
第8章 机械臂的视觉系统
8.1 视觉系统概述 261
8.2 ROS 图像接口和相机驱动 261
8.2.1 使用usb_cam 功能包测试USB摄像头 262
8.2.2 Image 和CompressedImage图像消息 264
8.2.3 RealSense 相机的驱动安装和测试 265
8.2.4 PointCloud2 点云消息 269
8.3 相机的标定 270
8.3.1 camera_calibration 简介和安装 270
8.3.2 camera_calibration 的相机标定 270
8.4 cv_bridge 功能包 275
8.4.1 cv_bridge 安装和测试 275
8.4.2 cv_bridge 的使用示例(Python) 277
8.4.3 cv_bridge 的使用示例(C ) 279
8.5 颜色检测 282
8.5.1 HSV 颜色检测和测试 282
8.5.2 编程实现HSV 颜色检测(Python) 285
8.5.3 编程实现HSV 颜色检测(C ) 288
8.6 ROS 中的物体检测 289
8.6.1 物体检测简述 289
8.6.2 find_object_2d 节点的测试 291
8.6.3 find_object_3d 节点的测试 293
8.6.4 darknet_ros 的安装和测试 295
本章小结 297
习题8 297
第9章 机械臂的视觉抓取
9.1 视觉抓取关键技术分析 298
9.2 AR 标签检测与定位 302
9.2.1 ar_track_alvar 的简介与安装 302
9.2.2 创建AR 标签 303
9.2.3 检测AR 标签 304
9.3 机械臂手眼标定 306
9.3.1 手眼标定的基本原理 306
9.3.2 easy_handeye 的安装和准备工作 308
9.3.3 眼在手外的手眼标定 312
9.3.4 手眼标定结果的发布和使用 318
9.4 基于AR 标签识别的自动抓取 319
9.4.1 应用系统原理 319
9.4.2 应用测试 322
9.4.3 编程实现自动抓取(Python) 324
9.4.4 编程实现自动抓取(C ) 327
本章小结 330
习题9 330
参考文献
|
內容試閱:
|
机器人系统比较复杂,包含机械、驱动、感知和控制等子系统,涉及机械、电子、自动控制、人机交互、通信、软件工程、人工智能等多个领域,给机器人开发者和研究者带来了很大的挑战。为了提高开发效率,避免“重复造轮子”,ROS(Robot Operating System,机器人操作系统)应运而生,为机器人开发提供了一套标准框架。
ROS 可应用在机械臂、无人车、无人机、人形机器人等不同种类的机器人上。越来越多的机器人开发者、实验室和企业公司选择ROS 作为机器人开发框架,用于机器人仿真和真机的研发测试。根据ROS Index 官方统计数据,截至2022 年10 月,共有开源ROS 仓库2000 余个、功能包7000 余个,且每天都在增加。
本书基于“如何从零开始搭建机械臂的ROS 控制系统”这一问题,由浅入深,由易到难,理论结合实践,详细介绍了ROS 机械臂开发过程中使用的技术,并通过大量工程实例,帮助读者深入理解ROS 框架,学会将ROS 和MoveIt!应用到具体的机器人开发实践中。
本书共分为9 章:第1 章对机械臂的系统组成、技术参数、正/逆运动学等进行简单介绍,让读者了解机械臂的基础知识和基本概念;第2 章介绍ROS 的功能、安装、文件系统、通信架构和计算图等基础知识,并详细介绍ROS 工作空间的创建和本书教学示例代码包的下载安装;第3 章学习ROS 中基本的通信方式(消息、话题、服务和参数服务器)以及相关实践,为后续章节频繁使用ROS 通信机制打下基础;第4 章学习ROS 的Action 通信、常用组件工具、动态参数配置和TF2,是ROS 的进阶实践;第5 章详细介绍URDF 和xacro 语法规范,深入学习机器人(机械臂)URDF 模型的搭建过程和原理;第6 章介绍MoveIt!的系统架构和功能模块以及机械臂系统的通信机制,学习配置助手(Setup Assistant)配置机器人的过程,通过MotionPlanning 插件和命令行工具测试机械臂的运动规划等功能;第7 章通过大量实践示例,学习机械臂的目标规划、笛卡儿路径规划、避障规划、机械臂抓取和放置等任务的编程实现;第8 章介绍相机驱动和ROS中的图像、点云消息,并学习搭建简易的ROS 视觉系统,实现颜色检测和物体检测功能;第9 章分析视觉抓取应用中用到的关键技术,通过具体的自动抓取应用示例,学习视觉抓取系统的基本组成和编程实现。
书中部分理论讲解参考ROS 和MoveIt!官方文档,几乎所有的教学实践示例均由编著者根据工程经验自行设计和实现,前后连贯,系统性强,便于读者理解掌握并快速应用到实际机器人的开发工作中。通读全书,可以发现所有章节按照前后顺序,刚好回答了前面提出的问题——如何从零开始搭建机械臂的ROS 控制系统,这也是本书编写的初衷。本书配套开源教学软件包和课后习题答疑解析,正文讲解以ROS Melodic Morenia 版本为准,同时在开源仓库提供Kinetic Kame和Noetic Ninjemys 版本代码,便于读者测试。书中教学示例均提供C 和Python 两种编程实现方式,方便不同编程基础的读者入门和使用。本书配套的资源包,读者可扫描封底二维码查看或下载。
本书编著者来自中国科学院软件研究所、重庆邮电大学自动化学院和江苏中科重德智能科技有限公司,长期从事移动机器人和机械臂的开发工作,积累了大量的工程经验和科研成果。本书第1、2 章由蒋畅江、常先明和邹术杰编著,第3、4 章由武延军、常先明、王晓云和刘朋编著,第5~7 章由王晓云和武延军编著,第8、9 章由王晓云、武延军、常先明和蒋畅江编著。全书由王晓云和武延军统稿并组织编著。感谢化学工业出版社对本书的大力支持,感谢方洋、谭建、汪鹏、邹术杰、刘朋、刘晨等参与了教学示例的编写测试工作,感谢邹术杰和刘朋参与了课后习题的答案解析工作。
因编著者水平有限,书中难免有疏漏或不足之处,欢迎读者批评指正。
编著者
2023 年3 月
|
|