Rospy消息过滤器近似同步器问题

Rospy消息过滤器近似同步器问题,ros,rospy,Ros,Rospy,我在ubuntu18.04中安装了ROS-melodic版本。 我正在后台运行一个rosbag,在消息rostopics中模拟摄像头。 我在rosparams中设置了摄像头名称,并对其进行迭代以捕获每个摄像头主题。 我正在使用message\u filterapproximateMesynchronizer获取官方文档中提到的时间同步数据, 但是大多数时候,approximateMesynchronizer的回调函数没有被调用/有延迟。我使用的代码片段如下所示: 我做错了什么 看看你的代码,它

我在
ubuntu18.04
中安装了
ROS-melodic
版本。 我正在后台运行一个
rosbag
,在消息
rostopics
中模拟摄像头。 我在rosparams中设置了摄像头名称,并对其进行迭代以捕获每个摄像头主题。 我正在使用
message\u filter
approximateMesynchronizer
获取官方文档中提到的时间同步数据,

但是大多数时候,
approximateMesynchronizer
的回调函数没有被调用/有延迟。我使用的代码片段如下所示:

我做错了什么


看看你的代码,它似乎是正确的。然而,时间戳可能有问题,因此这个同步器也有问题,请参阅算法假设

我的建议是编写一个相应的节点,同时发布这四个MSG的空版本。如果在这个完美的场景中它仍然不工作,那么上面的代码就有问题。如果它工作正常,那么您需要注意标题

假设您将其作为一个包文件,您还可以查看和观察时间戳。(也可以单步执行)

$rosbag play——暂停录制1.bag#按“s”逐步浏览MSG
我刚刚编写了一个节点来监听所有这些MSG,并用在其中任何一个上找到的最新时间重新发布它们(用于同步记录到csv)。不是最优的,但它应该揭示问题所在

def  camera_callback(*args):
    pass # Other logic comes here
rospy.init_node('my_listener', anonymous=True) 
camera_object_data = []
for camera_name in rospy.get_param('/my/cameras'):
    camera_object_data.append(message_filters.Subscriber(
        '/{}/hd/camera_info'.format(camera_name), CameraInfo))
    camera_object_data.append(message_filters.Subscriber(
        '/{}/hd/image_color_rect'.format(camera_name), Image))
    camera_object_data.append(message_filters.Subscriber(
        '/{}/qhd/image_depth_rect'.format(camera_name), Image))
    camera_object_data.append(message_filters.Subscriber(
        '/{}/qhd/points'.format(camera_name), PointCloud2)
 topic_list = [filter_obj for filter_obj in camera_object_data]
 ts = message_filters.ApproximateTimeSynchronizer(topic_list, 10, 1,  allow_headerless=True)
 ts.registerCallback(camera_callback)
 rospy.spin()