# tf2.BufferCore::lookupTransform: Can't find transform from 'map' to 'base_link', error: 'base_link' passed to lookupTransform argument target_frame does not exist

- **ID:** `ros2/tf2-buffer-core-timeout`
- **Domain:** ros2
- **Category:** runtime_error
- **Error Code:** `TF-3001`
- **Verification:** ai_generated
- **Fix Rate:** 92%

## Root Cause

The TF buffer does not contain the requested transform because the source frame ('base_link') has never been published, or the transform publisher (e.g., robot_state_publisher) is not running or publishing the correct frames.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| ROS2 Foxy Fitzroy | active | — | — |
| ROS2 Humble Hawksbill | active | — | — |
| ROS2 Iron Irwini | active | — | — |

## Workarounds

1. **Verify that the robot_state_publisher is running and publishing the correct transforms. Run `ros2 run tf2_ros tf2_echo map base_link` to check if the transform exists. If not, ensure the URDF/SDF file defines the 'base_link' frame and that robot_state_publisher is launched.** (95% success)
   ```
   Verify that the robot_state_publisher is running and publishing the correct transforms. Run `ros2 run tf2_ros tf2_echo map base_link` to check if the transform exists. If not, ensure the URDF/SDF file defines the 'base_link' frame and that robot_state_publisher is launched.
   ```
2. **If the frame is published by a custom node, add a delay before calling `lookupTransform` to allow the TF tree to populate. Use `tf2_ros::Buffer::canTransform` with a timeout.** (90% success)
   ```
   If the frame is published by a custom node, add a delay before calling `lookupTransform` to allow the TF tree to populate. Use `tf2_ros::Buffer::canTransform` with a timeout.
   ```

## Dead Ends

- **** — Adding a static transform publisher with wrong frame names (e.g., 'odom' instead of 'map') may silence the error but produce incorrect transforms, leading to navigation or visualization issues. (70% fail)
- **** — Increasing the TF buffer size in the node parameters doesn't help because the transform was never published; the buffer is empty for that frame. (80% fail)
