一、概要

ROS 最初是作为 Willow Garage PR2 机器人的开发环境而诞生的。我们的主要目标是为用户提供使用 PR2 进行新颖研究和开发项目所需的软件工具。同时,我们知道 PR2 不会是世界上唯一甚至最重要的机器人,我们希望 ROS 对其他机器人有用。因此,我们投入了大量精力来定义抽象级别(通常通过消息接口),这将允许大部分软件在其他地方重用。

尽管如此,我们还是以 PR2 用例为指导,其显着特征包括:

  • 单个机器人;
  • 船上工作站级计算资源;
  • 没有实时要求(或者,任何实时要求都将以定制的方式才能满足);
  • 出色的网络连接(有线或近距离高带宽无线);
  • 研究应用,主要是学术界;
  • 最大的灵活性,没有任何规定或禁止(例如,“我们不包装你的 main()”)。

可以公平地说,ROS 满足了 PR2 用例,但也因在各种各样的机器人上变得有用而被超越。今天我们看到 ROS 不仅用在 PR2 和类似 PR2 的机器人上,还用在各种尺寸的轮式机器人、有腿人形机器人、工业臂、户外地面车辆(包括自动驾驶汽车)、飞行器、水面车辆, 和更多。

此外,我们看到 ROS 在我们最初关注的主要学术研究社区之外的领域得到采用。基于 ROS 的产品正在进入市场,包括制造机器人、农业机器人、商业清洁机器人等。政府机构也在更密切地关注 ROS 在其现场系统中的使用。例如,NASA 预计将在部署到国际空间站的 Robonaut 2 上运行 ROS。

随着 ROS 的所有这些新用途,该平台正在以意想不到的方式扩展。虽然它表现良好,但我们相信我们可以通过正面处理他们的新用例来更好地满足现在更广泛的 ROS 社区的需求。

二、新用例

对于 ROS 社区的持续和未来发展,我们特别感兴趣的是以下用例,我们在项目开始时没有考虑到这些用例:

  • 多机器人团队:虽然现在可以使用 ROS 构建多机器人系统,但没有标准方法,它们都在 ROS 的单主机结构之上进行了一些破解。
  • 小型嵌入式平台:我们希望小型计算机,包括“裸机”微控制器,成为 ROS 环境的一流参与者,而不是通过设备驱动程序与 ROS 隔离。
  • 实时系统:我们希望直接在 ROS 中支持实时控制,包括进程间和机器间通信(假设有适当的操作系统和/或硬件支持)。
  • 非理想网络:我们希望 ROS 在网络连接由于丢失和/或延迟而退化时表现得尽可能好,从质量差的 WiFi 到地对空通信链路。
  • 生产环境:虽然 ROS 继续成为研究实验室的首选平台至关重要,但我们希望确保基于 ROS 的实验室原型能够演变成适用于实际应用的基于 ROS 的产品。
  • 用于构建和构建系统的规定模式:虽然我们将保持作为 ROS 标志的底层灵活性,但我们希望为生命周期管理和部署的静态配置等功能提供清晰的模式和支持工具。

三、新技术

ROS 的核心是一个几乎完全从零开始构建的匿名发布-订阅中间件系统。从 2007 年开始,我们构建了自己的发现、消息定义、序列化和传输系统。在这七年中,我们见证了在所有这些领域中与 ROS 相关的几种新技术的开发、改进和/或广泛采用,例如:

  • Zeroconf;
  • Protocol Buffers;
  • ZeroMQ (and the other MQs);
  • Redis;
  • WebSockets; and
  • DDS (Data Distribution Service).

现在可以使用现成的开源库构建类似 ROS 的中间件系统。我们可以通过多种方式从这种方法中受益匪浅,包括:

  • 我们维护的代码更少,尤其是非机器人特定的代码;
  • 我们可以利用这些库中超出我们自己构建范围的功能;
  • 我们可以从其他人对这些库的持续改进中受益;和
  • 当人们问我们 ROS 是否“准备好迎接黄金时间”时,我们可以指出已经依赖这些库的现有生产系统。

四、API 更改

构建 ROS 2 的另一个原因是利用这个机会来改进我们面向用户的 API。今天存在的大量 ROS 代码与客户端库兼容,早在 2009 年 2 月发布的 0.4“Mango Tango”版本。从稳定性的角度来看,这很好,但这也意味着我们仍然生活在几年前做出的 API 决策中,其中一些我们现在知道不是最好的。

因此,在 ROS 2 中,我们将设计新的 API,尽我们最大的能力将社区的集体经验与第一代 API 结合起来。因此,虽然关键概念(分布式处理、匿名发布/订阅消息、带有反馈的 RPC(即动作)、语言中立性、系统自省性等)将保持不变,但您不应期望 ROS 2 成为 API - 与现有的 ROS 代码兼容。

但不要害怕:会有适当的机制允许 ROS 2 代码与现有 ROS 代码共存。至少,会有翻译中继支持两个系统之间的运行时交互。并且可能会有库 shims 允许现有的 ROS 代码针对 ROS 2 库进行编译/运行,其行为在性质上与今天看到的相似。

五、为什么不只是增强 ROS 1

原则上,上述更改可以集成到现有的核心 ROS 代码中。例如,可以将新的传输技术添加到 roscpp 和 rospy。我们考虑了这个选项并得出结论,鉴于实现我们所寻求的利益所需的更改的侵入性,更改许多人依赖的当前 ROS 系统存在太大的风险。我们希望今天存在的 ROS 1 能够继续工作,并且不受 ROS 2 开发的影响。因此,ROS 2 将构建为一组并行的包,可以与 ROS 1 一起安装并与 ROS 1 互操作(例如,通过消息桥) .

为什么要ROS2而不是对ROS1修修补补?相关推荐

  1. Ubuntu20.04同时安装ROS1和ROS2共存

    Ubuntu20.04同时安装ROS1和ROS2共存 文章目录 Ubuntu20.04同时安装ROS1和ROS2共存 一.换源 1.1 通过软件更新 1.2 通过修改源文件(建议) 二.安装ROS1( ...

  2. ros1 和 ros2的区别

    为什么用ros2.0 0.概述 1.基本概念 基本概念: ROS网络(ROS Graph)概念简介: 节点(Nodes) 客户端程序库 发现 2. ros2 的目标 3. ros2 的架构 4. ro ...

  3. ROS2/DDS/QoS/主题的记录

    比较杂乱,调试会遇到问题,并且ROS2的问题和ROS1有非常大的差异性. 一些概念: 词汇表: DDS - 数据分发服务 RTPS - 实时发布订阅 QoS - 服务质量 客户端 - 也称为客户端,是 ...

  4. ROS2概述和实践入门

    ROS可以说是⽬前机器⼈相关开源社区最流⾏的项⽬之⼀,它是⼀个易⽤且完备的机器⼈开发框架.⽣态乃⾄社区,海量的机器⼈开源项⽬(涵盖感知.规划.控制.定位.SLAM和建图.可视化等⼏乎所有机器⼈领域)均 ...

  5. 古月居ros课件_【古月居】ROS2探索总结系列

    ROS2探索总结(一)--ROS成长记 http://www.guyuehome.com/772 ROS2探索总结(二)--走近ROS2.0时代 http://www.guyuehome.com/80 ...

  6. [转]ROS2 源码解析与实践 - Node

    转载说明: 原文链接https://floodshao.github.io/2020/03/06/ros2-源码解析与实践-Node/ 感谢原作者分享!如有侵权,请联系我删除,谢谢! 文章目录 1. ...

  7. 拥抱ROS2系列:ROS2概述和实践入门(一)

    ROS可以说是⽬前机器⼈相关开源社区最流⾏的项⽬之⼀,它是⼀个易⽤且完备的机器⼈开发框架.⽣态乃⾄社区,海量的机器⼈开源项⽬(涵盖感知.规划.控制.定位.SLAM和建图.可视化等⼏乎所有机器⼈领域)均 ...

  8. 拥抱ROS2系列:ROS2概述和实践入门

    来源丨深蓝AI ROS可以说是⽬前机器⼈相关开源社区最流⾏的项⽬之⼀,它是⼀个易⽤且完备的机器⼈开发框架.⽣态乃⾄社区,海量的机器⼈开源项⽬(涵盖感知.规划.控制.定位.SLAM和建图.可视化等⼏乎所 ...

  9. 无人驾驶汽车系统入门(三十二)——ROS2概述和实践入门(一)

    ROS可以说是目前机器人相关开源社区最流行的项目之一,它是一个易用且完备的机器人开发框架.生态乃至社区,海量的机器人开源项目(涵盖感知.规划.控制.定位.SLAM和建图.可视化等几乎所有机器人领域)均 ...

  10. ROS2学习和使用SLAM算法(gmapping/cartographer/orb-slam等)

    ROS2经过6年的快速发展,在充分优化和大幅改进ROS1的基础上(点击了解2014年ROS2规划),功能已经非常完善了. orb-slam2 目前(2019年10月9日)官方功能包已达687. ros ...

最新文章

  1. tableau必知必会之妙用 Lookup 函数同时跨行跨列取数
  2. ThinkPad T61安装Ubuntu9.10全记录
  3. android7.1开机监听广播,Android7.1 Audio Debug相关方法
  4. sonarqube执行命令遇上的小问题
  5. OpenFire源码学习之二十一:openfie对用户的优化(上)
  6. html5元件的作用,寄存器的作用是什么
  7. 串口服务器485转以太网
  8. python3爬虫教程
  9. Excel 画函数曲线
  10. java调用百度地图api,展示北京地铁路线
  11. 智慧社区管理系统06(业主列表和功能实现)
  12. 在数控机床上加工零件,主要取决于加工程序
  13. android帧动画卡顿现象,css3针对移动端卡顿问题的解决(动画性能优化)
  14. 阿里云国际版核心渠道商
  15. android中使用dimen定义尺寸 .
  16. 11家共享单车可通过支付宝免押骑车,这种省钱的方法你get了吗?
  17. 快速过熊掌号2.0新手任务了解熊掌号!
  18. P110 03-掌握vue-router懒加载的使用
  19. gp数据库创建数据库_创建数据库简介
  20. POST常见数据提交类型

热门文章

  1. 博途V16 更改PLC的型号和固件版本
  2. android代码 发警报音,为提醒设置自定义Android警报
  3. android代码 发警报音,Android 8中的警报重复
  4. 原创【歌词类】绘流年
  5. BZOJ4816 数字表格
  6. b站《史上最全unity3D教程》笔记1-03
  7. qqpcmgr_docpro文件的删除
  8. 什么是工作分解结构?What Work Breakdown Structure?
  9. Bluecoat Web无法正常显示页面解决方案
  10. 2019全球IT行业薪酬报告:平均年薪超70万!最高薪职位竟是...