紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
ROS2中间件 DDS 信息分享
-
-
rosidl_generator_dds_idl:https://github.com/ros2/rosidl_dds 提供 提供从
rosidl
文件(例如.msg
文件、.srv
文件等)生成DDS.idl
文件的工具 -
ROS2常用DDS及开源地址
- Eclipse Cyclone DDS https://github.com/ros2/rmw_cyclonedds
- Fast DDS https://github.com/ros2/rmw_fastrtps
- Connext DDS https://github.com/ros2/rmw_connextdds
- GurumNetworks GurumDDS https://github.com/ros2/rmw_gurumdds
- Iceoryx(不是DDS) https://github.com/ros2/rmw_iceoryx
- 零拷贝中间件:Zenoh、ZeroMQ
- 针对WIFI/广域网优化减少97%multicase流量dds: https://github.com/eclipse-zenoh/zenoh-plugin-dds
- Eclipse Cyclone DDS SHM 实现使用 Iceoryx,设置方法
- https://cyclonedds.io/docs/cyclonedds/latest/shared_memory/shared_memory.html
- https://github.com/ros2/rmw_cyclonedds/blob/galactic/shared_memory_support.md
- 提高Cyclone DDS大吞吐可能用到的设置:
Increase maximum message size
Increase fragment size
Increase high-water mark for the reliability window on the writer side
Increases to the default kernel network buffer sizes such as the UDP receive buffers (,
net.core.rmem_maxnet.core.rmem_default)
- 通信性能评估指标:
- 普通模式(LocalHost?):延迟、吞吐量、抖动、CPU 占用、内存占用
- ZeroCopy: 延迟、吞吐量、抖动、CPU 占用、内存占用
- 没有特殊配置话题 数量增加:延迟、吞吐量、抖动、CPU 占用、内存占用
- 主机之间的通信:延迟、吞吐量、抖动、CPU 占用、内存占用
- 不用qos下的性能表现
-
SHM 需要单独的API:rclcpp RMW LoanedMessage API
-
性能测试:
- https://gitlab.com/ApexAI/performance_test/
- https://github.com/eclipse-cyclonedds/cyclonedds#performance
- Wireshark DDSI-RTPS插件:https://www.wireshark.org/docs/dfref/r/rtps2.html
-
Fast DDS 使用 Boost.interprocess 来实现共享内存和数据共享交付
-
DDS 简单发现协议 (SDP) 通过组播通信发现单个实体
-
FastDDS Monitor DDS分析工具
- xhost local:root
- docker run -it --privileged -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix fastdds-monitor:v1.5.0
https://www.eprosima.com/index.php/component/ars/repository/eprosima-fast-dds-monitor/eprosima-fast-dds-monitor-1-5-0/eprosima_fast-dds-monitor-v1-5-0-linux-appimage?format=raw
https://www.eprosima.com/index.php/component/ars/repository/eprosima-fast-dds-monitor/eprosima-fast-dds-monitor-1-5-0/eprosima_fast-dds-monitor-v1-5-0-linux-run?format=raw
-
- Fast DDS 利用域参与者来识别在同一主机中运行的对等方。 具有相同 4 个前字节的两个参与者被视为在同一中运行 主机。
- 使用更高权限的用户(例如 root)启动任何进程 可能导致通信问题,因为非特权用户运行的进程可能会 无法写入内存段。
- 进程内交付:eProsima Fast DDS允许通过避免任何 传输层中涉及的开销。 相反,发布服务器直接调用订阅服务器的接收函数。 这不仅避免了传输的复制或发送操作,而且还确保消息由 订阅者,避免确认机制。
- 相同 8 个前字节的两个参与者被视为在同一 进程
-
https://www.omg.org/spec/DDSI-RTPS/2.2/PDF
DDSI-RTPS V2.2 标准(第 9.6.1.1 节)定义了一组规则来计算众所周知的 端口,以便域参与者可以与这些默认定位符进行通信。 当定位器配置端口号 0 时,快速 DDS 也会自动选择已知端口。
12.DDS话题名称和 ROS 映射规则:https://design.ros2.org/articles/topic_and_service_names.html
-