首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rospy message_filter ApproximateTimeSynchronizer问题

Rospy message_filter ApproximateTimeSynchronizer问题
EN

Stack Overflow用户
提问于 2019-09-01 03:52:22
回答 1查看 2.6K关注 0票数 0

我在ROS melodic中安装了Ubuntu 18.04版本。我在后台运行一个rosbag来模拟rostopics消息中的摄像头。我在rosparams中设置了摄像机名称,并反复遍历以捕获每个摄像机主题。我正在使用message_filter ApproximateTimeSynchronizer获取时间同步数据,如官方文档过滤器中所提到的

但是,在大多数情况下,对ApproximateTimeSynchronizer的回调函数没有被调用/有延迟。下面给出了我使用的代码片段:

我在这里做错什么了?

def camera_callback(*args):pass #其他逻辑出现在rospy.init_node('my_listener',anonymous=True) camera_object_data = [] camera_name in rospy.get_param(‘/my/rospy.get_param’):rospy.init_node‘/{}/hd/camera’..format(Camera_name),( 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/point’..format(Camera_name),( message_filters.ApproximateTimeSynchronizer(topic_list,10,1,allow_headerless=True) ts.registerCallback(camera_callback) rospy.spin()

EN

回答 1

Stack Overflow用户

发布于 2019-09-04 17:03:17

看你的代码,这似乎是正确的。但是,可能存在错误的时间戳问题,因此这个同步器也是如此,关于算法假设,请参阅过滤器/接近时间

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

如果您将它作为一个包文件,您也可以使用逐步遍历命令行上的msg并观察时间戳。(也可以步进巨蟒)。

代码语言:javascript
复制
$ rosbag play --pause recorded1.bag # step through msgs by pressing 's'

在带有小有效负载的时间干扰消息中,我刚刚编写了一个节点来侦听所有这些消息,并根据在其中任何一个上找到的最新时间重新发布它们(用于同步登录到csv)。这并不是最优的,但它应该揭示问题的所在。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57743078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档