# ROS2 Python lookupTransform报错target_frame不存在及等待机制失。

> 原文链接：https://robotics.hellobike.com/pitfalls/2026-03-26-robotics-se-98182
> 频道：pitfalls | 更新日期：2026-03-26 | 标签：auto, stackexchange, ros2
> 核心摘要：ROS2 Python中lookup_transform频繁报target_frame不存在且Duration参数无效，通过订阅传感器原始话题替代TF查询解决。

# ROS2 Python lookupTransform报错target_frame不存在及等待机制失。

::: v-pre
> 本文由 AI 根据公开内容整理，可能有误，请以原文为准：[Waiting for TransformListener with ROS2 and Python?](https://robotics.stackexchange.com/questions/98182/waiting-for-transformlistener-with-ros2-and-python)（Robotics Stack Exchange #98182）

**状态**：已解决

## 问题

在Ubuntu 20.04与ROS2 Foxy环境下，使用Python编写tf2_ros.TransformListener监听两帧变换时，约50%概率抛出tf2.LookupException: "front_bumper" passed to lookupTransform argument target_frame does not exist。

## 环境

Ubuntu 20.04.1 LTS, ROS2 Foxy, Python, tf2_ros, RealSense T265/T455, ydlidar g2

## 解决办法

1. 弃用针对固定关节的tf2_ros.Buffer.lookup_transform查询方式，该场景下直接订阅/tf话题亦非标准做法。
2. 识别T265相机实际发布的是Odometry话题而非直接的静态TF，改为订阅该Odometry话题获取位姿数据。
3. 基于订阅到的Odometry数据计算并发布到/joint_states话题，以动态更新云台关节状态。
4. 避免套用ROS1版TF教程逻辑，对于移动关节应优先使用传感器原生数据流驱动关节状态发布，而非反向查询TF树。

原问题作者：dognaught47；采纳答案作者：dognaught47。原内容依 CC BY-SA 4.0 授权，本页摘要同样依 CC BY-SA 4.0 授权。
:::

## 原始参考来源 (Sources)

- [Robotics Stack Exchange #98182：Waiting for TransformListener with ROS2 and Python?](https://robotics.stackexchange.com/questions/98182/waiting-for-transformlistener-with-ros2-and-python)