解决Lookup would require extrapolation at time 1789549028.298214, but only time 1789549029.885393
·
Lookup would require extrapolation at time 1789549028.298214, but only time 1789549029.885393 is in the buffer, when looking up transform from frame [base_link] to frame [map]
我这边在nav2中,我需要把base_link下某个物体转到map下,然后我进行转换就提示报错。
try:
trans_base2map = self.tf_buffer.lookup_transform(
target_frame="map",
source_frame="base_link",
time=header.stamp, # 原始点云时间戳
timeout=rclpy.duration.Duration(seconds=1)
)
except TransformException as tf_err:
self.get_logger().warn(f"TF查询失败 base_link -> map: {tf_err}")
return

原因是:你请求的时间,比 TF 缓存里最新的 TF 时间还要靠后(未来),TF 缓存没有这个时刻的 base_link→map 变换,没法预测未来的机器人位姿。
但是这句话,我其实不能理解,我用的是点云中的时间,然后点云处理啥的都需要时间,但是为啥缓存没有。
后来我尝试了一下,取TF buffer中最新的时间,这时候能运行了,偶尔会报错。
try:
trans_base2map = self.tf_buffer.lookup_transform(
target_frame="map",
source_frame="base_link",
time=rclpy.time.Time(), # 取TF buffer里最新的变换
timeout=rclpy.duration.Duration(seconds=1)
)
except TransformException as tf_err:
self.get_logger().warn(f"TF查询失败 base_link -> map: {tf_err}")
return
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)