ROS节点正在运行,但某些连接已断开



设置

我在两台独立的机器上运行ROS节点(我的笔记本电脑,在Ubuntu 18.04上运行ROS-mediatic,和一台在yocto上运行ROS-动能的voxl计算机)。

问题

voxl计算机运行roscore。两台设备之间的通信良好。相应的IP被适当地设置(相应地在每个设备上显式地设置ROS_IPROS_MASTER_URI)。

然而,有一些节点(只有少数!)看起来没有连接,尽管它们启动良好,roswtf生成错误:

ERROR The following nodes should be connected but aren't:
* /node_x -> /node_y
* ...

在线搜索时,导致这种错误的原因通常是DNS相关问题,但在这里,两个设备都通过网络成功连接,大多数节点都能正常工作,除了其中一些。。。

此外,杀死与rosnode kill node_z通信有问题的节点,并单独与rosrun package node_z重新启动它,使其能够再次正常通信。

roscore相关问题

此外,采用工作配置(多个节点在同一设备上一起交互,roscore在同一台机器上)是可以的,但运行相同的配置,但这次在另一台设备上使用roscore会断开某些连接。造成这种差异的原因是什么?

对发射序列的敏感性

节点或启动文件的调用顺序似乎会产生影响。

结论

我不确定是什么原因导致了这里的问题,以及在哪里可以解决它…

好的,看来这种行为可能是由于防火墙造成的,在本例中为ufw。我不知道防火墙已经启用,因为有些节点可以通信,而有些节点不能,所以我没有想过先检查一下。

为了解决通信问题,我所要做的就是禁用防火墙:

sudo ufw disable

之后,所有节点都能够正常通信,roswtf不再报告任何错误。

错误The following nodes should be connected but aren't:是由于防火墙阻止了入站/出站连接。当我想从运行在windows PC(windows 10)中的MATLAB ROS节点到运行在Linux Machine(Ubuntu 18.04)中的主节点(roscore)进行通信时,我也遇到了类似的问题。最后,在允许MATLAB通过防火墙通过网络进行通信后,我能够完成这项工作。

最新更新