现在,我有两种类型的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));
这不是我的错,该过程没有比捕获频率快
答案 0 :(得分:1)
您的问题是图像的时间戳,您的发布者在确切的时间戳上发布数据,并且某些消息会在这种情况下丢失。
我建议您对节点使用某种同步
您在发布商中使用rate.sleep
吗?