写点什么

从 ROS1 到 ROS2,带来托管启动和数据分发服务

  • 2019-11-18
  • 本文字数:1233 字

    阅读完需:约 4 分钟

从ROS1到ROS2,带来托管启动和数据分发服务

2018 年,机器人操作系统 2 (ROS2)作为 ROS1 的继任者推出。在ROSCon 2019大会上,几位演讲者分享了他们从 ROS1 转到 ROS2 的经历。他们分别在两个单独的演讲中进行了分享:Autoware 项目和 Rover Robotics 的演示。


Autoware 项目借此机会对他们的软件进行了重新设计,以便更好地运行在 ROS2 上。Autoware 项目以Autoware.AI为起点,它是一款用于自动驾驶汽车的开源软件。他们的软件基于 ROS1,非常适合进行原型设计。但 Autoware 不适合用于构建实际的产品,原因有三个。主要原因是 ROS1 未经认证,要实现认证需要很多年的时间和人们的努力。Autoware AI 应用的决定论和内存安全性实现认证也不太可能。最后,由于 ROS1 的终结时间被定在 2025 年,它的受支持时间只剩下不到 6 年。因此,Autoware 决定启动 autoware.auto,虽然这需要做更多的工作,但从长期来看将带来更好的结果。


相比 ROS1,ROS2 带来了几个好处。一个好处是托管启动,你可以指定节点启动顺序。另一个好处是数据分发服务(DDS)通信协议,它可以以零拷贝的方式传递消息,节省了 CPU 和内存资源。在开发方面,他们花了更多的精力来增加测试覆盖率,提供更多更好理解的文档,以及更多持续集成,以便实现软件的认证。


为了确保能够愉快地使用现有的 Autoware 软件栈,工程团队对旧项目也提供了与新项目一样的支持。这是通过添加 ROS1 桥接来实现的。通过这种方式,新的高质量特性被引入到新的项目中,同时又保持现有贡献者的体验不受影响。对贡献者来说,由于他们对质量期望很高,所以 Autoware 需要提供更高的测试覆盖率,每个发行版的设计文档以及确定性执行测试用例。为了鼓励现有贡献者和新贡献者加入,Autoware 的工作人员正在为他们提供指导。


Nick Fragal 和 Nick Padilla 进行了第二次演讲,他们都在 Rover Robotics 公司工作。他们使用 ROS1 来共享通用的机器人代码,并尽量减少常见任务的代码重写工作。他们希望使用 ROS2 来共享可靠的机器人代码。ROS2 的技术指导委员会中有很多来自大公司的人,他们非常重视可靠性,因此可以预料的是,很多公司将采用 ROS2。可见 ROS2 大有前景。


Fragal 谈到了它们的应用:一种运送 T 恤的机器人,可以把 T 恤送到参会的人手中。他们用 ROS1 进行了一个演示,想把它移植到 ROS2。移植最初看起来进行很顺利,但是当他们用速度较慢的 WIFI 进行新的演示时,遇到了问题。


潜在的原因是 DDS 协议,它在慢 WIFI 环境下不能很好地运行。为了解决这个问题,他们研究了可以调整哪些参数让 DDS 在慢 WIFI 环境下运行得更好。他们还比较了 DDS 协议的不同实现,并与提供商合作改进它们的实现。最后,多个 DDS 实现都可以在 10 秒内让软件启动起来。关键的是选择具有零拷贝的 DDS 中间件,避免在内存中移动图像。


总的来说,Rover Robotics 估计在进行移植演示时大约花费了 60%的时间在研究通信协议上。不过,现在它运行得更顺畅了,他们希望以后把 90%的精力放在导航和应用程序代码上。


原文链接


Migrating Two Large Robotics ROS1 Codebases to ROS2


2019-11-18 08:002310

评论

发布
暂无评论
发现更多内容

DBA:介里有你没有用过的“CHUAN”新社区版本Redis6.0

华为云开发者联盟

redis 开源 多线程 Redis 6.0 华为云DCS

一期投资30亿!“中国—东盟星动云算力中心项目”将落地广西巴马

旺链科技

数字经济 产业区块链 一带一路

闲鱼消息发展回顾

OpenIM

枚举在 Golang 中的实现

baiyutang

Go 语言 9月日更

“妈我不想去上课!”“不行你是老师!”

梦想橡皮擦

9月日更

普通二本的辛酸Java面试之路,Java程序员架构之路该如何继续学习

Java 程序员 后端

架构实战营模块三作业

michael

#架构实战营

图遍历算法

6979阿强

图遍历 GraphScope

玩转anyRTC用户控制台

anyRTC开发者

音视频 WebRTC 语音通话 视频通话 用户后台

Sentinel 常用流控算法

Z

sentinel 流控算法 服务监控 服务降级 流控

命令行如何执行jar包里面的方法

FunTester

性能测试 反射 接口测试 测试框架 FunTester

图计算的应用

6979阿强

我用MRS-ClickHouse构建的用户画像系统,让老板拍手称赞

华为云开发者联盟

数据库 标签 用户画像 MRS ClickHouse 列式存储

【预告】网络研讨会|下一代汽车操作系统微内核seL4:seL4基金会主席谈物理系统安全工程实践

鉴释

自动驾驶 操作系统 微内核

【LeetCode】寻找峰值Java题解

Albert

算法 LeetCode 9月日更

镜子-或许我们也和Pod一样生活在虚拟世界

Lance

针对各种指标数据如何选择合适的算法?

云智慧AIOps社区

技术 算法 数据 智能运维 指标

手撸二叉树之翻转二叉树

HelloWorld杰少

9月日更

【Vuex 源码学习】第三篇 - Vuex 中 State 状态的实现

Brave

源码 vuex 9月日更

Android音频API

轻口味

android 音视频 引航计划 9月日更

linux系列之:告诉他,他根本不懂kill

程序那些事

Linux 命令 程序那些事 kill

乘着汽车智能化的浪潮,“汽车人”的职业方向选择(二)

SOA开发者

程序员 软件 汽车 职业发展

还重构?就你那代码只能铲了重写!

小傅哥

Java 小傅哥 代码优化 代码重构 开发标准

Python——绑定与方法调用

在即

9月日更

【Flutter 专题】46 图解新的状态管理 Provider (一)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 9月日更

雪花算法,什么情况下发生 ID 冲突?

马丁玩编程

Java lua redis 雪花算法

GaussDB(for MySQL)如何快速创建索引?华为云数据库资深架构师为您揭秘

华为云开发者联盟

数据库 算法 索引 GaussDB(for MySQL) MySQL索引

通过线路输入功能快速创建吉他谱

懒得勤快

普通二本的辛酸Java面试之路,34岁Java程序员裸辞

Java 程序员 后端

来一份全面的面试宝典练练手,6年老Java面经总结

Java 程序员 后端

Supervisor 基础配置

耳东@Erdong

Supervisor 9月日更

从ROS1到ROS2,带来托管启动和数据分发服务_编程语言_Roland Meertens_InfoQ精选文章