首页>参考读物>计算机科学与技术>人工智能

ROS机器人程序设计(原书第2版)
作者 : (西班牙)恩里克·费尔南德斯(Enrique Fern·ndez)     路易斯·桑切斯·克雷斯波(Luis S·nchez Crespo)     阿尼尔·马哈塔尼(Anil Mahtani)     亚伦·马丁内斯(Aaron Martinez) 著
译者 : 刘锦涛 张瑞雷 等译
出版日期 : 2016-10-29
ISBN : 978-7-111-55105-8
定价 : 69.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 317
开本 : 16
原书名 : Learning ROS for Robotics Programming,Second Edition
原出版社: Packt Publishing Ltd.
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

无论是业余爱好者还是专业的机器人开发人员,在开始进行机器人系统及程序设计时,首先要面对的问题都是最基本的驱动机器人的轮子的设计。ROS通过软件代码复用集成了众多已经开发完成的功能组件。本书就是专门帮助读者从对ROS一无所知到能够通过ROS系统完成小型机器人系统的开发和编程工作的。
本书提供了各种实际的示例代码供读者学习和理解ROS的软件框架。你可以在仿真环境中自行构建机器人相应的功能程序。本书第2版在第1版的基础上增加了首次与ROS Hydro一起工作,如何创建、可视化和处理不同传感器的点云信息,如何控制和利用多关节机械臂,并提供简单易懂的实用教程编写自己的机器人。

图书特色

国内权威ROS机器人程序设计译著的最新版,易科机器人实验室倾情推荐。
本书是入门机器人操作系统的一站式指南,从零开始,帮助读者快速通过ROS系统完成小型机器人系统的开发和编程工作。

封底
机器人操作系统一站式指南
本书从入门级内容开始介绍,包括传感器集成、建模、仿真、计算机视觉、导航算法等。然后,探索主题、消息和节点等概念。接下来,介绍机器人如何使用高清摄像头观测或使用距离传感器导航避障。
第2版新增了ROS Hydro,不仅介绍如何创建、可视化和处理来自不同传感器的点云信息,还展示如何使用MoveIt! 控制和规划包含多个关节的机械臂的运动。
为了充分利用这本书,读者应有C++编程基础、GNU/Linux系统知识和计算机科学的一般技能。不需要ROS经验背景,这本书可以带你从零开始。

通过阅读本书,你将学到
安装一个完整的ROS Hydro系统
ROS功能包和综合功能包的创建及其实时使用和调试
ROS节点的编译、处理和调试
设计三维机器人模型并使用Gazebo在虚拟环境中进行仿真
在机器人上生成和调整导航功能包集
将不同的传感器如激光测距仪、Arduino和Kinect集成到机器人上
可视化和处理来自不同传感器的点云信息
使用MoveIt!控制和规划包含多个关节的机械臂的运动


译者简介





刘锦涛,易科机器人实验室(exbot.net)创始人,致力于机器人导航与控制技术研究,并热衷于机器人前沿技术的分享,是国内最早的ROS技术传播者之一。出有机器人方面译著4本、专著1本。其中译介的《嵌入式机器人学》被新闻出版总署评为2012年年度优秀科技图书,《机器人与未来》 被《第一财经》节目评为2015年年度特别推荐图书。






张瑞雷,机器人学博士,在高校从事多机器人系统仿真和编队控制研究与教学工作,易科机器人实验室成员。热衷于机器人前沿技术的传播,目前正参与“星火计划”ROS公开课活动,希望能为开源机器人社区贡献更多力量。


无论是业余爱好者还是专业的机器人开发人员,在开始进行机器人系统及程序设计时,首先要面对的问题都是最基本的如何驱动机器人的轮子。ROS通过软件代码复用集成了众多已经开发完成的功能组件。
本书专门帮助ROS初学者通过ROS系统完成小型机器人系统的开发和编程工作。书中提供了各种实际的示例代码供读者学习和理解ROS的软件框架。你可以在仿真环境中自行构建机器人相应的功能程序。本书第2版在第1版的基础上增加了与ROS Hydro一起工作,如何创建、可视化和处理不同传感器的点云信息,如何控制和利用多关节机械臂等内容,并提供简单易懂的实用教程编写自己的机器人。

图书前言

本书第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命令行、GNU/Linux工具的基本知识和一些C/C++编程技巧。
目标读者
本书的目标读者包括所有机器人开发人员,可以是初学者也可以是专业人员。它涵盖了整个机器人系统的各个方面,展示了ROS系统如何帮助完成使机器人真正自主化的任务。对于听说过却从未使用过ROS的机器人专业学生或科研人员来说,本书将是非常有益的。ROS初学者能从本书中学习ROS软件框架的很多先进理念和工具。不仅如此,经常使用ROS的用户也可能从某些章节中学习到一些新东西。当然,只有前3章是纯粹为初学者准备的,所以那些已经使用过ROS的人可以跳过这部分直接阅读后面的章节。
源代码和彩色图片下载
可以从你在http://www.packtpub.com中的账户下载所有已购买的Packt Publishing出版的书籍的示例代码文件。如果你在其他地方购买了这本书,可以访问http://www.packtpub.com/support并注册,文件会通过电子邮件直接发送给你。还可以从https://github.com/AaronMR/ROS_Book_Hydro下载源代码文件。
我们同时提供了本书所有彩色的屏幕截图、对话框的PDF文件,这些彩色图片能够更好地帮助你理解输出的变化。可以从http://www.packtpub.com/sites/default/files/downloads/
7580OS_ColorImages.pdf下载这个文件。

上架指导

自动化\嵌入式

封底文字

机器人操作系统一站式指南

  本书从入门级内容开始,包括传感器集成、建模、仿真、计算机视觉、导航算法等。然后,探索主题、消息和节点等概念。接下来,介绍机器人如何使用高清摄像头观测或使用距离传感器导航避障。
  第2版使用ROS Hydro,不仅介绍如何创建、可视化和处理来自不同传感器的点云信息,还展示如何使用MoveIt! 控制和规划包含多个关节的机械臂的运动。
  为了充分利用这本书,读者应有C++编程基础、GNU/Linux系统知识和计算机科学的一般技能。不需要ROS经验背景,这本书可以带你从零开始。

通过阅读本书,你将学到:
· 安装一个完整的ROS Hydro系统
· ROS功能包和综合功能包的创建及其实时使用和调试
· ROS节点的编译、处理和调试
· 设计三维机器人模型并使用Gazebo在虚拟环境中进行仿真
· 在机器人上生成和调整导航功能包集
· 将不同的传感器如激光测距仪、Arduino和Kinect集成到机器人上
· 可视化和处理来自不同传感器的点云信息
· 使用MoveIt!控制和规划包含多个关节的机械臂的运动

作者简介

(西班牙)恩里克·费尔南德斯(Enrique Fern·ndez)     路易斯·桑切斯·克雷斯波(Luis S·nchez Crespo)     阿尼尔·马哈塔尼(Anil Mahtani)     亚伦·马丁内斯(Aaron Martinez) 著:暂无简介

译者简介

刘锦涛 张瑞雷 等译:暂无简介

译者序

机器人对于现代人类而言并不陌生和神秘,它在百年前的科幻小说中首次出现,而现在已经逐步进入人类生活的方方面面,机器时代即将到来!
智能机器人的程序究竟是如何设计出来的呢?
智能机器人需要具备强健的“肢”、明亮的“眼”、灵巧的“嘴”以及聪慧的“脑”,这一切的实现实际上涉及诸多技术领域,需要艰辛的设计、开发与调试过程,必然会遇到棘手的问题和挑战。而一个小型的开发团队难以完成机器人各个方面的开发工作,因而需要一套合作开发的框架与模式,以期能够快速集成已有的功能,省却重复劳动的时间。早在2008年,我们在与澳大利亚的布劳恩教授交流时,就得知他们开发了一套商业化的“RoBIOS”机器人操作系统,这套系统将一些常用的机器人底层功能进行了封装,可极大简化高级功能的开发。据他们介绍,这是最早的“机器人操作系统”,但由于产品不开源且价格昂贵,我们最终未能一试为快。后来在网络中不断地寻觅,最终发现了ROS,由于其开源、开放的特性,一下子就引起了我们极大的兴趣。
我们于2010年建立了易科机器人QQ群进行讨论,从而结识了国内最早期的一些机器人研究者和ROS探索者。由于早期相关资料非常匮乏,我们于2012年创建了博客(blog.exbot.net)以进行技术分享与交流。易科机器人开发组成员在此期间贡献了大量的教程和开发笔记,在此向他们的无私奉献表示感谢与敬意!近年来,随着机器人的迅猛发展,ROS得到了更为广泛的使用,国内也出现了一些优秀的项目,包括“星火计划”ROS公开课(blog.exbot.net/spark)、“HandsFree”ROS机器人开发平台(wiki.exbot.net)等。
出版界近年来也是硕果累累,本书第1版便是国内第一本ROS译著,由于实用性强,已经多次重印。第2版针对近年来ROS的最新发展,对书中部分内容进行了修订,并增加了第6章和第10章。本书涵盖了使用ROS进行机器人编程的最新知识与方法,通过ROS编程实践能够帮助你理解机器人系统设计与应用的现实问题。在机器人开发实践中,我们认为除了成功的喜悦外,还看到机器人学目前所处的发展阶段:核心技术尚未成熟、诸多功能尚不完备、bug多……但我们相信,有了ROS的开源精神和完备的合作开发框架,很多问题会迎刃而解。唯一迫切需要的就是期待你加入机器的开发和研究中来,一起推动开源机器人技术的发展与普及!
本书第2版与第1版的重叠部分主要沿用了刘品杰在第1版中的翻译,个别词汇根据习惯进行了修改。具体来说,第1至5章和第10章由张瑞雷翻译,第6章由张波翻译,第7至9章由刘锦涛翻译,吴中红和李静老师对全书进行了审阅,最后由刘锦涛对全书进行了修改润色和统稿整理。感谢杨维保、马文科等人对本书提出的修改建议!
我们将会在books.exbot.net发布本书的其他相关资源。

推荐序

Foreword  推荐序一
21世纪是什么样的世纪?是物联网的世纪?是VR的世纪?也许吧,但我更相信21世纪是机器人的世纪。
目前,我国已经步入经济转型的拐点区间,人口红利越来越难以支撑中国经济的发展和进步。在很多行业都已经开始了机器换人、生产工艺升级换代的步伐。工信部、发改委、财政部日前联合印发了《机器人产业发展规划(2016—2020年)》。这份规划指出:“到2020年,我国工业机器人年产量达到10万台,其中六轴及以上机器人达到5万台以上;服务机器人年销售收入超过300亿元,在助老、助残、医疗康复等领域实现小批量生产及应用;要培育3家以上的龙头产业,打造5个以上机器人配套产业集群;工业机器人平均无故障时间要达到8万小时;智能机器人实现创新应用。”从这个规划中可以看出,机器人未来的政策空间和市场发展空间都是非常巨大的。一方面,发展工业机器人在满足我国制造业的转型升级、提质增效,实现“中国制造2025”等方面具有极为重大的意义,是全面推进实施制造强国战略的重要一步。另一方面,从服务机器人来说,也要满足未来市场需求的增长。首先,这包括了基本生活需求,比如说养老、助老、助残等。其次是国家安全需求,比如救灾、抢险、海底勘探、航天、国防。最后还有家庭服务和娱乐机器人,比如娱乐、儿童教育、智能家居应用等。同时,科技部目前也在进行“十三五”科技创新规划战略研究,根据已经披露的内容,其中对机器人(尤其是服务机器人)非常重视,并会在近期遴选并启动一批相应的重大科技项目。
也许看完上面这些,你会觉得这更像是新闻描述,机器人产业真的这么火爆吗?当然。即使刨除工业机器人,只谈其他的智能机器人或服务机器人,这也是一个相当庞大的产业。例如,目前世界上最大的服务机器人公司应该还是美国的直觉外科公司。他们生产的达芬奇机器人系统在全世界已经应用了3000余套,其完成的手术超过千万例。由机器人完成的各类微创手术让无数患者获得新生。这家公司的市值超过300亿美元。中国目前估值最高的机器人公司是大疆创新,其年营收额已经超过10亿美元,估值超过百亿美元。要知道,10年前这家公司刚刚在深圳创立时,还比较弱小。因此,相信机器人产业在未来的前景一定非常广阔。
但是我们也注意到在军用国防、救灾救援、养老、家庭服务、儿童教育等领域,至今没有一个世界级的机器人公司存在。有很多爱好者都希望自己能够制造一个智能轮椅、一个智能儿童教育机器人或是一个家庭服务机器人,也许这样的机器人会像乔布斯和沃兹尼亚克在车库里做出的苹果电脑一样改变世界。但我们看到的很多人,自己只是机械工程师、电气工程师或者自动控制工程师,开发一个控制机器人的软件系统是遥不可及的事情;又或者自己虽然是软件工程师,但是并不知道如何控制和驱动底层设备。这要怎么办呢?没关系, ROS机器人操作系统可以帮忙。
ROS最初是作为科研辅助工具由斯坦福大学开发的。类似的机器人操作系统在世界各国还有很多。有些操作系统面向实时机器人控制,有些操作系统面向机器人仿真,有些操作系统面向用户交互。这些操作系统大部分都相对封闭,各成体系,没有在学术界和产业界造成影响。而由于ROS极大的开放性和包容性,它能够兼容其他机器人开发工具、仿真工具和操作系统,使之融为一体。这使得ROS不断发展壮大,并成为应用和影响力最广泛的机器人软件平台。
随着ROS 2.0的开发,ROS能够兼容除Linux之外更多的操作系统,如Windows、Android;能够支持从工业计算机到Adruino开发板等各类型的硬件;能够采集RGB-D摄像头、普通摄像头和各种类型的传感器数据;能够驱动类人形机器人、四轴飞行器等各类型的机器人。而且新版本的ROS在采用SOA架构的基础上,集成了MVC框架,更加有利于机器人人机交互界面的开发与机器人控制。
学习ROS,本身就是掌握一把通往未来的钥匙。自从本人2012年翻译本书第1版之后,关于ROS的书籍也渐渐多了起来。但和其他书籍相比,本书经过了时间的检验,第2版从内容到示例对学习ROS都更有帮助。希望大家都能够成为机器人软件设计方面的专家。希望在中国的机器人设计领域能够出现新的领军人物,将中国的机器人带入世界一流行列。

刘品杰,本书第1版译者


Foreword  推荐序二
记得第一次接触ROS的时候我还在学校做研究,当时跟一些海外学者交流时得知有这个专为机器人设计的操作系统。我很是兴奋,一心想把ROS用在我们最新研发的机器人上,于是就马上动手玩起来。由于当时ROS尚在起步阶段,说明文档不太全面,同时社区支持又很少,不知道经过多少折腾才好不容易把它运行起来。体验后发现它的设计框架确实很适合作为机器人敏捷开发工具——算法及控制等代码很容易被复用,避免了很多重复劳动。但奈何当时的功能包不多,而且系统对运算资源要求高,最终没有用在当时的机器人项目上。
由于其开源性以及对商用友好的版权协议,ROS很快得到越来越多的关注及支持。现在ROS已有飞快的发展,越来越多机器人相关的软件工具亦加入ROS的行列。国外一些商用的机器人也开始支持ROS系统,甚至基于ROS进行开发。相信这个趋势会一直持续下去并会蔓延到世界各地。而我亦深深体会到国内对ROS的关注在近年有显著的上升。
从前在国内学习ROS可谓孤军作战,身边没几个人听说过ROS,而且只能从国外网站学习ROS的相关知识,完全没有中文的资料可以查看。幸好国内有不少有心人积极推动ROS的发展,不遗余力地对国外ROS相关的文章进行翻译,并且发表一些原创的教学文章,丰富ROS的中文资源,这使学习ROS变得更方便。
我与本书译者通过共同举办ROS国内推广课程而结缘。他对推动ROS在国内的发展起到了举足轻重的作用,并运营着国内著名的ROS交流社区。本书亦是他贡献ROS中文社群的作品之一。而本书的作者同样是ROS界的权威,有丰富的ROS实战经验,使用ROS进行过多种机器人的开发。书中从ROS的架构概念到常用的调试工具、功能包及传感器的信息处理都有所涉及,是ROS入门必看书之一。希望本书能让你快速进入ROS的世界,探索ROS的精彩。

林天麟,博士,NXROBO创始人& CEO

图书目录

推荐序一
推荐序二
译者序
前言
作者简介
审校者简介
第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.1 ROS文件系统导览 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.2 ROS节点启动时调用gdb调试器 58
3.1.3 ROS节点启动时调用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.1 joy_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.2 Xsens如何在ROS中发送数据 116
4.7.3 创建使用Xsens的示例 116
4.8 使用10自由度低成本惯性测量模组IMU 118
4.8.1 下载加速度传感器库 119
4.8.2 Arduino Nano和10自由度传感器编程 120
4.8.3 创建ROS节点以使用10自由度传感器数据 121
4.9 GPS的使用 123
4.9.1 GPS如何发送信息 125
4.9.2 创建一个使用GPS的工程实例 126
4.10 本章小结 127
第5章 计算机视觉 128
5.1 连接和运行摄像头 129
5.1.1 FireWire IEEE1394摄像头 129
5.1.2 USB摄像头 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
6.1.1 不同的点云类型 164
6.1.2 PCL中的算法 164
6.1.3 ROS的PCL接口 165
6.2 我的第一个PCL程序 166
6.2.1 创建点云 167
6.2.2 加载和保存点云到硬盘 170
6.2.3 可视化点云 173
6.2.4 滤波和缩减采样 176
6.2.5 配准与匹配 181
6.2.6 点云分区 184
6.3 分割 187
6.4 本章小结 191
第7章 3D建模与仿真 192
7.1 在ROS中自定义机器人的3D模型 192
7.2 创建第一个URDF文件 192
7.2.1 解释文件格式 194
7.2.2 在rviz里查看3D模型 195
7.2.3 加载网格到机器人模型 197
7.2.4 使机器人模型运动 198
7.2.5 物理属性和碰撞属性 198
7.3 xacro—— 一个更好的机器人建模方法 199
7.3.1 使用常量 199
7.3.2 使用数学方法 200
7.3.3 使用宏 200
7.3.4 使用代码移动机器人 201
7.3.5 使用SketchUp进行3D建模 204
7.4 在ROS中仿真 205
7.4.1 在Gazebo中使用URDF 3D模型 206
7.4.2 在Gazebo中添加传感器 208
7.4.3 在Gazebo中加载和使用地图 211
7.4.4 在Gazebo中移动机器人 213
7.5 本章小结 215
第8章 导航功能包集入门 216
8.1 ROS导航功能包集 216
8.2 创建变换 217
8.2.1 创建广播机构 218
8.2.2 创建侦听器 218
8.2.3 查看坐标变换树 221
8.3 发布传感器信息 221
8.4 发布里程数据信息 224
8.4.1 Gazebo如何获取里程数据 225
8.4.2 创建自定义里程数据 228
8.5 创建基础控制器 232
8.5.1 使用Gazebo创建里程数据 233
8.5.2 创建自己的基础控制器 235
8.6 使用ROS创建地图 237
8.6.1 使用map_server保存地图 238
8.6.2 使用map_server加载地图 239
8.7 本章小结 240
第9章 导航功能包集进阶 241
9.1 创建功能包 241
9.2 创建机器人配置 241
9.3 配置全局和局部代价地图 243
9.3.1 基本参数的配置 244
9.3.2 全局代价地图的配置 245
9.3.3 局部代价地图的配置 245
9.3.4 基本局部规划器配置 246
9.4 为导航功能包集创建启动文件 247
9.5 为导航功能包集设置rviz 248
9.5.1 2D位姿估计 248
9.5.2 2D导航目标 249
9.5.3 静态地图 249
9.5.4 粒子云 251
9.5.5 机器人占地空间 251
9.5.6 局部代价地图 252
9.5.7 全局代价地图 252
9.5.8 全局规划 254
9.5.9 局部规划 254
9.5.10 规划器规划 254
9.5.11 当前目标 255
9.6 自适应蒙特卡罗定位 256
9.7 使用rqt_reconfigure修改参数 258
9.8 机器人避障 259
9.9 发送目标 260
9.10 本章小结 262
第10章 使用MoveIt! 264
10.1 MoveIt!体系结构 264
10.1.1 运动规划 265
10.1.2 规划场景 267
10.1.3 运动学 268
10.1.4 碰撞检测 268
10.2 在MoveIt!中集成一个机械臂 268
10.2.1 工具箱里有什么 268
10.2.2 使用设置助手生成一个MoveIt!包 269
10.2.3 集成到rviz 273
10.2.4 集成到Gazebo或实际机器人的手臂 276
10.3 简单的运动规划 277
10.3.1 规划单个目标 278
10.3.2 规划一个随机目标 278
10.3.3 规划预定义的群组状态 280
10.3.4 显示目标的运动 280
10.4 考虑碰撞的运动规划 280
10.4.1 将对象添加到规划场景中 281
10.4.2 从规划的场景中删除对象 282
10.4.3 应用点云进行运动规划 283
10.5 抓取和放置任务 284
10.5.1 规划的场景 285
10.5.2 感知 288
10.5.3 抓取 288
10.5.4 抓取操作 290
10.5.5 放置操作 292
10.5.6 演示模式 295
10.5.7 在Gazebo中仿真 295
10.6 本章小结 296

教学资源推荐
作者: [法]阿尔伯特·比费特(Albert Bifet)[西班牙]理查德·戈华达 (Richard Gavaldà)[新西兰] 杰弗里·福尔摩斯(Geoffrey Holmes)[新西兰]伯恩哈德·普法林格(Bernhard Pfahringer) 著
作者: [美]理查德·F. 里昂(Richard F. Lyon) 著
作者: [美]黄铠(Kai Hwang)著
参考读物推荐
作者: [美]赫伯特·L.罗埃布莱特(Herbert L. Roitblat)著
作者: [英]马克·特雷维尔(Mark Treveil),[美]the Dataiku Team 著
作者: [美]沙姆沙德·安萨里(Shamshad Ansari) 著