视觉位姿图:边从哪来
Pose graph 边来自 VO match + 几何验证;信息矩阵/协方差瞎填会让 g2o/Ceres 把地图拧成 confident wrong shape。

1. 边不是越多越好
视觉惯性里程计与视觉里程计和后端的边界常画在位姿图上。弱匹配边配上错误信息矩阵,比没有边更糟——地图拧成自信的错误形状,比漂移更难调试。前端给后端的不只是位姿,还有 边的质量与权重;后者常被忽略。
2. 节点与边从哪来
节点:关键帧位姿 。连续视觉里程计边:匹配 → 本质矩阵 → 恢复位姿 → 相对变换 。回环边:词袋候选 → 匹配 → 位姿估计或相似变换几何验证。惯性单元(视觉惯性):预积分边(另一套协方差)。
OpenCV 侧典型流程:
E, mask = cv2.findEssentialMat(pts1, pts2, K, method=cv2.RANSAC, prob=0.999, threshold=1.0)
_, R, t, mask_pose = cv2.recoverPose(E, pts1, pts2, K, mask=mask)检索、验证、加边三步缺一不可。词袋候选直接加边是地图拧曲的常见路径。连续边来自相邻关键帧,视差通常足够;回环边假阳性率高,必须几何验证——本质矩阵内点、三角化正深度、中位视差角度缺一不可。
3. 信息矩阵别填单位阵
误用单位阵等于说所有边同等可靠。实践:按内点数、平均视差、匹配分布设信息矩阵 。因子图优化库设置信息矩阵;非线性最小二乘用平方根信息。
粗规则:内点少或视差小 → 更大不确定度(更小信息)。回环候选要求内点超阈值且三角化正深度比例超九成才加边。单目尺度漂移时回环用相似变换,尺度错会压扁地图。
4. 优化与鲁棒核
g2o 图可视化能直观看到哪条回环边在拉地图——比只看优化后轨迹误差更有诊断价值。Huber 核的 delta 对连续边和回环边应区别对待,别一套参数走天下。
5. 失败模式
| 现象 | 原因 |
|---|---|
| 地图拧 | 错误回环加高信息 |
| 漂移 | 边太少或视觉里程计断 |
| 抖动 | 过拟设噪声边 |
6. 连续边与回环边的区别
连续视觉里程计边来自相邻关键帧匹配,视差通常足够,信息矩阵可按内点数和平均视差设。回环边来自词袋检索候选,假阳性率远高于连续边,必须几何验证后才能加入:本质矩阵内点、三角化正深度比例、中位视差角度。单目尺度漂移时回环用相似变换边,尺度估错会把地图 Z 向压扁。惯性预积分边有独立协方差,与视觉边信息矩阵不可混填。
7. 案例:假回环压扁地图
单目视觉里程计在相似走廊误检回环,词袋分数高但几何验证偷懒,信息矩阵填单位阵。优化后地图 Z 向被压扁两米,定位在闭环处跳变。补几何验证(本质矩阵内点大于三十、中位视差大于三度)并降权可疑回环后恢复。
8. 验收
优化前后卡方;回环边内点重投影;人工检查闭环处地图。协方差是否与实际视觉里程计噪声量级一致(可仿真)。
位姿图是 稀疏约束集合。边的质量和权重定义了优化能不能信——信息矩阵是契约,不是填单位阵的占位符。优化前后对比最大边残差,比只看最终轨迹误差更能定位问题边。
相关
也可以看看
johan's blog