多个节点发布到一个主题时,消息丢失

时间:2018-08-18 07:27:51

标签: ros

现在,我有两种类型的Nodelet,首先是拥有4个相机节点来捕获图像,然后通过一个相同的主题发布,然后又有一个Process节点,可以从主题中获取消息以进行处理。我确定处理节点比捕获速度快4倍。但是我仍然丢失10-20%的消息。在订阅方面,我已经使用过tcp传输,以下是我的消息设置:

相机节点(总共四个节点,捕获帧率为25)

m_pub = it.advertise("/camera/out_topic", 25);  

处理节点

m_sub = nh.subscribe(in_topic.c_str(), 400, &Detection::imageCB, this,                                                                        
                     ros::TransportHints()                                                                             
                     .reliable()                                                                                       
                     .tcpNoDelay(true));

这不是我的错,该过程没有比捕获频率快

1 个答案:

答案 0 :(得分:1)

您的问题是图像的时间戳,您的发布者在确切的时间戳上发布数据,并且某些消息会在这种情况下丢失。 我建议您对节点使用某种同步 您在发布商中使用rate.sleep吗?