四种方法解决ROS2超过100个节点时的DDS瓶颈 fastdds 默认的 participant 限制是 100 个超过会报错。可通过设置环境变量FASTRTPS_DEFAULT_PROFILES_FILE指向自定义 XML 配置文件来修改 participant 限制。解决方法1 增加fastdds的udp端口范围100个以内节点首选新建fastdds_large_scale_configuration.xml:?xml version1.0 encodingUTF-8 ?ddsxmlnshttp://www.eprosima.comprofilesparticipantprofile_nameparticipant_profileis_default_profiletruertpsbuiltinmutation_tries1000/mutation_tries/builtin/rtps/participant/profiles/dds设置了mutation_tries为 10000至少超过节点数多了无害避免 participant 创建失败。参考 https://docs.ros.org/en/humble/Tutorials/Advanced/Discovery-Server/Discovery-Server.html#large-number-of-participants在~/.bashrc或~/.zshrc中添加exportFASTDDS_DEFAULT_PROFILES_FILE改为path to fastdds_large_scale_configuration.xmlexportFASTRTPS_DEFAULT_PROFILES_FILE改为path to fastdds_large_scale_configuration.xml# for old version (ROS humble)Then runsource~/.bashrc# make ros2 cli tools take effectros2 daemon stop ros2 daemon start优点实测启动100个节点左右的仿真是可行的。不用改rmw实现兼容现有fastdds的其他节点。缺点超过100个后仍然容易出现端口占用问题而且启动速度明显变慢甚至出现丢包。这是因为它采用的是Simple Discovery,每个节点都参与UDP广播的discovery机制节点数过多时会导致网络拥塞。即使fastdds可以改用Discovery Server模式来解决这个问题但实测仍然会出现启动问题而且额外启动Discovery Server并不方便。解决方法2 rmw改用cyclonedds100-200个节点首选不同于fastdds的simple discovery机制cyclonedds会共享 discovery 信息而不是简单让每个 participant 独立完成全部 discovery, 对大规模 participant 更友好。sudoaptinstallros-${ROS_DISTRO}-rmw-cyclonedds-cpp-yexportRMW_IMPLEMENTATIONrmw_cyclonedds_cpp# 添加到 ~/.bashrc 或 ~/.zshrc优点实测启动200个节点左右的仿真是可行的不用额外启动Discovery Server启动速度也比fastdds快。缺点节点数量较少时cyclonedds的性能上限低于fastdds话题发布到订阅的端到端延迟可能会慢一些。但是数量较多时差异不明显。多于200个节点后ros启动和运行开销仍然会明显增加容易打满cpu。但这已经和发现机制关系不大了。解决方案3 rmw改用zenoh200节点选择在2026版本的ros2 lyrical中zenoh已经被支持为一等rmw实现。优势节点Discovery效率更高有望支持大规模节点。zenoh的router gossip发现机制类似ROS1的master节点所有节点都通过router gossip来发现其他节点理论上可以支持更多的participant。当然zenoh也支持udp multicast discovery机制类似fastdds的simple discovery机制但是overhead更低性能更好。支持共享内存传输多进程间话题通信可以更快。这对于高频或者大带宽话题发布和订阅非常有利缺点不兼容DDS版本的ros2生态zenoh目前还没有被广泛使用很多ros2包不支持zenoh rmw。仍然未能解决ros2一个节点就是一个进程分配一个ros context的问题进程多时ros2启动和运行开销仍然会明显增加容易打满cpu。解决方案4 单进程启动多node1000节点首选类似ros1的nodeletros2也支持在一个进程中启动多个node并用多线程executor。这样可以避免ros2多进程开销。优点避免ros2多进程开销启动和运行开销明显降低。是最有可能实现1000节点仿真的方案。进程内部可以使用零拷贝通信/clock话题发布和订阅可以更快有望提供fss_time coordinator的更高RTF推进速度。缺点不灵活难以把用户算法也放入一个进程中。用户算法通常需要在不同的进程中运行。多个node在同一个进程中运行时ros2的多线程executor调度机制不能完全隔离不同node的callback可能会导致一个node的原本单线程的callback现在被分配到多线程上运行和单线程行为不完全一致尤其是用了多个callback group的时候。不过注意callback group的设置一般问题不大。

相关新闻

最新新闻

时序数据库TDengine在工业物联网中的核心优势与应用

时序数据库TDengine在工业物联网中的核心优势与应用

1. 为什么工业数据需要专门的时序数据库? 在工业物联网(IIoT)和智能制造领域,数据采集的典型特征与传统互联网应用有着本质区别。以某汽车工厂的传感器网络为例,2000多个测点以每秒10次的频率采集温度、振动、电流等数…

2026/8/11 11:55:19
问卷星在线考试vs垂直考试系统,2026中小企业培训选哪个?

问卷星在线考试vs垂直考试系统,2026中小企业培训选哪个?

1.导语对于中小企业的HR与培训岗从业者来说,选到适配的在线考试系统,能直接降低培训考核的时间与人力成本。本文结合问卷星、雨课堂等多款不同类型考试工具的实际使用体验,从功能、成本、适配性等维度展开对比,帮大家快速匹配适合…

2026/8/11 11:55:19
企业做专利检索,数据库到底该怎么选?

企业做专利检索,数据库到底该怎么选?

在很多人的印象里,专利检索要么是法务的事,要么是少数专利代理人的活儿。但真正带过研发团队、做过项目申报、跑过产品上市、参与过投融资尽调的人,感受不太一样——专利数据库早就不是小圈子的工具,它越来越像企业创新活动里的基…

2026/8/11 11:55:19
2025 黑马程序员 AI运维云计算 AI全程赋能,2025

2025 黑马程序员 AI运维云计算 AI全程赋能,2025

拥抱AI时代运维:黑马程序员AI运维云计算,AI全程赋能岗位实战 在云计算、微服务与分布式架构全面普及的今天,企业IT系统的复杂度呈指数级增长。一个线上故障可能涉及数十个服务、上百个节点、千万级调用链路,传统的“看监控、查日志…

2026/8/11 11:55:19
能源计量结算平台技术解析与行业实践

能源计量结算平台技术解析与行业实践

1. 项目背景与行业意义 宁夏宝丰集团作为西北地区重要的能源化工企业,其水电表计量结算管理平台的建设具有典型的行业示范价值。这类项目通常涉及能源计量、数据采集、费用结算等核心业务环节,是工业企业实现精细化管理和数字化转型的基础设施。 在传统…

2026/8/11 11:55:19
eShop本地开发环境配置与微服务部署指南

eShop本地开发环境配置与微服务部署指南

1. eShop本地运行环境准备作为电商系统开发者的标配工具,eShop的本地化部署能极大提升开发调试效率。不同于直接操作线上环境,本地运行可以自由测试支付回调、订单状态修改等敏感操作,还能避免多人协作时的环境冲突问题。我经手过三个不同技术…

2026/8/11 11:50:19