ROS机器人开发:实用案例分析
全面介绍移动机器人、飞行及机器人与机器人手臂等各类机器人的ROS实现,包含丰富实例,并提供源代码
基本信息
- 原书名:ROS Robotics By Example
- 作者: (美)卡罗尔·费尔柴尔德(Carol Fairchild) (美)托马斯L.哈曼(Thomas L. Harman)
- 译者: 吴中红 石章松 潘丽
- 丛书名: 机器人设计与制作系列
- 出版社:机械工业出版社
- ISBN:9787111593720
- 上架时间:2018-4-8
- 出版日期:2018 年4月
- 开本:16开
- 版次:1-1
- 所属分类:计算机 > 人工智能 > 智能机器人

编辑推荐
通过阅读本书,你将:
了解ROS的基本原理及其在机器人实例中的应用
控制移动机器人在一个环境中自主导航
使用URDF和Xacro建模机器人,并在ROS Gazebo模拟中操作
控制视觉伺服的7自由度机器人手臂
使用四旋翼飞行器进行自主锚点
掌握Gazebo、rviz、rqt和Move-It等ROS工具的使用
使用移动设备和控制器控制机器人
联合机器人完成一个协作任务
内容简介
作译者
卡罗尔·费尔柴尔德(Carol Fairchild)是Fairchild Robotics公司的所有人、首席工程师,该公司致力于机器人技术的开发与集成。卡罗尔是休斯顿大学明湖分校(University of Houston-Clear Lake,UHCL)Baxter实验室的一名研究人员,同时也是一名兼职教授。她的研究领域主要是基于Baxter机器人的扩展应用开发。在费尔柴尔德女士早期开始建造她的第一台机器人(这台机器人被称为Heathkit Hero)时,她就已经开始了机器人技术方方面面的学习与实践。她在得州农工大学(Texas A&M)获得工程技术学士学位,并在休斯顿大学明湖分校获得计算机工程的硕士学位。费尔柴尔德女士曾在中学教授机器人学课程,是第一乐高联盟(FIRST LEGO League,FLL)的教练,同时也是灵感和科技大赛(For Inspiration and Recognition of Science and Technology,FIRST)的志愿者。
托马斯L.哈曼(Thomas L. Harman)博士是休斯顿大学明湖分校工程系的主任。他的研究领域主要是控制系统、机器人技术与微处理器技术的应用。他和他同事关于机器人和激光的论文已经应用在了医学领域。2005年,他当选为休斯顿大学明湖分校的特聘教授。他曾担任FIRST机器人大赛的裁判与安全顾问。托马斯博士已经出版的专著、合著书籍有18本,主题包括微处理器技术、MATLAB与仿真以及美国国家电气规程等。他在休斯顿大学明湖分校的实验室有一台Baxter双臂机器人、多台TurtleBot机器人以及其他几款机器人。
目录
作者简介
前言
第1章 ROS初体验1
1.1 ROS的用途以及学习ROS的好处1
1.2 哪些机器人采用了ROS2
1.3 安装并启动ROS4
1.3.1 配置Ubuntu系统的软件源4
1.3.2 设置Ubuntu系统软件源列表5
1.3.3 设置Ubuntu系统密钥5
1.3.4 安装ROS Indigo5
1.3.5 初始化rosdep6
1.3.6 环境设置6
1.3.7 安装rosinstall7
1.3.8 故障排除—ROS环境测试7
1.4 生成一个catkin工作空间7
1.5 ROS的功能包与清单8
1.5.1 ROS清单9
1.5.2 探索ROS功能包9
1.6 ROS节点与ROS节点管理器11
译者序
目前市面上诸多介绍机器人开发的书籍中,有的专注于理论讲解,其中一串串的复杂公式令人望而生畏,有的虽然主要介绍实践性的内容,但忽略了很多读者没有一台真正的机器人的现状。而一台机器人往往价值不菲,面对充满诱惑的机器人技术学习之旅,许多人因为没有一台机器人而戛然止步。本书将为那些没有实际机器人的爱好者提供一条学习机器人应用程序开发的有效途径。
本书针对基于ROS的机器人开发技术进行介绍。ROS的特点和优点在许多书籍中都做过介绍,这里不再赘述。下面着重对本书的特点进行说明,以利于读者选择和学习。
涵盖模拟机器人模型构建与真实机器人操控,有无真机均可上手。
本书对使用URDF文件以及SDF文件来构建模拟的两轮机器人、机器人手臂模型的方法进行了详细的描述,并对Gazebo仿真系统知识进行了深入的讲述,为读者构建自己的模拟机器人提供了引导,同时为没有实际机器人的读者提供了学习机器人开发的途径。
机器人类型包括地面机器人、空中机器人与机器人手臂,全面满足各类读者。
本书对TurtleBot机器人、Bebop四旋翼无人机、Crazyflie四旋翼无人机以及Baxter机器人手臂均进行了全面的介绍,内容包括各类机器人的虚拟模型构建、导航控制、机械臂的关节控制、路径规划、基于外部设备(游戏手柄、控制开发板等)的机器人控制以及ROS的高级应用等内容,内容全面而新颖。
应用场景包括机器人操控、导航以及机器人手臂路径规划、移动应用开发。
针对各类机器人,分别针对相应类型机器人的特点与主要应用场景,进行了模拟环境下的模型构建与操控以及典型真实机器人操控的内容讲解,并提供了相应的源代码,以供参考和学习,极大地降低了读者的学习难度,便于与作者提供的例程进行对照学习,事半功倍。
本书的两位作者均是长期从事ROS机器人研究与教学的专家,本书的内容深入浅出、覆盖面广,相信必将给读者带来不一样的学习体验。尽管目前ROS版本已经发展到Lunar,但事实上,Indigo仍是目前应用最为广泛的发行版,也是机器人研究领域中开源项目支持最多的版本。相较于目前的Jade、Kinetic以及Lunar版本,Indigo版本并无本质上的区别,其区别主要体现在与Ubuntu系统(Linux系统)内核版本的绑定上。而随着ROS 2.0的发布,在实时处理方面有需要的读者则可以直接考虑学习ROS 2.0,而本书也同样能够提供一定的参考。
鉴于译者水平有限,书中难免存在不足与纰漏,欢迎读者不吝赐教,对于书中的不当之处,读者可以发送邮件到 yizhousan@163.com,感谢您的来信与指正。
前言
除了对一般性的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的操作和控制。如果读者没有该型机器人,那么可以在Gazebo模拟环境下使用模拟的TurtleBot机器人来学习本章的内容。读者可以通过ROS命令、Python脚本程序等多种方法实现对TurtleBot机器人的操控。此外,本章还讲述了使用rqt工具及其插件对TurtleBot进行控制以及对其传感器数据进行监控的方法。
第4章探讨了视觉传感器以及对于机器人创建周围环境地图的相关内容。论述了可用作TurtleBot视觉系统的3D传感器,并介绍了在ROS下进行设置与操作,使得机器人具备自主导航能力的内容。在TurtleBot机器人导航模块中,应用了同步定位与地图创建技术。
第5章对复杂的机器人手臂进行了简要介绍。采用Xacro的宏语言设计并构建了一个模拟的机器人手臂。为了操作机器人手臂,在Gazebo环境下创建了相应的控制器。通过控制器的创建,论述了简单的机器人手臂的结构和物理学的相关内容。
第6章对复杂的机器人手臂控制进行了更进一步的探讨。对最新型的Baxter机器人进行了介绍,这也是本书中介绍的第二款机器人。Baxter机器人有两个7自由度的手臂以及其他一系列的传感器,并提供了一个开源的Baxter机器人模拟器,本章正是采用这一机器人手臂模拟器进行论述。通过实例的形式,分别在位置控制模式、速度控制模式与扭矩控制模式下,对机器人手臂的正向与反向运动控制进行了介绍。此外,本章还对一个非常有用的ROS工具—MoveIt进行了介绍,MoveIt既可以对模拟的Baxter机器人手臂进行运动规划的仿真和执行,也可以对真实的Baxter机器人手臂进行运动规划的仿真和执行。
第7章对一个日渐风靡的机器人领域—无人机进行了论述。本章主要针对四旋翼的相关内容进行阐述,对四旋翼硬件与飞行控制的概念进行了论述。对四旋翼模拟器Hector的下载与控制进行了介绍,通过对模拟四旋翼飞行操控的练习,使读者能够对真实的四旋翼(如Bitcraze的Crazyflie或者Parrot的Bebop)进行操控。对四旋翼的控制可以使用遥控或者ROS的主题/消息命令实现。
第8章对一系列可以用来对支持ROS的机器人进行控制的外部设备进行了描述。Joystick游戏手柄、控制器开发板(Arduino和树莓派)以及所有移动设备均具有ROS接口,这些接口可以集成到读者的机器人系统之中来实现对机器人更多的外部控制。
第9章对书中前面章节所介绍的多个ROS组件与概念进行集成,从而实现一个十分具有挑战性的任务:自主飞行。在该任务中,读者将在采用Kinect 3D传感器构建的地图下控制Crazyflie四旋翼飞行器自动飞往一个“远方”的目标。这一任务采用了ROS的消息通信机制与协同传输,从而得到四旋翼飞行器上Kinect的视野以及目标相对于四旋翼的位置,从而对飞行进行精密的规划,在此基础上,将采用了PID控制的Crazyflie的飞行控制软件作为飞行任务中的飞行控制模块,从而实现了四旋翼的自主飞行。
第10章对高级ROS机器人应用的相关内容进行了论述,激励读者对ROS功能做更加深入的学习。对机器人的语音控制、人脸检测与识别以及机器人语音功能等都做了描述。
学习本书内容所需的基础知识与设备
本书的形式是给出各项任务内容的步骤指令,并由读者参与其中,具体实操。读者需要一台安装了Ubuntu14.04(Trusty Tahr)的电脑。同时也支持其他版本的Ubuntu以及Linux发行版,此外也支持Mac OS X、Android和Windows,不过需要参考ROS wiki的文档(地址:http://wiki.ros.org/Distributions)。
本书中所用的ROS版本为Indigo Igloo,该版本是目前推荐的稳定发行版,对该版本的支持将持续到2019年4月。书中内容对其他版本的ROS理论上是可支持的,但是并没有进行测试。
书中所有的软件都是开源的,可以免费获取和使用。在对相关软件进行介绍时会提供相关的下载说明。本书第1章给出了下载和设置ROS软件环境的相应指令。
媒体评论
通过阅读本书,你将:
?了解ROS的基本原理及其在机器人实例中的应用
?控制移动机器人在一个环境中自主导航
?使用URDF和Xacro建模机器人,并在ROS Gazebo模拟中操作
?控制视觉伺服的7自由度机器人手臂
?使用四旋翼飞行器进行自主锚点
?掌握Gazebo、rviz、rqt和Move-It等ROS工具的使用
?使用移动设备和控制器控制机器人
?联合机器人完成一个协作任务