# Nav2后退对接180度旋转后dock_pose乱跳

> 原文链接：https://robotics.hellobike.com/pitfalls/2026-07-03-robotics-se-118456
> 频道：pitfalls | 更新日期：2026-07-03 | 标签：auto, stackexchange, nav2
> 核心摘要：后退对接失败是因dock pose发布在随车旋转的相机帧，改为在odom固定帧发布后解决。

# Nav2后退对接180度旋转后dock_pose乱跳

::: v-pre
> 本文由 AI 根据公开内容整理，可能有误，请以原文为准：[Backward docking fails after 180* spin. Detected_dock_pose constant but dock_pose erratic. How to use properly?](https://robotics.stackexchange.com/questions/118456/backward-docking-fails-after-180-spin-detected-dock-pose-constant-but-dock-pos)（Robotics Stack Exchange #118456）

**状态**：已解决

## 问题

Nav2 Docking Server使用`docking_direction: backward`和`reverse_to_dock: true`时，机器人完成180度旋转后，RViz中的检测dock pose跳回机器人前方并保持相对位置，导致机器人持续旋转无法对接。

## 环境

Ubuntu 24、ROS2 Kilted、Gazebo Ionic；Nav2 Docking Server、`apriltag_ros`、AprilTag。

## 解决办法

1. 不要将dock pose发布在随机器人旋转的`depth_camera_optical_frame`中，改为发布到固定帧`odom`。
2. 在节点中把`lookupTransform`的目标帧改为`odom`，源帧为AprilTag的`child_frame_`，并设置`dock_pose.header.frame_id = "odom"`。
3. 用`ros2 run tf2_ros tf2_echo odom ＜your_apriltag_frame＞`验证；机器人旋转时位姿应在世界坐标中保持稳定，若TF链断开会抛异常。

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

## 原始参考来源 (Sources)

- [Robotics Stack Exchange #118456：Backward docking fails after 180* spin. Detected_dock_pose constant but dock_pose erratic. How to use properly?](https://robotics.stackexchange.com/questions/118456/backward-docking-fails-after-180-spin-detected-dock-pose-constant-but-dock-pos)