Ceres_Pose Graph Example

本文详细介绍了在SLAM(Simultaneous Localization and Mapping)中如何应用图优化进行位姿估计调整,包括二维和三维环境下状态表示、残差计算及四元数相关知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、问题背景

  • 个人理解觉得这是一个Bundle Adjustment的过程
  • 引用《视觉SLAM十四讲》的一句话“在SLAM中,通常的做法是先使用P3P/EPnP等方法估计相机位姿,然后构建最小二乘优化问题对估计值进行调整(Bundle Adjustment)”。
    • 这里“对估计值进行调整”可以用g2o,也可以用ceres进行图优化。

二、二维图优化

  1. 二维状态包含位置 pp (2维)和 角度ψ (1维 弧度制)
  2. 残差:a时刻b时刻之间预测值与测量值(p̂ ab,ψ̂ abp^ab,ψ^ab)的误差
    • rab=[RTa(pbpa)p̂ abNormalize(ψbψaψab^)]rab=[RaT(pb−pa)−p^abNormalize(ψb−ψa−ψab^)]
    • 【NOTE】
      • Normalize()将角度限制在[-ππ, ππ)之间
      • 需通过测量的不确定性对残差进行加权,即乘以一个协方差矩阵。

三、三维图优化

  1. 三维状态包含位置 pp (3维向量),方向 q (4维向量 四元数)
  2. 残差:a时刻b时刻之间测量值(p̂ ab,q̂ abp^ab,q^ab)与预测值的误差。
  3. rab=[R(qa)T(pbpa)p̂ ab2.0vec((q1aqb)q̂ 1ab)]rab=[R(qa)T(pb−pa)−p^ab2.0vec((qa−1qb)q^ab−1)]
  4. 【NOTE】
    • 同样需要乘以协方差矩阵对残差进行加权。
    • 有一点不能理解,就是方向q的残差部分,还是需要补充一下四元数的知识:-)

【补充】四元数(quaternion)

用四个数表示旋转
一维情况:+1表示向右走一个单元,-4表示向左走4个单元。
二维情况:3+4i表示先向左走3个单元,再向上走4个单元,i可以理解为逆时针转90度。如果你想旋转90度,可以乘以i。
三维情况:
1. 规则:i2=j2=k2=ijk=1i2=j2=k2=ijk=−1
2. h=a+bi+cj+dkh=a+bi+cj+dkh=abicjdkh∗=a−bi−cj−dk共轭
3. 如果想绕v(v1,v2,v3)v(v1,v2,v3)轴旋转θθ,则h=(cos(θ2),v1sin(θ2),v2sin(θ2),v3sin(θ2))h=(cos(θ2),v1∗sin(θ2),v2∗sin(θ2),v3∗sin(θ2))
4. 假设想旋转空间点p(p1,p2,p3)p(p1,p2,p3),四元数为(0,x,y,z),则h·p·hh·p·h∗
5. 逆表示反方向旋转。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值