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

ROS机器人高效编程(原书第3版)
作者 : [西班牙]阿尼尔?马哈塔尼(Anil Mahtani)路易斯?桑切斯(Luis sanchez)恩里克?费尔南德斯(Enrique Fern?ndez)亚伦?马丁内斯(Aaron Mart?nez)著
译者 : 张瑞雷 刘锦涛 译
出版日期 : 2017-08-22
ISBN : 978-7-111-57846-8
定价 : 69.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 335
开本 : 16
原书名 : Effective Robotics Programming with ROS,Third Edition
原出版社: Packt Publishing Ltd.
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书包含了大量示例,帮助你开发机器人程序,并为你提供使用开源ROS库和工具的完整解决方案。本书主要内容包括:ROS的概念、命令行工具、可视化GUI以及如何调试ROS,如何将机器人传感器和执行器连接到ROS,如何从摄像头和3D传感器获取数据并分析数据,如何在机器人/传感器和环境仿真中使用Gazebo,如何设计机器人,如何使用OpenCV3.0为机器人添加视觉功能,如何使用新版本的PCL向机器人添加3D感知功能。本书适合各个阶层的机器人开发人员和机器人爱好者阅读。

图书特色

ROS机器人高效编程(原书第3版)Effective Robotics Programming with ROS,Third Edition
[西班牙] 阿尼尔·马哈塔尼(Anil Mahtani)路易斯·桑切斯(Luis Sánchez)恩里克·费尔南德斯(Enrique Fernández)亚伦·马丁内斯(Aaron Martinez)著
张瑞雷  刘锦涛  译
本书包含实际动手操作的示例,帮助你开发机器人程序,并为你提供使用开源ROS库和工具的完整解决方案。本书还介绍如何使用虚拟机和Docker容器来简化Ubuntu和ROS框架的安装,因此你可以在隔离和可控的环境中开始工作,而无须更改常规的计算机设置。
本书首先介绍ROS的安装和基本概念,然后讲述ROS支持的更复杂的模块,如传感器和执行器集成模块(驱动程序)、导航和地图构建模块(创建自主移动机器人)、操作模块、计算机视觉模块、3D感知模块等。在本书的最后,你将能够使用ROS Kinetic的全部功能来设计和开发一个满足你所有需求的功能齐全的机器人。

本书内容:
.ROS的概念、命令行工具、可视化GUI以及如何调试ROS
.如何将机器人传感器和执行器连接到ROS
.如何从摄像头和3D传感器获取数据并分析数据
.如何在机器人/传感器和环境仿真中使用Gazebo
.如何设计机器人和如何使其构建环境地图、自主导航,以及在环境中使用MoveIt!操作物体
.如何使用OpenCV 3.0为机器人添加视觉功能
.如何使用最新版本的PCL向机器人添加3D感知功能

译者简介
张瑞雷
张瑞雷,机器人学博士,在高校从事多机器人系统仿真和编队控制研究与教学工作,易科机器人实验室成员。热衷于机器人前沿技术的传播,目前正参与“星火计划”ROS公开课活动,希望能为开源机器人社区贡献更多力量。
刘锦涛
博士,易科机器人实验室(exbot.net)创始人,致力于机器人导航与控制技术研究,并热衷于机器人前沿技术的分享,是国内最早的ROS技术传播者之一。出有机器人方面译著4本、专著1本。他翻译的《嵌入式机器人学》被新闻出版总署评为2012年年度优秀科技图书,《机器人与未来》 被《第一财经》节目评为2015年年度特别推荐图书。

延伸阅读
ROS机器人程序设计
ISBN:978-7-111-47396-1
定价:59.00元

机器人编程实战
ISBN:978-7-111-57156-8
定价:79.00元

图书前言

本书第3版全面地介绍了ROS和各种工具。ROS是一个先进的机器人操作系统框架,目前已有数百个研究团体和公司将其应用在机器人行业中。更重要的是,对于机器人技术的非专业人士和学生来说,它也相对容易上手。在本书中,你将了解如何安装ROS,如何使用ROS的基本工具和框架中不同的功能。
在阅读本书的过程中无须使用任何特殊的设备。书中每一章都附带了一系列的源代码示例和教程,你可以在自己的计算机上运行。这是你唯一需要做的事情。
当然,我们还会告诉你如何使用硬件,这样可以将你的算法应用到现实环境中。我们在选择设备时特意选择一些业余用户购买得起的设备,同时涵盖了在机器人研究中最典型的传感器和执行器。
最后,展示ROS具有使整个机器人在实际或虚拟环境中工作的能力。你将学习如何创建自己的机器人并通过Gazebo仿真环境集成它。此外,如果使用Gazebo仿真环境,你将能够在虚拟环境中运行一切。本书将带你从不同方面探索如何创建机器人,例如使用计算机视觉或点云分析传感器感知世界,使用强大的导航功能包集在环境中实现导航,甚至能够用MoveIt!包控制机械臂与周围环境交互。读完本书后,你会发现已经可以使用ROS机器人进行工作了,并理解其背后的原理,我们衷心希望你能全面了解ROS在开发机器人系统时所提供的无限可能性。
主要内容
第1章介绍安装ROS最简单的方法,以及如何在不同平台上安装ROS,本书使用的版本是ROS Kinetic。这一章还会说明如何从Debian包安装或从源代码进行编译安装,以及在虚拟机、Docker和ARM CPU中安装。
第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节点中使用点云库(Point Cloud Library,PCL)。该章从基本功能入手,如读或写PCL数据片段以及发布或订阅这些消息所必需的转换。然后,将在不同节点间创建一个管道来处理3D数据,以及使用PCL进行缩减采样、过滤和搜索特征点。
预备知识
我们写作本书的目的是让每位读者都可以完成本书的学习并运行示例代码。基本上,你只需要在计算机上安装一个Linux发行版。虽然每个Linux发行版应该都能使用,但还是建议你使用Ubuntu 16.04 LTS。这样你可以根据第1章的内容安装ROS Kinetic。
对于硬件要求,一般来说,任何台式计算机或笔记本电脑都满足。但是,最好使用独立显卡来运行Gazebo仿真环境。此外,最好有足够的外围接口,因为这样你可以连接几个传感器和执行器,包括摄像头和Arduino开发板。
你还需要Git(git-core Debian包),以便从本书提供的源代码中复制软件库。同样,你需要具备Bash命令行、GNU/Linux工具的基本知识和一些C/C++编程技巧。
目标读者
本书的目标读者包括所有机器人开发人员,可以是初学者也可以是专业人员。它涵盖了整个机器人系统的各个方面,展示了ROS如何帮助开发人员完成使机器人真正自主化的任务。对于听说过却从未使用过ROS的机器人专业学生或科研人员来说,本书将是非常有益的。ROS初学者能从本书中学习ROS软件框架的很多先进理念和工具。不仅如此,经常使用ROS的用户也可能从某些章节中学习到一些新东西。当然,只有前3章是纯粹为初学者准备的,所以那些已经使用过ROS的人可以跳过这三章直接阅读后面的章节。
源代码和彩色图片下载
本书源代码可以从华章官网www.hzbook.com下载。

上架指导

人工智能/机器人

封底文字

本书包含了实际动手操作的示例,帮助你开发机器人程序,并为你提供使用开源ROS库和工具的完整解决方案。本书还介绍了如何使用虚拟机和Docker容器来简化Ubuntu和ROS框架的安装,因此你可以在隔离和可控的环境中开始工作,而无须更改常规的计算机设置。
本书首先介绍ROS的安装和基本概念,然后讲述ROS支持的更复杂的模块,如传感器和执行器集成模块(驱动程序)、导航和地图构建模块(创建自主移动机器人)、操作模块、计算机视觉模块、3D感知模块等。在本书的最后,你将能够使用ROS Kinetic的全部功能来设计和开发一个满足你所有需求的功能齐全的机器人。
本书内容:
·ROS的概念、命令行工具、可视化GUI以及如何调试ROS
·如何将机器人传感器和执行器连接到ROS
·如何从摄像头和3D传感器获取数据并分析数据
·如何在机器人/传感器和环境仿真中使用Gazebo
·如何设计机器人和如何使其构建环境地图、自主导航,以及在环境中使用MoveIt!操作物体
·如何使用OpenCV 3.0为机器人添加视觉功能
·如何使用最新版本的PCL向机器人添加3D感知功能

作者简介

[西班牙]阿尼尔?马哈塔尼(Anil Mahtani)路易斯?桑切斯(Luis sanchez)恩里克?费尔南德斯(Enrique Fern?ndez)亚伦?马丁内斯(Aaron Mart?nez)著:暂无相关简介

译者简介

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

译者序

机器人的时代已经到来!机器人正在变得越来越灵活、智能。机器人已经从传统的工业应用开始加速进入千家万户,正从方方面面改变着人们的工作和生活,例如,扫地机器人能在清扫过程中自主绘制室内地图并智能规划路径,京东的包裹小车已经开始在校园中穿梭并投身到快递服务的行业中,这样的智能机器人已经越来越多。
那么智能机器人的程序究竟是如何设计出来的呢?
智能机器人需要具备强健的“肢”、明亮的“眼”、灵巧的“嘴”以及聪慧的“脑”,这一切的实现实际上涉及诸多技术领域,需要艰辛的设计、开发与调试过程,必然会遇到棘手的问题和挑战。而一个小型的开发团队难以完成机器人各个方面的开发工作,因而需要一套合作开发的框架与模式,这样就能够快速集成已有的功能,省却重复劳动的时间。早在2008年,我们在与澳大利亚的布劳恩教授交流时,就得知他们开发了一套商业化的“RoBIOS”机器人操作系统,这套系统对一些常用的机器人底层功能进行了封装,可极大简化高级功能的开发。据他们介绍,这是最早的“机器人操作系统”,但由于产品不开源且价格昂贵,我们最终未能一试为快。后来在网络中不断地寻觅,最终发现了ROS,由于其开源、开放的特性,一下子就引起了我们极大的兴趣。
我们于2010年建立了易科机器人QQ群进行讨论,从而结识了国内最早期的一些机器人研究者和ROS探索者。由于早期相关资料非常匮乏,我们于2012年创建了博客(blog.exbot.net)用于进行技术分享与交流,我们的队伍也在不断发展壮大。易科机器人开发组成员在此期间贡献了大量的教程和开发笔记,在此向他们的无私奉献表示感谢与敬意!近年来,随着机器人的迅猛发展,ROS得到了更为广泛的使用,国内也出现了一些优秀的项目,包括“星火计划”ROS公开课(blog.exbot.net/spark)、“HandsFree”ROS机器人开发平台(wiki.exbot.net)等。
出版界近年来也是硕果累累,本书第1版便是国内第一本ROS译著,由于实用性强,已经多次重印。第2版补充了点云和MoveIt!方面的内容。第3版则对ROS版本进行了升级,采用目前ROS最新长期支持的版本Kinetic进行介绍;并针对ROS的最新进展,继续完善,增加了Docker和设计开发真实机器人的示例;同时对章节结构进行了调整。第3版涵盖了使用ROS进行机器人编程的最新知识与方法,通过ROS编程实践能够帮助你理解机器人系统设计与应用的现实问题。在机器人开发实践中,我们认为除了成功的喜悦外,还应看到机器人学目前所处的发展阶段:核心技术尚未成熟、诸多功能尚不完备、bug多……但我们相信,有了ROS的开源精神和日益完善的合作开发框架,很多问题会逐步迎刃而解。唯一迫切需要的就是,期待你加入到机器人的设计、开发和研究中来,一起推动开源机器人技术的发展与普及。
本书第3版与第2版的重叠部分主要沿用了第2版中的翻译,个别词汇根据习惯进行了修改。具体来说,张瑞雷对书中内容进行梳理补充,刘锦涛对全书进行了修改润色和统稿整理。
我们将会在books.exbot.net发布本书的其他相关资源。

推荐序

Foreword  推荐序一
2006年,在好奇心的驱使下,一帮人走在一起,组建了一个机器人研究实验室Willow Garage。他们利用开源软件吸引他人,使人们加入一个创造个人机器人的宏伟计划中。机器人操作系统(ROS)正是这一宏伟计划的一部分。
ROS打开了一个潘多拉魔盒,可是很多人还没有做好准备,还完全没有意识到是怎么回事,就不得不与ROS牵连在一起,卷入到一个洪流中。刘锦涛博士和张瑞雷博士将本书翻译成中文,帮助大家突破语言障碍,从而在洪流中更好地奋勇前进。
刘锦涛博士和张瑞雷博士都是易科(Exbot)机器人实验室的成员,是机器人技术普及的积极推动者。从2010开始,易科机器人实验室利用互联网、社交网络、博客,积极开展机器人技术和ROS的在线教育、互动问答,使上万人受益。
2013年,当我回到国内开始我的职业生涯时,第一件事就是寻找机器人相关的研究者和爱好者,也是那时,通过易科机器人实验室建立的QQ群,结识了后来一帮志同道合的老师、学生和朋友。
2015年,我们实验室组织了全国第一届机器人操作系统暑期学校,希望有更多的人通过线下的互动促进交流,激发合作的热情,碰撞出创业的激情。我们的活动信息也通过易科机器人实验室建立的社交网络传递到全国的各个角落。
在本书再版之际,我想,对所有热爱科技,热爱机器人技术,热爱这块我们所赖以生存的土地的人来说,无论未来多么不可预测,只要像刘锦涛博士和张瑞雷博士这样,不懈地努力,大家团结在一起,都会成为洪流中的勇士。

张新宇博士
华东师范大学智能机器人运动与视觉实验室负责人
机器人操作系统(ROS)暑期学校创办人




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

林天麟博士
NXROBO创始人&CEO

图书目录

推荐序一
推荐序二
译者序
前言
作者简介
审校者简介
第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.1.1 工作空间 21
2.1.2 功能包 22
2.1.3 元功能包 23
2.1.4 消息 24
2.1.5 服务 25
2.2 理解ROS计算图级 25
2.2.1 节点与nodelet 27
2.2.2 主题 28
2.2.3 服务 29
2.2.4 消息 29
2.2.5 消息记录包 30
2.2.6 节点管理器 30
2.2.7 参数服务器 30
2.3 理解ROS开源社区级 31
2.4 ROS试用练习 32
2.4.1 ROS文件系统导览 32
2.4.2 创建工作空间 32
2.4.3 创建ROS功能包和元功能包 33
2.4.4 编译ROS功能包 34
2.4.5 使用ROS节点 35
2.4.6 如何使用主题与节点交互 37
2.4.7 如何使用服务 39
2.4.8 使用参数服务器 41
2.4.9 创建节点 42
2.4.10 编译节点 44
2.4.11 创建msg和srv文件 45
2.4.12 使用新建的srv和msg文件 48
2.4.13 launch文件 51
2.4.14 动态参数 53
2.5 本章小结 57
第3章 可视化和调试工具 58
3.1 调试ROS节点 60
3.1.1 使用gdb调试器调试ROS节点 60
3.1.2 在ROS节点启动时调用gdb调试器 61
3.1.3 在ROS节点启动时调用valgrind分析节点 62
3.1.4 设置ROS节点core文件转储 62
3.2 日志消息 62
3.2.1 输出日志消息 62
3.2.2 设置调试消息级别 63
3.2.3 为特定节点配置调试消息级别 64
3.2.4 消息命名 65
3.2.5 按条件显示消息与过滤消息 65
3.2.6 显示消息的方式——单次、可调以及其他组合 66
3.2.7 使用rqt_console和rqt_logger_level在运行时修改调试级别 66
3.3 检测系统状态 69
3.4 设置动态参数 73
3.5 当出现异常状况时使用roswtf 75
3.6 可视化节点诊断 77
3.7 绘制标量数据图 78
3.8 图像可视化 81
3.9 3D可视化 83
3.9.1 使用rqt_rviz在3D世界中实现数据可视化 83
3.9.2 主题与坐标系的关系 86
3.9.3 可视化坐标变换 87
3.10 保存与回放数据 88
3.10.1 什么是消息记录包文件 89
3.10.2 使用rosbag在消息记录包文件中记录数据 89
3.10.3 回放消息记录包文件 90
3.10.4 查看消息记录包文件的主题和消息 91
3.11 应用rqt与rqt_gui插件 93
3.12 本章小结 93
第4章 3D建模与仿真 95
4.1 在ROS中自定义机器人的3D模型 95
4.2 创建第一个URDF文件 95
4.2.1 解释文件格式 97
4.2.2 在rviz里查看3D模型 98
4.2.3 加载网格到机器人模型中 100
4.2.4 使机器人模型运动 100
4.2.5 物理和碰撞属性 101
4.3 xacro——一种更好的机器人建模方法 102
4.3.1 使用常量 102
4.3.2 使用数学方法 103
4.3.3 使用宏 103
4.3.4 使用代码移动机器人 103
4.3.5 使用SketchUp进行3D建模 107
4.4 在ROS中仿真 109
4.4.1 在Gazebo中使用URDF 3D模型 109
4.4.2 在Gazebo中添加传感器 112
4.4.3 在Gazebo中加载和使用地图 115
4.4.4 在Gazebo中移动机器人 116
4.5 本章小结 118
第5章 导航功能包集入门 119
5.1 ROS导航功能包集 119
5.2 创建变换 120
5.2.1 创建广播器 121
5.2.2 创建侦听器 121
5.2.3 查看坐标变换树 124
5.3 发布传感器信息 124
5.4 发布里程数据信息 127
5.4.1 Gazebo如何获取里程数据 128
5.4.2 使用Gazebo创建里程数据 131
5.4.3 创建自定义里程数据 132
5.5 创建基础控制器 135
5.6 使用ROS创建地图 139
5.6.1 使用map_server保存地图 141
5.6.2 使用map_server加载地图 141
5.7 本章小结 142
第6章 导航功能包集进阶 144
6.1 创建功能包 144
6.2 创建机器人配置 144
6.3 配置全局和局部代价地图 147
6.3.1 基本参数的配置 147
6.3.2 全局代价地图的配置 148
6.3.3 局部代价地图的配置 149
6.3.4 底盘局部规划器配置 149
6.4 为导航功能包集创建启动文件 150
6.5 为导航功能包集设置rviz 151
6.5.1 2D位姿估计 152
6.5.2 2D导航目标 152
6.5.3 静态地图 154
6.5.4 粒子云 154
6.5.5 机器人占地空间 155
6.5.6 局部代价地图 156
6.5.7 全局代价地图 156
6.5.8 全局规划 157
6.5.9 局部规划 158
6.5.10 规划器规划 158
6.5.11 当前目标 159
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.1.1 运动规划 169
7.1.2 规划场景 169
7.1.3 世界几何结构显示器 170
7.1.4 运动学 170
7.1.5 碰撞检测 170
7.2 在MoveIt!中集成一个机械臂 171
7.2.1 工具箱里有什么 171
7.2.2 使用设置助手生成一个MoveIt!功能包 172
7.2.3 集成到RViz中 176
7.2.4 集成到Gazebo或实际机械臂中 179
7.3 简单的运动规划 180
7.3.1 规划单个目标 181
7.3.2 规划一个随机目标 181
7.3.3 规划预定义的群组状态 183
7.3.4 显示目标的运动 183
7.4 考虑碰撞的运动规划 184
7.4.1 将对象添加到规划场景中 184
7.4.2 从规划的场景中删除对象 185
7.4.3 应用点云进行运动规划 186
7.5 抓取和放置任务 187
7.5.1 规划的场景 188
7.5.2 要抓取的目标对象 189
7.5.3 支撑面 189
7.5.4 感知 191
7.5.5 抓取 191
7.5.6 抓取操作 193
7.5.7 放置操作 195
7.5.8 演示模式 197
7.5.9 在Gazebo中仿真 198
7.6 本章小结 199
第8章 在ROS下使用传感器和执行器 200
8.1 使用游戏杆或游戏手柄 200
8.1.1 joy_node如何发送游戏杆动作消息 201
8.1.2 使用游戏杆数据移动机器人模型 202
8.2 使用Arduino添加更多的传感器和执行器 206
8.2.1 创建使用Arduino的示例程序 207
8.2.2 由ROS和Arduino控制的机器人平台 210
8.3 使用9自由度低成本IMU 217
8.3.1 安装Razor IMU ROS库 219
8.3.2 Razor如何在ROS中发送数据 221
8.3.3 创建一个ROS节点以使用机器人中的9DoF传感器数据 222
8.3.4 使用机器人定位来融合传感器数据 223
8.4 使用IMU——Xsens MTi 225
8.5 GPS的使用 226
8.5.1 GPS如何发送信息 228
8.5.2 创建一个使用GPS的工程示例 229
8.6 使用激光测距仪——Hokuyo URG-04lx 230
8.6.1 了解激光如何在ROS中发送数据 231
8.6.2 访问和修改激光数据 232
8.7 创建launch文件 234
8.8 使用Kinect传感器查看3D环境中的对象 235
8.8.1 Kinect如何发送和查看传感器数据 236
8.8.2 创建使用Kinect的示例 238
8.9 使用伺服电动机——Dynamixel 239
8.9.1 Dynamixel如何发送和接收运动命令 241
8.9.2 创建和使用伺服电动机示例 241
8.10 本章小结 243
第9章 计算机视觉 244
9.1 ROS摄像头驱动程序支持 245
9.1.1 FireWire IEEE1394摄像头 245
9.1.2 USB摄像头 249
9.1.3 使用OpenCV制作USB摄像头驱动程序 250
9.2 ROS图像 255
9.3 ROS中的OpenCV库 256
9.3.1 安装OpenCV 3.0 256
9.3.2 在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.7.1 视觉里程计 270
9.7.2 使用viso2实现视觉里程计 270
9.7.3 摄像头位姿标定 271
9.7.4 运行viso2在线演示 273
9.7.5 使用低成本双目摄像头运行viso2 276
9.8 使用RGBD深度摄像头实现视觉里程计 276
9.8.1 安装fovis 276
9.8.2 用Kinect RGBD深度摄像头运行fovis 277
9.9 计算两幅图像的单应性 278
9.10 本章小结 279
第10章 点云 280
10.1 理解点云库 280
10.1.1 不同的点云类型 281
10.1.2 PCL中的算法 281
10.1.3 ROS的PCL接口 282
10.2 我的第一个PCL程序 283
10.2.1 创建点云 284
10.2.2 加载和保存点云到硬盘中 287
10.2.3 可视化点云 290
10.2.4 滤波和缩减采样 294
10.2.5 配准与匹配 298
10.2.6 点云分区 301
10.3 分割 305
10.4 本章小结 308

教学资源推荐
作者: [美]查鲁·C. 阿加沃尔(Charu C. Aggarwal) 著
作者: [英]大卫·巴伯(David Barber) 著
作者: (土耳其)Ethem Alpaydin 著
参考读物推荐
作者: 庄福振 朱勇椿 祝恒书 熊辉 著
作者: [印]郎坦·约瑟夫(Lentin Joseph)著
作者: 丁博生 张似衡 卢森煌 吴楠 著