小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
ROS2节点发现与多机通信的相关问题
-
针对这个问题我想提问:
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。