鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    ROS2中间件 DDS 信息分享

    已定时 已固定 已锁定 已移动
    ROS 2相关问题
    dds ros2 rmw
    1
    1
    862
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 小鱼小
      小鱼 技术大佬
      最后由 小鱼 编辑

      1. rosidl_generator_dds_idl:https://github.com/ros2/rosidl_dds 提供 提供从rosidl文件(例如.msg文件、.srv文件等)生成DDS .idl文件的工具

      2. 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
      1. 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)

      1. 通信性能评估指标:
      • 普通模式(LocalHost?):延迟、吞吐量、抖动、CPU 占用、内存占用
      • ZeroCopy: 延迟、吞吐量、抖动、CPU 占用、内存占用
      • 没有特殊配置话题 数量增加:延迟、吞吐量、抖动、CPU 占用、内存占用
      • 主机之间的通信:延迟、吞吐量、抖动、CPU 占用、内存占用
      • 不用qos下的性能表现
      1. SHM 需要单独的API:rclcpp RMW LoanedMessage API

      2. 性能测试:

      • 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
      1. Fast DDS 使用 Boost.interprocess 来实现共享内存和数据共享交付

      2. DDS 简单发现协议 (SDP) 通过组播通信发现单个实体

      3. FastDDS Monitor DDS分析工具

      1. xhost local:root
      2. 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 个前字节的两个参与者被视为在同一 进程
      1. 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

      1. FASTDDS 广域网通信:https://eprosima-dds-router.readthedocs.io/en/latest/index.html

      新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

      1 条回复 最后回复 回复 引用 0
      • 第一个帖子
        最后一个帖子
      皖ICP备16016415号-7
      Powered by NodeBB | 鱼香ROS