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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[C++]使用C++部署yolov9的tensorrt模型进行目标检测

部署YOLOv9的TensorRT模型进行目标检测是一个涉及多个步骤的过程,主要包括准备环境、模型转换、编写代码和模型推理。 首先,确保你的开发环境已安装了NVIDIA的TensorRT。TensorRT是一个用于高效推理的SDK,它能对TensorFlow、PyTorch等框架训…

基于Java SSM框架实现音乐播放器管理系统项目【项目源码+论文说明】计算机毕业设计

ssm音乐播放器管理系统演示录像2020 摘要 随着社会的发展,计算机的优势和普及使得音乐播放器管理系统的开发成为必需。音乐播放器管理系统主要是借助计算机,通过对首页、音乐推荐、付费音乐、论坛信息、个人中心、后台管理等信息进行管理。减少管理员的…

洛谷C++简单题小练习day21—梦境数数小程序

day21--梦境数数--2.25 习题概述 题目背景 Bessie 处于半梦半醒的状态。过了一会儿,她意识到她在数数,不能入睡。 题目描述 Bessie 的大脑反应灵敏,仿佛真实地看到了她数过的一个又一个数。她开始注意每一个数码(0…9&#x…

我兄弟说要出摊,我说你等等,我给你设计招牌

我有个兄弟,是我高中同学,命运多舛却从不向命运低头,永远积极乐观的笑对生活。 1 高中时的梦想 —— 妇女之友 他高中的时候我们经常一起打篮球,他踢足球很有天赋,因为他我才知道足球里面有个动作叫踩单车&#xff0c…

如何让电脑待机而wifi不关的操作方法!!

1、一台电脑如果一天不关机,大约消耗0.3度电。 一般一台电脑的功耗约为250-400W(台式机)。 一台电脑每月的耗电量:如果是每小时300W每天10小时每月30天90KW,即90千瓦时的电。 这只是保守估计。 2、使用完毕后正常关闭…

100天精通Python(实用脚本篇)——第117天:基于selenium实现反反爬策略之代码输入账号信息登录网站

文章目录 专栏导读1. 前言2. 实现步骤3. 基础补充4. 代码实战4.1 创建连接4.2 添加请求头伪装浏览器4.3 隐藏浏览器指纹4.4 最大化窗口4.5 启动网页4.6 点击密码登录4.7 输入账号密码4.8 点击登录按钮4.9 完整代码4.10 GIF动图展示 五、总结 专栏导读 🔥&#x1f5…

U盘拒绝访问?快速恢复数据的实用方案!

当您尝试访问U盘时,突然遇到“U盘拒绝访问”的提示,这无疑是一个令人头疼的问题。这不仅意味着您无法读取或写入U盘中的数据,还可能意味着重要文件的安全受到威胁。本文将深入探讨U盘拒绝访问的原因,并为您提供至少两种实用的数据…

推荐一个 Obsidian 的 ChatGPT 插件

源码地址:https://github.com/nhaouari/obsidian-textgenerator-plugin Text Generator 是目前我使用过的最好的 Obsidian 中的 ChatGPT 功能插件。它旨在智能生成内容,以便轻松记笔记。它不仅可以在 Obsidian 中直接使用 ChatGPT,还提供了优…

【教程】 iOS混淆加固原理篇

目录 摘要 引言 正文 1. 加固的缘由 2. 编译过程 3. 加固类型 1) 字符串混淆 2) 类名、方法名混淆 3) 程序结构混淆加密 4) 反调试、反注入等一些主动保护策略 4. 逆向工具 5. OLLVM 6. IPA guard 7. 代码虚拟化 总结 摘要 本文介绍了iOS应用程序混淆加固的缘由…

K线实战分析系列之十一:行情力量不足——平头形态

K线实战分析系列之十一:行情力量不足——平头形态 一、平头形态二、不同形态与平头形态的叠加三、总结平头形态 一、平头形态 前一根K线具有较长的实体,后一根K线的实体比较小,无论是多头还是空头的力量到第二根K线都被瓦解了多头上攻&#…

【小沐学QT】QT学习之Web控件的使用

文章目录 1、简介1.1 Qt简介1.2 Qt下载和安装1.3 Qt快捷键1.4 Qt帮助 2、QtWeb控件2.1 测试代码1(QApplication)2.2 测试代码2(QApplicationQWidget)2.3 测试代码3(QApplicationQMainWindow)2.4 测试代码4&…

python实现线下缓存最优算法

对于现代计算机为了加快数据存储速度,一般会采用多级缓存的方法,以最简单的二级缓存来说,数据会存放在两个地方,一个地方就是存在内存当中,另一个存放的地方就是存放在硬盘当中,但是这两个地方数据读取的速…

中科大计网学习记录笔记(十五):可靠数据传输的原理

前前言:看过本节的朋友应该都知道本节长度长的吓人,但其实内容含量和之前的差不多,老师在本节课举的例子和解释比较多,所以大家坚持看完是一定可以理解透彻的。本节课大部分是在提出问题和解决问题,先明确出现的问题是…

编码后的字符串lua

-- 长字符串 local long_string "你好你好你好你好你好你好你好你好" local encoded_string "" for i 1, #long_string do local char_code string.byte (long_string, i) encoded_string encoded_string .. char_code .. "," end encoded_…

第7.1章:StarRocks性能调优——查询分析

目录 一、查看查询计划 1.1 概述 1.2 查询计划树 1.3 查看查询计划的命令 1.3 查看查询计划 二、查看查询Profile 2.1 启用 Query Profile 2.2 获取 Query Profile 2.3 Query Profile结构与详细指标 2.3.1 Query Profile的结构 2.3.2 Query Profile的合并策略 2.…

.NET Core使用NPOI导出复杂,美观的Excel详解

前言: 这段时间一直专注于数据报表的开发,当然涉及到相关报表的开发数据导出肯定是一个不可避免的问题啦。客户要求要导出优雅,美观的Excel文档格式的来展示数据,当时的第一想法就是使用NPOI开源库来做数据导出Excel文档&#xf…

springboot项目打成含crud操作的sdk集成到springboot启动引擎项目

一 sdk配置操作 1.1 结构 sdk项目目录中只有基础的service类以及mybatis操作数据库的相关文件,service类中包含查询数据库的方法。 说明: 1.2 sdk的pom打包配置 作为公共项目打成jar供其他项目引用,注意被引入的项目不能使用默认的maven…

python 3.11中安装sympy(符号工具包)

1.python环境: 2.安装遇到问题: 其中一台Win10系统上: … 另一台Win10系统上: 3.升级pip cmd命令行中,执行如下命令: python.exe -m pip installl --upgrade pip 4.再次安装sympy cmd命令行中&…

NotePad2轻便够用的文本编辑器

下载方式: 360软件管家里就可以安装,非常的方便。 打开后,界面如下: 可以拖拽打开文本,和notepad的功能差不多,可以平行替代。

苹果分拣检测YOLOV8NANO

苹果分拣,可以检测成熟、切片、损坏、不成熟四种类型,YOLOV8NANO,训练得到PT模型,然后转换成ONNX,OPENCV的DNN调用,支持C,PYTHON 苹果分拣检测YOLOV8NANO,检测四种类型苹果