ROS机器人程序设计(原书第2版).html.pdf

上传人:紫*** 文档编号:2916644 上传时间:2020-05-22 格式:PDF 页数:112 大小:21.28MB
返回 下载 相关 举报
ROS机器人程序设计(原书第2版).html.pdf_第1页
第1页 / 共112页
亲,该文档总共112页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《ROS机器人程序设计(原书第2版).html.pdf》由会员分享,可在线阅读,更多相关《ROS机器人程序设计(原书第2版).html.pdf(112页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、推荐序一 21世纪是什么样的世纪?是物联网的世纪?是VR的世纪?也许吧,但我更相信21世纪是机器人的世纪。 目前,我国已经步入经济转型的拐点区间,人口红利越来越难以支撑中国经济的发展和进步。在很多行业都已经开始了机器 换人、生产工艺升级换代的步伐。工信部、发改委、财政部日前联合印发了机器人产业发展规划(20162020年)。这份规 划指出:“到2020年,我国工业机器人年产量达到10万台,其中六轴及以上机器人达到5万台以上;服务机器人年销售收入超过 300亿元,在助老、助残、医疗康复等领域实现小批量生产及应用;要培育3家以上的龙头产业,打造5个以上机器人配套产业集 群;工业机器人平均无故障时间

2、要达到8万小时;智能机器人实现创新应用。”从这个规划中可以看出,机器人未来的政策空间 和市场发展空间都是非常巨大的。一方面,发展工业机器人在满足我国制造业的转型升级、提质增效,实现“中国制造2025”等 方面具有极为重大的意义,是全面推进实施制造强国战略的重要一步。另一方面,从服务机器人来说,也要满足未来市场需求的 增长。首先,这包括了基本生活需求,比如说养老、助老、助残等。其次是国家安全需求,比如救灾、抢险、海底勘探、航天、 国防。最后还有家庭服务和娱乐机器人,比如娱乐、儿童教育、智能家居应用等。同时,科技部目前也在进行“十三五”科技创 新规划战略研究,根据已经披露的内容,其中对机器人(尤其

3、是服务机器人)非常重视,并会在近期遴选并启动一批相应的重大 科技项目。 也许看完上面这些,你会觉得这更像是新闻描述,机器人产业真的这么火爆吗?当然。即使刨除工业机器人,只谈其他的智 能机器人或服务机器人,这也是一个相当庞大的产业。例如,目前世界上最大的服务机器人公司应该还是美国的直觉外科公司。 他们生产的达芬奇机器人系统在全世界已经应用了3000余套,其完成的手术超过千万例。由机器人完成的各类微创手术让无数患 者获得新生。这家公司的市值超过300亿美元。中国目前估值最高的机器人公司是大疆创新,其年营收额已经超过10亿美元,估 值超过百亿美元。要知道,10年前这家公司刚刚在深圳创立时,还比较弱小

4、。因此,相信机器人产业在未来的前景一定非常广 阔。 但是我们也注意到在军用国防、救灾救援、养老、家庭服务、儿童教育等领域,至今没有一个世界级的机器人公司存在。有 很多爱好者都希望自己能够制造一个智能轮椅、一个智能儿童教育机器人或是一个家庭服务机器人,也许这样的机器人会像乔布 斯和沃兹尼亚克在车库里做出的苹果电脑一样改变世界。但我们看到的很多人,自己只是机械工程师、电气工程师或者自动控制 工程师,开发一个控制机器人的软件系统是遥不可及的事情;又或者自己虽然是软件工程师,但是并不知道如何控制和驱动底层 设备。这要怎么办呢?没关系,ROS机器人操作系统可以帮忙。 ROS最初是作为科研辅助工具由斯坦福

5、大学开发的。类似的机器人操作系统在世界各国还有很多。有些操作系统面向实时机 器人控制,有些操作系统面向机器人仿真,有些操作系统面向用户交互。这些操作系统大部分都相对封闭,各成体系,没有在学 术界和产业界造成影响。而由于ROS极大的开放性和包容性,它能够兼容其他机器人开发工具、仿真工具和操作系统,使之融为 一体。这使得ROS不断发展壮大,并成为应用和影响力最广泛的机器人软件平台。 随着ROS2.0的开发,ROS能够兼容除Linux之外更多的操作系统,如Windows、Android;能够支持从工业计算机到Adruino开 发板等各类型的硬件;能够采集RGB-D摄像头、普通摄像头和各种类型的传感器

6、数据;能够驱动类人形机器人、四轴飞行器等 各类型的机器人。而且新版本的ROS在采用SOA架构的基础上,集成了MVC框架,更加有利于机器人人机交互界面的开发与机 器人控制。 学习ROS,本身就是掌握一把通往未来的钥匙。自从本人2012年翻译本书第1版之后,关于ROS的书籍也渐渐多了起来。但 和其他书籍相比,本书经过了时间的检验,第2版从内容到示例对学习ROS都更有帮助。希望大家都能够成为机器人软件设计方 面的专家。希望在中国的机器人设计领域能够出现新的领军人物,将中国的机器人带入世界一流行列。 刘品杰,本书第1版译者 推荐序二 记得第一次接触ROS的时候我还在学校做研究,当时跟一些海外学者交流时

7、得知有这个专为机器人设计的操作系统。我很是 兴奋,一心想把ROS用在我们最新研发的机器人上,于是就马上动手玩起来。由于当时ROS尚在起步阶段,说明文档不太全面, 同时社区支持又很少,不知道经过多少折腾才好不容易把它运行起来。体验后发现它的设计框架确实很适合作为机器人敏捷开发 工具算法及控制等代码很容易被复用,避免了很多重复劳动。但奈何当时的功能包不多,而且系统对运算资源要求高,最终 没有用在当时的机器人项目上。 由于其开源性以及对商用友好的版权协议,ROS很快得到越来越多的关注及支持。现在ROS已有飞快的发展,越来越多机器 人相关的软件工具亦加入ROS的行列。国外一些商用的机器人也开始支持RO

8、S系统,甚至基于ROS进行开发。相信这个趋势会一 直持续下去并会蔓延到世界各地。而我亦深深体会到国内对ROS的关注在近年有显著的上升。 从前在国内学习ROS可谓孤军作战,身边没几个人听说过ROS,而且只能从国外网站学习ROS的相关知识,完全没有中文的 资料可以查看。幸好国内有不少有心人积极推动ROS的发展,不遗余力地对国外ROS相关的文章进行翻译,并且发表一些原创的 教学文章,丰富ROS的中文资源,这使学习ROS变得更方便。 我与本书译者通过共同举办ROS国内推广课程而结缘。他对推动ROS在国内的发展起到了举足轻重的作用,并运营着国内著 名的ROS交流社区。本书亦是他贡献ROS中文社群的作品之

9、一。而本书的作者同样是ROS界的权威,有丰富的ROS实战经验,使 用ROS进行过多种机器人的开发。书中从ROS的架构概念到常用的调试工具、功能包及传感器的信息处理都有所涉及,是ROS入 门必看书之一。希望本书能让你快速进入ROS的世界,探索ROS的精彩。 林天麟,博士,NXROBO创始人&CEO 译者序 机器人对于现代人类而言并不陌生和神秘,它在百年前的科幻小说中首次出现,而现在已经逐步进入人类生活的方方面面, 机器时代即将到来! 智能机器人的程序究竟是如何设计出来的呢? 智能机器人需要具备强健的“肢”、明亮的“眼”、灵巧的“嘴”以及聪慧的“脑”,这一切的实现实际上涉及诸多技术领 域,需要艰辛

10、的设计、开发与调试过程,必然会遇到棘手的问题和挑战。而一个小型的开发团队难以完成机器人各个方面的开发 工作,因而需要一套合作开发的框架与模式,以期能够快速集成已有的功能,省却重复劳动的时间。早在2008年,我们在与澳大 利亚的布劳恩教授交流时,就得知他们开发了一套商业化的“RoBIOS”机器人操作系统,这套系统将一些常用的机器人底层功 能进行了封装,可极大简化高级功能的开发。据他们介绍,这是最早的“机器人操作系统”,但由于产品不开源且价格昂贵,我 们最终未能一试为快。后来在网络中不断地寻觅,最终发现了ROS,由于其开源、开放的特性,一下子就引起了我们极大的兴 趣。 我们于2010年建立了易科机

11、器人QQ群进行讨论,从而结识了国内最早期的一些机器人研究者和ROS探索者。由于早期相关 资料非常匮乏,我们于2012年创建了博客()以进行技术分享与交流。易科机器人开发组成员在此期间贡献了大量 的教程和开发笔记,在此向他们的无私奉献表示感谢与敬意!近年来,随着机器人的迅猛发展,ROS得到了更为广泛的使用,国 内也出现了一些优秀的项目,包括“星火计划”ROS公开课( ()等。 出版界近年来也是硕果累累,本书第1版便是国内第一本ROS译著,由于实用性强,已经多次重印。第2版针对近年来ROS的 最新发展,对书中部分内容进行了修订,并增加了第6章和第10章。本书涵盖了使用ROS进行机器人编程的最新知识

12、与方法,通 过ROS编程实践能够帮助你理解机器人系统设计与应用的现实问题。在机器人开发实践中,我们认为除了成功的喜悦外,还看到 机器人学目前所处的发展阶段:核心技术尚未成熟、诸多功能尚不完备、bug多但我们相信,有了ROS的开源精神和完备的 合作开发框架,很多问题会迎刃而解。唯一迫切需要的就是期待你加入机器的开发和研究中来,一起推动开源机器人技术的发展 与普及! 本书第2版与第1版的重叠部分主要沿用了刘品杰在第1版中的翻译,个别词汇根据习惯进行了修改。具体来说,第1至5章和 第10章由张瑞雷翻译,第6章由张波翻译,第7至9章由刘锦涛翻译,吴中红和李静老师对全书进行了审阅,最后由刘锦涛对全书 进

13、行了修改润色和统稿整理。感谢杨维保、马文科等人对本书提出的修改建议! 我们将会在发布本书的其他相关资源。 前言 本书第2版概括性地介绍了ROS系统的各种工具。ROS是一个先进的机器人操作系统框架,现今已有数百个研究团体和公司 将其应用在机器人行业中。对于机器人技术的非专业人士来说,它也相对容易上手。在本书中,你将了解如何安装ROS,如何开 始使用ROS的基本工具,以及最终如何应用先进的计算机视觉和导航工具。 在阅读本书的过程中无需使用任何特殊的设备。书中每一章都附带了一系列的源代码示例和教程,你可以在自己的计算机上 运行。这是你唯一需要做的事情。 当然,我们还会告诉你如何使用硬件,这样你可以将

14、你的算法应用到现实环境中。我们在选择设备时特意选择一些业余用户 负担得起的设备,同时涵盖了在机器人研究中最典型的传感器或执行器。 最后,由于ROS系统的存在使得整个机器人具备在虚拟环境中工作的能力。你将学习如何创建自己的机器人并结合功能强大 的导航功能包集。此外如果使用Gazebo仿真环境,你将能够在虚拟环境中运行一切。第2版在最后增加了一章,讲如何使 用“Move it!”包控制机械臂执行抓取任务。读完本书后,你会发现已经可以使用ROS机器人进行工作了,并理解其背后的原 理。 主要内容 第1章介绍安装ROS系统最简单的方法,以及如何在不同平台上安装ROS,本书使用的版本是ROS Hydro。

15、这一章还会说明 如何从Debian软件包安装或从源代码进行编译安装,以及在虚拟机和ARM CPU中安装。 第2章涉及ROS框架及相关的概念和工具。该章介绍节点、主题和服务,以及如何使用它们,还将通过一系列示例说明如何 调试一个节点或利用可视化方法直观地查看通过主题发布的消息。 第3章进一步展示ROS强大的调试工具,以及通过对节点主题的图形化将节点间的通信数据可视化。ROS提供了一个日志记 录API来轻松地诊断节点的问题。事实上,在使用过程中,我们会看到一些功能强大的图形化工具(如rqt_console和rqt_graph), 以及可视化接口(如rqt_plot和rviz)。最后介绍如何使用ro

16、sbag和rqt_bag记录并回放消息。 第4章介绍ROS系统与真实世界如何连接。这一章介绍在ROS下使用的一些常见传感器和执行器,如激光雷达、伺服电动 机、摄像头、RGB-D传感器、GPS等。此外,还会解释如何使用嵌入式系统与微控制器(例如非常流行的Arduino开发板)。 第5章介绍ROS对摄像头和计算机视觉任务的支持。首先使用FireWire和USB摄像头驱动程序将摄像头连接到计算机并采集图 像。然后,你就可以使用ROS的标定工具标定你的摄像头。我们会详细介绍和说明什么是图像管道,学习如何使用集成了 OpenCV的多个机器视觉API。最后,安装并使用一个视觉里程计软件。 第6章将展示如何

17、在ROS节点中使用点云库。该章从基本功能入手,如读或写PCL数据片段以及发布或订阅这些消息所必需 的转换。然后,将在不同节点间创建一个管道来处理3D数据,以及使用PCL进行缩减采样、过滤和搜索特征点。 第7章介绍在ROS系统中实现机器人的第一步是创建一个机器人模型,包括在Gazebo仿真环境中如何从头开始对一个机器人 进行建模和仿真,并使其在仿真环境中运行。你也可以仿真摄像头和激光测距传感器,为后续学习如何使用ROS的导航功能包集 和其他工具奠定基础。 第8章是两章关于ROS导航功能包集中的第1章。该章介绍如何对你的机器人进行使用导航功能包集所需的初始化配置。然后 用几个例子对导航功能包集进行

18、说明。 第9章延续第8章的内容,介绍如何使用导航功能包集使机器人有效地自主导航。该章介绍使用ROS的Gazebo仿真环境和rviz 创建一个虚拟环境,在其中构建地图、定位机器人并用障碍回避做路径规划。 第10章讨论ROS中移动机器人机械臂的一个工具包。该章包含安装这个包所需要的文档,以及使用MoveIt!操作机械臂进行 抓取、放置,简单的运动规划等任务的演示示例。 预备知识 我们写作本书的目的是让每位读者都可以完成本书的学习并运行示例代码。基本上,你只需要在计算机上安装一个Linux发 行版。虽然每个Linux发行版应该都能使用,但还是建议你使用Ubuntu12.04LTS。这样你可以根据第1

19、章的内容安装ROS Hydro。 对于ROS的这一版本,你将需要Ubuntu14.04之前的版本,因为之后的版本已经不再支持Hydro了。 对于硬件要求,一般来说,任何台式计算机或笔记本电脑都满足。但是,最好使用独立显卡来运行Gazebo仿真环境。此外, 如果有足够的外围接口将会更好,因为这样你可以连接几个传感器和执行器,包括摄像头和Arduino开发板。 你还需要Git(git-core Debian软件包),以便从本书提供的源代码中复制库。同样,你需要具备Bash命令行、GNU/Linux工 具的基本知识和一些C/C+编程技巧。 目标读者 本书的目标读者包括所有机器人开发人员,可以是初学者

20、也可以是专业人员。它涵盖了整个机器人系统的各个方面,展示了 ROS系统如何帮助完成使机器人真正自主化的任务。对于听说过却从未使用过ROS的机器人专业学生或科研人员来说,本书将是 非常有益的。ROS初学者能从本书中学习ROS软件框架的很多先进理念和工具。不仅如此,经常使用ROS的用户也可能从某些章 节中学习到一些新东西。当然,只有前3章是纯粹为初学者准备的,所以那些已经使用过ROS的人可以跳过这部分直接阅读后面 的章节。 源代码和彩色图片下载 可以从你在中的账户下载所有已购买的Packt Publishing出版的书籍的示例代码文件。如果你在其他 地方购买了这本书,可以访问 从 我们同时提供了本

21、书所有彩色的屏幕截图、对话框的PDF文件,这些彩色图片能够更好地帮助你理解输出的变化。可以 从 作者简介 Enrique Fernndez在拉斯帕尔马斯大学获得计算机工程博士学位,目前是Clearpath Robotics公司高级机器人工程师。2009年他 完成了关于SLAM的硕士学位论文。2013年他的博士论文解决了自主水下滑翔器(AUG)的路径规划问题。那段时间,他还研究 了计算机视觉、人工智能以及其他机器人学课题,例如赫罗纳大学的CIRS/ViCOROB研究实验室AUV的惯性导航系统和视觉 SLAM。他在2012年参加了欧洲学生自主水下航行器设计挑战赛(Student Autonomou

22、s Underwater Challenge-Europe,SAUC-E)并 获奖,在2013年作为合作者参与了SAUC-E。 获得博士学位后,Enrique作为高级机器人工程师在2013年6月加入PAL Robotics公司的自主导航部门。在那里,他开发了用 于REEM、REEM-C和移动机器人以及相关项目的软件,如使用ROS框架的Stockbot。他的研究方向包括运动规划(路径规划和 移动机器人控制)、机器人定位和SLAM。在2015年,他作为高级自主系统开发人员加盟Clearpath Robotics公司的自主系统部门从 事SLAM相关工作。 在学术方面,Enrique发表了多篇会议论文

23、,其中两篇于2011年发表在International Conference of Robotics and Automation (ICRA)上。他是Packt Publishing出版的第1版ROS机器人程序设计和其他一些书部分章节的作者。他的硕士学位论文是关 于室内机器人的FastSLAM算法,此机器人装备了SICK激光扫描仪以及Pioneer差动平台的轮式里程计。他的博士学位论文是关于 AUG的路径规划算法和工具。他还拥有电子和嵌入式系统(如PC104和Arduino)的开发经验。他的研究背景包括SLAM、计算机 视觉、路径规划、优化、机器人学和人工智能。 我要感谢这本书的合著者,感谢

24、他们为完成这本书所付出的努力以及提供了无数示例的代码。我还要感谢博士论文期间大学 智能系统和计算工程研究所(University Institute of Intelligent Systems and Computational Engineering,SIANI)和水下机器人研究中 心(Center of Underwater Robotics Research,CIRS/ViCOROB)的研究小组成员。我也要感谢在PAL机器人公司的同事,在那里我 学到很多关于ROS、机器人运动以及仿人双足机器人的知识,不仅有软件,还有电子和硬件设计。最后,我要感谢我的家人和朋 友的帮助与支持。 Luis

25、 Snchez Crespo在拉斯帕尔马斯大学获得了电子与电信工程的双硕士学位。他曾在技术开发和创新研究所(IDETIC)、 加那利群岛海洋平台(PLOCAN)和应用微电子研究所(IUMA)与不同的研究小组合作,进行超分辨率算法成像研究。 他的专业兴趣包括应用于机器人系统的计算机视觉、信号处理和电子设计。因此,他加入了AVORA团队,这批年轻的工程 师和学生从零开始从事自主水下航行器(AUV)的开发工作。在这个项目中,Luis开始开发声学和计算机视觉系统,用于提取不 同传感器的信息,例如水听器、声呐和摄像头。 依托海洋技术的强大背景,Luis与人合作创办了一家新的初创公司Subsea Mech

26、atronics,致力于为水下环境开发遥控操作和自 主航行器。 下面是海洋技术工程师和企业家(LPA Fabrika:Gran Canaria Maker Space的联合创始人和制造商)Dario Sosa Cabrera对Luis的 评价: “他很热情,是一个多学科的工程师。他对工作负责。他可以自我管理,并承担一个团队领导者的责任,如在SAUC-E竞赛 中领导了AVORA团队。他在电子和电信领域的背景让其具备从信号处理和软件到电子设计和制造的广泛专业知识。” Luis作为技术审校者参与了Packt Publishing出版的第1版ROS机器人程序设计的相关工作。 首先,我要感谢Aaron、

27、Anil以及Enrique邀请我参与编写这本书。和他们一起工作非常快乐。同时,我也要感谢水下机电团 队关于重型水下机器人的丰富经验,这些年我们一起成长。我必须提到LPA Fabrika:Gran Canaria Maker Space,他们备课和讲授 教育机器人及技术项目极富热情,与他们共享工作环境也非常令人激动。 最后,我要感谢我的家人和女朋友对我参与的每个项目的大力支持和鼓励。 Anil Mahtani是一名从事水下机器人工作5年的计算机科学家。他第一次在该领域工作是在完成硕士论文期间为低成本ROV开 发软件架构。在此期间,他也成为AVORA的团队领导者和主要开发人员,这个团队的高校学生设

28、计和开发了一个自主水下航行 器并参加了2012年的SAUC-E。同年,他完成了论文并获得了拉斯帕尔马斯大学的计算机科学硕士学位。此后不久,他成为 SeeByte公司的软件工程师,这家公司是水下系统智能软件解决方案的全球领导者。 在SeeByte公司工作期间,Anil参与了军方、石油和天然气公司的一些半自主和自主水下系统的核心开发。在这些项目中,他 积极参与自主系统开发、分布式软件体系结构设计和底层软件开发,同时也为前视声呐图像提供计算机视觉解决方案。他还获得 了项目经理职位,管理一个开发和维护内核C+库的工程师团队。 他的专业兴趣主要包括软件工程、算法、分布式系统、网络和操作系统。Anil在机

29、器人方向主要负责提供高效和健壮的软件 解决方案,不仅解决当前存在的问题,还预见未来的问题或可能的改进。鉴于他的经验,他在计算机视觉、机器学习和控制问题 上也有独特的见解。Anil对DIY和电子学有兴趣,并且开发了一些Arduino库回馈社区。 首先,我要感谢我的家人和朋友的支持,他们总是在我最需要的时候帮助我。我也要感谢我的同事和朋友David Rubio Vidal、Emilio Martn和John Brydon给我最大的支持,他们以专业的方式教我很多知识。我还要感谢我在SeeByte和 AVORA团队的同事,这些年从他们那里学习并经历很多。最后,我要特别感谢Jorge Cabrera G

30、mez,他的指导和建议成就了我自 己从未想象到的职业生涯。 Aaron Martinez是数字化制造领域的电脑工程师、企业家和专家。他于2010年在拉斯帕尔马斯大学的Instituto Universitario de Cienciasy Tecnologias Ciberneticas(IUCTC)完成硕士论文。他在远程监控领域使用沉浸式设备和机器人平台准备硕士论文。得到 学位后,他参加了在奥地利林茨开普勒大学研究所的机器人学实习计划。在实习期间,他作为团队的一员使用ROS和导航包集进 行移动平台开发。之后,他参与了有关机器人的项目,其中一个是拉斯帕尔马斯大学的AVORA项目。在这个项目中,

31、他参与自 主水下航行器制作,并参与意大利的SAUC-E。2012年,他负责维护这个项目;2013年,他帮助从ROS向机器人平台移植导航包 集和其他算法。 最近,Aaron与人共同创立了一家名为SubSeaMechatronics SL的公司。这家公司从事与水下机器人和遥控系统相关的项目,还 设计和制造水下传感器。公司的主要目标是开发用于研发原型和重型机械手的定制解决方案。 Aaron有许多领域的经验,比如编程、机器人、机电一体化、数字化制造以及Arduino、BeagleBone、服务器和激光雷达等设 备。如今,他在SubSeaMechatronics SL公司从事水下和空中环境的机器人平台设

32、计。 我要感谢我的女朋友,她在我写这本书时给我支持以及给我继续成长的动力。我还要感谢Donato Monopoli(加那利群岛技术 研究所(ITC)生物医学工程部门的主管),以及ITC所有的工作人员,感谢他们使我懂得数字制造、机械以及组织工程,我在 此度过了生命中最美好的时光。 感谢我大学的同事,特别是Alexis Quesada,他给了我在准备硕士论文时创建我第一个机器人的机会。和他们一起工作,使我 学习到很多关于机器人的知识。 最后,我要感谢家人和朋友的帮助与支持。 审校者简介 Piotr Grdek是一位对计算机视觉和图像处理感兴趣的C+程序员。他曾经是嵌入式程序员,现在工作于银行。他是

33、开源游 戏和无人驾驶汽车的开发者。空闲时间他喜欢跑步、打壁球和阅读。 Akihiko HONDA是空间机器人工程师。他于2012年在东京工业大学完成了硕士论文。目前他正在东京工业大学进行博士课 程学习。 他的研究兴趣包括与空间机器人的远程操作和自动化相互对应的灵活或可变形的材料。他的一个目标是通过开发更好的自动 控制系统提高飞船在太空的性能和稳定性。在早期的研究中,他参与了包含大型太阳能电池阵列和用于捕捉国际空间站的空间机 械臂的地球观测卫星的工作。目前,他计划将其研究成果应用于空间太阳能电力系统、行星探测车等。他作为最佳参赛人获奖, 并在日本天文学会举办的JSF卫星设计竞赛中因提出使用其研究

34、的一个新型探索宇宙飞船而获奖。 他在大学的研究过程中,还参与了由日本太空发展署指挥的一些项目。在JEM(REX-J)项目的机器人实验中,他参与了在 轨道上的实验设备支持操作并在研究中获得灵感。他还参加了一个为宇航员开发可穿戴机械臂的项目并开发了手动控制系统。目 前他正工作于两个探索机器人项目。其中一个是开发名为“KENAGE”的可变形的探测车,用于克服月球和火星特殊的崎岖地 形。这个探测车正在使用GAZEBO仿真器进行可行性实验测试。在另一个项目中,他为JumpingScouter开发了一个环境识别系 统。 2013年,他参与了萨利大学的SMART探测器项目,开发环境保护和识别系统。同时,他也

35、参与了探测车在真实环境中检测 实际功能的现场实验。 我要感谢JAXA的Hiroki KATO给我打开了ROS的大门并对我的研究给予宝贵建议。我还要感谢Mitsushige ODA教授、Hiroki NAKANISHI教授以及东京工业大学空间机器人实验室的同事。他们分享了空间机器人的美好前景,提供了建议,并支持我在研 究中使用ROS实现它们。我也要感谢萨利大学STAR实验室的教授和同事给我提供在真实环境中使用ROS的重要建议。我特别感 谢来自大加那利岛的朋友给我介绍这令人振奋的工作。 最后,我要感谢我的家人Yoshihiko、Nobuko和Ayaka对我的生活和梦想的支持,同时感谢女朋友对我的理

36、解。 Matthieu Keller是一位热爱技术和计算机科学的法国工程师。他接受的教育涉及计算和机器人学,这使他成为一名爱好者。 他审校了本书的第1版。 Aridane J.Sarrionandia de Len研究计算机科学,并对机器人学和自主航行器有非常大的兴趣。他的学位课题是关于使用声呐 的水下地图构建,为此他在自主水下航行器中使用ROS工作。他有自主系统和ROS的经验。他熟悉OpenCV和PCL,目前正在开 发自主水面航行器的控制系统。 我要感谢Luis和Aaron给我这个机会审校这本书。同时,我要感谢拉斯帕尔马斯大学的AVORA团队,特别是Aaron、Luis和 Enrique,他

37、们给我介绍了ROS的神奇之处,并帮助我探索自主航行器世界。感谢我的导师Jorge Cabrera Gmez,他让我有机会成 为AVORA团队的一员。 最后,我要感谢我的家人和朋友在我生活中出现问题时支持我,特别要感谢Eva纠正我不清晰的语句。 第1章 ROS Hydro系统入门 欢迎开始阅读本书第1章。本章将介绍如何安装ROS系统,它是一种新的标准化机器人系统软件框架。本书是基于ROS Fuerte的ROS机器人程序设计一书的升级版。通过ROS,你可以使用大量的示例代码和开源程序轻松地完成机器人编程和 控制。同时,你还能够理解如何使用各种传感器与执行器,并为你的机器人增加新的功能,如自动导航和

38、视觉感知等。得益于开 源理念,以及持续开发最先进算法并不断提供新功能的开源社区,ROS不断进步完善。 通过本书,你将学习到如下内容: 在特定版本的Ubuntu系统下安装ROS Hydro框架 ROS的基本操作 调试以及数据可视化 在ROS框架下进行机器人编程 连接传感器、执行器和硬件设备以创建机器人 创造三维(3D)模型并进行仿真 使用导航功能包集使机器人实现自主行驶 本章主要介绍怎样在Ubuntu系统中安装完整版本的ROS Hydro。Ubuntu不但能够全面支持ROS,而且是ROS官方推荐的 操作系统。当然,你也可以在其他的操作系统中安装ROS。这本书使用的Ubuntu版本是12.04(P

39、recise Pangolin),你可以 在 在开始安装之前,我们首先了解一下ROS的历史。 Robot Operating System(ROS)是一个得到广泛使用的机器人系统的软件框架。ROS的基本原理是无需改动就能够在不 同的机器人上复用代码。基于这些,我们就可以在不同的机器人上分享和复用已经实现的功能,而不需要做太多的工作,避免了 重复劳动。 2007年,斯坦福大学人工智能实验室(Stanford Artificial Intelligence Laboratory,SAIL)在斯坦福AI机器人项目 (Stanford AI Robot project)的支持下开发了ROS。2008年

40、之后,其主要在Willow Garage公司支持下与超过20多家研究机 构联合研发ROS。 现在已经有很多家研究机构通过增加ROS支持的硬件或开放软件源代码的方式加入ROS系统的开发中。同样,也有很多家公 司将其产品逐步进行软件迁移并在ROS系统中应用。一些完全支持ROS系统的平台如下图所示。这些平台往往会开放大量的代 码、示例和仿真环境,以便开发人员轻松地开展工作。前三个发布代码的机器人例子是人形机器人。最后一个是由拉斯帕尔马斯 大学开发的水下机器人,代码尚未公布。你可以在http:/wiki.ros.org/Robots找到很多这样的例子。 ROS系统已经支持这些机器人中的传感器和执行器,

41、同时每天ROS软件框架支持的设备也在增加。此外,得益于ROS和开放 硬件,大量公司正在创建更便宜和更强大的传感器。Arduino开发板是一个很好的例子,使用廉价的电路板可以添加很多类型的 传感器如编码器、光和温度传感器等。 ROS提供了一个标准的操作系统环境,包括硬件抽象、底层设备控制、通用功能的实现、进程间消息转发和功能包管理等。 它基于一个集中式拓扑的图结构,在节点中接收许多传感器、控制、状态、规划、执行器数据进行计算处理,并发送。它的 各种库与功能包都是面向类UNIX系统的。 *-ros-pkg作为一种社区化的软件库使开发高级库更为容易。其中,很多功能是和ROS系统绑定的,如导航库和rv

42、iz可视化 界面都基于这个库。其中的一些库包含很多强大的工具,可以帮助我们方便使用ROS并了解机器人当前的实时状态。其中,可视 化工具、仿真环境和调试工具是最重要的几个。在下图中你可以看到两个工具,rviz和rqt_plot。中间是rqt_plot的截图,你可以 看到由传感器数据绘制的曲线。另外两个截图是rviz;截图中可以看到真实机器人的三维显示。 ROS是一个使用BSD(Berkeley Software Distribution)开源协议的开源软件。无论是商业应用还是科学研究它都是免费 的。*-ros-pkg包受到了多个开源协议的限制。 用ROS你可以做更多工作。你可以使用库中的代码,改

43、进后再次共享。这种观念就是开源软件的本质。 ROS已经发布了多个版本,最新的版本是Indigo。在本书中,我们使用的版本是Hydro,因为这个版本更加稳定,而Indigo 是实验版本,可能存在错误。 下面会介绍如何安装Hydro版本的ROS。即使在本书中我们使用Hydro,但是在实际工作中,你仍然可能需要安装老版本以 便运行一些代码。 如前所述,本书中所使用的操作系统是Ubuntu,全书的内容及教程将以该系统为基础。如果你习惯使用其他操作系统又想 完成本书的学习,最好的选择就是安装一个带有Ubuntu的虚拟机。因此,本章末尾会介绍虚拟机的安装方法。 当然,如果你想在其他系统中安装ROS,你可以

44、根据链接http:/wiki.ros.org/hydro/Installation中的指导来完成。 1.1 PC安装教程 我们假设你已经安装了Ubuntu12.04系统。我们使用这个版本的Ubuntu,因为它是一个长期支持版本,配备了Long-Term Support(LTS)。这意味着社区在5年内将对这个版本提供维护。 此外,你需要具备一定的Linux和命令工具基本知识,例如终端、vim、创建文件夹等。如果需要学习这些工具,你可以在 网上找到很多相关的资源,或者你也可以参考这些主题相关的图书。 1.2 使用软件库安装ROS Hydro 2014年,ROS网页更新了设计风格和内容的组织。你可以

45、看到如下的网页截图: 在菜单中,可以找到关于ROS的信息以及ROS是否适用于你的系统等内容。 ROS的安装说明可以在开始(Getting Started)部分的安装(Install)选项卡中找到。 建议你在系统中使用软件库而不是源代码安装ROS,除非你是一个专业用户,想进行自定义安装;在这种情况下,你可能更 喜欢使用源代码安装ROS。 所以我们使用软件库安装ROS,下面将开始在我们的系统中配置Ubuntu软件库。 1.3 如何安装VirtualBox和Ubuntu VirtualBox是一个通用、完整的虚拟机,它适用于x86硬件,面向服务器、台式机和嵌入式应用。VirtualBox是免费的,支

46、 持所有主流的操作系统。几乎每一个Linux爱好者都会使用它。 由于我们推荐使用Ubuntu,你可能不希望更改计算机现有的操作系统。而如VirtualBox之类的工具就可以满足此类需求。 它能帮助我们在计算机上虚拟化新的操作系统,而无需对计算机硬件做任何改动。 后面的章节将展示如何安装VirtualBox和Ubuntu。此外,通过安装虚拟机,你可以在一个干净的操作系统中完成开发。如 果你遇到任何问题,能够通过快速重启计算机解决,也可以备份虚拟机及所有必要的机器人安装文件。 1.4 在BeagleBone Black上安装ROS Hydro BeagleBone Black(BBB)是一种基于A

47、RM Cortex A8处理器的低成本开发平台。此开发板是基于 Linux发行 版制作的。由一支希望统一嵌入式系统Linux发行版的小型团队开发,他们希望操作系统是稳定且用户友好的。 考虑到社区的开发人员需要一个具有一些通用输入/输出(GPIO)引脚的机载计算机设备,德州仪器设计了BeagleBone Black。BeagleBone Black平台是BeagleBone的改进版。开发板的主要特性包括ARM Cortex A8处理器(时钟频率为1GHz, 内存为512MB),具有以太网、USB接口、HDMI、46引脚GPIO接口。这些GPIO可以设置为数字I/O、ADC、脉宽调制,以及 I2C

48、、SPI或者UART等通信协议接口。GPIO是一种直接将传感器和执行器与BeagleBone连接的简单方法。BeagleBone如下图 所示: 在BeagleBone开发板刚推出时,无法直接在发行版上安装ROS。由于这个原因,通常在BeagleBone上安装基 于Ubuntu的操作系统。有不同版本的Ubuntu ARM兼容BeagleBone Black和ROS,推荐在运行ROS的平台上使用 Ubuntu13.04ARM raring armhf的镜像。 目前已有了发行版的ROS版本安装文件。安装步骤可以参考网 址http:/wiki.ros.org/hydro/Installation/An

49、gstrom。除此之外,我们选择在Ubuntu ARM上安装ROS还因为这个发行版更常 用,此外它还可以用于其他基于ARM的开发板,如UDOO Odroid U3、Odroid X2或Gumstick。 ARM技术在智能手机和平板计算机等移动设备领域蓬勃发展。除了增加的ARM cortex运算性能,高集成度和低功耗也使这 项技术更适合于自主机器人系统开发。在过去的几年里,开发人员已经在市场上推出多款ARM平台。其中一些特性类似于 BeagleBone Black、Raspberry PI或Gumstick Overo。此外,更强大的开发板(如具备双核ARM Cortex A9的Gumstick DuoVero或四核版Odroid U3、Odroid X2或UDOO)也已经上市。 1.5 本章小结 在这一章,我们学习了如何在不同Ubuntu设备上(计算机、VirtualBox、BeagleBone Black)安装ROS Hydro。通过这 些步骤,你已经在系统上安装了一切必要的软件,可以使用ROS开始工作,也可以练习本书中的示例。你也可以使用源代码来安 装ROS。但这样做需要编译所有代码,因此只适用于高级Linux用户。而我们一般建议你使用软件库安装,这样做更通用,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com