发表于2024-11-13
对于非专业人员,你将从本书了解如何安装ROS,如何开始使用ROS的基本工具和框架中不同的功能。
对于专业人员,你将从本书学会如何使用硬件,如何将你的算法应用到现实环境中,从而创建一个满足你所有需求的功能齐全的机器人。
在本书中,你将了解如何安装ROS,如何开始使用ROS的基本工具和框架中不同的功能,并从不同方向探索如何创建机器人,例如使用计算机视觉或点云分析传感器感知的世界,使用强大的导航功能包集在环境中实现导航,甚至能够用MoveIt!控制机械臂与周围环境交互。读完本书后,你会发现已经可以使用ROS机器人进行工作了,并理解其背后的原理,我们衷心希望你能全面了解ROS在开发机器人系统时所提供的无限可能性。
推荐序一
推荐序二
译者序
前言
作者简介
审校者简介
第1章 ROS入门 1
1.1 PC安装教程 3
1.2 使用软件库安装ROS Kinetic 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 创建虚拟机 9
1.4 通过Docker镜像使用ROS 11
1.4.1 安装Docker 11
1.4.2 获取和使用ROS Docker
镜像和容器 11
1.5 在BeagleBone Black上安装
ROS Kinetic 12
1.5.1 准备工作 13
1.5.2 配置主机和source.list
文件 16
1.5.3 设置密钥 16
1.5.4 安装ROS功能包 17
1.5.5 为ROS初始化rosdep 17
1.5.6 在BeagleBone Black中
配置环境 18
1.5.7 在BeagleBone Black中
安装rosinstall 18
1.5.8 BeagleBone Black基本
ROS示例 18
1.6 本章小结 19
第2章 ROS架构及概念 20
2.1 理解ROS文件系统级 20
2.2 理解ROS计算图级 25
2.3 理解ROS开源社区级 31
2.4 ROS试用练习 32
2.5 本章小结 57
第3章 可视化和调试工具 58
3.1 调试ROS节点 60
3.2 日志消息 62
3.3 检测系统状态 69
3.4 设置动态参数 73
3.5 当出现异常状况时使用roswtf 75
3.6 可视化节点诊断 77
3.7 绘制标量数据图 78
3.8 图像可视化 81
3.9 3D可视化 83
3.10 保存与回放数据 88
3.11 应用rqt与rqt_gui插件 93
3.12 本章小结 93
第4章 3D建模与仿真 95
4.1 在ROS中自定义机器人的3D
模型 95
4.2 创建第一个URDF文件 95
4.3 xacro——一种更好的机器人
建模方法 102
4.4 在ROS中仿真 109
4.5 本章小结 118
第5章 导航功能包集入门 119
5.1 ROS导航功能包集 119
5.2 创建变换 120
5.3 发布传感器信息 124
5.4 发布里程数据信息 127
5.5 创建基础控制器 135
5.6 使用ROS创建地图 139
5.7 本章小结 142
第6章 导航功能包集进阶 144
6.1 创建功能包 144
6.2 创建机器人配置 144
6.3 配置全局和局部代价地图 147
6.4 为导航功能包集创建启动文件 150
6.5 为导航功能包集设置rviz 151
6.6 自适应蒙特卡罗定位 160
6.7 使用rqt_reconf?igure修改参数 161
6.8 机器人避障 162
6.9 发送目标 163
6.10 本章小结 166
第7章 使用MoveIt! 167
7.1 MoveIt!体系结构 167
7.2 在MoveIt!中集成一个机械臂 171
7.3 简单的运动规划 180
7.4 考虑碰撞的运动规划 184
7.5 抓取和放置任务 187
7.6 本章小结 199
第8章 在ROS下使用传感器
和执行器 200
8.1 使用游戏杆或游戏手柄 200
8.2 使用Arduino添加更多的传感器
和执行器 206
8.3 使用9自由度低成本IMU 217
8.4 使用IMU——Xsens MTi 225
8.5 GPS的使用 226
8.6 使用激光测距仪——Hokuyo
URG-04lx 230
8.7 创建launch文件 234
8.8 使用Kinect传感器查看
3D环境中的对象 235
8.9 使用伺服电动机——Dynamixel 239
8.10 本章小结 243
第9章 计算机视觉 244
9.1 ROS摄像头驱动程序支持 245
9.2 ROS图像 255
9.3 ROS中的OpenCV库 256
9.4 使用rqt_image_view显示摄像头
输入的图像 257
9.5 标定摄像头 257
9.5.1 如何标定摄像头 258
9.5.2 双目标定 261
9.6 ROS图像管道 264
9.7 计算机视觉任务中有用的ROS
功能包 269
9.8 使用RGBD深度摄像头实现
9.9 计算两幅图像的单应性 278
9.10 本章小结 279
第10章 点云 280
10.1 理解点云库 280
10.2 我的第一个PCL程序 283
10.3 分割 305
10.4 本章小结 308
Preface前言
本书第3版全面地介绍了ROS和各种工具。ROS是一个先进的机器人操作系统框架,目前已有数百个研究团体和公司将其应用在机器人行业中。更重要的是,对于机器人技术的非专业人士和学生来说,它也相对容易上手。在本书中,你将了解如何安装ROS,如何使用ROS的基本工具和框架中不同的功能。
在阅读本书的过程中无须使用任何特殊的设备。书中每一章都附带了一系列的源代码示例和教程,你可以在自己的计算机上运行。这是你唯一需要做的事情。
当然,我们还会告诉你如何使用硬件,这样可以将你的算法应用到现实环境中。我们在选择设备时特意选择一些业余用户购买得起的设备,同时涵盖了在机器人研究中最典型的传感器和执行器。
最后,展示ROS具有使整个机器人在实际或虚拟环境中工作的能力。你将学习如何创建自己的机器人并通过Gazebo仿真环境集成它。此外,如果使用Gazebo仿真环境,你将能够在虚拟环境中运行一切。本书将带你从不同方面探索如何创建机器人,例如使用计算机视觉或点云分析传感器感知世界,使用强大的导航功能包集在环境中实现导航,甚至能够用MoveIt!包控制机械臂与周围环境交互。读完本书后,你会发现已经可以使用ROS机器人进行工作了,并理解其背后的原理,我们衷心希望你能全面了解ROS在开发机器人系统时所提供的无限可能性。
主要内容
第1章介绍安装ROS最简单的方法,以及如何在不同平台上安装ROS,本书使用的版本是ROSKinetic。这一章还会说明如何从Debian包安装或从源代码进行编译安装,以及在虚拟机、Docker和ARMCPU中安装。
第2章讨论ROS框架及相关的概念和工具。该章介绍节点、主题和服务,以及如何使用它们,还将通过一系列示例说明如何调试节点或利用可视化方法直观地查看通过主题发布的消息。
第3章进一步展示ROS强大的调试工具,以及通过对节点主题的图形化将节点间的通信数据可视化。ROS提供了一个日志记录API来轻松地诊断节点的问题。事实上,在使用过程中,我们会看到一些功能强大的图形化工具(如rqt_console和rqt_graph),以及可视化接口(如rqt_plot和rviz)。最后介绍如何使用rosbag和rqt_bag记录并回放消息。
第4章介绍在ROS中实现机器人的第一步是创建一个机器人模型,包括在Gazebo仿真环境中如何从头开始对一个机器人进行建模和仿真,并使其在仿真环境中运行。你也可以仿真摄像头和激光测距传感器等传感器,为后续学习如何使用ROS的导航功能包集和其他工具奠定基础。
第5章是关于ROS导航功能包集中的其中一章。该章介绍如何为方便机器人使用导航功能包集进行初始化配置。然后用几个例子对导航功能包集进行说明。
第6章延续第5章的内容,介绍如何使用导航功能包集使机器人有效地自主导航。该章介绍使用ROS的Gazebo仿真环境和RViz创建一个虚拟环境,在其中构建地图、定位机器人并用障碍回避做路径规划。
第7章讨论ROS中移动机器人机械臂的一个工具包。该章包含安装这个包所需要的文档,以及使用MoveIt!操作机械臂进行抓取、放置、简单的运动规划等任务的演示示例。
第8章介绍ROS与现实世界如何连接。这一章介绍在ROS下使用的一些常见传感器和执行器,如激光雷达、伺服电动机、摄像头、RGB-D传感器、GPS等。此外,还会解释如何使用嵌入式系统与微控制器(例如非常流行的Arduino开发板)。
第9章介绍ROS对摄像头和计算机视觉任务的支持。首先使用FireWire和USB摄像头驱动程序将摄像头连接到计算机并采集图像。然后,就可以使用ROS的标定工具标定摄像头。该章会详细介绍和说明什么是图像管道,讨论如何使用集成了OpenCV的多个机器视觉API。最后,安装并使用一个视觉里程计软件。
第10章将展示如何在ROS节点中使用点云库(PointCloudLibrary,PCL)。该章从基本功能入手,如读或写PCL数据片段以及发布或订阅这些消息所必需的转换。然后,将在不同节点间创建一个管道来处理3D数据,以及使用PCL进行缩减采样、过滤和搜索特征点。
预备知识
我们写作本书的目的是让每位读者都可以完成本书的学习并运行示例代码。基本上,你只需要在计算机上安装一个Linux发行版。虽然每个Linux发行版应该都能使用,但还是建议你使用Ubuntu16.04LTS。这样你可以根据第1章的内容安装ROSKinetic。
对于硬件要求,一般来说,任何台式计算机或笔记本电脑都满足。但是,最好使用独立显卡来运行Gazebo仿真环境。此外,最好有足够的外围接口,因为这样你可以连接几个传感器和执行器,包括摄像头和Arduino开发板。
你还需要Git(git-coreDebian包),以便从本书提供的源代码中复制软件库。同样,你需要具备Bash命令行、GNU/Linux工具的基本知识和一些C/C++编程技巧。
目标读者
本书的目标读者包括所有机器人开发人员,可以是初学者也可以是专业人员。它涵盖了整个机器人系统的各个方面,展示了ROS如何帮助开发人员完成使机器人真正自主化的任务。对于听说过却从未使用过ROS的机器人专业学生或科研人员来说,本书将是非常有益的。ROS初学者能从本书中学习ROS软件框架的很多先进理念和工具。不仅如此,经常使用ROS的用户也可能从某些章节中学习到一些新东西。当然,只有前3章是纯粹为初学者准备的,所以那些已经使用过ROS的人可以跳过这三章直接阅读后面的章节。
源代码和彩色图片下载
本书源代码可以从华章官网www.hzbook.com下载。
作者简介AbouttheAuthors
AnilMahtani是一名主要从事水下机器人工作研发的计算机科学家。他第一次在该领域工作是在完成硕士论文期间为低成本ROV开发软件架构。在此期间,他也成为AVORA的团队领导者和主要开发人员,这个大学生团队设计开发了一个自主水下航行器并参加了2012年的欧洲学生自主水下航行器设计挑战赛(StudentAutonomousUnderwaterChallenge-Europe,SAUC-E)。同年,他完成了论文并获得了拉斯帕尔马斯大学的计算机科学硕士学位。此后不久,他成为SeeByte公司的软件工程师,这家公司是水下系统智能软件解决方案的全球领导者。在2015年,他加入SecureWorks公司,任职软件工程师,在那里他应用相关知识和技术开发入侵检测和预防系统。
在SeeByte公司工作期间,Anil参与了军方、石油和天然气公司的一些半自主和自主水下系统的核心开发。在这些项目中,他积极参与自主系统开发、分布式软件体系结构设计和底层软件开发,同时也为前视声呐图像提供计算机视觉解决方案。他还获得了项目经理职位,管理一个开发和维护内核C++库的工程师团队。
他的专业兴趣主要包括软件工程、算法、数据结构、分布式系统、网络和操作系统。Anil在机器人方向主要负责提供高效和健壮的软件解决方案,不仅解决当前存在的问题,还预见未来的问题或可能的改进。鉴于他的经验,他在计算机视觉、机器学习和控制问题上也有独特的见解。Anil对DIY和电子学感兴趣,并且开发了一些Arduino库回馈社区。
首先,我要感谢家人和朋友的支持,他们总是在我最需要的时候帮助我。我还要感谢我的女友Alex的耐心支持,她是我灵感的源泉。最后,我要感谢我的同事IhorBilyy和DanGood,在我软件工程师职业生涯中他们以专业的方式教会我很多知识。
LuisSánchez在拉斯帕尔马斯大学获得了电子与电信工程的双硕士学位。他曾在技术开发和创新研究所(IDETIC)、加那利群岛海洋平台(PLOCAN)和应用微电子研究所(IUMA)与不同的研究小组合作,进行超分辨率算法成像研究。
他的专业兴趣包括应用于机器人系统的计算机视觉、信号处理和电子设计。因此,他加入了AVORA团队,这批年轻的工程师和学生从零开始从事自主水下航行器(AUV)的开发工作。在这个项目中,Luis开始开发声学和计算机视觉系统,用于提取不同传感器的信息,例如水听器、声呐和摄像头。
依托海洋技术的强大背景,Luis与人合作创办了一家新的初创公司SubseaMechatronics,致力于为水下环境开发遥控操作和自主航行器。
下面是海洋技术工程师和企业家(LPAFabrika:GranCanariaMakerSpace的联合创始人和制造商)DarioSosaCabrera对Luis的评价:
“他很热情,是一个跨多学科的工程师。他对工作负责,自制力强,并承担一个团队领导者的责任,这在euRathlon比赛中充分展现了出来。他在电子和电信领域的背景让其具备从信号处理和软件到电子设计和制造的广泛专业知识。”
Luis作为技术审校者参与了Packt出版社出版的《LearningROSforRoboticsProgramming》的相关工作以及第2版的撰写工作。
首先,我要感谢Aaron、Anil以及Enrique邀请我参与编写这本书。同他们一起工作非常快乐。同时,我也要感谢水下机电团队关于重型水下机器人的丰富经验,这些年我们一起成长。我必须提到LPAFabrika:GranCanariaMakerSpace,他们满腔热忱地准备和引导教学机器人及技术项目,与他们共同工作的时光也非常开心。
最后,我要感谢家人和女友对我参与的每个项目的大力支持和鼓励。我以此书献给他们。
EnriqueFernández具有计算机工程博士学位和机器人学研究背景。他的博士论文解决了自主水下滑翔器(AUG)的路径规划问题,他还研究了SLAM、感知、视觉、控制等机器人学课题。在读博士期间,他加盟了赫罗纳大学的CIRS/ViCOROB水下机器人研究中心,在那里他为AUV开发了视觉SLAM和INS模块。他在2012年参加了SAUC-E并获奖,在2013年作为合作者参与了SAUC-E。
攻读博士学位期间,Enrique在机器人顶级会议和期刊上发表了多篇论文,其中包括国际机器人和自动化会议(InternationalConferenceofRoboticsandAutomation,ICRA)。他也合作编写了一些ROS书籍和章节。
之后,Enrique作为SLAM工程师在2013年6月加盟PALRobotics公司。在那里,他开发了用于REEM、REEM-C仿人型机器人的ROS软件,也继续为开源社区(主要是ROS控制软件库)做贡献,目前仍是其中一名维护人员。在2015年,他加盟ClearpathRobotics公司的自主系统部门,从事感知算法开发相关工作。他曾经在通用电气公司(GeneralElectri ROS机器人高效编程(原书第3版) 下载 mobi epub pdf txt 电子书 格式
ROS机器人高效编程(原书第3版) 下载 mobi pdf epub txt 电子书 格式 2024
ROS机器人高效编程(原书第3版) 下载 mobi epub pdf 电子书用途一般
评分感觉没啥大用处
评分价格很实惠,赞一个,比超市便宜!
评分很好的书,讲的很细,不过公式推导有一些错误
评分抢券买的 相当于四折 不错 还行
评分很好好很好好很好好
评分两本书都皱了,我很气
评分同时买了两本这系列的ros的书,写的不错
评分好
ROS机器人高效编程(原书第3版) mobi epub pdf txt 电子书 格式下载 2024