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

    ROS2节点发现与多机通信的相关问题

    已定时 已固定 已锁定 已移动 未解决
    综合问题
    ros2 问题 多机通信 ros2 ros2节点通讯
    1
    1
    378
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 3
      gravity
      最后由 编辑

      针对这个问题我想提问:
      1,多播是否是1对多的信息传递形式?针对的是整个域id?如果是的话为什么域id中需要用多播?
      2,单播又是什么意思?针对的是一个域id中的每一个进程?如果是的话为什么进程中需要用单播?
      3,为什么多播和单播都有两个端口,每一个端口的作用是什么?
      4,这里说的ros2进程和ros2中的节点有什么关系?是一个意思吗?可否举例说明

      参考内容如下:

      参与者约束
      对于计算机上运行的每个ROS 2进程,将创建一个DDS "participant" 。由于每个DDS参与者占用计算机上的两个端口,因此在一台计算机上运行120个以上的ROS 2进程可能会溢出到其他域ID或临时端口。

      为了解释原因,我们考虑域ID编号1和2。

      域ID 1使用端口7650和7651进行多播。
      域ID 2使用端口7900和7901进行多播。
      在域ID 1中创建第一个进程 (第0个参与者) 时,端口7660和7661用于单播。
      在域ID 1中创建第120个进程 (第119个参与者) 时,端口7898和7899用于单播。
      在域ID 1中创建第121个进程 (第120个参与者) 时,端口7900和7901用于单播,并与域ID 2重叠。
      如果已知计算机一次只能在一个域ID上,并且域ID足够低,那么创建比这更多的ROS 2进程是安全的。

      在选择特定平台域 ID 范围顶部的域 ID 时,还有一个限制因素需要考虑。

      例如,假设一台ID为101的Linux计算机:

      计算机上的第0个ROS 2进程将连接到端口32650、32651、32660和32661。
      计算机上的第1个ROS 2进程将连接到端口32650、32651、32662和32663。
      计算机上的第53个ROS 2进程将连接到端口32650、32651、32766和32767。
      计算机上的第54个ROS 2进程将连接到端口32650、32651、32768和32769,运行在临时端口范围内。
      因此,在Linux上使用域ID为101时应创建的最大进程数为54。同样,在Linux上使用域ID为232时应创建的最大进程数为63,因为最大端口号为65535。

      macOS和Windows的情况相似,尽管数字不同。在macOS和Windows上,当选择166 (范围顶部) 的域账号时,运行到临时端口范围之前,可以在计算机上创建的ROS 2进程的最大数量为120。

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