# DSO手动设置GT位姿后跟踪失败怎么办

> 原文链接：https://robotics.hellobike.com/pitfalls/2020-05-04-robotics-se-15456
> 频道：pitfalls | 更新日期：2020-05-04 | 标签：auto, stackexchange, odometry, c++, pose, monocular
> 核心摘要：DSO单目尺度与GT位姿尺度不一致会导致初始化后丢失，应先定绝对尺度并把GT约束加入前后端优化。

# DSO手动设置GT位姿后跟踪失败怎么办

::: v-pre
> 本文由 AI 根据公开内容整理，可能有误，请以原文为准：[How to properly initialize every new pose in a Visual SLAM algorithm (namely DSO)?](https://robotics.stackexchange.com/questions/15456/how-to-properly-initialize-every-new-pose-in-a-visual-slam-algorithm-namely-dso)（Robotics Stack Exchange #15456）

**状态**：已解决

## 问题

在DSO中尝试用已知真实轨迹替换每帧相机位姿，期望获得真实尺度，但算法没有改善位姿估计，反而在初始化后失败。

## 环境

SLAM 建图与定位系统

## 解决办法

1. 初始化后先确定绝对尺度，因为DSO会把`pointHessians`平均逆深度设为1，单目VO绝对尺度不可观。
2. 不要只把GT位姿作为`trackNewCoarse`预测值；将GT位姿并入后端优化，在目标函数中加入估计位姿与GT位姿的`SE3`误差残差。
3. 实现时向`HFinal_top`和`bFinal_top`矩阵加入相应量。
4. 前端粗跟踪也按后端方式并入GT位姿约束，保持尺度一致。

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

## 原始参考来源 (Sources)

- [Robotics Stack Exchange #15456：How to properly initialize every new pose in a Visual SLAM algorithm (namely DSO)?](https://robotics.stackexchange.com/questions/15456/how-to-properly-initialize-every-new-pose-in-a-visual-slam-algorithm-namely-dso)