书籍详情
ROS机器人程序设计(原书第2版)
作者:[西班牙] 恩里克·费尔南德斯 等 著;刘锦涛 译
出版社:机械工业出版社
出版时间:2016-10-01
ISBN:9787111551058
定价:¥69.00
购买这本书可以去
内容简介
无论是业余爱好者还是专业的机器人开发人员,在开始进行机器人系统及程序设计时,首先要面对的问题都是基本的如何驱动机器人的轮子的设计。ROS通过软件代码复用集成了众多已经开发完成的功能组件。本书专门帮助读者从对ROS一无所知到能够通过ROS系统完成小型机器人系统的开发和编程工作。本书提供了各种实际的示例代码供读者学习和理解ROS的软件框架。你可以在仿真环境中自行构建机器人相应的功能程序。本书第2版在第1版的基础上增加了与ROSHydro一起工作,如何创建、可视化和处理不同传感器的点云信息,如何控制和利用多关节机械臂,并提供简单易懂的实用教程编写自己的机器人。
作者简介
About the Authors作者简介Enrique Fernández在拉斯帕尔马斯大学获得计算机工程博士学位,目前是Clearpath Robotics公司高级机器人工程师。2009年他完成了关于SLAM的硕士学位论文。2013年他的博士论文解决了自主水下滑翔器(AUG)的路径规划问题。那段时间,他还研究了计算机视觉、人工智能以及其他机器人学课题,例如赫罗纳大学的CIRS/ViCOROB研究实验室AUV的惯性导航系统和视觉SLAM。他在2012年参加了欧洲学生自主水下航行器设计挑战赛(Student Autonomous Underwater Challenge-Europe,SAUC-E)并获奖,在2013年作为合作者参与了SAUC-E。 获得博士学位后,Enrique作为高级机器人工程师在2013年6月加入PAL Robotics公司的自主导航部门。在那里,他开发了用于REEM、REEM-C和移动机器人以及相关项目的软件,如使用ROS框架的Stockbot。他的研究方向包括运动规划(路径规划和移动机器人控制)、机器人定位和SLAM。在2015年,他作为高级自主系统开发人员加盟Clearpath Robotics公司的自主系统部门从事SLAM相关工作。 在学术方面,Enrique发表了多篇会议论文,其中两篇于2011年发表在《International Conference of Robotics and Automation》(ICRA)上。他是Packt Publishing出版的第1版《ROS机器人程序设计》和其他一些书部分章节的作者。他的硕士学位论文是关于室内机器人的FastSLAM算法,此机器人装备了SICK激光扫描仪以及Pioneer差动平台的轮式里程计。他的博士学位论文是关于AUG的路径规划算法和工具。他还拥有电子和嵌入式系统(如PC104和Arduino)的开发经验。他的研究背景包括SLAM、计算机视觉、路径规划、优化、机器人学和人工智能。 我要感谢这本书的合著者,感谢他们为完成这本书所付出的努力以及提供了无数示例的代码。我还要感谢博士论文期间大学智能系统和计算工程研究所(University Institute of Intelligent Systems and Computational Engineering,SIANI)和水下机器人研究中心(Center of Underwater Robotics Research,CIRS/ViCOROB)的研究小组成员。我也要感谢在PAL机器人公司的同事,在那里我学到很多关于ROS、机器人运动以及仿人双足机器人的知识,不仅有软件,还有电子和硬件设计。后,我要感谢我的家人和朋友的帮助与支持。 Luis Sánchez Crespo在拉斯帕尔马斯大学获得了电子与电信工程的双硕士学位。他曾在技术开发和创新研究所(IDETIC)、加那利群岛海洋平台(PLOCAN)和应用微电子研究所(IUMA)与不同的研究小组合作,进行超分辨率算法成像研究。 他的专业兴趣包括应用于机器人系统的计算机视觉、信号处理和电子设计。因此,他加入了AVORA团队,这批年轻的工程师和学生从零开始从事自主水下航行器(AUV)的开发工作。在这个项目中,Luis开始开发声学和计算机视觉系统,用于提取不同传感器的信息,例如水听器、声呐和摄像头。 依托海洋技术的强大背景,Luis与人合作创办了一家新的初创公司Subsea Mechatronics,致力于为水下环境开发遥控操作和自主航行器。 下面是海洋技术工程师和企业家(LPA Fabrika:Gran Canaria Maker Space的联合创始人和制造商)Dario Sosa Cabrera对Luis的评价: “他很热情,是一个多学科的工程师。他对工作负责。他可以自我管理,并承担一个团队领导者的责任,如在SAUC-E竞赛中领导了AVORA团队。他在电子和电信领域的背景让其具备从信号处理和软件到电子设计和制造的广泛专业知识。” Luis作为技术审校者参与了Packt Publishing出版的第1版《ROS机器人程序设计》的相关工作。 首先,我要感谢Aaron、Anil以及Enrique邀请我参与编写这本书。和他们一起工作非常快乐。同时,我也要感谢水下机电团队关于重型水下机器人的丰富经验,这些年我们一起成长。我必须提到LPA Fabrika:Gran Canaria Maker Space,他们备课和讲授教育机器人及技术项目极富热情,与他们共享工作环境也非常令人激动。 后,我要感谢我的家人和女朋友对我参与的每个项目的大力支持和鼓励。 Anil Mahtani是一名从事水下机器人工作5年的计算机科学家。他在该领域工作是在完成硕士论文期间为低成本ROV开发软件架构。在此期间,他也成为AVORA的团队领导者和主要开发人员,这个团队的高校学生设计和开发了一个自主水下航行器并参加了2012年的SAUC-E。同年,他完成了论文并获得了拉斯帕尔马斯大学的计算机科学硕士学位。此后不久,他成为SeeByte公司的软件工程师,这家公司是水下系统智能软件解决方案的全球领导者。 在SeeByte公司工作期间,Anil参与了军方、石油和天然气公司的一些半自主和自主水下系统的核心开发。在这些项目中,他积极参与自主系统开发、分布式软件体系结构设计和底层软件开发,同时也为前视声呐图像提供计算机视觉解决方案。他还获得了项目经理职位,管理一个开发和维护内核C++库的工程师团队。 他的专业兴趣主要包括软件工程、算法、分布式系统、网络和操作系统。Anil在机器人方向主要负责提供高效和健壮的软件解决方案,不仅解决当前存在的问题,还预见未来的问题或可能的改进。鉴于他的经验,他在计算机视觉、机器学习和控制问题上也有独特的见解。Anil对DIY和电子学有兴趣,并且开发了一些Arduino库回馈社区。 首先,我要感谢我的家人和朋友的支持,他们总是在我需要的时候帮助我。我也要感谢我的同事和朋友David Rubio Vidal、Emilio Miguelá?ez Martín和John Brydon给我大的支持,他们以专业的方式教我很多知识。我还要感谢我在SeeByte和AVORA团队的同事,这些年从他们那里学习并经历很多。后,我要特别感谢Jorge Cabrera Gámez,他的指导和建议成就了我自己从未想象到的职业生涯。 Aaron Martinez是数字化制造领域的电脑工程师、企业家和专家。他于2010年在拉斯帕尔马斯大学的Instituto Universitario de Cienciasy Tecnologias Ciberneticas(IUCTC)完成硕士论文。他在远程监控领域使用沉浸式设备和机器人平台准备硕士论文。得到学位后,他参加了在奥地利林茨开普勒大学研究所的机器人学实习计划。在实习期间,他作为团队的一员使用ROS和导航包集进行移动平台开发。之后,他参与了有关机器人的项目,其中一个是拉斯帕尔马斯大学的AVORA项目。在这个项目中,他参与自主水下航行器制作,并参与意大利的SAUC-E。2012年,他负责维护这个项目;2013年,他帮助从ROS向机器人平台移植导航包集和其他算法。 近,Aaron与人共同创立了一家名为SubSeaMechatronics SL的公司。这家公司从事与水下机器人和遥控系统相关的项目,还设计和制造水下传感器。公司的主要目标是开发用于研发原型和重型机械手的定制解决方案。 Aaron有许多领域的经验,比如编程、机器人、机电一体化、数字化制造以及Arduino、BeagleBone、服务器和激光雷达等设备。如今,他在SubSeaMechatronics SL公司从事水下和空中环境的机器人平台设计。 我要感谢我的女朋友,她在我写这本书时给我支持以及给我继续成长的动力。我还要感谢Donato Monopoli(加那利群岛技术研究所(ITC)生物医学工程部门的主管),以及ITC所有的工作人员,感谢他们使我懂得数字制造、机械以及组织工程,我在此度过了生命中美好的时光。 感谢我大学的同事,特别是Alexis Quesada,他给了我在准备硕士论文时创建我第壹个机器人的机会。和他们一起工作,使我学习到很多关于机器人的知识。 最后,我要感谢家人和朋友的帮助与支持。
目录
推荐序一
推荐序二
译者序
前言
作者简介
审校者简介
第1章 ROS Hydro系统入门 1
1.1 PC安装教程 3
1.2 使用软件库安装ROS Hydro 3
1.2.1配置Ubuntu软件库 4
1.2.2添加软件库到sources.list文件中 4
1.2.3设置密钥 5
1.2.4安装ROS 5
1.2.5初始化rosdep 6
1.2.6配置环境 6
1.2.7安装rosinstall 7
1.3 如何安装VirtualBox和Ubuntu 8
1.3.1下载VirtualBox 8
1.3.2创建虚拟机 8
1.4在BeagleBone Black上安装ROS Hydro 11
1.4.1准备工作 12
1.4.2配置主机和source.list文件 13
1.4.3设置密钥 14
1.4.4安装ROS功能包 14
1.4.5初始化rosdep 15
1.4.6在BeagleBone Black中配置环境 15
1.4.7在BeagleBone Black中安装rosinstall 15
1.5 本章小结 15
第2章 ROS系统架构及概念 16
2.1 理解ROS文件系统级 16
2.1.1工作空间 17
2.1.2功能包 18
2.1.3综合功能包 19
2.1.4消息 20
2.1.5服务 21
2.2 理解ROS计算图级 22
2.2.1节点与nodelet 23
2.2.2主题 24
2.2.3服务 25
2.2.4消息 26
2.2.5消息记录包 26
2.2.6节点管理器 26
2.2.7参数服务器 27
2.3 理解ROS开源社区级 27
2.4 ROS系统试用练习 28
2.4.1ROS文件系统导览 28
2.4.2创建工作空间 29
2.4.3创建ROS功能包和综合功能包 30
2.4.4编译ROS功能包 30
2.4.5使用ROS节点 31
2.4.6如何使用主题与节点交互 33
2.4.7如何使用服务 36
2.4.8使用参数服务器 38
2.4.9创建节点 38
2.4.10 编译节点 41
2.4.11创建msg和srv文件 42
2.4.12使用新建的srv和msg文件 44
2.4.13启动文件 48
2.4.14动态参数 50
2.5 本章小结 54
第3章 可视化和调试工具 55
3.1 调试ROS节点 57
3.1.1使用gdb调试器调试ROS节点 57
3.1.2ROS节点启动时调用gdb调试器 58
3.1.3ROS节点启动时调用valgrind分析节点 59
3.1.4设置ROS节点core文件转储 59
3.2 日志信息 59
3.2.1输出日志信息 59
3.2.2设置调试信息级别 60
3.2.3为特定节点配置调试信息级别 61
3.2.4信息命名 62
3.2.5按条件显示信息与过滤信息 62
3.2.6显示信息的方式——单次、可调、组合 63
3.2.7使用rqt_console和rqt_logger_level在运行时修改调试级别 63
3.3 检测系统状态 66
3.3.1检测节点、主题、服务和参数 67
3.3.2使用rqt_graph在线检测节点状态图 70
3.4 设置动态参数 71
3.5 当出现异常状况时使用 roswtf 72
3.6 可视化节点诊断 74
3.7 绘制标量数据图 75
3.8 图像可视化 77
3.9 3D可视化 79
3.9.1使用rqt_rviz在3D世界中实现数据可视化 79
3.9.2主题与坐标系的关系 82
3.9.3可视化坐标变换 82
3.10 保存与回放数据 83
3.10.1什么是消息记录包文件 84
3.10.2使用rosbag在消息记录包中记录数据 84
3.10.3回放消息记录包文件 85
3.10.4检查消息记录包文件的主题和消息 86
3.11 应用rqt与rqt_gui插件 88
3.12 本章小结 88
第4章 在ROS下使用传感器和执行器 90
4.1 使用游戏杆或游戏手柄 90
4.1.1joy_node如何发送游戏杆动作消息 91
4.1.2使用游戏杆数据在turtlesim中移动海龟 92
4.2 使用激光雷达——Hokuyo URG-04lx 95
4.2.1了解激光雷达如何在ROS中发送数据 96
4.2.2访问和修改激光雷达数据 98
4.3 使用Kinect传感器查看3D环境中的对象 100
4.3.1如何发送和查看Kinect数据 101
4.3.2创建使用Kinect的示例 102
4.4 使用伺服电动机——Dynamixel 104
4.5 使用Arduino添加更多的传感器和
执行器 107
4.6 在Arduino上使用超声波传感器 111
4.7 距离传感器如何发送消息 113
4.7.1创建使用超声波的示例 113
4.7.2Xsens如何在ROS中发送数据 116
4.7.3创建使用Xsens的示例 116
4.8 使用10自由度低成本惯性测量模组IMU 118
4.8.1下载加速度传感器库 119
4.8.2Arduino Nano和10自由度传感器编程 120
4.8.3创建ROS节点以使用10自由度传感器数据 121
4.9 GPS的使用 123
4.9.1GPS如何发送信息 125
4.9.2创建一个使用GPS的工程实例 126
4.10 本章小结 127
第5章 计算机视觉 128
5.1 连接和运行摄像头 129
5.1.1FireWire IEEE1394摄像头 129
5.1.2USB摄像头 133
5.2 使用OpenCV制作USB摄像头 驱动程序 134
5.2.1通过cv_bridge使用OpenCV处理ROS图像 139
5.2.2使用image transport发布图像 139
5.2.3在ROS中使用OpenCV 140
5.2.4显示摄像头输入的图像 140
5.3 标定摄像头 141
5.4 ROS图像管道 148
5.5 计算机视觉任务中有用的ROS功能包 152
5.6 使用viso2实现视觉里程计 153
5.6.1摄像头位姿标定 154
5.6.2运行viso2在线演示 157
5.6.3使用低成本双目摄像头运行viso2 159
5.7 使用RGBD深度摄像头实现视觉里程计 160
5.7.1安装fovis 160
5.7.2用Kinect RGBD深度摄像头运行fovis 160
5.8 计算两幅图像的单应性 161
5.9 本章小结 162
第6章 点云 163
6.1 理解点云库 163
推荐序二
译者序
前言
作者简介
审校者简介
第1章 ROS Hydro系统入门 1
1.1 PC安装教程 3
1.2 使用软件库安装ROS Hydro 3
1.2.1配置Ubuntu软件库 4
1.2.2添加软件库到sources.list文件中 4
1.2.3设置密钥 5
1.2.4安装ROS 5
1.2.5初始化rosdep 6
1.2.6配置环境 6
1.2.7安装rosinstall 7
1.3 如何安装VirtualBox和Ubuntu 8
1.3.1下载VirtualBox 8
1.3.2创建虚拟机 8
1.4在BeagleBone Black上安装ROS Hydro 11
1.4.1准备工作 12
1.4.2配置主机和source.list文件 13
1.4.3设置密钥 14
1.4.4安装ROS功能包 14
1.4.5初始化rosdep 15
1.4.6在BeagleBone Black中配置环境 15
1.4.7在BeagleBone Black中安装rosinstall 15
1.5 本章小结 15
第2章 ROS系统架构及概念 16
2.1 理解ROS文件系统级 16
2.1.1工作空间 17
2.1.2功能包 18
2.1.3综合功能包 19
2.1.4消息 20
2.1.5服务 21
2.2 理解ROS计算图级 22
2.2.1节点与nodelet 23
2.2.2主题 24
2.2.3服务 25
2.2.4消息 26
2.2.5消息记录包 26
2.2.6节点管理器 26
2.2.7参数服务器 27
2.3 理解ROS开源社区级 27
2.4 ROS系统试用练习 28
2.4.1ROS文件系统导览 28
2.4.2创建工作空间 29
2.4.3创建ROS功能包和综合功能包 30
2.4.4编译ROS功能包 30
2.4.5使用ROS节点 31
2.4.6如何使用主题与节点交互 33
2.4.7如何使用服务 36
2.4.8使用参数服务器 38
2.4.9创建节点 38
2.4.10 编译节点 41
2.4.11创建msg和srv文件 42
2.4.12使用新建的srv和msg文件 44
2.4.13启动文件 48
2.4.14动态参数 50
2.5 本章小结 54
第3章 可视化和调试工具 55
3.1 调试ROS节点 57
3.1.1使用gdb调试器调试ROS节点 57
3.1.2ROS节点启动时调用gdb调试器 58
3.1.3ROS节点启动时调用valgrind分析节点 59
3.1.4设置ROS节点core文件转储 59
3.2 日志信息 59
3.2.1输出日志信息 59
3.2.2设置调试信息级别 60
3.2.3为特定节点配置调试信息级别 61
3.2.4信息命名 62
3.2.5按条件显示信息与过滤信息 62
3.2.6显示信息的方式——单次、可调、组合 63
3.2.7使用rqt_console和rqt_logger_level在运行时修改调试级别 63
3.3 检测系统状态 66
3.3.1检测节点、主题、服务和参数 67
3.3.2使用rqt_graph在线检测节点状态图 70
3.4 设置动态参数 71
3.5 当出现异常状况时使用 roswtf 72
3.6 可视化节点诊断 74
3.7 绘制标量数据图 75
3.8 图像可视化 77
3.9 3D可视化 79
3.9.1使用rqt_rviz在3D世界中实现数据可视化 79
3.9.2主题与坐标系的关系 82
3.9.3可视化坐标变换 82
3.10 保存与回放数据 83
3.10.1什么是消息记录包文件 84
3.10.2使用rosbag在消息记录包中记录数据 84
3.10.3回放消息记录包文件 85
3.10.4检查消息记录包文件的主题和消息 86
3.11 应用rqt与rqt_gui插件 88
3.12 本章小结 88
第4章 在ROS下使用传感器和执行器 90
4.1 使用游戏杆或游戏手柄 90
4.1.1joy_node如何发送游戏杆动作消息 91
4.1.2使用游戏杆数据在turtlesim中移动海龟 92
4.2 使用激光雷达——Hokuyo URG-04lx 95
4.2.1了解激光雷达如何在ROS中发送数据 96
4.2.2访问和修改激光雷达数据 98
4.3 使用Kinect传感器查看3D环境中的对象 100
4.3.1如何发送和查看Kinect数据 101
4.3.2创建使用Kinect的示例 102
4.4 使用伺服电动机——Dynamixel 104
4.5 使用Arduino添加更多的传感器和
执行器 107
4.6 在Arduino上使用超声波传感器 111
4.7 距离传感器如何发送消息 113
4.7.1创建使用超声波的示例 113
4.7.2Xsens如何在ROS中发送数据 116
4.7.3创建使用Xsens的示例 116
4.8 使用10自由度低成本惯性测量模组IMU 118
4.8.1下载加速度传感器库 119
4.8.2Arduino Nano和10自由度传感器编程 120
4.8.3创建ROS节点以使用10自由度传感器数据 121
4.9 GPS的使用 123
4.9.1GPS如何发送信息 125
4.9.2创建一个使用GPS的工程实例 126
4.10 本章小结 127
第5章 计算机视觉 128
5.1 连接和运行摄像头 129
5.1.1FireWire IEEE1394摄像头 129
5.1.2USB摄像头 133
5.2 使用OpenCV制作USB摄像头 驱动程序 134
5.2.1通过cv_bridge使用OpenCV处理ROS图像 139
5.2.2使用image transport发布图像 139
5.2.3在ROS中使用OpenCV 140
5.2.4显示摄像头输入的图像 140
5.3 标定摄像头 141
5.4 ROS图像管道 148
5.5 计算机视觉任务中有用的ROS功能包 152
5.6 使用viso2实现视觉里程计 153
5.6.1摄像头位姿标定 154
5.6.2运行viso2在线演示 157
5.6.3使用低成本双目摄像头运行viso2 159
5.7 使用RGBD深度摄像头实现视觉里程计 160
5.7.1安装fovis 160
5.7.2用Kinect RGBD深度摄像头运行fovis 160
5.8 计算两幅图像的单应性 161
5.9 本章小结 162
第6章 点云 163
6.1 理解点云库 163
猜您喜欢