写点什么

从 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:003148

评论

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

Mysql 温故知新系列「触发器详解」

安逸的咸鱼

MySQL 7月月更

uni-app进阶之自定义【day13】

恒山其若陋兮

7月月更

Android gradle常用

沃德

android Gradle 7月月更

Block在开发中的实践应用

NewBoy

ios 前端 移动端 iOS 知识体系 7月月更

「分享」从Mybatis源码中,学习到的10种设计模式

小傅哥

设计模式 小傅哥 mybatis 大厂面试 面试问题

Zabbix 6.0 源码安装以及 HA 配置

耳东@Erdong

zabbix ha 7月月更 zabbix 6.0

【Docker 那些事儿】容器网络(下篇)

Albert Edison

Docker Kubernetes 容器 云原生 7月月更

鲲鹏代码迁移工具基础知识

乌龟哥哥

7月月更

认识区块链和比特币

沃德

程序员 7月月更

C#入门系列(二十三) -- 分部类和抽象类

陈言必行

7月月更

ArkUI开发框架组件的生命周期详解

坚果

HarmonyOS OpenHarmony Open Harmony 7月月更

Python 迭代器介绍及其作用

宇宙之一粟

Python 迭代器 7月月更

Dockerfile中的保留字指令讲解

宁在春

Docker Dockerfile 7月月更

在线SQL转文本工具

入门小站

工具

在线摇骰子色子工具

入门小站

工具

strlen()

謓泽

7月月更

使用kitti数据集实现自动驾驶——发布照片、点云、IMU、GPS、显示2D和3D侦测框

秃头小苏

7月月更 kitti

Spring cloud 之限流

Damon

7月月更

云原生(六) | Docker篇之实战Dockerfile

Lansonli

Docker 云原生 7月月更

王者荣耀商城异地多活架构设计

地下地上

架构实战营

一款强大的mock数据生成工具

Xd

python文件操作知多少

迷彩

Python基础 文件操作 7月月更

Unity实战问题-WebGL问题集锦-上篇

芝麻粒儿

Unity 7月月更

linux之realpath命令

入门小站

Linux

关于InnoDB表数据和索引数据的存储

程序员欣宸

MySQL innodb MySQL InnoDB 7月月更

分布式系统中数据存储方案实践

Java 架构

Qt | 控件之QComboBox

YOLO.

qt 7月月更

zookeeper-watcher的javaApi相关使用

zarmnosaj

7月月更

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