ROS 2的前世今生 | ROS 2学习笔记

自2015年底首次踏入ROS(Robot Operating System)的世界以来,我在机器人领域的旅程已近九年。这段历程始于团队几位志同道合的朋友在业余时间的自发学习,逐渐演变成成立了一个致力于英特尔硬件平台与ROS框架集成优化的专业团队,最终发展到为商业客户提供基于ROS和英特尔平台的产品设计支持。这一路走来,经历了无数的挑战与成长。为了纪念这一段充满成长与探索的旅程,我计划整理一下积累的知识与经验为一系列的学习性文章,与同样醉心于ROS世界的朋友们分享,希望我们能够一同学习,共同进步。在这份知识的传递与分享中,不仅是对过往岁月的回顾,也是对未来探索的一份期许。

ROS是什么

ROS(机器人操作系统)是一个开源机器人中间件套件。虽然ROS不是一个操作系统(OS),而是一套用于机器人软件开发的软件框架,但它提供了为异构计算机集群设计的服务,例如硬件抽象、低级设备控制、常用功能的实现、进程之间的消息传递,以及包管理。正在运行的基于 ROS 的进程集以图形架构表示,其中处理发生在可以接收、发布和复用传感器数据、控制、状态、规划、执行器和其他消息的节点中。尽管反应性和低延迟在机器人控制中很重要,但 ROS并不是实时操作系统( RTOS)。然而,可以将 ROS 与实时计算代码集成。ROS 2 的创建已解决了对实时系统支持的缺乏,ROS API 的重大修订,它将利用核心 ROS 的现代库和技术功能并添加对实时代码和嵌入式系统硬件的支持。

ROS生态系统中的软件可以分为三组:

  • 用于构建和分发基于 ROS 的软件的独立于语言和平台的工具;
  • ROS 客户端库实现,例如 roscpp、rospy、和 roslisp;
  • 包含使用一个或多个 ROS 客户端库的应用程序相关代码的软件包。

ROS的发展历史

斯坦福大学的早期经历(2007年及更早)

2007 左右,最终成为 ROS 的第一批组件开始在斯坦福大学开发。Eric Berger和Keenan Wyrobek是斯坦福大学Kenneth Salisbury机器人实验室的博士生,他们领导着个人机器人(Personal Robotics)项目。在研究机器人在人类环境中执行操作任务时,他们注意到,他们的许多同事都因机器人技术的多样性而受阻:优秀的​​软件开发人员可能不具备所需的硬件知识,而开发路径规划的人可能不知道如何进行所需的计算机视觉。为了纠正这种情况,他们着手建立一个系统,为学术界其他人提供一个可以借鉴的起点。用Eric Berger的话来说,“在所有这些不同的维度上,这都是不糟糕的东西”。

在迈向这个统一系统的第一步中,两人构建了PR1作为硬件原型,并开始利用它开发软件,借鉴了其他早期开源机器人软件框架的最佳实践,特别是摩根·奎格利 (Morgan Quigley) 开发的 switchyard 系统,另一位斯坦福大学博士生,一直致力于支持斯坦福人工智能实验室的斯坦福人工智能机器人(STAIR)。Joanna Hoffman和Alain Rossmann提供了 50,000 美元的早期资金,支持 PR1 的开发。在寻求进一步开发的资金时,Eric Berger 和 Keenan Wyrobek 遇到了Willow Garage的创始人 Scott Hassan。 Willow Garage 是一家技术孵化器,致力于开发自动驾驶 SUV 和太阳能自动驾驶船。Hassan 分享了 Berger 和 Wyrobek 的“机器人 Linux”愿景,并邀请他们来 Willow Garage 工作。Willow Garage 于 2007 年 1 月启动,并于 2007 年 11 月 7 日向 SourceForge 首次提交 ROS 代码。

Willow Garage时期 (2007–2013) 

Willow Garage开始开发 PR2 机器人作为 PR1 的后续产品,并开发 ROS 作为运行它的软件。来自二十多个机构的团体为 ROS 做出了贡献,包括核心软件以及与 ROS 一起形成更大软件生态系统的越来越多的软件包。Willow Garage 之外的人为 ROS 做出了贡献(特别是来自斯坦福大学的 STAIR 项目),这意味着 ROS 从一开始就是一个多机器人平台。虽然 Willow Garage 最初还有其他项目正在进行中,但它们被取消了,取而代之的是个人机器人计划:专注于生产 PR2 作为学术界的研究平台和 ROS 作为开源机器人堆栈,支撑学术研究和技术初创公司,就像LAMP 堆栈为基于网络的初创公司所做的那样。

2008 年 12 月,Willow Garage 实现了三个内部里程碑中的第一个:PR2 在两天内连续导航,距离 pi 公里。不久之后,ROS 的早期版本(0.4 Mango Tango)发布,随后发布了第一个 RVIZ 文档和第一篇关于 ROS 的论文。初夏,实现了第二个内部里程碑:让 PR2 在办公室中导航、打开门并自行插入电源。随后,ROS.org 网站于 8 月启动。ROS 的早期教程于 12 月发布,为 2010 年 1 月发布 ROS 1.0 做准备。这是里程碑 3:为 Willow Garage 工程师拥有的巨大能力制作大量文档和教程过去3年的发展。

2011 年对于 ROS 来说是辉煌的一年,2 月 15 日推出了 ROS Answers(一个针对 ROS 用户的问答论坛);4月18日推出非常成功的TurtleBot机器人套件;ROS repository总数在 5 月 5 日突破 100。Willow Garage 于 2012 年 4 月创建了开源机器人基金会(OSRF) 。OSRF 立即获得了国防高级研究计划局(DARPA) 的软件合同。同年晚些时候,第一届 ROSCon 在明尼苏达州圣保罗举行,第一本关于 ROS 的书《ROS By Examples》出版,第一个运行 ROS 的商业机器人Baxter由Rethink Robotics宣布。

2013 年 2 月,OSRF 成为 ROS 的主要软件维护者,此时,ROS已经发布了7个主要版本(一直到ROS Groovy),并且用户遍布全球。Clearpath Robotics于 2014 年初接管 PR2 的支持职责,标志着Willow Garage时期的结束。

OSRF 和Open Robotics时期(2013 年至今)

自从 OSRF 接管 ROS 的主要开发以来,每年都会发布一个新版本,同时人们对 ROS 的兴趣也在不断增长。自 2012 年以来,ROSCon 每年都会举办,与两个旗舰机器人会议ICRA或IROS同期举办。ROS 开发者聚会已在多个国家组织,出版了许多 ROS 书籍,并启动了许多教育计划。2014年9月1日,NASA在国际空间站上宣布了第一个在太空中运行ROS的机器人:Robotnaut 2。2017年,OSRF更名为Open Robotics。科技巨头亚马逊和微软在此期间开始对 ROS 产生兴趣,微软于 2018 年 9 月将核心 ROS 移植到 Windows,随后亚马逊网络服务于 2018 年 11 月发布 RoboMaker。

迄今为止,OSRF/开放机器人技术最重要的发展(不排除开始支持 ROS 的机器人平台的爆炸式增长或每个 ROS 版本的巨大改进)是 ROS 2 的提议,这是对 ROS API 的重大更改旨在支持实时编程、更广泛的计算环境和更现代的技术。ROS 2 在 ROSCon 2014 上宣布,2015 年 2 月首次提交到 ros2 repository,随后于 2015 年 8 月发布 alpha 版本。 ROS 2 的第一个发行版 Ardent Apalone 于于2017年12月8日发布,开创了下一代ROS开发的新时代。英特尔也在此阶段对ROS 2社区做出巨大贡献,包括ROS 2核心代码质量和安全性提高,性能优化,在ROS 2上支持Realsense, NCS (Neuron Compute Stick),OpenVINO,发布一系列支持ROS 2的软件组件,并移植和重新设计ROS 2导航软件框架navigation2。

未来发展

目前,Open Robotics已经被Google的孵化器Intrinsic收购:Alphabet’s Intrinsic Acquires Majority of Open Robotics - IEEE Spectrum。大部分的开发人员已经进入Intrinsic,核心的开发人员和开源的ROS,Gazebo,RMF和Infrastrucutre保持中立的开源项目。社区也在酝酿着一些变化(开源项目的governance,经费支持等),让我们期待ROS的未来更加美好。

版本和发布

ROS 1版本发布

ROS 2版本发布

ROS-Industrial

ROS-Induscial 是一个开源项目(BSD(传统)/Apache 2.0(首选)许可证),它将 ROS 的高级功能扩展到制造自动化和机器人技术。在工业环境中,有两种不同的方法对机器人进行编程:要么通过外部专有控制器(通常使用 ROS 实现),要么通过机器人各自的本机编程语言。因此,ROS 可以被视为基于软件的工业机器人编程方法,而不是传统的基于机器人控制器的方法。

ROS-Industrial repository包括常见工业机械手、夹具、传感器和设备网络的接口。它还提供用于自动 2D/3D 传感器校准、工艺路径/运动规划、Scan-N-Plan 等应用程序、Qt Creator ROS 插件等开发人员工具以及针对制造商需求的培训课程的软件库。ROS-Industrial 得到了一个由行业和研究成员组成的国际联盟的支持。该项目最初是 Yaskawa Motoman Robotics、西南研究所和 Willow Garage 之间的合作项目,旨在支持 ROS 在制造自动化中的使用,GitHub repository由 Shaun Edwards (SwRI) 于 2012 年 1 月创建。目前,该联盟分为三个组;ROS 工业联盟美洲(由 SwRI 领导,位于德克萨斯州圣安东尼奥)、ROS 工业联盟欧洲(由 Fraunhofer IPA 领导,位于德国斯图加特)和 ROS 工业联盟亚太地区(由 Advanced Remanufacturing 领导)和技术中心(ARTC)和南洋理工大学(NTU),位于新加坡)。

该联盟通过开展 ROS-I 培训、提供技术支持和制定 ROS-I 未来路线图,以及开展竞争前联合行业项目来开发新的 ROS-I 能力,为全球 ROS-Industrial提供支持。

作者Blog原文:ROS 2的前世今生 | ROS 2学习笔记 - HY's Blog

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/492023.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国漫年番成趋势?但只有这5部最值得看

自从《斗罗大陆》动画爆火之后,越来越多国漫都开始以年番形式播出,每周都能追自己喜欢的动画也是观众们所期待的。但其实年番对制作公司的要求很高,如果技术跟不上难免出现质量下滑的问题。今天就带大家盘点一下目前在播的最值得看的5部国漫年…

冒充医疗科技公司邮件,传播间谍窃密木马

朋友微信联系我,说遇到一个钓鱼邮件,问我有没有兴趣看看,邮件转发给我,如下所示: 邮件伪装成绍兴安迪医疗科技有限公司关于COVID-19疫情订单票据信息,附件是一个恶意程序,通过分析发现邮件附件携…

kitti数据可视化

数据下载 The KITTI Vision Benchmark Suite 这里以 2011_09_26_drive_0005 (0.6 GB)数据为参考,下载[syncedrectified data] [calibration] 数据。 下载完毕之后解压,然后将calibration文件解压后的结果放在如下目录下, 下载kitti2bag包 …

Spring Boot 项目集成camunda流程引擎

使用camunda开源工作流引擎有:通过docker运行、使用springboot集成、部署camunda发行包、基于源代码编译运行等多种方式。 其中,通过源代码编译运行的方式最为复杂,具体参考:https://lowcode.blog.csdn.net/article/details/1362…

好书推荐丨细说Python编程:从入门到科学计算

文章目录 写在前面Python简介推荐图书内容简介编辑推荐作者简介 推荐理由粉丝福利写在最后 写在前面 本期博主给大家推荐一本Python基础入门的全新正版书籍,对Python、机器学习、人工智能感兴趣的小伙伴们快来看看吧~ Python简介 Python 是一种广泛使用的高级、解…

【JavaEE】 spring boot的配置文件详解

spring boot的配置文件详解 文章目录 spring boot的配置文件详解常用配置spring boot的配置文件1. properties 文件2. YAML 文件3. 多环境配置4. 配置文件优先级5. 配置属性注入特殊说明 properties配置文件基本语法 例子peoperties文件的缺点 YML配置文件YML使用yml 配置不同数…

【管理咨询宝藏资料26】某城投集团对标案例分析报告

本报告首发于公号“管理咨询宝藏”,如需阅读完整版报告内容,请查阅公号“管理咨询宝藏”。 【管理咨询宝藏资料26】某城投集团对标案例分析报告 【关键词】战略规划、对标研究、管理咨询 【文件核心观点】 - 市场化城开企业,打造城市综合运…

CAS5.3使用JPA实现动态注册服务

cas同时支持cas协议和OAuth2协议,官方默认是通过扫描json文件的形式注册客户端服务,但是此种方式需要重启服务才能生效,此次我们将使用JPA来完美实现动态注册服务,如果不知道cas如何部署,可以擦看之前的文章 cas-client基于CAS协议客户端搭建-CSDN博客 cas-server5.3自定义密…

SpringBoot 学习笔记

文章目录 一、IoC二、AOP三、bean3.1 bean 生命周期3.2 三种依赖注入方式3.3 bean 线程安全 四、SpringMVC五、常用注解5.1 Scope5.2 PostConstruct 和 PreDestroy5.3 Component 和 Bean5.4 Autowired 和 Resource 六、基于 ApplicationContextAware 实现工厂模式七、事务失效八…

接口自动化测试用例如何设计

说到自动化测试,或者说接口自动化测试,多数人的第一反应是该用什么工具,比如:Python Requests、Java HttpClient、Apifox、MeterSphere、自研的自动化平台等。大家似乎更关注的是哪个工具更优秀,甚至出现“ 做平台的 &…

盛元广通兽医实验室信息管理系统

兽医实验室信息管理系统在区域发展中扮演着关键角色,为动物卫生、兽医科研、医学教育和疾病防控等方面提供了有力的支持。实验室信息管理系统有助于建立全面的卫生防疫监测网络,从实验室用户、市级、省级和部级用户按级别分级上报,能够及时监…

DevOps的3大核心基础架构

原文链接:DevOps的3大核心基础架构_软件开发生产线 CodeArts_理论实践_DevOps概览 由于近年DevOps概念的火热,加之DevOps的涵盖面非常广,因此有很多文章和技术都在和DevOps强行关联,使很多想要了解学习DevOps的开发者迷惑不解。 …