首页>参考读物>计算机科学与技术>综合

ROS机器人程序设计
作者 : (西班牙)Aaron Martinez, Enrique Fernández 著
译者 : 刘品杰 译
出版日期 : 2014-09-29
ISBN : 978-7-111-47396-1
定价 : 59.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 238
开本 : 16
原书名 : Learning ROS for Robotics Programming
原出版社: Packt Publishing Ltd.
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

在业余机器人爱好者和机器人专家群体中,他们曾经依靠自己从零开始编写复杂繁琐的机器人程序,经常大量做着很多重复性的劳动,为此ROS提供了大量的功能库,很多常用功能用户可直接调用,无需自己编程。本书涵盖了ROS软件架构中从初始设计到最复杂设计的全过程,自始至终,都用大量的实例帮助你理解ROS架构。该书用简单明了的叙述兼实用性的实例带你进入迷人的机器人世界,涉及传感器集成、建模、仿真、计算机视觉、语音识别、导航算法等诸多技术领域。

图书特色

封面:
国内首本引进的ROS机器人程序设计译著,让你全面了解 ROS系统的各种工具。
提供了各种实际的示例代码供读者学习和理解ROS的软件框架。
本书可以帮助读者从对ROS一无所知到能够通过ROS系统完成小型机器人系统的开发和编程工作。

前勒口:
无论是业余机器人爱好者还是专业机器人开发人员,在开始进行机器人系统及程序设计时,首先要面对的问题都是最基本的驱动机器人轮子的设计。ROS通过软件代码复用集成了众多已经开发完成的功能组件。而本书就是专门帮助读者从对ROS一无所知到能够通过ROS系统完成小型机器人系统的开发和编程工作的。
本书提供了各种示例代码供读者学习和理解ROS的软件框架。你可以在仿真环境中自行构建机器人相应的功能程序,并在ROS社区中分享你的学习心得和知识。
译者简介
刘品杰,硕士,技术方向为工业自动化控制、DCS/PLC/SCADA系统研发、机器人技术等。先后参与过国产化核电站DCS控制系统研发、国产化油气管道大型SCADA系统研发。历任系统开发工程师、产品经理、项目经理。

封底:
读者对象
本书主要针对希望学习机器人制作和设计,尤其是想要设计自己的机器人、真正热爱机器人的爱好者。本书将会为你提供让你的机器人可维护可升级,并且能够相互分享的途径。为了能够更好地学习本书的内容,你最好具备一定的C++程序设计基础以及GNU/Linux系统和计算机科学知识。而你并不需要对ROS有任何了解,因为本书正是要介绍这些基本知识和技能。还有,你最好能够了解一定的版本控制系统的知识,如SVN或GIT。在本书中会经常使用它们。

作者简介
Aaron Martinez 是一位计算机工程师、企业家和数字化制造专家。他硕士毕业于拉斯帕尔马斯大学的IUCTC(科学与网络技术研究所)。之后,参与过拉斯帕尔马斯大学AVORA项目。在这个项目中,他负责设计AUV (自主式水下机器人),并在意大利参加了欧洲学生自主式水下挑战(SAUC-E)。
Enrique Fernández 是一名计算机工程师和机器人专家。他硕士毕业于拉斯帕尔马斯大学智能系统与计算工程学院。在2012年参加了欧洲学生自主式水下挑战(SAUC-E),并作为合作者参加了2013年的比赛。 2012年,他因开发水下云台视觉系统而获奖。现在,他是Pal-Robotics实验室的SLAM工程师。Enrique在博士学习期间发表了数篇学术论文和专著。其中,有两篇论文在2011年被国际机器人与自动化会议(ICRA 2011)所收录。

图书前言

本书概括性地介绍了ROS系统的各种工具。ROS 是一个先进的机器人操作系统框架,现今已有数百个研究团体和公司将其应用在机器人技术产业中。对于机器人技术的非专业人士来说,它也相对容易上手。在本书中,你将了解如何安装 ROS,如何开始使用ROS的基本工具,以及如何最终应用先进的计算机视觉和导航工具。
在阅读本书的过程中无需使用任何特殊的设备。书中每一章都附带了一系列的源代码示例和教程,你可以在自己的计算机上运行。这是你唯一需要做的事情。当然,我们还会告诉你如何使用硬件,这样,你可以将你的算法应用到现实环境中。我们在选择设备时特意去选择一些业余用户负担得起的设备,并同时涵盖了在机器人研究中最典型的传感器或执行机构。
最后,由于ROS系统的存在使得整个机器人具备在虚拟环境中工作的能力。你将学习如何创建自己的机器人并结合功能强大的导航功能包集。此外如果使用Gazebo仿真环境,你将能够在虚拟环境中运行一切。我们会在本书的结尾提供一个能够在ROS虚拟环境中进行模拟试验的机器人列表。你将发现你已经可以与机器人一起工作,并理解其背后的原理。
主要内容
第1章简单介绍安装ROS系统的方法,同时还介绍ROS不同版本的安装包的安装,本书使用的是ROS Fuerte。这一章还会说明如何从Debian软件包安装或从源代码进行编译安装,以及在虚拟机中安装。
第2章涉及ROS 框架及相关的概念和工具。该章介绍节点、 主题和服务,以及如何使用它们,还将通过一系列示例来说明如何调试一个节点或通过可视化方法直观地查看通过主题所发布的消息。
第3章进一步展示ROS强大的调试工具,以及通过对节点主题的图形化可以将节点间的通信数据可视化。ROS 提供一个日志记录 API,允许轻松地诊断节点的问题。事实上在使用过程中,我们会看到一些功能强大的图形化工具如 rxconsole 和 rxgraph,以及可视化接口如 rxplot 和 rviz。最后介绍如何使用 rosbag 和 rxbag记录和回放消息。
第4章介绍ROS系统与真实世界如何连接。这一章介绍在ROS下使用的一些常见传感器和执行机构,如激光雷达、伺服电动机、摄像头、RGB-D传感器等设备。此外,还会解释如何使用嵌入式系统与微控制器,例如非常流行的Arduino。
第5章介绍我们在ROS系统中实现机器人的第一步是在ROS中创建一个机器人模型,包括在Gazebo仿真环境中如何从头开始对一个机器人进行建模和仿真,并使其在仿真环境中运行。这是后续学习如何使用ROS的导航功能包集和其他工具的前提条件。
第6章介绍ROS对摄像头和计算机视觉任务的支持。首先使用FireWire和USB摄像头驱动程序将摄像头连接到计算机并采集图像。然后,你就可以使用ROS的标定工具标定你的摄像头。我们会详细介绍和说明什么是图像管道,学习如何使用集成了OpenCV的多个机器视觉API。最后,安装并使用一个视觉测距软件。
第7章是本书关于ROS导航功能包集的两章中的第1章。介绍如何对你的机器人进行使用导航功能包集所需的初始化配置。然后用几个例子对导航功能包集进行说明。
第8章延续第7章的内容,介绍如何使用导航功能包集使我们的机器人有效地自主导航。本章介绍使用ROS的Gazebo仿真环境和rviz创建一个虚拟的环境,并在其中构建地图、定位我们的机器人并做路径规划与避障。
第9章结合前面几章所学的内容,介绍能够支持ROS并使用Gazebo仿真环境的一些机器人。在该章中,你将看到如何在仿真环境中运行这些机器人,并执行几项本书中介绍过的任务,尤其是与导航功能包集相关的。
预备知识
我们写作本书的目的是希望尽可能让每位读者都可以完成本书的学习并运行示例代码。基本上,你只需要在计算机上安装一个 Linux 发行版。虽然每个Linux 发行版本应该都能使用,但还是建议你使用Ubuntu的最新版。这样你可以根据第1章的内容安装ROS Fuerte。对于ROS的这一版本,你将需要Ubuntu 12.10 之前的版本,因为之后的版本已经不再支持Fuerte了。
对于硬件要求,一般来说任何台式计算机或笔记本电脑都满足。但是,最好使用独立显卡来运行Gazebo仿真环境。此外,如果能够有足够的外围接口将会更好,因为这样你可以连接几个传感器和执行机构,包括摄像头和Arduino。
你还需要 Git (git-core Debian 软件包),以便从本书提供的软件源下载源代码。同样,你需要具备Bash 命令行、GNU/Linux工具的基本知识和一些 C/C++编程技巧。
目标读者
本书的目标读者包括所有机器人开发人员,可以是初学者也可以是专业人员。它涵盖了整个机器人系统的各个方面,展示了ROS系统如何帮助完成机器人真正自主化的任务。对于听说过ROS却从未使用过的机器人领域的学生或科研人员来说,本书将是非常有益的。ROS 初学者能从本书中学习很多ROS软件框架的先进理念和工具。不仅如此,经常使用ROS的用户也可能从某些章节中学习到一些新东西。当然,只有前3章是纯粹为初学者准备的,所以那些已经使用过ROS 的人可以跳过这部分直接阅读后面的章节。
排版说明
在本书中,你会发现一些文本的样式与其他正文内容不同。下面是一些样式的示例及含义。
当我们希望能够着重显示示例代码中的某些内容的时候,相关的代码行会如下表示:

Bash命令行下输入的命令或显示的结果如下表示:

警告或注意事项会这样显示。
提示与小窍门会这样显示。
读者反馈
我们非常欢迎读者能够提出意见与建议。让我们知道你关于本书的一些想法,例如:你喜欢什么,不喜欢什么。读者的反馈对我们是非常重要的,这让我们知道我们最需要做的是什么。
向我们反馈信息只需发送电子邮件至 feedback@packtpub.com,并在邮件的主题中说明书籍名称。
如果你在某项上有所专长,或者你有兴趣写一本书或者为书籍的出版做出贡献,你可以浏览 www.packtpub.com/authors 阅读我们的作者指南。
读者支持
你现在自豪地拥有了Packt出版的书籍,我们会帮助你使你购买的产品物超所值。
源代码下载
可以访问http://www.packtpub.com/support,完成网站注册并通过E-mail接收所有代码
文件。
彩色图片下载
我们同时提供包含了本书所有彩色的屏幕截图、对话框的PDF文件,这些彩色图片能够更好地帮助你理解输出的变化。可以从这里下载这个文件:http://www.packtpub.com/sites/default/files/ downloads/1448OS_Graphics.pdf。
勘误
虽然我们已尽力确保本书内容的准确性,但错误在所难免。如果你在我们的书中发现错误,即使是一个错字或一段错误的代码,我们将非常感谢你把错误告知我们。这样可以避免其他读者发生困扰并帮助我们提高本书后续版本的质量。如果你发现任何错误,请访问http://www.packtpub.com/ submit-errata报告这些问题。访问网页,选择你的书,点击勘误提交表格的链接,并输入你的勘误细节。一旦确认了你的勘误,我们会告知你的提交被接受并在我们的网站上更新勘误表。你可以在http://www. packtpub.com/support根据你选择的标题查看现有的勘误表。
问题
如果关于本书你有任何疑问,请联系我们 questions@packtpub.com,我们会竭尽所能为你解答。

上架指导

自动化\嵌入式

封底文字

无论是业余爱好者还是专业的机器人开发人员,在开始进行机器人系统及程序设计时,首先要面对的问题都是最基本的驱动机器人的轮子的设计。ROS通过软件代码复用集成了众多已经开发完成的功能组件。而本书就是专门帮助读者从对ROS一无所知到能够通过ROS系统完成小型机器人系统的开发和编程工作的。
本书提供了各种实际的示例代码供读者学习和理解ROS的软件框架。你可以在仿真环境中自行构建机器人相应的功能程序,并在ROS社区中分享你的学习心得和知识。
读者对象
本书主要针对希望学习机器人制作和设计,尤其是想要设计自己的机器人、真正热爱机器人的爱好者。本书将会为你提供让你的机器人可维护可升级,并且能够相互分享的途径。为了能够更好地学习本书的内容,你最好具备一定的C++程序设计背景以及GNU/Linux系统和计算机科学知识。而你并不需要对ROS有任何了解,因为本书正是要介绍这些基本知识和技能。还有你最好能够了解一定的版本控制系统的知识,如SVN或GIT。在本书中会经常使用它们。
本书内容:ROS系统的完整安装;创建ROS功能包和功能包集,学习实时地运行和调试功能包;创建、操作和调试ROS节点;设计自定义的3D机器人模型,并在Gazebo虚拟环境中进行仿真;机器人使用摄像头获取视频信息,完成摄像头标定和基本的机器视觉任务;在机器人上集成和使用激光雷达、Arduino和Kinect传感器;创建并配置导航功能包集;在ROS社区分享你的学习心得和知识。

作者简介

(西班牙)Aaron Martinez, Enrique Fernández 著:Aaron Martinez是一个计算机工程师、企业家和数字化制造专家。他硕士毕业于拉斯帕尔马斯大学的IUCTC(科学与网络技术研究所)。之后,参与过拉斯帕尔马斯大学AVORA项目。在这个项目中,他负责设计AUV (自主式水下机器人),并在意大利参加了欧洲学生自主式水下挑战(SAUC-E)。
Enrique Fernández是一名计算机工程师和机器人专家。他硕士毕业于拉斯帕尔马斯大学智能系统与计算工程学院。在2012年参加了欧洲学生自主式水下挑战(SAUC-E),并作为合作者参加了2013年的比赛。 2012年,他因开发水下云台视觉系统而获奖。现在,他是Pal-Robotics实验室的SLAM工程师。Enrique在博士学习期间发表了数篇学术论文和专著。其中,有两篇论文在2011年被国际机器人与自动化会议(ICRA 2011)所收录。

译者简介

刘品杰 译:暂无简介

译者序

在过去的几十年里,机器人主要是自动化或机械专业的研究领域,计算机往往作为辅助仿真的工具,机器人的程序设计也往往仅限于使用诸如matlab机器人工具箱之类的仿真工具。今天很多大型IT企业都投入大量资源开发了机器人相关的软件开发工具,例如Visual Studio的Robotics Developer Studio,这些软件工具的目的是颠覆传统的机器人开发和设计模式。机器人操作系统就是基于这个目的产生的。它们能够帮助开发人员在原有机器人的基础上不断地进行二次开发,深入拓展机器人技术。而其中最具代表性的正是开源机器人操作系统ROS(Robot Operating System)。
与其说ROS是一个操作系统,不如说它是一种分布式模块化的开源软件框架。它借用标准的TCP(UDP)/IP协议实现了系统内部各个节点之间的通信,网络化的接口允许将第三方组件泛化成为其操作系统的一部分。如果你真正使用过ROS,就会为其无所不包的开放性而感到惊讶。正因如此,ROS社区集中了全世界顶尖的机器人研究人员。今天,ROS能够无缝集成现在已知的大部分机器人操作系统;能满足最高的实时性与可靠性要求;通过使用EtherCAT等高速总线能以每秒Gb级的速度传输视频数据;能够通过集成其他开源组件及增强现实技术提供多种仿真环境;能够通过多种接口与各种硬件设备或传感器进行通信;能够替你计算繁琐的正逆运动学,通过标定和配置轻松完成视觉伺服等高难度任务;你可以方便地移植其他机器人上已经测试过的各类算法和代码,或引入其他开源库。
虽然ROS大幅度降低了开发和应用机器人的难度,但是考虑到机器人领域无所不包,想要学习和使用ROS还是有几点需要注意的。首先,你应该学习过C/C++程序设计语言,能够使用Linux编译和运行程序,这是阅读本书的基本要求。当然,如果你是一个编程新手,也可以跟着本书示例在实践中学习Linux和编程知识。其次,在学习和使用ROS的时候,往往还需要懂得程序设计之外的很多机器人知识,尤其是数学知识。但由于机器人领域过于宽泛,因此在学习过程中最好能够专注于某一方面的相关知识,不要贪多求全。再次,ROS是一个开源软件,因此我们也要保持一种开放的心态。虽然本书能帮助你入门相对轻松一些,但这并不会彻底优化你的学习曲线。如果想要学好ROS,一定要去www.ros.org上学习最新的资料,尤其是ROS wiki。最顶尖的ROS国际会议是ROSCON,你可以到Google或者YouTube上搜索相关内容,里面有ROS最新的发展与介绍。最后,本书英文版虽然是2013年9月出版,但ROS和Linux一样半年出一个新的版本,因此书中并没有介绍最新的ROS Hydro和ROS Groovy。其实这些并不妨碍你对ROS的学习,没有谁为了学习Linux编程而非要用最新出版的图书,因为软件的基本框架和组织方式不会发生改变,而且支持ROS的机器人硬件并不一定支持最新的ROS。ROS Hydro和ROS Groovy主要对ROS原有的编译系统和部分功能包有所升级和替换,如果有兴趣的话,建议在学习完本书之后尚有余力的情况下,可以通过wiki自学ROS Hydro或ROS Groovy。
本书的两位作者并不是以英语为母语的,因此英文原著中存在着较多的语法错误和校对错误。虽然在翻译过程中参考了原著的勘误和所附代码,考虑到译者的水平亦有限,因此仍然不免存在错误,还请大家海涵。在本书之前,ROS的中文译著甚少,因此有些专业名词的翻译亦有待商榷。为了方便读者学习,译者共享了一个VMware 9.0下的虚拟机,里面包含完整安装的Vbuntu 12.04和ROS Fuerte (下载地址是http://pan.baidu.com/s/1nt6uH9R)。这样,使用VMware虚拟机的读者可以下载并在VMware中运行,然后直接学习第2章到第8章的内容。关于本书中的各种问题,欢迎大家与我联系,我的邮箱是liupinjie@gmail.com。
虽然ROS是机器人技术,但是其分布式的节点布置同样满足物联网及很多工业应用的需求,同时也有很多外国企业利用它进行机床、船舶、汽车或自动化系统的制造。记住,ROS代表了未来的智能化时代,赋予了我们新的创造与改变世界的能力。

刘品杰
2014年4月于北京

图书目录

译者序
前 言
第1章 ROS系统入门 1
1.1 使用软件源安装ROS Electric 3
1.1.1 添加软件源到sources.list文件中 4
1.1.2 设置密码 4
1.1.3 安装 4
1.1.4 环境配置 5
1.2 使用软件源安装ROS Fuerte  6
1.2.1 配置Ubuntu软件源 6
1.2.2 配置source.list文件 6
1.2.3 设置密码 7
1.2.4 安装 7
1.2.5 环境配置 8
1.2.6 独立工具 9
1.3 如何安装VirtualBox和Ubuntu 9
1.3.1 下载VirtualBox 9
1.3.2 创建虚拟机 10
1.4 本章小结 12
第2章 ROS系统架构及示例 13
2.1 理解ROS文件系统级 13
2.1.1 功能包 14
2.1.2 功能包集 16
2.1.3 消息类型 16
2.1.4 服务类型 17
2.2 理解ROS计算图级 18
2.2.1 节点 19
2.2.2 主题 20
2.2.3 服务 21
2.2.4 消息 22
2.2.5 消息记录包 22
2.2.6 节点管理器 22
2.2.7 参数服务器 22
2.3 理解ROS开源社区级 23
2.4 ROS系统试用练习 23
2.4.1 ROS文件系统导览 24
2.4.2 创建工作空间 24
2.4.3 创建ROS功能包 25
2.4.4 编译ROS功能包 26
2.4.5 使用ROS节点 26
2.4.6 使用主题与节点交互 28
2.4.7 学习如何使用服务 31
2.4.8 使用参数服务器 33
2.4.9 创建节点 34
2.4.10 编译节点 36
2.4.11 创建msg和srv文件 37
2.4.12 使用新建的srv和msg文件 38
2.5 本章小结 42
第3章 调试和可视化 43
3.1 调试ROS节点 44
3.1.1 使用GDB调试器调试ROS节点 45
3.1.2 ROS节点启动时调用GDB调试器 46
3.1.3 设置ROS节点core文件转存 47
3.2 调试信息 47
3.2.1 输出调试信息 47
3.2.2 设置调试信息级别 48
3.2.3 为特定节点配置调试信息级别 48
3.2.4 信息命名 50
3.2.5 条件显示信息与过滤信息 50
3.2.6 信息的更多功能——单次显示、可调、组合 51
3.2.7 使用rosconsole和rxconsole在运行时修改调试级别 52
3.3 监视系统状态 56
3.3.1 节点、主题与服务列表 56
3.3.2 使用rxgraph在线监视节点状态图 56
3.4 当奇怪的事情发生——使用roswtf 58
3.5 画标量数据图 58
3.5.1 用rxplot画出时间趋势曲线 59
3.5.2 另一个画图工具rxtools 60
3.6 图像可视化 61
3.6.1 显示单一图片 61
3.6.2 FireWire接口摄像头 62
3.6.3 使用双目立体视觉 63
3.7 3D可视化 64
3.7.1 使用rviz在3D世界中实现数据可视化 64
3.7.2 主题与坐标系的关系 66
3.7.3 可视化坐标变换 67
3.8 保存与回放数据 68
3.8.1 什么是消息记录包文件 69
3.8.2 使用rosbag在包文件中记录数据 69
3.8.3 回放消息记录文件 70
3.8.4 使用rxbag检查消息记录包的主题和消息 71
3.9 rqt插件与rx应用 72
3.10 本章小结 73
第4章 在ROS下使用传感器和执行机构 74
4.1 使用游戏杆或游戏手柄 74
4.1.1 joy_node如何发送游戏杆动作消息 75
4.1.2 使用游戏杆数据在turtlesim中移动海龟 76
4.2 使用激光雷达——Hokuyo URG-04lx 79
4.2.1 了解激光雷达如何在 ROS 中发送数据 80
4.2.2 访问和修改激光雷达数据 82
4.3 使用Kinect传感器查看3D环境 84
4.3.1 如何发送和查看Kinect数据 85
4.3.2 创建和使用Kinect示例 86
4.4 使用伺服电动机——Dynamixel 88
4.4.1 Dynamixel如何发送和接收运动命令 89
4.4.2 创建和使用伺服电动机示例 90
4.5 使用Arduino添加更多的传感器和执行机构 91
4.6 使用惯性测量模组——Xsens MTi 94
4.6.1 Xsens如何在ROS中发送数据 95
4.6.2 创建和使用Xsens示例 96
4.7 使用低成本惯性测量模组IMU-10自由度 98
4.7.1 下载加速度传感器库 99
4.7.2 Arduino Nano和10自由度传感器编程 99
4.7.3 创建ROS节点并使用10自由度传感器数据 101
4.8 本章小结 103
第5章 3D建模与仿真 104
5.1 自定义机器人在ROS中的3D模型 104
5.2 创建第一个URDF文件 104
5.2.1 解释文件格式 106
5.2.2 在rviz里查看3D模型 107
5.2.3 加载图形到机器人模型 109
5.2.4 使机器人模型运动 109
5.2.5 物理和碰撞属性 110
5.3 xacro——一个写机器人模型的更好方法 111
5.3.1 使用常量 111
5.3.2 使用数学方法 112
5.3.3 使用宏 112
5.3.4 使用代码移动机器人 112
5.3.5 使用SketchUp进行3D建模 116
5.4 在ROS中仿真 117
5.4.1 在Gazebo中使用URDF3D模型 117
5.4.2 在Gazebo中添加传感器 120
5.4.3 在Gazebo中加载和使用地图  121
5.4.4 在Gazebo中移动机器人 123
5.5 本章小结 125
第6章 机器视觉 126
6.1 连接和运行摄像头 128
6.1.1 FireWire IEEE1394 摄像头 128
6.1.2 USB摄像头 132
6.2 使用OpenCV制作USB摄像头驱动程序 133
6.2.1 创建 USB 摄像头驱动功能包 134
6.2.2 使用ImageTransport API发布摄像头帧 135
6.2.3 使用 cv_bridge 进行OpenCV 和 ROS 图像处理 138
6.2.4 使用ImageTransport 发布图像 139
6.2.5 在ROS中使用OpenCV 139
6.2.6 显示摄像头输入的图像 140
6.3 如何标定摄像头 140
6.4 ROS 图像管道 147
6.5 对于计算机视觉任务有用的 ROS功能包 152
6.6 使用viso2执行视觉测距 153
6.6.1 摄像头位姿标定 154
6.6.2 运行 viso2 在线演示 156
6.6.3 使用低成本双目摄像头运行 viso2 158
6.7 本章小结 159
第7章 导航功能包集入门 160
7.1 ROS导航功能包集 160
7.2 创建转换 161
7.2.1 创建广播机构 162
7.2.2 创建侦听器 162
7.2.3 查看坐标变换树 164
7.3 发布传感器信息  165
7.4 发布里程数据 168
7.4.1 Gazebo如何获取里程数据 169
7.4.2 创建自定义里程数据 171
7.5 创建基础控制器 175
7.5.1 使用Gazebo 创建里程数据 176
7.5.2 创建基础控制器 178
7.6 使用ROS创建地图 180
7.6.1 使用map_server保存地图 181
7.6.2 使用map_server加载地图 182
7.7 本章小结 183
第8章 导航功能包集进阶 184
8.1 创建功能包 184
8.2 创建机器人配置 184
8.3 配置全局和局部代价地图 187
8.3.1 基本参数的配置 187
8.3.2 全局代价地图的配置 188
8.3.3 局部代价地图的配置 189
8.4 基本局部规划器配置 189
8.5 为导航功能包集创建启动文件 190
8.6 为导航功能包集设置rviz 191
8.6.1 2D位姿估计 191
8.6.2 2D导航目标 192
8.6.3 静态地图 193
8.6.4 点云 193
8.6.5 机器人立足点 193
8.6.6 障碍 194
8.6.7 膨胀障碍 194
8.6.8 全局规划 195
8.6.9 局部规划 195
8.6.10 规划器规划 196
8.6.11 当前目标 196
8.7 自适应蒙特卡罗定位 197
8.8 避免障碍 199
8.9 发送目标 200
8.10 本章小结 202
第9章 在实践中学习 203
9.1 REEM——类人形PAL机器人 204
9.1.1 从官方软件源安装REEM 205
9.1.2 使用Gazebo仿真环境运行REEM 208
9.2 PR2——柳树车库机器人 210
9.2.1 安装 PR2仿真环境 210
9.2.2 在仿真环境中运行PR2 211
9.2.3 生成地图与定位 214
9.2.4 在仿真环境中运行PR2演示程序 216
9.3 Robonaut 2——NASA的敏捷型人形机器人 217
9.3.1 从软件源安装Robonaut 2 217
9.3.2 在国际空间站的固定支座上运行Robonaut2 218
9.4 Husky——Clearpath的轮式机器人 222
9.4.1 安装Husky仿真环境 222
9.4.2 运行Husky仿真环境 222
9.5 TurtleBot——低成本移动机器人  224
9.5.1 安装TurtleBot仿真环境 224
9.5.2 运行TurtleBot仿真环境 224
9.6 本章小结 225

教学资源推荐
作者: 张建忠 徐敬东 编著
作者: 吴跃 主编 李树全 尚明生 陈端兵 参编
参考读物推荐