前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FastDDS的服务器记录-译-

FastDDS的服务器记录-译-

作者头像
zhangrelay
发布2022-06-27 09:56:50
1.1K0
发布2022-06-27 09:56:50
举报
文章被收录于专栏:机器人课程与技术

discourse.ros.org/t/fastdds-without-discovery-server/26117/9


有疑问如下:

我一直在以多种方式与 FastDDS(在 ROS2 Humble 上)作斗争——但最大的问题是发现。

对于我的机器人,我有一个用于驱动程序的启动文件,第二个用于定位,第三个用于导航——它们都在机器人计算机上运行。如果我按顺序启动它们,一切正常 - 但然后说我必须重新启动导航才能更改配置 - 大约 75% 的时间,它无法连接某些主题(尤其是 tf 似乎是一个问题),然后我必须重新启动驱动程序启动文件 - 我会注意到我认为问题在于发现,因为现有连接(例如定位节点到驱动程序)继续起作用。切换到 CycloneDDS 也使问题消失。

当我开始研究解决方案时 - 一切似乎都表明“解决方案”是发现服务器:

eProsima 发现服务器  新发现服务器  将 ROS 2 与 Fast-DDS 发现服务器一起使用 ROS2 最受吹捧的“特性”之一,即没有单点故障 (rosmaster),是否真的不适用于更大的系统和默认的 DDS?

还是开箱即用的配置不起作用,我需要以某种特定方式配置 FastDDS?

在这里寻找反馈/帮助 - 因为根据技术评估报告 1一半的受访者表示他们喜欢 FastDDS 而不是 CycloneDDS——但我无法让事情顺利进行。

Fergs

我有点认为这就是我在这里所做的 - 鉴于我没有在一些大型花哨的商业产品中使用它,我的期望是我将依赖社区支持。我什至不确定我会在哪里发布问题(rmw 实现,FastDDS 本身?)。鉴于这更像是一个“系统”问题,我没有一个可重现的最小示例来分享。

我的问题实际上是:我正在寻找有关如何让更大的系统(25 个以上节点)工作的见解,因为我运气不太好。我什至不完全确定从哪里开始。我希望您的许多用户中的一些可能能够指向一个资源/帖子,上面写着“嘿,这就是我们使事情变得真正可靠的方式” - 到目前为止,一切似乎都指向发现服务器(这似乎违反直觉,因为过去几年围绕 ROS2 进行营销,但也许这是正确的答案,我应该去使用它)。

我与 RMW 报告的链接更多的是它告诉我,那里有一半的用户正在让它非常可靠地工作——我想知道他们的技巧/提示。


smac

即使这是答案,也应该作为默认配置文件而不是用户处理。您正在尝试做的是非常基本的/基本的-我很震惊 Fast-DDS 存在问题。

我将 Cyclone 用于涉及硬件机器人的大多数事情,我发现它在启动/常规服务调用中更稳定,但自从我认真研究 Fast-DDS 以来已经有一段时间了。现在它是默认设置,我将开始更多地使用它,因为我需要支持 Nav2 用户,但这对于移动机器人社区来说并不是一个很好的第一印象。

我现在也开始在 Nav2 中看到 RMW/DDS 相关票证的增加,这是自 Foxy 时代以来我从未见过的,上次 Fast-DDS 是默认设置,令人不安的是,我们可能已经退步了即用即用行为,即使 TSC RMW 报告指标未捕获该信息。还值得注意的是 Fast-DDS 报告的 RMW 问题:在运行时使用专用回调组创建的订阅者不起作用 · 问题 #613 · ros2/rmw_fastrtps · GitHub 5对于我所在的世界特定角落来说,这是一个非常关键的回归。

我想我很清楚,由于 Fast-DDS 现在是默认设置,我想确保处理任何零碎的事情,以便 ROS 2 中的 Nav2 和移动机器人用户获得良好的体验,因为我希望每个人都能关于同一页。

没有人建议任何激进的措施。这是一个讨论潜在问题和收集反馈的论坛,这就是这里发生的一切。


jaime

非常有趣的时间家伙。

如果您遇到可重现的问题,可以很容易地联系到 Fast DDS 背后的团队。为什么不发布问题?我在这里看不到任何真正的问题。许多用户确实会见我们并与我们一起评论他们的架构。你为什么不试试那个频道?GitHub?打电话给我们?

有了 Foxy、Galactic 和现在的 Humble,我们的主要 Fast DDS 存储库每月有大约 50K 的克隆。此外,我们的商业客户也在稳步增长。我们有很多用户,他们中的大多数,无论是直接使用 ROS 2 还是 DDS,都是满意的用户。

不幸的是,在某些情况下,我们可能会遇到错误,或者其他实现对于特定用例可能会表现得更好。因为在中间件中,所有的决策都需要权衡,而且我们肯定不是所有潜在用例的最佳选择。

目前,选择 RMW 默认值的过程是透明的:技术报告和 TSC 成员的职业,他们都是 ROS 2 的重度用户和重要贡献者。@smac认为旋风更好,他可能投票给旋风。但是我们也有非常重的ROS 2用户支持Fast DDS,在生产系统和商业机器人中使用ROS 2和Fast DDS,我们赢得了投票。我喜欢这样:投票基于可重复的技术论点和公正的测量,以及民主。

我的团队非常愿意讨论任何发现场景。我们甚至对可扩展性进行了非常大规模的研究,您可以在此处查看:

快速 DDS 发现机制分析 2

如果您需要解决方案,请在技术上讨论您的方案,与我们会面等。很容易找到我们。给我留言吧。或者,如果您想要公开讨论,可重现的问题是一个很好的起点。我们总是愿意改进我们的实施。

25+ 个节点,并不是一个真正的大系统。我们有更大的生产部署,其中一些使用默认发现,其中一些使用发现服务器。

是的,大型系统中可能会发生发现问题:这不是特定的实现,也不是 DDS,而是架构的本质。然后,您需要微调您的系统,使用 Discovery Server 等工具


我的个人经验来自一家没有多少资源可花费也没有 DDS 配置专业知识的公司: 我们使用 Fast DDS 开始了我们在 ROS2 galactic 中的工作。当时我们遇到了非常令人沮丧的问题,即服务没有响应、没有被发现或以巨大的延迟响应 + 一些高 CPU 使用率(所有这些都被报告了)。而且它不是一个分布式系统:一切都在 Ubuntu 20.04 下的强大 x86 计算机上运行(再标准不过了)。没什么太花哨的:定制的 nav2 堆栈、使用组合避免序列化的 3D 点云处理管道和硬件接口。 切换到 Cyclone DDS 后,我们所有的问题都神奇地消失了。 回想起来,对我们来说,从 ROS1 切换到 ROS2 的最高成本是解决 DDS 相关问题(另一个例子:localhost only 需要在环回接口上启用多播才能工作以及如何激活它,即“ip link set lo multicast on ”,该信息很难找到)。 从我在这篇文章中读到的内容来看,与默认 DDS 供应商更改相关的核心 ros 功能(发布/订阅/主题/服务/操作)似乎仍然存在一些不稳定性。从这个意义上说(单台计算机上的节点到节点通信),ROS2 仍然与 ROS1 不同。在 ROS1 中它可以正常工作。

作为一个“天真”的 ros 用户,我的反馈是:我相信有一些质量系统测试缺少针对 DDS 功能的测试。我们在 Galactic 下遇到的有关服务的问题被忽视是不正常的。对于影响 Humble 下回调组订阅的当前问题也是如此。如果是 DDS 配置问题,那么默认配置应该至少在标准系统(x86 Ubuntu LTS)上适用于标准 ROS 接口(发布/订阅/主题/服务/操作)。我认为等待非滚动发布来测试和迭代这些问题是不可接受的。我完全可以理解需要深入研究异国用例的配置,但请记住,绝大多数用户在单台计算机上运行 ROS 而不必担心网络延迟, 如果需要,我愿意帮助描述基本的测试用例。


本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档