新書推薦:
《
无尽的海洋:美国海事探险与大众文化(1815—1860)
》
售價:HK$
99.7
《
治盗之道:清代盗律的古今之辨
》
售價:HK$
122.1
《
甲骨文丛书·剑桥世界暴力史(第一卷):史前和古代世界(套装全2册)
》
售價:HK$
210.6
《
甲骨文丛书·中华早期帝国:秦汉史的重估
》
售價:HK$
300.2
《
欲望与家庭小说
》
售價:HK$
98.6
《
惜华年(全两册)
》
售價:HK$
70.3
《
甲骨文丛书·古代中国的军事文化
》
售價:HK$
99.7
《
中国王朝内争实录(套装全4册):从未见过的王朝内争编著史
》
售價:HK$
244.2
|
內容簡介: |
无论是业余爱好者还是专业的机器人开发人员,在开始进行机器人系统及程序设计时,首先要面对的问题都是基本的如何驱动机器人的轮子的设计。ROS通过软件代码复用集成了众多已经开发完成的功能组件。本书专门帮助读者从对ROS一无所知到能够通过ROS系统完成小型机器人系统的开发和编程工作。本书提供了各种实际的示例代码供读者学习和理解ROS的软件框架。你可以在仿真环境中自行构建机器人相应的功能程序。本书第2版在第1版的基础上增加了与ROSHydro一起工作,如何创建、可视化和处理不同传感器的点云信息,如何控制和利用多关节机械臂,并提供简单易懂的实用教程编写自己的机器人。
|
關於作者: |
About the Authors作者简介Enrique Fernndez在拉斯帕尔马斯大学获得计算机工程博士学位,目前是Clearpath Robotics公司高级机器人工程师。2009年他完成了关于SLAM的硕士学位论文。2013年他的博士论文解决了自主水下滑翔器(AUG)的路径规划问题。那段时间,他还研究了计算机视觉、人工智能以及其他机器人学课题,例如赫罗纳大学的CIRSViCOROB研究实验室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,CIRSViCOROB)的研究小组成员。我也要感谢在PAL机器人公司的同事,在那里我学到很多关于ROS、机器人运动以及仿人双足机器人的知识,不仅有软件,还有电子和硬件设计。后,我要感谢我的家人和朋友的帮助与支持。Luis Snchez 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 Martn和John Brydon给我大的支持,他们以专业的方式教我很多知识。我还要感谢我在SeeByte和AVORA团队的同事,这些年从他们那里学习并经历很多。后,我要特别感谢Jorge Cabrera Gmez,他的指导和建议成就了我自己从未想象到的职业生涯。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,他给了我在准备硕士论文时创建我第壹个机器人的机会。和他们一起工作,使我学习到很多关于机器人的知识。后,我要感谢家人和朋友的帮助与支持。
|
目錄:
|
Contents目 录推荐序一推荐序二译者序前言作者简介审校者简介第1章 ROS Hydro系统入门11.1 PC安装教程31.2 使用软件库安装ROS Hydro31.2.1配置Ubuntu软件库41.2.2添加软件库到sources.list文件中41.2.3设置密钥51.2.4安装ROS51.2.5初始化rosdep61.2.6配置环境61.2.7安装rosinstall71.3 如何安装VirtualBox和Ubuntu81.3.1下载VirtualBox81.3.2创建虚拟机81.4在BeagleBone Black上安装ROS Hydro111.4.1准备工作121.4.2配置主机和source.list文件131.4.3设置密钥141.4.4安装ROS功能包141.4.5初始化rosdep151.4.6在BeagleBone Black中配置环境151.4.7在BeagleBone Black中安装rosinstall151.5 本章小结15第2章 ROS系统架构及概念162.1 理解ROS文件系统级162.1.1工作空间172.1.2功能包182.1.3综合功能包192.1.4消息202.1.5服务212.2 理解ROS计算图级222.2.1节点与nodelet232.2.2主题242.2.3服务252.2.4消息262.2.5消息记录包262.2.6节点管理器262.2.7参数服务器272.3 理解ROS开源社区级272.4 ROS系统试用练习282.4.1ROS文件系统导览282.4.2创建工作空间292.4.3创建ROS功能包和综合功能包302.4.4编译ROS功能包302.4.5使用ROS节点312.4.6如何使用主题与节点交互332.4.7如何使用服务362.4.8使用参数服务器382.4.9创建节点382.4.10 编译节点412.4.11创建msg和srv文件422.4.12使用新建的srv和msg文件442.4.13启动文件482.4.14动态参数502.5 本章小结54第3章 可视化和调试工具553.1 调试ROS节点573.1.1使用gdb调试器调试ROS节点573.1.2ROS节点启动时调用gdb调试器583.1.3ROS节点启动时调用valgrind分析节点593.1.4设置ROS节点core文件转储593.2 日志信息593.2.1输出日志信息593.2.2设置调试信息级别603.2.3为特定节点配置调试信息级别613.2.4信息命名623.2.5按条件显示信息与过滤信息623.2.6显示信息的方式单次、可调、组合633.2.7使用rqt_console和rqt_logger_level在运行时修改调试级别633.3 检测系统状态663.3.1检测节点、主题、服务和参数673.3.2使用rqt_graph在线检测节点状态图703.4 设置动态参数713.5 当出现异常状况时使用roswtf723.6 可视化节点诊断743.7 绘制标量数据图753.8 图像可视化773.9 3D可视化793.9.1使用rqt_rviz在3D世界中实现数据可视化793.9.2主题与坐标系的关系823.9.3可视化坐标变换823.10 保存与回放数据833.10.1什么是消息记录包文件843.10.2使用rosbag在消息记录包中记录数据843.10.3回放消息记录包文件853.10.4检查消息记录包文件的主题和消息863.11 应用rqt与rqt_gui插件883.12 本章小结88第4章 在ROS下使用传感器和执行器904.1 使用游戏杆或游戏手柄904.1.1joy_node如何发送游戏杆动作消息914.1.2使用游戏杆数据在turtlesim中移动海龟924.2 使用激光雷达Hokuyo URG-04lx954.2.1了解激光雷达如何在ROS中发送数据964.2.2访问和修改激光雷达数据984.3 使用Kinect传感器查看3D环境中的对象1004.3.1如何发送和查看Kinect数据1014.3.2创建使用Kinect的示例1024.4 使用伺服电动机Dynamixel1044.5 使用Arduino添加更多的传感器和 执行器1074.6 在Arduino上使用超声波传感器1114.7 距离传感器如何发送消息1134.7.1创建使用超声波的示例1134.7.2Xsens如何在ROS中发送数据1164.7.3创建使用Xsens的示例1164.8 使用10自由度低成本惯性测量模组IMU1184.8.1下载加速度传感器库1194.8.2Arduino Nano和10自由度传感器编程1204.8.3创建ROS节点以使用10自由度传感器数据1214.9 GPS的使用1234.9.1GPS如何发送信息1254.9.2创建一个使用GPS的工程实例1264.10 本章小结127第5章 计算机视觉1285.1 连接和运行摄像头1295.1.1FireWire IEEE1394摄像头1295.1.2USB摄像头1335.2 使用OpenCV制作USB摄像头 驱动程序1345.2.1通过cv_bridge使用OpenCV处理ROS图像1395.2.2使用image transport发布图像1395.2.3在ROS中使用OpenCV1405.2.4显示摄像头输入的图像1405.3 标定摄像头1415.4 ROS图像管道1485.5 计算机视觉任务中有用的ROS功能包1525.6 使用viso2实现视觉里程计1535.6.1摄像头位姿标定1545.6.2运行viso2在线演示1575.6.3使用低成本双目摄像头运行viso21595.7 使用RGBD深度摄像头实现视觉里程计1605.7.1安装fovis1605.7.2用Kinect RGBD深度摄像头运行fovis1605.8 计算两幅图像的单应性1615.9 本章小结162第6章 点云1636.1 理解点云库163
|
內容試閱:
|
前 言Preface本书第2版概括性地介绍了ROS系统的各种工具。ROS是一个先进的机器人操作系统框架,现今已有数百个研究团体和公司将其应用在机器人行业中。对于机器人技术的非专业人士来说,它也相对容易上手。在本书中,你将了解如何安装ROS,如何开始使用ROS的基本工具,以及最终如何应用先进的计算机视觉和导航工具。在阅读本书的过程中无需使用任何特殊的设备。书中每一章都附带了一系列的源代码示例和教程,你可以在自己的计算机上运行。这是你唯一需要做的事情。当然,我们还会告诉你如何使用硬件,这样你可以将你的算法应用到现实环境中。我们在选择设备时特意选择一些业余用户负担得起的设备,同时涵盖了在机器人研究中最典型的传感器或执行器。最后,由于ROS系统的存在使得整个机器人具备在虚拟环境中工作的能力。你将学习如何创建自己的机器人并结合功能强大的导航功能包集。此外如果使用Gazebo仿真环境,你将能够在虚拟环境中运行一切。第2版在最后增加了一章,讲如何使用Move it!包控制机械臂执行抓取任务。读完本书后,你会发现已经可以使用ROS机器人进行工作了,并理解其背后的原理。主要内容第1章介绍安装ROS系统最简单的方法,以及如何在不同平台上安装ROS,本书使用的版本是ROS Hydro。这一章还会说明如何从Debian软件包安装或从源代码进行编译安装,以及在虚拟机和ARM CPU中安装。第2章涉及ROS框架及相关的概念和工具。该章介绍节点、主题和服务,以及如何使用它们,还将通过一系列示例说明如何调试一个节点或利用可视化方法直观地查看通过主题发布的消息。第3章进一步展示ROS强大的调试工具,以及通过对节点主题的图形化将节点间的通信数据可视化。ROS提供了一个日志记录API来轻松地诊断节点的问题。事实上,在使用过程中,我们会看到一些功能强大的图形化工具(如rqt_console和rqt_graph),以及可视化接口(如rqt_plot和rviz)。最后介绍如何使用rosbag和rqt_bag记录并回放消息。第4章介绍ROS系统与真实世界如何连接。这一章介绍在ROS下使用的一些常见传感器和执行器,如激光雷达、伺服电动机、摄像头、RGB-D传感器、GPS等。此外,还会解释如何使用嵌入式系统与微控制器(例如非常流行的Arduino开发板)。第5章介绍ROS对摄像头和计算机视觉任务的支持。首先使用FireWire和USB摄像头驱动程序将摄像头连接到计算机并采集图像。然后,你就可以使用ROS的标定工具标定你的摄像头。我们会详细介绍和说明什么是图像管道,学习如何使用集成了OpenCV的多个机器视觉API。最后,安装并使用一个视觉里程计软件。第6章将展示如何在ROS节点中使用点云库。该章从基本功能入手,如读或写PCL数据片段以及发布或订阅这些消息所必需的转换。然后,将在不同节点间创建一个管道来处理3D数据,以及使用PCL进行缩减采样、过滤和搜索特征点。第7章介绍在ROS系统中实现机器人的第一步是创建一个机器人模型,包括在Gazebo仿真环境中如何从头开始对一个机器人进行建模和仿真,并使其在仿真环境中运行。你也可以仿真摄像头和激光测距传感器,为后续学习如何使用ROS的导航功能包集和其他工具奠定基础。第8章是两章关于ROS导航功能包集中的第1章。该章介绍如何对你的机器人进行使用导航功能包集所需的初始化配置。然后用几个例子对导航功能包集进行说明。第9章延续第8章的内容,介绍如何使用导航功能包集使机器人有效地自主导航。该章介绍使用ROS的Gazebo仿真环境和rviz创建一个虚拟环境,在其中构建地图、定位机器人并用障碍回避做路径规划。第10章讨论ROS中移动机器人机械臂的一个工具包。该章包含安装这个包所需要的文档,以及使用MoveIt!操作机械臂进行抓取、放置,简单的运动规划等任务的演示示例。预备知识我们写作本书的目的是让每位读者都可以完成本书的学习并运行示例代码。基本上,你只需要在计算机上安装一个Linux发行版。虽然每个Linux发行版应该都能使用,但还是建议你使用Ubuntu 12.04 LTS。这样你可以根据第1章的内容安装ROS Hydro。对于ROS的这一版本,你将需要Ubuntu 14.04之前的版本,因为之后的版本已经不再支持Hydro了。对于硬件要求,一般来说,任何台式计算机或笔记本电脑都满足。但是,最好使用独立显卡来运行Gazebo仿真环境。此外,如果有足够的外围接口将会更好,因为这样你可以连接几个传感器和执行器,包括摄像头和Arduino开发板。你还需要Git(git-core Debian软件包),以便从本书提供的源代码中复制库。同样,你需要具备Bash命令行、GNULinux工具的基本知识和一些CC编程技巧。目标读者本书的目标读者包括所有机器人开发人员,可以是初学者也可以是专业人员。它涵盖了整个机器人系统的各个方面,展示了ROS系统如何帮助完成使机器人真正自主化的任务。对于听说过却从未使用过ROS的机器人专业学生或科研人员来说,本书将是非常有益的。ROS初学者能从本书中学习ROS软件框架的很多先进理念和工具。不仅如此,经常使用ROS的用户也可能从某些章节中学习到一些新东
|
|