《精通ROS机器人编程(原书第2版) 》

举报
华章计算机 发表于 2020/02/10 11:59:03 2020/02/10
【摘要】 本节书摘来自华章计算机《精通ROS机器人编程(原书第2版) 》 一作者是[印度]郎坦·约瑟夫(Lentin Joseph)[意大利]乔纳森·卡卡切(Jonathan Cacace),张新宇 张志杰 等译 。

机器人设计与制作系列

精通ROS机器人编程

(原书第2版)

Mastering ROS for Robotics Programming, Second Edition

1581306920109207.jpg

 

[印度]郎坦·约瑟夫(Lentin Joseph)

[意大利]乔纳森·卡卡切(Jonathan Cacace) 著

张新宇 张志杰 等译

 

 


 

The Translator’s Words  译者序

背景

未来20年,中国的科技将逐步从模仿、跟随、追赶,过渡到引领世界,成为创新引擎。构建科技核心竞争力的唯一之路是人才的培养。

正是意识到了机器人相关人才的重要性和紧迫性,我们从2015年开始举办全国“机器人操作系统(ROS)及其应用暑期学校”。2015年有近200人参与,现场非常火爆,很多人坐在地板上听,甚至有人站在门口听。2016年的ROS暑期学校,网上有500人报名,现场有100多人报名。加上2017年300人左右的规模,2018年400多人的规模,四年时间有千余人参加过我们的ROS暑期学校。除此之外,易科机器人实验室、ROS小课堂、泡泡机器人、ROS星火计划、古月居的在线课程至少影响了4000~5000人。这样的趋势如果能够保持下去,再过5年,就会形成3万~5万人的学习团体。现在机器人产业的窗口逐渐打开,随着产业的发展、需求的推动、资本的介入,将形成强大的牵引力。现在有不少机器人公司,其中一些公司一开始只有2~3人,逐渐发展成5~6人,然后20~30人,如果他们能够坚持下去,也有可能发展成100~200人的规模。如果300~500人中有一位杰出代表愿意带领大家,3万~5万人中就有100位这样的代表。在国家层面的推动下,通过建立一批机器人学院和人工智能学院,15年后,将形成10万左右的机器人、人工智能工程师队伍,另外还有50万左右相关学科领域的工程师辅助。如果了解信息产业的发展过程,就会比较清楚,现在基本上每个大学都有计算机学院、信息学院或软件学院,这样的过程也会发生在机器人、人工智能方向上。

从地理位置的角度来讲,以上海为中心的长江三角洲和以深圳、香港、广东、珠海、东莞、中山等城市构建的大湾区将是未来机器人、人工智能领域的科技创新中心。江浙沪一带有很多经济发展很好的城市,而且聚集了很多有名的大学。最主要的是这些大学的毕业生很多都会留下来,聚集在这里;行业内的企业也会聚集在这里。

ROS正是影响整个机器人产业的灵魂,很多人还没有做好准备,还没有意识到是怎么回事,就不得不与ROS牵连在一起,卷入一场巨大的洪流中。

学习ROS的10大理由

过去几年里,ROS 在工业上的应用取得非常好的发展势头。这一方面得益于工业机器人领域长期的积累,另一方面得益于ROS内在的优势。若干年后,ROS毫无疑问将成为机器人工程师的必备技能,机器人领域的从业人员没有人能回避ROS。下面列出学习ROS的10大理由。

1)ROS是开源免费的

ROS于2007年诞生于斯坦福大学人工智能实验室,2008年至2013年期间由柳树车库研发,并逐渐形成开源生态系统。ROS使用BSD许可证,可以免费用于研究和商业项目,任何人或者任何组织都可以对ROS的源码进行修改,并且可以选择开源,也可以选择不开源。

2)大量算法在ROS中已经实现

ROS的最大魅力在于其集成了许多先进的机器人算法,同时为非常多的工具提供了接口。ROS中基于物理的仿真环境Gazebo可以模拟机器人运动学、动力学分析以及环境中的很多物理特性。又如,ROS可以与计算机视觉算法OpenCV进行通信。另外,点云库PCL实现了大量点云相关的通用算法和高效数据结构,包括点云获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等。运动规划库MoveIt!可以提供有效的规划算法,用于多种机器人的运动规划。MoveIt! 模块也已经被整合到了ROS框架中。

3)学习使用ROS的人越来越多

ROS提供松散耦合的基础通信中间件、业界先进的算法库、统一标准的软件接口、完善的教程、庞大的社区等,使ROS的学习对入门者越来越友好。而对于ROS开发者而言,ROS提供的业内领先的资源可以让他们轻松地搭建起自己的机器人系统,极大地缩减了开发周期。对研究人员而言,ROS提供的仿真环境可以用来方便地验证新算法,而与ROS相配套的硬件系统则可以轻松地在现实情况中验证算法是否有效,从而不必纠结于软硬件平台的搭建。基于这些特点,ROS自诞生之日起就开始迅速发展。在世界各地开展了形式多样的ROS学习活动,包括我们前面提过的连续四年举办的全国“机器人操作系统(ROS)及其应用暑期学校”。

4)ROS已成为机器人系统基础软件的标准

随着机器人应用浪潮的掀起,越来越多的人力和物力投入到了这片看似美妙的汪洋大海中。与之伴随的是,机器人应用软件的蓬勃发展。与传统工业机器人厂商不同,ROS自诞生之初就尝试建立机器人系统基础软件的标准,而不是在各自的自留地内封闭式发展。这背后的深层原因是,解决机器人软件问题是一个极其庞大而复杂的工程,应该把精力放在解决新的问题上,而不是重复地造基础软件的轮子。经过多年的发展,ROS也实现了其创造之初被寄予的期望,已然成为广泛使用的机器人系统基础软件的标准,在学术界得到了广泛使用,在工业界也开始崭露头角。

5)ROS有较好的易用性,而且越来越好

ROS从一开始连基本的维基页面都不完善,到现在拥有大量的教程和完善的多语言维基,一步一步地提高易用性。

但是ROS的开发者们没有止步于此,在经历了ROS版本的巨大成功之后,OSRF团队开始进行ROS 2的研究。OSRF重新编写了核心系统,主要目标是改善在不同组件之间交换信息的分布式计算机系统。ROS 2将会更好地支持小型嵌入式设备,支持多机器人协同工作并增加系统实时性。

6)模块化设计,节点独立性,使协作开发非常方便

ROS使用分布式处理框架。采用若干类型的通信,包括基于服务的同步RPC(远程过程调用)通信、基于话题的异步数据流通信,还有参数服务器上的数据存储。这些特点使可执行文件能单独设计,并且在运行时松散耦合。程序可以封装到软件包和软件包集中,以便共享和分发。ROS还支持代码库的协同,这使得协作亦能被分发。

7)大量硬件设备、传感器、驱动器和机器人平台支持ROS

目前ROS支持上百种机器人平台,包括著名的PR2机器人、UR5机械臂等。在这些机器人平台上,使用ROS可以方便地进行机器人开发。

同时,ROS可以很好地支持各种类型的传感器,包括各种摄像头(如Kinect深度摄像头、单目摄像头、双目摄像头等)和雷达(如激光雷达、超声波雷达等)。由于ROS是基于Linux的,所以在大部分Linux的平台上也可以运行ROS,如ROS可以在ARM核心板BeagleBoard上运行。所以ROS提供对嵌入式平台的固有支持。

8)你的竞争对手已经开始使用ROS

ROS的蓬勃发展,让它成为新兴的资本宠儿。截至2015年,全球约有1.5亿美元的风险投资注入与ROS相关的项目。可以看到,目前机器人创业公司大多数会将自己的原型方案架设在ROS上,并且新兴的机器人厂商也以支持ROS作为一个主要的卖点。

与此同时,一些传统的厂商也开始加入ROS的阵营。ROS Industrial是一个致力于把ROS推向工业界的ROS分支,目前已经得到3M、ABB、BMW、Ford、Boeing、Siemens等传统强势企业的支持。

在学术界,ROS的使用更为广泛。在DARPA机器人挑战赛中有18支参赛队伍使用ROS,包括NASA的Robonaut。

9)ROS能让你快速启动机器人项目的开发

开发一个机器人项目是一个综合性问题,异常复杂。从软件层面来看,它包含了最底层的硬件抽象(各种设备驱动等)、设备控制、通信、上层算法、应用系统等。任何一个公司都不可能独立完整地解决一切问题。经过多年的努力,ROS提供了一整套软硬件解决方案,开发者们可以专注于解决特定的问题,而无须花费精力构建整个平台。只需要一台可以运行Ubuntu的电脑,就可以进行机器人开发的测试仿真。ROS支持上百种机器人平台,让实际的机器人测试也变得十分方便。

10)ROS的未来很光明

人类社会正在快速向前发展,机器人领域也一直在不断革新。作为一个开源的基础机器人软件系统,ROS毫无疑问会成为这场变革的助推剂。我们看到,越来越多的初创公司开始转向ROS,并利用ROS提供的完善的软件系统快速地搭建起机器人平台。越来越多的传统大公司也注意到了这一变化,他们的产品也开始支持ROS。

所有这一切,都预示着ROS有光明的前途。

接受翻译任务

也正是在这样的背景下,我们清楚地知道我们这些与ROS有牵连的人,正在参与一项影响人类未来20年的科技变革。2018年6月,我正筹备在深圳举办全国“机器人操作系统(ROS)及其应用暑期学校”, 机械工业出版社华章公司的刘锋老师联系到我,希望我牵头翻译本书。我们了解到各家出版社已经陆续翻译出版了一些关于ROS的图书,我们对比了这些书,认为本书对高级用户学习ROS非常有帮助。于是我欣然接受了刘锋老师委托的翻译任务,并联系ROS小课堂的创始人张志杰先生一起参与翻译。我们期待这样的图书能够引领ROS的初学者进阶到中高级学者的行列。同时,我们对以往的一些翻译做了认真的梳理和推敲,规范了一些ROS术语的中文译名,并期待这样的名称既能表达原作者的意图,也能符合中国读者的阅读和理解习惯。

在整个翻译过程中,我翻译了第1章,张志杰翻译了第2章及第9~13章,刘彬翻译了第3章和第4章,邹玉龙翻译了第5章、第6章及第14章,郭宗芝翻译了第7章、第8章及第15章。我与张志杰,及一些朋友负责审阅了所有章节。最后,由我对全书进行了修改润色,统稿整理。从这次翻译的经历,我们都体会到科学技术图书的翻译是一项巨大的挑战。当译稿终于要交付的时候,所有人都松了一口气。所有参与翻译的译者都付出了大量的时间和精力,所有这些努力都无法用金钱来衡量。面对一项伟大的科技变革,任何付出都是值得的。

我还要特别感谢家人对我翻译本书的支持。

 

张新宇

2018年11月

 

 

 

 

Preface  前 言

机器人操作系统(Robot Operating System,ROS)本质是机器人系统的中间件,可帮助开发人员编写机器人应用程序,现已被机器人公司、研究机构和大学广泛采用。本书主要介绍ROS框架的高级概念,特别适合已经熟悉ROS基本概念的读者。但是,第1章还是简要介绍了ROS的基本概念,以帮助初学者快速入门。读者将了解新机器人的软件包生成、机器人建模、设计等,以及利用ROS框架对机器人进行仿真、与ROS连接。这里使用的是高级的仿真软件和ROS工具,这些工具可以辅助机器人导航、控制和传感器可视化。最后,读者将学习如何使用ROS底层控制器、小节点(nodelet)和插件等重要概念。读者可以使用普通计算机来运行本书中的大部分示例,而无须任何特殊硬件。但是,在本书的某些章节中将讨论如何使用特殊硬件将ROS与外部传感器、驱动器和I/O开发板一起使用。

本书是按照如下顺序来组织的。在介绍了ROS的基本概念之后,开始讨论如何对机器人进行建模和仿真。Gazebo和V-REP仿真器将用于控制机器人建模并与之交互,还将用于连接机器人与MoveIt!和ROS导航软件包。然后讨论ROS插件、控制器和小节点。最后,本书还会讨论如何将Matlab和Simulink软件与ROS连接。

本书的读者对象

本书为有激情的机器人开发人员或想充分利用ROS功能的研究人员而写。本书也适合已经熟悉典型机器人应用的用户,或者想要进阶学习ROS,学习如何建模、构建、控制自己机器人的用户。如果你想轻松理解本书的所有内容,强烈建议你先掌握GNU/Linux和C++编程的基础知识。

本书主要内容

第1章介绍ROS的核心基本概念。

第2章解释如何使用ROS软件包。

第3章讨论两类机器人的设计:一类是七自由度(7-DOF)机械臂,另一类是差速驱动机器人。

第4章讨论7-DOF机械臂、差速轮式机器人和ROS控制器的仿真,这些控制器有助于控制Gazebo中的机器人关节。

第5章介绍如何使用V-REP仿真器和vrep_plugin将ROS连接到仿真场景中。然后讨论7-DOF机械臂和差速移动机器人的控制。

第6章介绍如何使用ROS MoveIt!和导航软件包集的现有功能,如机器人机械臂运动控制和机器人自主导航。

第7章展示ROS中的一些高级概念,例如ROS pluginlib、小节点和Gazebo插件。本章还将讨论每个概念的功能和应用,并通过一个示例介绍其工作原理。

第8章展示如何为类似于PR2的机器人编写基本的ROS控制器。在创建控制器后,我们将使用Gazebo中的PR2来运行控制器。与此同时,我们还将看到如何为RViz创建插件。

第9章讨论一些硬件组件(如传感器和执行器)与ROS的接口。我们将看到如何使用I/O开发板(如Arduino、树莓派和Odroid-XU4)与ROS的传感器通信。

第10章讨论如何使用ROS连接各种视觉传感器,并利用开源计算机视觉库(OpenCV)和点云库(PCL)与AR Markers一起对其进行编程。

第11章介绍如何构建具有差速驱动器配置的自主移动机器人,并将其与ROS连接。

第12章讨论MoveIt!的功能,例如碰撞规避,使用3D传感器进行感知、抓握、拾取和放置。在此之后,我们将学习如何将机器人控制器硬件与MoveIt!连接。

第13章讨论如何将Matlab和Simulink软件与ROS连接。

第14章帮助大家了解和安装ROS中的ROS-Industrial软件包。我们将学习如何为工业机器人开发MoveIt! IKFast插件。

第15章讨论如何在Eclipse IDE中设置ROS开发环境,并介绍ROS中的最佳实战经验与调试技巧。

如何学习本书

为了运行本书中的示例,你需要一台运行Linux系统的计算机。这里推荐安装的Linux发行版是Ubuntu 16.04,Debian 8也可以。建议计算机配置至少有4GB的内存和一款性能优异的处理器(Intel i系列)来执行Gazebo仿真和图像处理算法。

读者甚至可以在Windows系统上托管的虚拟机或VMware软件上安装Linux系统,在这样的虚拟系统中也可以工作。但这种选择的缺点是需要更多的计算资源来运行示例,并且当ROS与真实的硬件连接时,可能会遇到各种问题。

本书中使用的ROS版本是Kinetic Kame。需要的其他软件有V-REP仿真器、Git、Matlab和Simulink。

最后,某些章节要求读者将ROS与商用硬件连接,例如I/O开发板(Arduino、Odroid和树莓派)、视觉传感器(Kinect/Asus Xition Pro)和驱动器。你必须购买这些硬件才能运行本书中的一些示例,但这并不是学习ROS必须要购买的。

下载示例代码

你可以从www.packtpub.com通过个人账号下载本书的示例代码,也可以访问华章图书官网http://www.hzbook.com,通过注册并登录个人账号下载。

本书的代码也在GitHub上托管,网址为https://github.com/PacktPublishing/Mastering-ROS-for-Robotics-Programming-Second-Edition。如果代码有更新的话,会将更新提交到GitHub代码仓库中。

除此之外,我们还在https://github.com/PacktPublishing/中提供了其他书籍和视频,这里还有一些其他代码,有兴趣就去看看吧!

下载彩图

我们还提供了一个PDF文件,其中包含本书中使用的所有截图和样图。可以在此处下载:http://www.packtpub.com/sites/default/files/downloads/MasteringROSforRoboticsProgrammingSecondEdition_ColorImages.pdf。

排版约定

在本书中使用了许多排版约定。

代码格式如下:

 image.png

命令行输入或输出格式如下:

 image.png

粗体:表示你看到的是新术语、重要单词或句子。例如,菜单或对话框中的单词会出现在文本中。下面就是一个示例:在主工具栏上,选择“File | Open Workspace”,然后选择代表ROS工作区的目录。

  警告或重要说明标志。

  提示和技巧标志。

 

 

 

About the Authors  作者简介

朗坦·约瑟夫(Lentin Joseph)是一名来自印度的作家、创业者。他是印度Qbotics实验室的创始人兼CEO,在机器人领域已经有7年的从业经验,主要研究方向包括机器人操作系统(ROS)、OpenCV和PCL等。

朗坦已经出版了3本书《Learning Robotics using Python》《Mastering ROS for Robotics Programming》和《ROS Robotics Projects》。

目前,他在印度攻读硕士学位,并在美国卡内基–梅隆大学(CMU)机器人学院从事研究工作。

乔纳森·卡卡切(Jonathan Cacace)于1987年12月13日出生于意大利。在意大利那不勒斯腓特烈二世大学获计算机科学硕士学位及信息与自动化工程博士学位。目前,乔纳森是那不勒斯腓特烈二世大学PRISMA实验室的博士后,主要研究工业机器人和服务机器人,曾经开发了几款基于ROS且集成了机器人感知控制的机器人应用。

“非常感谢我的朋友、父母和所有陪我一路走来的人,是你们让我的生活变得丰富多彩。”

 

 

 

 

译者简介  About the Translators

张新宇,副教授,现为华东师范大学“智能机器人运动与视觉实验室”负责人。毕业于浙江大学,获本科、硕士、博士学位。博士毕业后,在韩国梨花女子大学图形学与虚拟现实研究中心从事博士后研究,后受聘为讲师和研究教授。曾受聘美国北卡罗来纳州立大学教堂山分校计算机系研究科学家,从事机器人、虚拟现实方面的研究。

2013年回国后立即着手筹建华东师范大学 “智能机器人运动与视觉实验室”,将研究内容定位于机器人运动规划、计算机视觉、虚拟现实、基于物理的计算机模拟等方向。2015年年底创建华东师范大学“创客空间”,推动创客教育与创新活动。2016年年底负责筹建华东师范大学“虚拟现实与智能计算实验室”。2017年,领导成立面向华东师范大学的学生社团“机器人俱乐部”和“虚拟现实俱乐部”,推动相关技术的科普工作。2015~2018年连续四年举办全国“机器人操作系统(ROS)及其应用暑期学校”,四年间共有近两百所高校,上千名本科生、硕士、博士生,以及机器人企业的开发人员参加暑期学校的学习,授课视频在线点击超过10万次。2017年创立中国机器人操作系统(ROS)教育基金会,与国内外同行共同推进机器人操作系统在中国的宣传普及与产业应用。

张志杰,2016年3月创立ROS小课堂,致力于ROS教育的非盈利组织。ROS小课堂一直以开源、免费的形式提供优质的ROS学习资源,在优酷视频平台(http://i.youku.com/rostutorials)上提供ROS学习视频,目前已有70多部ROS学习视频,累计播放量9万余次。ROS小课堂同时还注册了微信公众号,并拥有ROS小课堂的独立网站www.corvin.cn。ROS小课堂已经连续两年(2017年和2018年)被邀请参加全国 “机器人操作系统(ROS)及其应用暑期学校”,在更大的舞台上与大家分享更多更好的ROS学习经验。张志杰还受邀参加北京钢铁侠科技有限公司组织的ROS分享活动,与田之博特合作开发和销售ROS2GO便携系统。ROS小课堂将不断努力,持续为国内的ROS普及与教育贡献一份微薄之力。

 

 

 

Contents  目 录


译者序

前言

作者简介

译者简介

第1章 ROS简介  1

1.1 为什么要学习ROS  1

1.2 在机器人开发中,人们为什么更愿意选择ROS  2

1.3 为什么有些人不愿意选择ROS  3

1.4 理解ROS的文件系统  4

1.4.1 ROS软件包  5

1.4.2 ROS超软件包  7

1.4.3 ROS消息  7

1.4.4 ROS服务  9

1.5 理解ROS的计算图  9

1.5.1 ROS节点  11

1.5.2 ROS消息  12

1.5.3 ROS话题  13

1.5.4 ROS服务  13

1.5.5 ROS消息记录包  14

1.5.6 ROS节点管理器  14

1.5.7 应用ROS参数  16

1.6 ROS的社区  17

1.7 学习ROS需要做哪些准备  17

1.8 习题  20

1.9 本章小结  20

第2章 ROS编程入门  21

2.1 创建一个ROS软件包  21

2.1.1 学习ROS话题  23

2.1.2 创建ROS节点  23

2.1.3 编译生成节点  26

2.2 添加自定义的msg和srv文件  28

2.3 使用ROS服务  30

2.3.1 使用ROS动作库  34

2.3.2 编译ROS动作服务器和客户端  37

2.4 创建启动文件  39

2.5 话题、服务和动作库的应用  41

2.6 维护ROS软件包  41

2.7 发布ROS软件包  42

2.7.1 准备发布ROS软件包  43

2.7.2 发布软件包  43

2.7.3 为ROS软件包创建维基页面  45

2.8 习题  47

2.9 本章小结  47

第3章 在ROS中为3D机器人建模  48

3.1 机器人建模的ROS软件包  49

3.2 利用URDF理解机器人建模  50

3.3 为机器人描述创建ROS软件包  52

3.4 创建我们的第一个URDF模型  52

3.5 详解URDF文件  54

3.6 在RViz中可视化机器人3D模型  55

3.7 向URDF模型添加物理属性和碰撞属性  57

3.8 利用xacro理解机器人建模  58

3.8.1 使用属性  58

3.8.2 使用数学表达式   59

3.8.3 使用宏  59

3.9 将xacro转换为URDF  59

3.10 为7-DOF机械臂创建机器人描述  60

3.10.1 机械臂规格  61

3.10.2 关节类型  61

3.11 解析7-DOF机械臂的xacro模型  61

3.11.1 使用常量  61

3.11.2 使用宏  62

3.11.3 包含其他xacro文件  62

3.11.4 在连杆中使用网格模型  63

3.11.5 使用机器人夹爪  63

3.11.6 在RViz中查看7-DOF机械臂  63

3.12 为差速驱动移动机器人创建机器人模型  66

3.13 习题  70

3.14 本章小结  70

第4章 使用ROS和Gazebo进行机器人仿真  71

4.1 使用Gazebo和ROS仿真机械臂  71

4.2 为Gazebo创建机械臂仿真模型  72

4.2.1 为Gazebo机器人模型添加颜色和纹理  73

4.2.2 添加transmission标签来驱动模型  74

4.2.3 添加gazebo_ros_control插件  74

4.2.4 在Gazebo中添加3D视觉传感器  75

4.3 仿真装有Xtion Pro的机械臂  76

4.4 在Gazebo中使用ROS控制器  78

4.4.1 认识ros_control软件包  78

4.4.2 不同类型的ROS控制器和硬件接口  79

4.4.3 ROS控制器如何与Gazebo交互  79

4.4.4 将关节状态控制器和关节位置控制器连接到手臂  80

4.4.5 在Gazebo中启动ROS控制器  81

4.4.6 控制机器人的关节运动  83

4.5 在Gazebo中仿真差速轮式机器人  83

4.5.1 将激光雷达添加到机器人中  85

4.5.2 在Gazebo中控制机器人移动  86

4.5.3 在启动文件中添加关节状态发布者  87

4.6 添加ROS遥控节点  88

4.7 习题  89

4.8 本章小结  89

第5章 用ROS和V-REP进行机器人仿真  91

5.1 安装带有ROS的V-REP  91

5.2 理解vrep_plugin  95

5.2.1 使用ROS服务与V-REP交互  96

5.2.2 使用ROS话题与V-REP交互  98

5.3 使用V-REP和ROS仿真机械臂  101

5.4 在V-REP下仿真差速轮式机器人  107

5.4.1 在V-REP中添加激光传感器  109

5.4.2 在V-REP中添加3D视觉传感器  110

5.5 习题  112

5.6 本章小结  112

第6章 ROS MoveIt!与导航软件包集  113

6.1 安装MoveIt!  113

6.2 使用配置助手工具生成MoveIt!配置软件包  118

6.2.1 第1步:启动配置助手工具  118

6.2.2 第2步:生成自碰撞矩阵  120

6.2.3 第3步:增加虚拟关节  120

6.2.4 第4步:添加规划组  121

6.2.5 第5步:添加机器人姿态  122

6.2.6 第6步:设置机器人的末端执行器  122

6.2.7 第7步:添加被动关节  123

6.2.8 第8步:作者信息  123

6.2.9 第9步:生成配置文件  123

6.3 使用MoveIt!配置软件包在RViz中进行机器人运动规划  124

6.3.1 使用RViz运动规划插件  125

6.3.2 MoveIt!配置软件包与Gazebo的接口  128

6.4 理解ROS导航软件包集  133

6.4.1 ROS导航硬件的要求  133

6.4.2 使用导航软件包  134

6.5 安装ROS导航软件包集  136

6.6 使用SLAM构建地图  136

6.6.1 为gmapping创建启动文件  137

6.6.2 在差速驱动机器人上运行SLAM  138

6.6.3 使用amcl和静态地图实现自主导航  141

6.6.4 创建amcl启动文件  141

6.7 习题  144

6.8 本章小结  144

第7章 使用pluginlib、小节点和Gazebo 插件  145

7.1 理解pluginlib   145

7.2 理解ROS小节点  151

7.3 理解Gazebo插件  156

7.4 习题  160

7.5 本章小结  160

第8章 ROS控制器和可视化插件编程  161

8.1 理解 ros_control软件包集  162

8.1.1 controller_interface软件包  162

8.1.2 控制器管理器  164

8.2 使用ROS编写一个基本的关节控制器  164

8.2.1 第1步:创建控制器软件包  165

8.2.2 第2步:创建控制器头文件  165

8.2.3 第3步:创建控制器源文件  166

8.2.4 第4步:控制器源文件解析  166

8.2.5 第5步:创建插件描述文件  167

8.2.6 第6步:更新package.xml文件  168

8.2.7 第7步:更新CMake-Lists.txt文件  168

8.2.8 第8步:编译控制器  168

8.2.9 第9步:编写控制器配置文件  168

8.2.10 第10步:编写控制器的启动文件  169

8.2.11 第11步:在Gazebo中运行控制器和7-DOF机械臂  169

8.3 理解ROS可视化工具(RViz)及其插件  171

8.3.1 Displays面板  172

8.3.2 RViz工具栏  172

8.3.3 Views面板  172

8.3.4 Time面板  172

8.3.5 可停靠面板  172

8.4 编写用于遥控操作的RViz插件  172

8.5 习题  178

8.6 本章小结  178

第9章 将ROS与I/O开发板、传感器、执行机构连接  179

9.1 理解Arduino-ROS接口  179

9.2 Arduino-ROS接口是什么  180

9.2.1 理解ROS中的rosserial软件包  181

9.2.2 理解Arduino中的ROS节点API  185

9.2.3 ROS-Arduino发布者和订阅者实例  187

9.2.4 Arduino-ROS接口实例——LED灯闪烁/按按钮  190

9.2.5 Arduino-ROS接口实例——ADXL 335加速度计  192

9.2.6 Arduino-ROS接口实例——超声波测距传感器  194

9.2.7 Arduino-ROS接口实例——里程计发布者  197

9.3 非Arduino开发板与ROS接口  199

9.3.1 在Odroid-XU4和树莓派2上配置ROS  199

9.3.2 用ROS控制树莓派2 上的LED灯闪烁  206

9.3.3 在树莓派2上使用ROS测试按钮和LED灯闪烁  208

9.3.4 在树莓派2上运行示例  211

9.4 将DYNAMIXEL驱动器连接到ROS  212

9.5 习题  212

9.6 本章小结  212

第10章 用ROS对视觉传感器编程、OpenCV、PCL  213

10.1 理解ROS-OpenCV开发接口软件包  213

10.2 理解ROS-PCL开发接口软件包  214

10.3 在ROS中连接USB相机  216

10.4 ROS与相机校准  218

10.4.1 使用cv_bridge在ROS和OpenCV之间转换图像  221

10.4.2 使用ROS和OpenCV进行图像处理  221

10.5 在ROS中连接Kinect与华硕Xtion Pro  225

10.6 将英特尔Real Sense相机与ROS连接  228

10.7 在ROS中连接Hokuyo激光雷达  232

10.8 处理点云数据  233

10.8.1 如何发布点云  234

10.8.2 如何订阅和处理点云  235

10.8.3 将点云数据写入点云数据(PCD)文件  236

10.8.4 从PCD文件中读取并发布点云  237

10.9 物体姿态估计与AR标记检测  239

10.10 习题  243

10.11 本章小结  244

第11章 在ROS中构造与连接差速驱动移动机器人  245

11.1 Chefbot DIY移动机器人及其硬件配置  246

11.1.1 使用Energia IDE来烧写Chefbot固件  248

11.1.2 讨论Chefbot的ROS软件包接口  249

11.1.3 从编码器计数计算里程计信息  254

11.1.4 根据ROS twist消息计算马达转速  256

11.1.5 为Chefbot机器人配置导航软件包集  257

11.1.6 配置gmapping节点  257

11.1.7 配置导航软件包集  259

11.1.8 理解AMCL  264

11.1.9 在RViz中使用导航功能  267

11.1.10 导航软件包中避障  272

11.1.11 Chefbot机器人仿真  273

11.1.12 从ROS节点向导航软件包集发送一个目的地  276

11.2 习题  278

11.3 本章小结  278

第12章 探索ROS-MoveIt!的高级功能  279

12.1 使用move_group的C++接口进行运动规划  279

12.1.1 使用MoveIt! C++ API规划随机路径  280

12.1.2 使用MoveIt! C++ API规划自定义路径  281

12.2 使用MoveIt!进行机械臂的碰撞检测  283

12.2.1 向MoveIt!添加碰撞对象  283

12.2.2 从规划场景中移除碰撞对象  286

12.2.3 向机器人连杆上添加一个碰撞对象  286

12.2.4 使用MoveIt! API检查自碰撞  287

12.3 使用MoveIt!和Gazebo处理视觉  288

12.4 使用MoveIt!执行拾取和放置任务  294

12.4.1 使用GPD计算抓握姿态  297

12.4.2 在Gazebo和真实机器人上执行拾取和放置动作  300

12.5 理解用于机器人硬件接口的DYNAMIXEL ROS伺服控制器   300

12.5.1 DYNAMIXEL伺服舵机  300

12.5.2 DYNAMIXEL-ROS接口  301

12.6 7-DOF机械臂与ROS MoveIt!  302

12.6.1 为COOL机械臂创建一个控制器软件包  303

12.6.2 COOL机械臂的MoveIt!配置  306

12.7 习题  308

12.8 本章小结  308

第13章 在MATLAB和Simulink中使用ROS  309

13.1 学习使用MATLAB与MATLAB-ROS  309

13.1.1 机器人系统工具箱和ROS-MATLAB接口入门  310

13.1.2 ROS话题和MATLAB回调函数  313

13.1.3 为Turtlebot机器人设计一个避障系统  317

13.2 学习使用ROS与Simulink  321

13.2.1 在Simulink中创建波形信号积分器  321

13.2.2 在Simulink中使用ROS消息  323

13.2.3 在Simulink中发布ROS消息  323

13.2.4 在Simulink中订阅ROS话题  327

13.3 用Simulink开发一个简单的控制系统  328

13.4 习题  332

13.5 本章小结  332

第14章 ROS与工业机器人  333

14.1 理解ROS-Industrial软件包  333

14.1.1 ROS-Industrial的目标  334

14.1.2 ROS-Industrial简史  334

14.1.3 ROS-Industrial优点  334

14.2 安装ROS-Industrial软件包  334

14.3 ROS-Industrial软件包框图  335

14.4 为工业机器人创建URDF  336

14.5 为工业机器人创建MoveIt!配置  337

14.5.1 更新MoveIt!配置文件  340

14.5.2 测试MoveIt!配置  341

14.6 安装UR机械臂的ROS-Industrial软件包  341

14.7 理解UR机械臂的MoveIt!配置  343

14.8 使用真实的UR机器人和ROS-I  345

14.9 ABB机器人的MoveIt!配置  346

14.10 ROS-Industrial机器人支持软件包  349

14.11 ROS-Industrial 机器人客户端软件包  351

14.12 ROS-Industrial 机器人驱动软件包  352

14.13 理解MoveIt! IKFast插件  354

14.14 为ABB IRB 6640机器人创建MoveIt! IKFast插件  354

14.14.1 开发MoveIt! IKFast插件的前提条件  354

14.14.2 OpenRave和IKFast模块  354

14.15 为使用OpenRave,创建机器人的COLLADA文件  357

14.16 为IRB 6640机器人生成IKFast CPP文件  358

14.17 习题  361

14.18 本章小结  361

第15章 调试方法与最佳实战技巧  362

15.1 在Ubuntu中安装RoboWare Studio  362

15.1.1 安装和卸载RoboWare Studio  363

15.1.2 RoboWare Studio入门  363

15.1.3 在RoboWare Studio中创建ROS软件包  364

15.1.4 在RoboWare Studio中编译ROS工作区  366

15.1.5 在RoboWare Studio中运行ROS节点  367

15.1.6 在RoboWare界面启动ROS工具  368

15.1.7 处理活动的ROS话题、节点和服务  369

15.1.8 使用RoboWare工具创建ROS节点和类  370

15.1.9 RoboWare Studio中的ROS软件包管理器  371

15.2 ROS的最佳实战技巧与经验  372

15.3 ROS软件包中的最佳实战技巧与经验  374

15.4 ROS中的重要调试技巧  374

15.5 习题  377

15.6 本章小结  378


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。