一、报错原因
报错原因是由于tf的会把监听的内容存放到一个缓存中,然后再读取相关的内容,而这个过程可能会有几毫秒的延迟,也就是,tf的监听器并不能监听到“现在”的变换,
二、rospy.Time()和rospy.Time.now()区别
rospy.Time.now():
rospy.Time.now()是一个函数调用,用于获取当前系统时间的时间戳对象。
每次调用rospy.Time.now(),它都会返回当前时间的时间戳对象。
这种方法可以用于在ROS节点中获取当前时间,并在消息的时间戳字段中使用。
rospy.Time():
rospy.Time()是一个构造函数,用于创建一个时间戳对象。
当您使用rospy.Time()构造函数时,它会创建一个表示0秒的时间戳对象,即默认的时间戳对象。
这种方法通常用于在代码中创建时间戳对象,并根据需要设置时间戳的值。
区别:
rospy.Time.now()用于获取当前时间,每次调用都会返回不同的时间戳对象。
rospy.Time()用于创建一个默认的时间戳对象,表示0秒的时间戳。
三、解决
更改这个错误需要改变时间戳,不能使用rospy.Time.now(),或者传感器给定的默认时间戳,需要使用rospy.Time()替换原来的时间戳