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.mzph.cn/news/702767.shtml

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

相关文章

力扣--动态规划1014.最佳观光组合

思路分析: 初始化左侧景点的评分为第一个景点的评分,最终结果为0。从第二个景点开始遍历数组。对于每个景点,计算当前观光组合的得分,即当前景点的评分 左侧景点的评分 - 两者之间的距离。更新最终结果为当前得分和之前结果的较大值。更新左…

matlab simulink变压器温度仿真

1、内容简介 略 48-可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 matlab simulink变压器温度仿真_哔哩哔哩_bilibili 4、参考论文 略 大型油浸风冷变压器绕组温度场分析_高原 基于顶层油温的变压器绕组热点温度计算改进模型_陈伟根 基于热电类比理论的油浸式电…

Python及Pycharm专业版下载安装教程(Python 3.11版)附JetBrains学生认证教程

目录 一、Python下载及安装1、Python下载2、Python安装3、验证是否安装成功 二、PyCharm下载及安装1、PyCharm下载2、PyCharm安装3、激活PyCharm 三、JetBrains学生认证 本篇主要介绍Python和PyCharm专业版的下载及安装方式,以及通过两种方式进行JetBrains学生认证。…

基于ZYNQ的PCIE高速数据采集卡的设计(五)上位机软件设计

4.4 上位机软件设计 上位机主要完成数据的接收和保存文件等功能。由于采集卡是一种 PCIE 设备, 需要一种 PCIE 设备的驱动程序为基础进行开发。本设计选择 WinDriver 开发工具来 生成 PCIE 设备驱动和函数库,并基于该驱动在 Visual Studio(…

【自译】MIT麻省理工学院技术双月刊(The Bimonthly MIT Technology Review)125周年纪念词

上期 MIT Review 链接:创新版块概览(二) MIT Technology Review 125 原文 Happy Anniversary For 125 years, Technology Review has aimed to explain the “always new and ever more complex problems” we face. “To a community gr…

【Vuforia+Unity】AR04-地面、桌面平面识别功能(Ground Plane Target)

不论你是否曾有过相关经验,只要跟随本文的步骤,你就可以成功地创建你自己的AR应用。 官方教程Ground Plane in Unity | Vuforia Library 这个功能很棒,但是要求也很不友好,只能支持部分移动设备,具体清单如下: 01.Vuforia的地面识别功能仅支持的设备清单: Recommended…

【变压器故障诊断分类及预测】基于GRNN神经网络

课题名称:基于GRNN神经网络的变压器故障诊断分类及预测 版本日期:2024-02-10 运行方式:直接运行GRNN0507.m文件 代码获取方式:私信博主或QQ:491052175 模型描述: 对变压器油中溶解气体进行分析是变压器…

应急响应实战笔记03权限维持篇(4)

第4篇:Linux权限维持--后门篇 本文将对Linux下常见的权限维持技术进行解析,知己知彼百战不殆。 1、一句话添加用户和密码 添加普通用户: # 创建一个用户名guest,密码123456的普通用户 useradd -p openssl passwd -1 -salt sal…

26.java-单元测试xml注解

单元测试&xml&注解 单元测试 单元测试就是针对最小的功能单元编写测试代码,Java程序最小的功能单元是方法,因此,单元测试就是针对 Java 方法的测试,进而检查方法的正确性。 简单理解 : 就是一个测试代码的工具 目前测试…

2024年2月20日v1.0.5更新·优雅草便民工具youyacao-tools

2024年2月20日v1.0.5更新优雅草便民工具youyacao-tools apk下载 https://fenfacun.youyacao.com/tools105.apk 介绍 优雅草便民工具是一款由成都市一颗优雅草科技有限公司打造的便民查询公益工具,2024年1月17日正式发布v1.0.0版本,本工具为了方便大众免…

mysql优化指南之优化篇

二、优化 现在的理解数据库优化有四个维度,分别是: 硬件升级、系统配置、表结构设计、SQL语句及索引。 那优化的成本和效果分别如下: 优化成本:硬件升级>系统配置>表结构设计>SQL语句及索引。 优化效果:…

Linux环境安装ffmpeg6.x

1.官网ffmpeg下载源码 https://ffmpeg.org/download.html#build-windows 2.未安装x264库则先安装配置 可以先查询x264库: whereis libx264 安装编译工具和依赖库: sudo yum install gcc make cmake mercurial git yasm pkgconfig autoconf automake libtool sudo…

RabbitMQ 面试八股题整理

前言:本文是博主网络自行收集的一些RabbitMQ相关八股文,还在准备暑期实习,后续应该会持续更新...... 参考:三天吃透RabbitMQ面试八股文_牛客网 目录 RabbitMQ概述 什么是 RabbitMQ? 说一说RabbitMQ中的AMQP 为什么…

zabbix监控业务数据

前言 监控系统除了监控os和数据库性能相关的指标外,业务数据也是重点监控的对象。 一线驻场的运维同学应该深有体会,每天需要向甲方或者公司反馈现场的数据情况,正常情况下一天巡检两次,早上上班后和下午下班前各一次。监控项目…

【C语言】指针初阶

正文开始之前,我们要记住一个东西就是:地址指针 目录 一、指针的解释二、指针变量和地址1、取地址操作符2、指针变量和解引用操作1、指针变量2、拆解指针类型3、解引用操作符4、注意事项 3、指针变量的大小4、指针的解引用5、void*指针 三、指针的运算1、…

数据结构:链表的冒泡排序

法一:修改指针指向 //法二 void maopao_link(link_p H){if(HNULL){printf("头节点为空\n");return;}if(link_empty(H)){printf("链表为空\n");return;}link_p tailNULL;while(H->next->next!tail){link_p pH;link_p qH->next;while(q…

CUDA C:核函数、主机函数、设备函数

相关阅读 CUDA Chttps://blog.csdn.net/weixin_45791458/category_12530616.html?spm1001.2014.3001.5482 核函数(Kernel Function)指的是在主机(CPU)调用(某些情况下也可以在设备调用),在设备(GPU)上执行的函数,使用__global__…

YOLOv8改进 | Conv篇 | 全新的SOATA轻量化下采样操作ADown(参数量下降百分之二十,附手撕结构图)

一、本文介绍 本文给大家带来的改进机制是利用2024/02/21号最新发布的YOLOv9其中提出的ADown模块来改进我们的Conv模块,其中YOLOv9针对于这个模块并没有介绍,只是在其项目文件中用到了,我将其整理出来用于我们的YOLOv8的项目,经过实验我发现该卷积模块(作为下采样模块)…

liunx前后端分离项目部署

文章目录 1、nginx的安装和自启动2.nginx负载均衡3.前后端项目部署-后端部署4.前后端项目部署-前端部署 1、nginx的安装和自启动 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel1.安装我们nginx所需要的依赖 wget http://nginx.org/download/nginx-1.…

Open3D 点云法向量计算与可视化 (25)

Open3D 点云法向量计算与可视化 (25) 一、算法原理二、算法实现三、可视化显示和长度调节一、算法原理 通常计算点云的法向量可以使用以下两种常见的方法: 最小二乘法(Least Squares Method):该方法通过拟合局部表面的平面来计算法向量。对于给定点周围的邻域,可以通过…