机器人操作系统(Robot Operating System,ROS),是目前最流行的机器人学中间件,在全世界诸多大学和与机器人相关的行业中得到了广泛应用。自从ROS推出以来,许许多多搭载了ROS的机器人进入市场,用户能够通过其应用程序轻松使用这些机器人。ROS的一个主要特点是它的开源特性。ROS不需要用户重新发明“轮子”;相反,ROS中标准化的机器人操作和应用程序开发十分简单。
本书全面更新和修订了第1版,将介绍更新的ROS功能包、更引人入胜的项目案例以及一些新增特性。本书中的项目案例均基于ROS Melodic Morenia,对应的Ubuntu版本为Ubuntu Bionic 18.04。
通过本书,读者将理解机器人是怎样应用于各行各业的,并将一步步地了解构建异构机器人解决方案的流程与步骤。除了介绍ROS中的服务调用和动作特性之外,本书还将介绍一些更酷的技术,让机器人以智能的方式处理复杂的任务。这些知识将为读者构建更智能、更具自主化能力的机器人铺平道路。此外,我们还将介绍ROS-2,以便读者能够了解此版本与以前的ROS版本之间的差异,并在为应用程序选择特定中间件方面提供帮助。
企业和研究机构主要关注计算机视觉和自然语言处理领域。虽然本书的第1版介绍了一些简单的视觉应用程序,如物体检测和人脸跟踪,但本版还将介绍行业中使用最广泛的智能扬声器平台之一——亚马逊的Alexa,以及如何使用它控制机器人。同时,我们将引入新的硬件,如NVIDIA Jetson Nano、华硕Tinkerboard和BeagleBone Black,并探索它们与ROS融合应用的能力。
虽然人们可能知道如何控制单台机器人,但ROS社区用户面临的最常见问题之一是使用多个机器人协同工作,无论它们是否属于同一类型。在这种情况下,控制问题将变得十分复杂,因为机器人可能遵循相似的话题名称,并可能导致操作序列的混乱。本书将重点针对可能的冲突提出相应的解决方案。
本书还涉及强化学习,包括如何将强化学习应用于机器人学和ROS之中。此外,读者还将发现其他更有趣的项目,如构建自动驾驶汽车、使用ROS进行深度学习,以及使用虚拟现实头盔(VR头盔)和Leap Motion(一种体感控制器)构建遥操作解决方案。目前这些领域的技术还处于发展之中,相应的研究人员正在不断地进行研究。
本书主要面向学生、机器人技术爱好者、相关领域的专业人员。此外,本书还适用于那些对从头开始学习和编写运动控制与传感器感知程序、算法感兴趣的人。本书甚至可能有助于初创企业开发新产品,或帮助研究人员利用现有资源创造新的创新成果。本书也适用于那些想在软件领域工作或成为机器人软件工程师的人。
第1章主要向初学者概述ROS的基础知识。本章将帮助读者理解ROS软件框架的基本思想和概念。
第2章介绍ROS的最新框架——ROS-2。基于该框架,读者将能够使用ROS进行实时应用程序的开发。本章的结构与第1章类似,主要是帮助读者厘清ROS-1与ROS-2之间的区别,同时理解两个版本的能力与局限。
第3章介绍怎样在模拟环境下构建移动机器人以及机械臂,并将两者结合起来,通过ROS对其进行控制。
第4章介绍基于状态机进行复杂机器人任务处理的技术,这些技术使得读者可以在使用机器人执行连续和复杂的任务管理时进行策略调整。
第5章是第3章、第4章内容的综合应用,基于这两章内容构建一个用户应用程序。该应用程序的功能是控制移动机械臂运送物品。本章将详细介绍上述应用程序的构建过程。
第6章介绍通过ROS在多个机器人间进行通信的方法,其中的机器人既可以是同类型的,也可以是不同类型的(即异构多机器人系统)。在此基础上,还将介绍对一组多机器人进行单独或同时控制的方法。
第7章介绍新型的嵌入式控制器及处理器板,例如基于STM32的控制器、Tinkerboard、Jetson Nano以及其他类似产品。本章还将介绍怎样通过ROS控制这些板卡的GPIO(General-Purpose Input/Output,通用输入/输出接口),以及如何通过Alexa提供的语音交互功能进行语音控制。
第8章介绍机器人学领域最重要的学习技术之一——强化学习。本章将介绍强化学习的内涵,并通过实例介绍强化学习背后的数学知识。此外,还将通过一系列实例展示强化学习技术是如何在ROS中进行应用的。
第9章介绍深度学习在机器人领域的应用。本章将介绍如何使用深度学习实现图像识别,还将介绍使用SVM(Support Vector Machine,支持向量机)的应用程序。
第10章是本书中最有趣的内容之一。本章将展示如何使用ROS和Gazebo构建一辆模拟的自动驾驶汽车。
第11章展示如何通过VR头盔和体感控制器Leap Motion实现对机器人的远程操控。本章将介绍VR头盔的应用,这是当前最流行的技术之一。
第12章通过一个项目展示如何在ROS下使用OpenCV库。在本项目中,将构建一个最基本的人脸跟踪器,实现摄像头对人脸的实时跟踪。本章将使用诸如Dynamixel的智能伺服系统实现机器人的旋转。
·读者需要一台运行Linux系统(最佳版本为Ubuntu 18.04)的个人计算机。
·个人计算机配置需求为:具有显卡,内存不小于4GB(8GB更佳)。这主要是为了更好地运行Gazebo,也是为了更好地进行点云和计算机视觉处理。
·读者最好能够拥有书中提到的传感器、执行器以及I/O板,并且能够将这些硬件连接到自己的计算机上,同时为了能够复制相关代码,读者需要安装Git。
·如果读者使用Windows系统,则推荐下载VirtualBox,并在其中安装和配置Ubuntu。不过,需要提醒的一点是,在虚拟机中运行ROS相关程序、连接某些硬件时可能存在某些问题。
本书的示例代码及所有截图和样图,可以从 http://www.packtpub.com 通过个人账号下载,也可以访问华章图书官网 http://www.hzbook.com ,通过注册并登录个人账号下载。
下载完成后,读者可以将代码压缩包解压到本地(请确保已经安装了解压缩软件),具体操作系统的相应解压缩软件如下:
·Windows下为WinRAR/7-Zip。
·Mac下为Zipeg/iZip/UnRarX。
·Linux下为7-Zip/PeaZip。
此外,读者还可以通过GitHub下载本书代码,网址为:
https://github.com/PacktPublishing/ROS-Robotics-Projects-SecondEdition
如果代码有所更新,则上述网址相应的仓库代码也会进行更新。
代码段示例:
输入或输出命令行示例:
表示警告或重要的说明。
表示提示和技巧。