新書推薦:
《
帕纳索传来的消息(文艺复兴译丛)
》
售價:NT$
495.0
《
DK威士忌大百科
》
售價:NT$
1340.0
《
小白学编织
》
售價:NT$
299.0
《
Android游戏开发从入门到精通 第2版 王玉芹
》
售價:NT$
495.0
《
西班牙内战:秩序崩溃与激荡的世界格局:1936-1939
》
售價:NT$
990.0
《
非对称创新:中国企业赶超战略 魏江 刘洋
》
售價:NT$
495.0
《
潜能觉醒
》
售價:NT$
395.0
《
初平:汉末群雄混战(190—195)
》
售價:NT$
245.0
編輯推薦:
读者对象:机器人开发人员,无论是业余爱好者还是相关研究人员,无论是专业人士还是对ROS感兴趣的人,本书都能满足需求,如果读者具备GNULinux系统和Python语言的相关知识会更好。
版本新,本书针对较新的ROS Kinetic Kame版本展开对机器人操控的论述 内容全面,对TurtleBot机器人及其新发行版TurtleBot 3、Bebop四旋翼飞行器、Crazyflie四旋翼飞行器以及Baxter机器人手臂等的模拟形式与实际形式进行了介绍 实例丰富,对基于ROS的机器人开发技术、基于移动智能设备的配置及操作进行了介绍 便于学术研究,介绍了使用MATLAB下的机器人工具箱编辑脚本、调用ROS命令的方法。 便于排查问题。论述实例的故障排查方法,当读者在实际操作中得到的结果与预期结果不相符时,可以按照相应方法排查故障。
內容簡介:
本书由长期从事ROS机器人研究与教学的专家撰写,深入浅出地对基于ROS的机器人开发技术进行了全面介绍,并通过丰富的实例,详细讲解移动机器人、飞行机器人与机器人手臂等各类机器人的ROS实现。
本书不仅涵盖ROS的基础知识,还循序渐进地讲解了ROS机器人的高级应用特性。书中首先对ROS的基本配置进行介绍,内容包括ROS的安装、基本概念、主要的功能包与工具等。然后对相应的故障排查方法进行了论述。之后通过模拟的方式,先对Turtlesim的ROS组成模块进行描述,再对其他几类典型机器人的ROS组成模块进行相应的介绍。对ROS组成模块的介绍,一般遵循的流程是首先介绍基本的ROS命令,然后对ROS的功能包、节点、主题以及消息进行论述,以此来对ROS机器人操作系统的整体内容进行详细的阐述。为了对书中选用的机器人的整体性能进行描述,书中还给出了相关机器人的技术资料。
關於作者:
卡罗尔费尔柴尔德(Carol Fairchild)
费尔柴尔德机器人公司的所有人、首席工程师,该公司致力于机器人技术的开发与集成。她是休斯顿大学明湖分校巴克斯特机器人实验室的一名研究人员和兼职教授。她的研究领域主要是基于Baxter机器人的扩展应用开发。她在得州农工大学获得工程技术学士学位,在休斯顿大学明湖分校获得计算机工程硕士学位。
托马斯L. 哈曼(Thomas L. Harman)
休斯顿大学明湖分校工程系的主任。他的研究领域主要是控制系统、机器人技术与微处理器技术的应用等。他和同事关于机器人和激光的论文已经应用在了医学领域。2005年,他当选为休斯顿大学明湖分校的特聘教授。他曾担任FIRST机器人大赛的裁判与安全顾问。他已经出版的专著、合著书籍有18本,主题包括微处理器技术、MATLAB与仿真以及美国国家电气规程等。
目錄 :
译者序
前言
作者简介
审校者简介
第1章 ROS初体验 1
1.1 ROS的用途以及学习ROS的好处 1
1.2 哪些机器人采用了ROS 2
1.3 安装并启动ROS 4
1.3.1 配置Ubuntu系统的软件源 4
1.3.2 设置Ubuntu系统软件源列表 5
1.3.3 设置Ubuntu系统密钥 5
1.3.4 安装ROS Kinetic 5
1.3.5 初始化rosdep 6
1.3.6 环境设置 6
1.3.7 安装 rosinstall 6
1.3.8 故障排除ROS环境测试 7
1.4 创建catkin工作空间 7
1.5 ROS的功能包与清单 8
1.5.1 ROS清单 8
1.5.2 探索ROS功能包 8
1.6 ROS节点、话题与消息 10
1.6.1 ROS节点 11
1.6.2 ROS话题 11
1.6.3 ROS消息 11
1.6.4 ROS节点管理器 12
1.6.5 确定节点和话题的ROS命令 13
1.7 第一个ROS机器人模拟程序turtlesim 15
1.7.1 启动turtlesim节点 15
1.7.2 turtlesim节点 16
1.7.3 turtlesim话题与消息 18
1.7.4 通过发布turtle1cmd_vel话题控制乌龟运动 20
1.7.5 通过键盘或游戏手柄控制乌龟移动 22
1.7.6 turtlesim的参数服务器 22
1.7.7 控制乌龟移动的ROS服务 24
1.8 ROS命令小结 25
1.9 本章小结 26
第2章 构建一个模拟的两轮ROS机器人 27
2.1 Rviz简介 27
2.1.1 安装和启动Rviz 28
2.1.2 熟悉Rviz界面 29
2.2 生成并构建ROS功能包 32
2.3 构建差分驱动的机器人URDF 33
2.3.1 创建机器人底座 33
2.3.2 使用roslaunch 34
2.3.3 添加轮子 37
2.3.4 添加小脚轮 39
2.3.5 添加颜色 41
2.3.6 添加碰撞属性 42
2.3.7 移动轮子 43
2.3.8 tf和robot_state_publisher简介 44
2.3.9 添加物理学属性 45
2.3.10 试用URDF工具 46
2.4 Gazebo 47
2.4.1 安装并启动Gazebo 48
2.4.2 使用roslaunch启动Gazebo 49
2.4.3 熟悉Gazebo界面 50
2.4.4 机器人URDF的修改 54
2.4.5 Gazebo模型验证 55
2.4.6 在Gazebo中查看URDF 56
2.4.7 机器人模型调整 57
2.4.8 移动机器人模型 58
2.4.9 其他的机器人模拟环境 59
2.5 本章小结 60
第3章 TurtleBot机器人操控 61
3.1 TurtleBot 2机器人简介 61
3.2 下载TurtleBot 2模拟器软件 63
3.3 在Gazebo中启动TurtleBot 2模拟器 63
3.3.1 常见问题与故障排除 65
3.3.2 ROS命令与Gazebo 66
3.3.3 模拟环境下使用键盘远程控制TurtleBot 2 68
3.4 控制真正的TurtleBot 2机器人的设置 69
3.5 连接上网本与远程计算机 71
3.5.1 网络类型 71
3.5.2 网络地址 72
3.5.3 远程计算机网络设置 73
3.5.4 上网本网络设置 73
3.5.5 SSH连接 74
3.5.6 网络设置小结 74
3.5.7 排查网络连接中的故障 75
3.5.8 TurtleBot 2机器人系统测试 75
3.6 TurtleBot 2机器人的硬件规格参数 76
3.7 移动真实的TurtleBot 2机器人 78
3.7.1 采用键盘远程控制TurtleBot 2机器人移动 78
3.7.2 采用ROS命令控制TurtleBot 2机器人移动 79
3.7.3 编写第一个Python脚本程序控制TurtleBot 2机器人移动 80
3.8 rqt工具简介 83
3.8.1 rqt_graph 83
3.8.2 rqt的消息发布与话题监控 86
3.9 TurtleBot机器人的测程 87
3.9.1 模拟的TurtleBot 2机器人的测程 91
3.9.2 Rviz下真实的TurtleBot 2机器人的测程显示 93
3.10 TurtleBot机器人的自动充电 95
3.11 TurtleBot 3介绍 96
3.12 下载TurtleBot 3模拟软件 98
3.13 在Rviz中启动TurtleBot 3模拟软件 99
3.14 在Gazebo中启动TurtleBot 3模拟软件 100
3.15 硬件装配与测试 103
3.16 下载TurtleBot 3机器人软件包 103
3.16.1 在远程计算机上安装软件 103
3.16.2 在SBC上安装软件 104
3.17 TurtleBot 3与远程计算机的网络连接 107
3.17.1 远程计算机网络设置 108
3.17.2 TurtleBot 3网络设置 108
3.17.3 SSH通信测试 110
3.17.4 网络连接的故障处理 110
3.18 控制真实的TurtleBot 3移动 111
3.19 本章小结 113
第4章 TurtleBot机器人导航 114
4.1 TurtleBot机器人的3D视觉系统 115
4.1.1 3D视觉传感器原理 115
4.1.2 3D传感器对比 116
4.2 配置TurtleBot机器人并安装3D 传感器软件 123
4.2.1 Kinect 123
4.2.2 ASUS与PrimeSense 123
4.2.3 Intel RealSense 124
4.2.4 摄像头软件结构 124
4.2.5 术语定义 125
4.3 独立模式下测试3D传感器 125
4.4 运行ROS节点进行可视化 126
4.4.1 使用Image Viewer可视化数据 126
4.4.2 使用Rviz可视化数据 128
4.5 TurtleBot机器人导航 131
4.5.1 采用TurtleBot 2机器人构建房间地图 132
4.5.2 采用TurtleBot 2机器人实现自主导航 136
4.5.3 导航至指定目标点 142
4.5.4 基于Python脚本与地图实现航路点导航 144
4.5.5 TurtleBot 3机器人的SLAM 151
4.5.6 使用TurtleBot 3进行自主导航 152
4.5.7 rqt_reconfigure 153
4.5.8 进一步探索ROS导航 155
4.6 本章小结 155
第5章 构建模拟的机器人手臂 156
5.1 Xacro的特点 156
5.2 采用Xacro建立一个关节式机器人手臂URDF 157
5.2.1 指定名空间 158
5.2.2 使用Xacro属性标签 158
5.2.3 扩展Xacro 161
5.2.4 使用Xacro的包含与宏标签 163
5.2.5 给机器人手臂添加网格 166
5.3 在Gazebo中控制关节式机器人手臂 171
5.3.1 添加Gazebo特性元素 171
5.3.2 将机器人手臂固定在世界坐标系下 173
5.3.3 在Gazebo中查看机器人手臂 173
5.3.4 给Xacro添加控制组件 174
5.3.5 采用ROS命令行控制机器人手臂 178
5.3.6 采用rqt控制机器人手臂 179
5.4 本章小结 182
第6章 机器人手臂摇摆的关节控制 183
6.1 Baxter简介 184
6.1.1 研究型机器人Baxter 185
6.1.2 Baxter模拟器 186
6.2 Baxter的手臂 186
6.2.1 Baxter的俯仰关节 187
6.2.2 Baxter的滚转关节 188
6.2.3 Baxter的坐标系 188
6.2.4 Baxter手臂的控制模式 189
6.2.5 Baxter手臂的抓手 189
6.2.6 Baxter手臂的传感器 190
6.3 下载Baxter软件 190
6.3.1 安装Baxter SDK软件 190
6.3.2 安装Baxter模拟器 192
6.3.3 配置Baxter shell 193
6.3.4 安装MoveIt! 194
6.4 在Gazebo中启动Baxter模拟器 195
6.4.1 启动Baxter模拟器 196
6.4.2 热身练习 199
6.4.3 弯曲Baxter手臂 200
6.5 Baxter手臂与正向运动 209
6.5.1 关节与关节状态发布器 209
6.5.2 理解tf 212
6.5.3 直接指定关节组件角度 215
6.5.4 Rviz下的tf坐标系 216
6.5.5 查看机器人元素的tf树 217
6.6 MoveIt!简介 217
6.6.1 使用MoveIt!对Baxter手臂进行运动规划 219
6.6.2 在场景中添加物体 220
6.6.3 采用MoveIt!进行避障运动规划 222
6.7 配置真实的Baxter机器人 223
6.8 控制真实的Baxter机器人 225
6.8.1 控制关节到达航路点 225
6.8.2 控制关节的力矩弹簧 226
6.8.3 关节速度控制演示 227
6.8.4 其他示例 227
6.8.5 视觉伺服和抓取 227
6.9 反向运动 228
6.10 使用状态机实现YMCA 231
6.11 本章小结 236
第7章 空中机器人基本操控 237
7.1 四旋翼飞行器简介 238
7.1.1 风靡的四旋翼飞行器 238
7.1.2 滚转角、俯仰角与偏航角 238
7.1.3 四旋翼飞行器原理 239
7.1.4 四旋翼飞行器的组成 241
7.1.5 添加传感器 241
7.1.6 四旋翼飞行器的通信 242
7.2 四旋翼飞行器的传感器 243
7.2.1 惯性测量单元 243
7.2.2 四旋翼飞行器状态传感器 243
7.3 飞行前的准备工作 244
7.3.1 四旋翼飞行器检测 244
7.3.2 飞行前检测列表 245
7.3.3 飞行中的注意事项 245
7.3.4 需要遵循的规则和条例 245
7.4 在无人机中使用ROS 246
7.5 Hector四旋翼飞行器 246
7.5.1 下载Hector四旋翼飞行器 248
7.5.2 在Gazebo中启动Hector四旋翼飞行器 249
7.6 Crazyflie 2.0简介 256
7.6.1 无ROS情况下的Crazyflie控制 257
7.6.2 使用Crazyradio PA进行通信 258
7.6.3 加载Crazyflie ROS软件 259
7.6.4 飞行前的检查 261
7.6.5 使用teleop操控Crazyflie飞行 262
7.6.6 在运动捕获系统下飞行 265
7.6.7 控制多个Crazyflie飞行 266
7.7 Bebop简介 266
7.7.1 加载bebop_autonomy软件 268
7.7.2 使用命令控制Bebop飞行 270
7.8 本章小结 271
第8章 使用外部设备控制机器人 272
8.1 创建自定义ROS游戏控制器接口 272
8.1.1 测试游戏控制器 273
8.1.2 使用joy ROS功能包 275
8.1.3 使用自定义游戏控制器接口控制turtlesim 275
8.2 创建自定义ROS Android设备接口 280
8.2.1 安装Android Studio和工具 280
8.2.2 安装ROS-Android开发环境 281
8.2.3 术语定义 282
8.2.4 ROS-Android开发环境介绍 283
8.3 在Arduino或树莓派上创建ROS节点 284
8.3.1 使用Arduino 284
8.3.2 使用树莓派 294
8.4 本章小结 295
第9章 操控Crazyflie执行飞行任务 296
9.1 执行任务所需的组件 297
9.1.1 Kinect Windows v2 297
9.1.2 Crazyflie操作 298
9.1.3 任务软件结构 298
9.1.4 OpenCV与ROS 300
9.2 安装任务所需的软件 301
9.2.1 安装libfreenect2 301
9.2.2 安装iai_kinect2 304
9.2.3 使用iai_kinect2元包 305
9.3 任务设置 311
9.3.1 探测Crazyflie与目标 311
9.3.2 使用Kinect与OpenCV 314
9.3.3 对Crazyflie进行跟踪 317
9.4 Crazyflie控制 319
9.5 试飞Crazyflie 324
9.5.1 悬停 324
9.5.2 飞往静止目标 326
9.5.3 学到的经验 327
9.6 本章小结 328
第10章 基于MATLAB的Baxter控制 329
10.1 安装MATLAB机器人系统工具箱 329
10.1.1 MATLAB与机器人系统工具箱版本检查 330
10.1.2 机器人系统工具箱下的ROS命令 330
10.2 机器人系统工具箱与Baxter模拟器的使用 330
10.2.1 在MATLAB中安装Baxter消息 330
10.2.2 运行Baxter模拟器和MATLAB 332
10.2.3 控制Baxter运动 334
10.3 本章小结 337
內容試閱 :
◆ 译者序◆
自2010年Willow Garage正式以开源形式发布ROS框架以来,两年一次的长期支持版依然在发布,至今已发布至ROS Melodic Morenia。而于2017年发布的ROS Kinetic Kame,目前仍是应用最为广泛的版本,该版本将支持至2021年,本书针对ROS Kinetic Kame版本展开对机器人操控的论述。
本书分别对TurtleBot机器人及其最新的发行版TurtleBot 3、Bebop四旋翼飞行器、Crazyflie四旋翼飞行器以及Baxter机器人手臂等的模拟形式与实际形式进行了介绍,同时对基于ROS的机器人开发技术、基于移动智能设备的配置及操作进行了介绍。考虑到学术界采用MATLAB进行学术研究的需求,还介绍了使用MATLAB下的机器人工具箱编辑脚本、调用ROS命令的方法,读者可以根据各自的研究兴趣、研究方向进行学习。
鉴于译者水平有限,书中难免存在不足与纰漏之处,敬请读者不吝赐教。对于书中的不当之处,读者可以发送邮件到 yizhousan@163.com。感谢你的来信与指正,若有需要,读者也可以通过该邮箱索要本书源代码及彩色配图文件。
◆ 前言◆
学习ROS,并通过支持ROS的机器人(如Baxter和TurtleBot)进行实际操作,将开启一段神奇的机器人技术的学习之旅。ROS具有十分突出的优点以及鲜明的特色,但其学习曲线也较为陡峭。通过对许多实际的ROS应用进行尝试,并在总结了一系列经验教训之后,我们摸索出了一条切实有效的学习路径,最终形成了本书所论述的内容。在本书中,我们希望能够向读者呈现我们关于ROS的见解中最好、最重要的知识,并在读者的ROS学习之旅中提供循序渐进的引导。我们将结合典型的ROS机器人进行介绍,这些机器人包括TurtleBot、Baxter、Crazyflie以及Bebop,此外还将通过模拟机器人turtlesim和Hector对相关技术进行论述。
本书除了对一般性的ROS技术进行论述外,还将对ROS机器人的高级应用特性进行讲解。本书首先对ROS的基本配置进行介绍,包括ROS的安装、基本概念、主要的功能包与工具简介等。然后对相应的故障排查方法进行论述,当读者在实际操作中得到的结果与预期结果不相符时,可以按照相应方法排查故障。接下来,通过模拟的方式,先对turtlesim的ROS组成模块进行描述,然后对其他几类典型机器人的ROS组成模块进行相应的介绍。对ROS组成模块的介绍,一般遵循的流程是首先介绍基本的ROS命令,然后对ROS的功能包、节点、主题以及消息进行论述,以此来对ROS机器人操作系统的整体内容进行详细的阐述。为了对书中选用的机器人的整体性能进行描述,书中还给出了相关机器人的技术资料。
ROS涵盖了完整的软件概念、实现以及相应的工具箱,其目标是为机器人提供复杂系统和软件集成的同构视图。传感器的外部扩展库、执行器驱动以及相应的接口均已包含其中,此外ROS还囊括了大部分目前最新、最有效的算法。对于如OpenCV这样十分流行的第三方开源项目,ROS并未包含,但可以直接将其导入。此外,为了节省研究人员的时间,使研究人员能够将精力集中于自己的兴趣点上,ROS还提供了一系列的辅助工具,以对机器人应用进行控制、监控以及调试,这些工具包括rqt、Rviz、Gazebo、动态配置工具以及MoveIt!等。
本书以实例的形式循序渐进地对ROS的各部分内容进行阐述,每一部分内容都是实际的机器人实例的组成部分。对于TurtleBot机器人,将主要对导航和地图构建主题进行探索;对于Baxter机器人,则将主要介绍关节控制与路径规划主题。对于书中提及的机器人,将以简单的Python脚本为例来实现ROS的各个元素。针对书中的内容,读者都能够通过模拟机器人来加以实操练习。此外,书中还介绍了如何以模拟的形式设计并构建读者自己的机器人模型。
ROS本身的优异性能、支持ROS的各种机器人以及广泛且多样的ROS社区共同开启了一段值得一试的ROS机器人开发实用案例的学习之旅。除了书中的内容,读者还能够找到丰富的在线扩展指南、wiki资源、论坛、开发技巧等。那么现在就从本书开始,一起踏上ROS机器人开发的学习之旅吧。
本书涵盖的内容
第1章主要阐述学习ROS的优势,同时论述支持ROS的机器人平台的主要亮点,还对ROS在Ubuntu操作系统下的安装流程进行了介绍,描述了ROS的框架结构,并对其主要组件进行了描述。该章对turtlesim机器人模拟程序进行了简介,同时为了进一步加深读者对ROS组件以及ROS命令的理解,对turtlesim的使用进行了介绍。
第2章主要介绍ROS的模拟环境Gazebo。该章将引导读者一步步地构建一台差分驱动的两轮模拟机器人,并介绍统一机器人描述格式(Universal Robotic Description Format,URDF)的相关内容。此外,还将详细地介绍基本的ROS工具(如Rviz、Gazebo等)的使用方法,从而使读者能够在模拟环境下展示所构建的机器人,并与之进行交互。
第3章主要介绍一款真实的机器人(TurtleBot 2及最新发行版TurtleBot 3)的操作和控制。如果读者没有这款机器人,那么可以在Gazebo模拟环境下使用模拟的TurtleBot机器人来学习该章的内容。读者可以通过ROS命令、Python脚本程序等多种方法实现对TurtleBot机器人的操控。此外,该章还讲述了使用rqt工具及其插件对TurtleBot进行控制以及对其传感器数据进行监测的方法。
第4章探讨视觉传感器以及机器人创建周围环境地图的相关内容,不仅论述了可用作TurtleBot视觉系统的3D传感器,而且介绍了如何在ROS下进行设置与操作,使得机器人具备自主导航能力。在TurtleBot机器人导航模块中,应用了同步定位与地图创建技术。
第5章对复杂的机器人手臂进行简要介绍。采用Xacro的宏语言设计并构建了一个模拟的机器人手臂。为了操作机器人手臂,在Gazebo环境下创建了相应的控制器。通过控制器的创建,论述了简单的机器人手臂的结构和物理学的相关内容。
第6章对复杂的机器人手臂控制进行进一步的探讨,对最新型的Baxter机器人进行了介绍,并提供了一个开源的Baxter机器人模拟器,这也是本书中介绍的第二款机器人。Baxter机器人有两个7自由度的手臂以及其他一系列的传感器。该章通过实例的形式,分别在位置控制模式、速度控制模式与扭矩控制模式下,对机器人手臂的正向与反向运动控制进行了介绍。此外,该章还对一个非常有用的ROS工具MoveIt!进行了介绍,MoveIt!既可以对模拟的Baxter机器人手臂进行运动规划的仿真和执行,也可以对真实的Baxter机器人手臂进行运动规划的仿真和执行。
第7章对无人机进行论述。该章主要讲解四旋翼硬件与飞行控制的概念,以及四旋翼模拟器Hector的下载与控制。通过对模拟四旋翼飞行操控的练习,使得读者能够操控真实的四旋翼,如Bitcraze的Crazyflie或者Parrot的Bebop。对四旋翼的控制可以通过遥控或者ROS的话题消息命令实现。
第8章描述一系列可以用来对支持ROS的机器人进行控制的外部设备。操纵杆控制器、控制器开发板(Arduino和树莓派)以及所有具有ROS接口的移动设备均可以集成到读者的机器人系统之中,以实现对机器人更多的外部控制。
第9章对前面章节所介绍的多个ROS组件与概念进行组合,实现一个十分具有挑战性的任务:自主飞行。在该任务中,读者将控制Crazyflie在采用Kinect 3D传感器构建的地图下自动飞往一个远方的目标。这一任务的实现采用了ROS的消息通信机制与协同传输,从而得到四旋翼上Kinect的视野以及目标相对于四旋翼的位置,进而对飞行进行精密的规划。在此基础上,将采用了PID控制的Crazyflie的飞行控制软件作为飞行任务中的飞行控制模块,从而实现了四旋翼的自主飞行。
第10章介绍使用MATLAB及其机器人系统工具箱(Robotics System Toolbox)进行机器人通信与控制的一种新机制。用第6章中介绍过的双臂机器人Baxter来展示在MATLAB中进行ROS机器人通信与控制设置的流程,主要通过在机器人系统工具箱中添加传统消息的方法实现。对机器人手臂的通信与控制使用MATLAB脚本与ROS命令实现。
学习本书所需的知识与设备
本书给出各项任务的步骤和指令,以便读者参与其中具体实操。读者所需要的是一台安装了Ubuntu 16.04(Xenial Xerus)的电脑。同时,支持其他版本的Ubuntu以及Linux发行版,并支持macOS、Android和Windows,不过需要参考ROS wiki的文档(http:wiki.ros.orgKineticInstallation)。
本书中所用的ROS版本为Kinetic Kame,该版本是目前推荐的稳定发行版,对该版本的支持将持续到2021年4月。
书中所有的软件都是开源的,可以免费获取和使用。在对软件进行介绍时会提供相关的下载说明。本书的第1章给出了下载和设置ROS软件环境的相应指令。
下载软件时,我们推荐使用Debian软件包。当没有相应的Debian包时,推荐从GitHub软件发行库中下载。
Gazebo模拟器提供了增强的图形化处理功能,推荐使用专用显卡进行操作,但并不是必需的。
涉及的外部设备主要包括3D传感器、Xbox或PS3控制器、Arduino或树莓派控制板、Android移动设备等。
本书的目标读者
本书主要面向机器人开发人员,无论是业余爱好者还是相关研究人员,无论是专业人士还是对ROS感兴趣的人,本书都能满足需求,如果读者具备GNULinux系统和Python语言的相关知识会更好。
样式约定
本书对于不同类型的信息,采用了不同的印刷格式。下面是各类印刷格式的示例及说明。
文中的目录名、文件名、文件扩展名以及文件路径名的印刷格式均为代码体。
代码格式如下所示:
为了避免在介绍新代码时重复显示已经展示过的代码,已经展示过的代码会以省略号表示,同时新的代码会加粗显示,如下所示:
用以输入的命令行如下所示:
指令的相应输出如下所示:
新术语以及关键字的字体为黑体。
警告与重要提示。
小贴士和小技巧。
下载示例代码及彩色图像
本书的示例代码及所有截图和样图,可以从http:www.packtpub.com通过个人账号下载,也可以访问华章图书官网http:www.hzbook.com,通过注册并登录个人账号下载。
About the Authors作者简介
卡罗尔费尔柴尔德(Carol Fairchild)是费尔柴尔德机器人公司的所有人、首席工程师,该公司致力于机器人技术的开发与集成。她是休斯顿大学明湖分校巴克斯特机器人实验室的一名研究人员和兼职教授。她的研究领域主要是基于Baxter机器人的扩展应用开发。她在早期开始建造第一台机器人(这台机器人被称为Heathkit Hero)时,就已经开始了机器人技术等方面的学习与实践。她在得州农工大学获得工程技术学士学位,在休斯敦大学明湖分校获得计算机工程硕士学位。她曾在中学教授机器人学课程,是第一乐高联盟(FLL)的教练,同时也是休斯敦FIRST机器人大赛的志愿者。
托马斯L.哈曼(Thomas L. Harman)是休斯敦大学明湖分校工程系的主任。他的研究领域主要是控制系统、机器人技术与微处理器技术的应用等。他和同事关于机器人和激光的论文已经应用在了医学领域。2005年,他当选为休斯顿大学明湖分校的特聘教授。他曾担任FIRST机器人大赛的裁判与安全顾问。他已经出版的专著、合著书籍有18本,主题包括微处理器技术、MATLAB与仿真以及美国国家电气规程等。他在休斯敦大学明湖分校的实验室有一台Baxter双臂机器人、多台TurtleBot机器人以及其他几款机器人。
审校者简介About the Reviewer
兰丁约瑟夫(Lentin Joseph)是印度的一位作家、企业家、电子工程师、机器人学爱好者、机器视觉专家、嵌入式程序员,以及Qbotics实验室的创始人兼首席执行官。
Lentin在喀拉拉邦的联邦科学和技术学院(FISAT)获得了电子和通信工程学士学位。在校最后一年他制造了一个可以与人互动的社交机器人。该项目取得了巨大的成功,在许多形式的视觉和印刷媒体中都被提及。该机器人的主要特点是可以与人沟通并且智能回复消息,具有人脸、运动、颜色检测等图像处理能力。整个项目使用Python编程语言实现。他对机器人技术、图像处理和Python的兴趣始于这个项目。
毕业后,Lentin在一家专注于机器人和图像处理的创业公司工作了3年。工作期间,他学会了使用如机器人操作系统(ROS)、V-REP和Actin (机器人仿真工具)等著名的机器人软件平台,以及OpenCV、OpenNI和PCL等图像处理库进行工作。他还了解了Arduino和Tiva快速启动板上的3D 机器人设计和嵌入式编程。
积累了3年的工作经验后,Lentin创办了一家名为Qbotics实验室的新公司,该公司主要致力于在机器人和机器视觉等领域开发一些伟大的产品。他维护着一个个人网站和一个名为TechnoLabsz的技术博客。Lentin在他的技术博客上发表作品。他还是印度PyCon2013的发言人,主题是使用Python学习机器人(Learning Robotics Using Python)。
Lentin是Learning Robotics Using Python(网站:learn-robotics.com)、Mastering ROS for Robotics Programming(mastering-ros.com)以及ROS Robotics Project(http:rosrobots.com)等著作的作者。这些书籍均由Packt出版发行。第一本书是关于使用ROS和OpenCV构建自主移动机器人的,在ICRA 2015推出,并在ROS博客、Robohub、OpenCV、Python网站和其他各种论坛上展出。第二本书是有关机器人操作系统的,这也是在ICRA 2016推出的ROS类的畅销书籍之一。第三本书是在ICRA 2017推出的,也是关于ROS的畅销书籍之一。在写作的同时,他还审校了一些书籍,如Effective Robotics Programming using ROS、Raspberry Pi Image Processing Programming和Raspberry Pi Supercomputing and Scientific Programming。他启动了一个名为Robocademy. com的新平台,是专门针对使用 ROS学习机器人的。
Lentin和他的团队也是HRATC 2016挑战赛的获胜者,该竞赛是ICRA 2016的一部分。他还是ICRA 2015 HRATC挑战赛的决赛选手。