|
ROS机器人程序设计
ROS机器人程序设计 文前.pdf(13.73 MB, 下载次数: 317)<div class="tip tip_4" id="attach_4580_menu" style="position: absolute; display: none" disautofocus="true"><div class="tip_c xs0">2016-7-18 01:18 上传
点击文件名下载附件
The Translator’s Words 译者序
在过去的几十年里,机器人主要是自动化或机械专业的研究领域,计算机往往作为辅助仿真的工具,机器人的程序设计也往往仅限于使用诸如matlab 机器人工具箱之类的仿真工具。今天很多大型IT 企业都投入大量资源开发了机器人相关的软件开发工具,例如VisualStudio 的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 上学习最IV新的资料,尤其是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 月于北京
Preface 前 言
本书概括性地介绍了ROS 系统的各种工具。ROS 是一个先进的机器人操作系统框架,
现今已有数百个研究团体和公司将其应用在机器人技术产业中。对于机器人技术的非专业人
士来说,它也相对容易上手。在本书中,你将了解如何安装 ROS,如何开始使用ROS 的基
本工具,以及如何最终应用先进的计算机视觉和导航工具。
在阅读本书的过程中无需使用任何特殊的设备。书中每一章都附带了一系列的源代码
示例和教程,你可以在自己的计算机上运行。这是你唯一需要做的事情。当然,我们还会
告诉你如何使用硬件,这样,你可以将你的算法应用到现实环境中。我们在选择设备时特
意去选择一些业余用户负担得起的设备,并同时涵盖了在机器人研究中最典型的传感器或
执行机构。
最后,由于ROS 系统的存在使得整个机器人具备在虚拟环境中工作的能力。你将学习
如何创建自己的机器人并结合功能强大的导航功能包集。此外如果使用Gazebo 仿真环境,
你将能够在虚拟环境中运行一切。我们会在本书的结尾提供一个能够在ROS 虚拟环境中进
行模拟试验的机器人列表。你将发现你已经可以与机器人一起工作,并理解其背后的原理。
主要内容
第1 章简单介绍安装ROS 系统的方法,同时还介绍ROS 不同版本的安装包的安装,本
书使用的是ROS Fuerte。这一章还会说明如何从Debian 软件包安装或从源代码进行编译安
装,以及在虚拟机中安装。
第2 章涉及ROS 框架及相关的概念和工具。该章介绍节点、 主题和服务,以及如何使用
它们,还将通过一系列示例来说明如何调试一个节点或通过可视化方法直观地查看通过主题
所发布的消息。
第3 章进一步展示ROS 强大的调试工具,以及通过对节点主题的图形化可以将节点间
的通信数据可视化。ROS 提供一个日志记录 API,允许轻松地诊断节点的问题。事实上在使
用过程中,我们会看到一些功能强大的图形化工具如 rxconsole 和 rxgraph,以及可视化接口
VI
如 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++ 编程技巧。
VII
目标读者
本书的目标读者包括所有机器人开发人员,可以是初学者也可以是专业人员。它涵盖了
整个机器人系统的各个方面,展示了ROS 系统如何帮助完成机器人真正自主化的任务。对
于听说过ROS 却从未使用过的机器人领域的学生或科研人员来说,本书将是非常有益的。
ROS 初学者能从本书中学习很多ROS 软件框架的先进理念和工具。不仅如此,经常使用
ROS 的用户也可能从某些章节中学习到一些新东西。当然,只有前3 章是纯粹为初学者准备
的,所以那些已经使用过ROS 的人可以跳过这部分直接阅读后面的章节。
排版说明
在本书中,你会发现一些文本的样式与其他正文内容不同。下面是一些样式的示例及含义。
当我们希望能够着重显示示例代码中的某些内容的时候,相关的代码行会如下表示:
[ 4 ]
Conventions
In this book, you will find a number of styles of text that distinguish between
different kinds of information. Here are some examples of these styles, and an
explanation of their meanings.
Code words in text are shown as follows: "The *-ros-pkg contributed packages
are licensed under a variety of open source licenses."
A block of code is set as follows:
<package>
<description brief="short description">
long description,
</description>
<author>Aaron Martinez, Enrique Fernandez</author>
<license>BSD</license>
<url>http://example.com/</url>
<depend package="roscpp"/>
<depend package="common"/>
<depend package="otherPackage"/>
<versioncontrol type="svn" url="https://urlofpackage/trunk"/>
<export>
<cpp cflags="-I${prefix}/include" lflags="-L${prefix}/lib -lros"/>
</package>
When we wish to draw your attention to a particular part of a code block,
the relevant lines or items are set in bold:
<launch>
<node pkg="chapter3_tutorials" type="example1"
name="example1" output="screen"
launch-prefix="xterm -e gdb --args"/>
</launch>
Any command-line input or output is written as follows:
$ rosrun book_tutorials tutorialX _param:=9.0
New terms and important words are shown in bold. Words that you see on the screen,
in menus, or dialog boxes for example, appear in the text like this: "We must have
clicked on the Play button at least once."
Bash 命令行下输入的命令或显示的结果如下表示:
[ 4 ]
Conventions
In this book, you will find a number of styles of text that distinguish between
different kinds of information. Here are some examples of these styles, and an
explanation of their meanings.
Code words in text are shown as follows: "The *-ros-pkg contributed packages
are licensed under a variety of open source licenses."
A block of code is set as follows:
<package>
<description brief="short description">
long description,
</description>
<author>Aaron Martinez, Enrique Fernandez</author>
<license>BSD</license>
<url>http://example.com/</url>
<depend package="roscpp"/>
<depend package="common"/>
<depend package="otherPackage"/>
<versioncontrol type="svn" url="https://urlofpackage/trunk"/>
<export>
<cpp cflags="-I${prefix}/include" lflags="-L${prefix}/lib -lros"/>
</package>
When we wish to draw your attention to a particular part of a code block,
the relevant lines or items are set in bold:
<launch>
<node pkg="chapter3_tutorials" type="example1"
name="example1" output="screen"
launch-prefix="xterm -e gdb --args"/>
</launch>
Any command-line input or output is written as follows:
$ rosrun book_tutorials tutorialX _param:=9.0
New terms and important words are shown in bold. Words that you see on the screen,
in menus, or dialog boxes for example, appear in the text like this: "We must have
clicked on the Play button at least once."
Chapter 7
Notice that the data is the same as the one you can
see on the Gazebo screen.
As you can observe, Gazebo is creating the odometry as the robot moves. We are
going to see how Gazebo creates it by looking inside the plugin's source code.
The plugin file is located in the erratic_gazebo_plugins package, and the file is
diffdrive_plugin.cpp. Open the file and you will see the following code inside
the file:
$ rosed erratic_gazebo_plugins diffdrive_plugin.cpp
The file has a lot of code, but the important part for us now is the following function,
publish_odometry():
void DiffDrivePlugin::publish_odometry()
{
ros::Time current_time = ros::Time::now();
std::string odom_frame = tf::resolve(tf_prefix_, "odom");
std::string base_footprint_frame = tf::resolve(tf_prefix_, "base_
footprint");
// getting data for base_footprint to odom transform
math:ose pose = this->parent->GetState().GetPose();
btQuaternion qt(pose.rot.x, pose.rot.y, pose.rot.z, pose.rot.w);
警告或注意事项会这样显示。
[ 16 ]
chapters of this book, we will need to use tools, and if we don't install it now, we
will have to do it later:
• The easiest (and recommended if you have enough hard disk space)
installation is known as desktop-full. It comes with ROS, the Rx tools, the
rviz visualizer (for 3D), many generic robot libraries, the simulator in 2D
(such as stage) and 3D (usually Gazebo), the navigation stack (to move,
localize, do mapping, and control arms), and also perception libraries
using vision, lasers, or RGB-D cameras:
$ sudo apt-get install ros-fuerte-desktop-full
• If you do not have enough disk space, or you prefer to install only a few
stacks, first install only the desktop installation file, which comes only with
ROS, the Rx tools, rviz, and generic robot libraries. Later, you can install the
rest of the stacks when you need them (using aptitude and looking for the
ros-electric-* stacks, for example):
$ sudo apt-get install ros-fuerte-desktop
• If you only want the bare bones, install ROS-comm, which is usually
recommended for the robot itself or computers without a screen or just
a TTY. It will install the ROS package with the build and communication
libraries and no GUI tools at all:
$ sudo apt-get install ros-fuerte-ros-comm
• Finally, along with whatever option you choose from the list, you can
install individual/specific ROS stacks (for a given stack name):
$ sudo apt-get install ros-fuerte-STACK
Do not worry if you are installing things that you do not know. In the upcoming
chapters, you will learn about everything you are installing and how to use it.
When you gain experience with ROS, you can make basic installations in your robots
using only the core of ROS, using less resources, and taking only what you need.
Downloading the example code
You can download the example code files for all Packt books you have
purchased from your account at http://www.packtpub.com. If you
purchased this book elsewhere, you can visit http://www.packtpub.
com/support and register to have the files e-mailed directly to you.
You can also download these code files from https://github.com/
AaronMR/Learning_ROS_for_Robotics_Programming.
提示与小窍门会这样显示。
读者反馈
我们非常欢迎读者能够提出意见与建议。让我们知道你关于本书的一些想法,例如:你
喜欢什么,不喜欢什么。读者的反馈对我们是非常重要的,这让我们知道我们最需要做的是
什么。
向我们反馈信息只需发送电子邮件至 feedback@packtpub.com,并在邮件的主题中说明
书籍名称。
如果你在某项上有所专长,或者你有兴趣写一本书或者为书籍的出版做出贡献,你可以
浏览 www.packtpub.com/authors 阅读我们的作者指南。
VIII
读者支持
你现在自豪地拥有了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,我们会竭尽所能为
你解答。
译者序
前 言
第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
Contents 目 录
X
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
XI
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
XII
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
XIII
第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 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|