# tf2.BufferCore::lookupTransform: Can't find transform from frame_a to frame_b, error: 'frame_b' passed to lookupTransform argument target_frame does not exist. Buffer size exceeded.

- **ID:** `ros2/tf2-buffer-size-exceeded`
- **Domain:** ros2
- **Category:** runtime_error
- **Verification:** ai_generated
- **Fix Rate:** 80%

## Root Cause

The tf2 buffer has a limited size (default 10 seconds) and older transforms are removed; if a transform lookup requires data older than the buffer window, it fails.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| ROS2 Foxy | active | — | — |
| ROS2 Galactic | active | — | — |
| ROS2 Humble | active | — | — |
| tf2 2.5.x | active | — | — |

## Workarounds

1. **Increase the tf2 buffer size in the node: 'tf_buffer = tf2_ros.Buffer(cache_time=rclpy.duration.Duration(seconds=30.0))'** (80% success)
   ```
   Increase the tf2 buffer size in the node: 'tf_buffer = tf2_ros.Buffer(cache_time=rclpy.duration.Duration(seconds=30.0))'
   ```
2. **Ensure the transform publisher is running continuously with a high enough rate (e.g., 50 Hz) and check for dropped messages: 'ros2 topic hz /tf'** (90% success)
   ```
   Ensure the transform publisher is running continuously with a high enough rate (e.g., 50 Hz) and check for dropped messages: 'ros2 topic hz /tf'
   ```

## Dead Ends

- **** — This may cause memory issues and does not address the root cause of missing transforms; it only delays the problem. (60% fail)
- **** — The transform may never become available if the publisher has stopped or the frame is no longer being broadcast. (90% fail)
- **** — If sim_time is enabled but no /clock is published, timestamps may be zero, causing all lookups to fail. (85% fail)
