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

    ROS2节点通信实现零拷贝

    已定时 已固定 已锁定 已移动
    ROS 2相关问题
    ros2 零拷贝
    6
    12
    3.0k
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 首飞Kevin首
      首飞Kevin @李东武
      最后由 编辑

      @dongwu_li ROS2官方的这个示例是在一个进程中跑两个节点。然后节点间通讯实现零拷贝。这个效果和ROS1中的nodelet是一样的。官方没有不同进程间零拷贝通讯的例子。估计是没有这个功能的。但TogetherROS(地平线基于foxy优化的ROS2版本)中的rclcpp实现了进程间的零拷贝通讯。

      我是首飞,一位帮大家填坑的机器人开发攻城狮。

      小鱼小 李东武李 2 条回复 最后回复 回复 引用 0
      • 小鱼小
        小鱼 技术大佬 @首飞Kevin
        最后由 小鱼 编辑

        @首飞Kevin ROS2官方确实没有提这个,这部分工作其实在dds中有做,比如你用fastdds,需要修改dds配置文件可以实共享内存通信。

        若要在进程间启用数据共享,需要在 XML 和设置上具有以下各项RMW_FASTRTPS_USE_QOS_FROM_XML=1

        <data_writer profile_name="topic_name">
        <qos>
        <data_sharing>
        <kind>AUTOMATIC</kind>
        </data_sharing>
        </qos>
        </data_writer>

        <data_reader profile_name="topic_name">
        <qos>
        <data_sharing>
        <kind>AUTOMATIC</kind>
        </data_sharing>
        </qos>
        </data_reader>

        关于XML配置的具体使用:https://fast-dds.docs.eprosima.com/en/latest/fastdds/xml_configuration/xml_configuration.html

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

        1 条回复 最后回复 回复 引用 1
        • youngY
          young @首飞Kevin
          最后由 编辑

          @首飞Kevin 这是共享内存吗?

          首飞Kevin首 1 条回复 最后回复 回复 引用 0
          • 首飞Kevin首
            首飞Kevin @young
            最后由 编辑

            @young 感觉不是共享内存。因为没有涉及到不同进程。

            我是首飞,一位帮大家填坑的机器人开发攻城狮。

            小鱼小 1 条回复 最后回复 回复 引用 0
            • 小鱼小
              小鱼 技术大佬 @首飞Kevin
              最后由 编辑

              @首飞Kevin 我也这么认为,互相共享对象地址,某种意义上说也是共享内存了哈哈

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

              1 条回复 最后回复 回复 引用 0
              • 李东武李
                李东武 @首飞Kevin
                最后由 编辑

                @首飞Kevin 我现在用国产芯片 他们移植的cyberrt

                也加入了零拷贝 不过是进程间的 cyberrt本身进程内就是共享内存的

                首飞Kevin首 1 条回复 最后回复 回复 引用 0
                • 首飞Kevin首
                  首飞Kevin @李东武
                  最后由 编辑

                  @李东武 cyberrt是Apollo的那套通讯框架吗?

                  我是首飞,一位帮大家填坑的机器人开发攻城狮。

                  李东武李 1 条回复 最后回复 回复 引用 0
                  • 李东武李
                    李东武 @首飞Kevin
                    最后由 编辑

                    @首飞Kevin 是的

                    1 条回复 最后回复 回复 引用 0
                    • A
                      alexleel
                      最后由 编辑

                      所以他没有走中间层,对吗?这个性能 怎么测试呢?

                      1 条回复 最后回复 回复 引用 0
                      • W
                        wanglehui8357
                        最后由 编辑

                        你好,use_intra_process_comms没有Python版本的吗?

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