Visual SLAM的基本概念和公式

本文详细介绍了在三维空间中,如何通过SE(3)和se(3)模型计算相机位姿变化对特征点重投影误差的影响,包括坐标转换和求导公式,对于视觉定位和计算机视觉理解关键。

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

  1. pose x ∈ s e ( 3 ) \mathbf{x} \in se(3) xse(3),未知量( s e ( 3 ) se(3) se(3)的解释见 附录A
  2. landmark/reference point y ∈ R 3 × 1 \mathbf{y} \in R^{3 \times 1} yR3×1,未知量
  3. reprojection function: p = p ( x , y ) ∈ R 2 × 1 \mathbf{p} = \mathbf{p}(\mathbf{x}, \mathbf{y}) \in R^{2 \times 1} p=p(x,y)R2×1
  4. observation z ∈ R 2 × 1 \mathbf{z} \in R^{2 \times 1} zR2×1, 已知量
  5. reprojection error function f = z − p ( x , y ) ∈ R 2 × 1 \mathbf{f} = \mathbf{z} - \mathbf{p}(\mathbf{x}, \mathbf{y}) \in R^{2 \times 1} f=zp(x,y)R2×1

有如下的求导公式(推导过程见 附录B):
∂ f ∂ y = [ − f c 3 0 f c 1 c 3 2 0 − f c 3 f c 2 c 3 2 ] ⋅ R \frac{\partial \mathbf{f}}{\partial \mathbf{y}} = \begin{bmatrix} -\frac{f}{c_3} &0 &\frac{f c_1}{c_3^2} \\ 0 &-\frac{f}{c_3} &\frac{f c_2}{c_3^2} \\ \end{bmatrix} \cdot \mathbf{R} yf=[c3f00c3fc32fc1c32fc2]R

∂ f ∂ x = [ f c 1 c 2 c 3 2 − f ( 1 + c 1 2 c 3 2 ) f c 2 c 3 − f c 3 0 f c 1 c 3 2 f ( 1 + c 2 2 c 3 2 ) − f c 1 c 2 c 3 2 − f c 1 c 3 0 − f c 3 f c 2 c 3 2 ] \frac{\partial \mathbf{f}}{\partial \mathbf{x}} = \begin{bmatrix} \frac{f c_1 c_2}{c_3^2} &-f(1 + \frac{c_1^2}{c_3^2}) &\frac{f c_2}{c_3} &-\frac{f}{c_3} &0 &\frac{f c_1}{c_3^2} \\ f(1 + \frac{c_2^2}{c_3^2}) &-\frac{f c_1 c_2}{c_3^2} &-\frac{f c_1}{c_3} &0 &-\frac{f}{c_3} &\frac{f c_2}{c_3^2} \\ \end{bmatrix} xf= c32fc1c2f(1+c32c22)f(1+c32c12)c32fc1c2c3fc2c3fc1c3f00c3fc32fc1c32fc2

其中 c = [ c 1 , c 2 , c 3 ] ⊤ \mathbf{c} = [c_1, c_2, c_3]^\top c=[c1,c2,c3] f = f u = f v f = f_u = f_v f=fu=fv就是等效焦距:
[ c 1 ] = T [ y 1 ] \begin{bmatrix} \mathbf{c} \\ 1 \\ \end{bmatrix} = \mathbf{T} \begin{bmatrix} \mathbf{y} \\ 1 \\ \end{bmatrix} [c1]=T[y1]

T = [ R t 0 1 ] = exp ⁡ ( x ∧ ) \mathbf{T} = \begin{bmatrix} \mathbf{R} &\mathbf{t} \\ \mathbf{0} &1 \\ \end{bmatrix} = \exp(\mathbf{x}^{\wedge}) T=[R0t1]=exp(x)

附录

A

s e ( 3 ) se(3) se(3)以及左扰动模型见 “SE(3)和se(3),左扰动模型” 和 “SO(3)与so(3)、左扰动模型

B

上述求导公式的推导过程:

这里用了计算图的方式:

x
c
p
f
y
z

f = [ f 1 , f 2 ] ⊤ \mathbf{f}=[f_1, f_2]^\top f=[f1,f2], z = [ z 1 , z 2 ] ⊤ \mathbf{z}=[z_1, z_2]^\top z=[z1,z2], p = [ p 1 , p 2 ] ⊤ \mathbf{p}=[p_1, p_2]^\top p=[p1,p2]:
f = z − p \mathbf{f} = \mathbf{z} - \mathbf{p} f=zp

∂ f ∂ p = [ − 1 0 0 − 1 ] \frac{\partial \mathbf{f}}{\partial \mathbf{p}} = \begin{bmatrix} -1 &0 \\ 0 &-1 \\ \end{bmatrix} pf=[1001]

c = [ c 1 , c 2 , c 3 ] ⊤ \mathbf{c} = [c_1, c_2, c_3]^\top c=[c1,c2,c3]:
{ p 1 = f ⋅ c 1 c 3 + c x p 2 = f ⋅ c 2 c 3 + c y \begin{cases} p_1 = f \cdot \frac{c_1}{c_3} + c_x \\ p_2 = f \cdot \frac{c_2}{c_3} + c_y \\ \end{cases} {p1=fc3c1+cxp2=fc3c2+cy

∂ p ∂ c = [ f c 3 0 − f c 1 c 3 2 0 f c 3 − f c 2 c 3 2 ] \frac{\partial \mathbf{p}}{\partial \mathbf{c}} = \begin{bmatrix} \frac{f}{c_3} &0 &-\frac{f c_1}{c_3^2} \\ 0 &\frac{f}{c_3} &-\frac{f c_2}{c_3^2} \\ \end{bmatrix} cp=[c3f00c3fc32fc1c32fc2]

y = [ y 1 , y 2 , y 3 ] ⊤ \mathbf{y} = [y_1, y_2, y_3]^\top y=[y1,y2,y3]:
[ c 1 ] = T [ y 1 ] \begin{bmatrix} \mathbf{c} \\ 1 \\ \end{bmatrix} = \mathbf{T} \begin{bmatrix} \mathbf{y} \\ 1 \\ \end{bmatrix} [c1]=T[y1]

T = [ R t 0 1 ] = exp ⁡ ( x ∧ ) \mathbf{T} = \begin{bmatrix} \mathbf{R} &\mathbf{t} \\ \mathbf{0} &1 \\ \end{bmatrix} = \exp(\mathbf{x}^{\wedge}) T=[R0t1]=exp(x)

∂ c ∂ y = R \frac{\partial \mathbf{c}}{\partial \mathbf{y}} = \mathbf{R} yc=R

∂ c ∂ x = [ − c ∧ , I ] \frac{\partial \mathbf{c}}{\partial \mathbf{x}} = [-\mathbf{c}^{\wedge}, \mathbf{I}] xc=[c,I]

于是
∂ f ∂ y = [ − f c 3 0 f c 1 c 3 2 0 − f c 3 f c 2 c 3 2 ] ⋅ R \frac{\partial \mathbf{f}}{\partial \mathbf{y}} = \begin{bmatrix} -\frac{f}{c_3} &0 &\frac{f c_1}{c_3^2} \\ 0 &-\frac{f}{c_3} &\frac{f c_2}{c_3^2} \\ \end{bmatrix} \cdot \mathbf{R} yf=[c3f00c3fc32fc1c32fc2]R

∂ f ∂ x = [ − f c 3 0 f c 1 c 3 2 0 − f c 3 f c 2 c 3 2 ] ⋅ [ − c ∧ , I ] = [ f c 1 c 2 c 3 2 − f ( 1 + c 1 2 c 3 2 ) f c 2 c 3 − f c 3 0 f c 1 c 3 2 f ( 1 + c 2 2 c 3 2 ) − f c 1 c 2 c 3 2 − f c 1 c 3 0 − f c 3 f c 2 c 3 2 ] \begin{aligned} \frac{\partial \mathbf{f}}{\partial \mathbf{x}} &= \begin{bmatrix} -\frac{f}{c_3} &0 &\frac{f c_1}{c_3^2} \\ 0 &-\frac{f}{c_3} &\frac{f c_2}{c_3^2} \\ \end{bmatrix} \cdot [-\mathbf{c}^{\wedge}, \mathbf{I}] \\ &= \begin{bmatrix} \frac{f c_1 c_2}{c_3^2} &-f(1 + \frac{c_1^2}{c_3^2}) &\frac{f c_2}{c_3} &-\frac{f}{c_3} &0 &\frac{f c_1}{c_3^2} \\ f(1 + \frac{c_2^2}{c_3^2}) &-\frac{f c_1 c_2}{c_3^2} &-\frac{f c_1}{c_3} &0 &-\frac{f}{c_3} &\frac{f c_2}{c_3^2} \\ \end{bmatrix} \end{aligned} xf=[c3f00c3fc32fc1c32fc2][c,I]= c32fc1c2f(1+c32c22)f(1+c32c12)c32fc1c2c3fc2c3fc1c3f00c3fc32fc1c32fc2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值