带有时间戳的主题的 rospy 循环缓冲

rospy cyclic buffering of topics with timestamps

我有很多主题要存储在缓冲区中,但每个主题的记录时间不应超过 10 秒。对于几个主题,这条线运行良好,但如果我想订阅所有主题,它就会开始落后。我需要使用比重写新列表更有效的方法,我需要弹出所有早于 10 秒的元素。

buffer[topic] = [ msg for msg in buffer[topic] if timestamp - msg[0] < rospy.Duration(10.0) ]

每个主题都有一个时间戳,如果这个时间戳大于 10 秒,我们要删除这些元素。希望大家帮帮忙。

您可以尝试使用 collections 库 (https://docs.python.org/2/library/collections.html#collections.deque) 中的 deque,并在消息太旧时调用 popleft