平面约束公式推导

在地面运行的小车如果可以认为在平面运动,则可以使用平面约束(注意不能用于斜坡之类的地面,这里相当于绝对水平。)
水平则有z=0,roll和pitch=0,对于四元数q来说,就是只绕z轴旋转yaw角 q = cos(yaw/2) + sin(yaw/2)(0,0,1) 也就是qx = 0 qy = 0
这三个可以成为每一帧的约束。
q转为R
在这里插入图片描述
R应该为
[ 1 − 2 z 2 2 w z 0 − 2 w z 1 − 2 z 2 0 0 0 1 ] \begin{matrix}[ 1-2z^2 & 2wz & 0 \\ -2wz & 1-2z^2 & 0 \\ 0 & 0 & 1 \end{matrix}] [12z22wz02wz12z20001]
这个就是二维平面的转换公式。
我们可以使用矩阵第三列前两行的元素都为0,作为约束(也可以取第三行前两列)我们构造行列式乘法,把这两个元素取出来
1 0 0 0 1 0 ∗ R ∗ 0 0 1 \begin{matrix} 1 & 0 & 0 \\ 0 & 1 & 0\end{matrix} * R *\begin{matrix} 0 \\ 0 \\ 1\end{matrix} 100100R001
这样就可以把这两个元素取出来。
所以我们构建的残差方程为
0 − [ 0 0 1 ] ∗ P 0 - \left[\begin{matrix}0 & 0 & 1\end{matrix}\right] * P 0[001]P
[ 0 0 ] − 1 0 0 0 1 0 ∗ R ∗ 0 0 1 \left[\begin{matrix}0 \\ 0\end{matrix}\right] - \begin{matrix} 1 & 0 & 0 \\ 0 & 1 & 0\end{matrix} * R *\begin{matrix} 0 \\ 0 \\ 1\end{matrix} [00]100100R001
我们把上面得的矩阵设为e3 = [0 0 1]和
Λ = 1 0 0 0 1 0 \Lambda = \begin{matrix} 1 & 0 & 0 \\ 0 & 1 & 0\end{matrix} Λ=100100
我们优化的变量是 P i w P_i^w Piw R i w R_i^w Riw 而平面约束是轮子的坐标。
R o w = R i w ∗ R o b P o w = R i w ∗ t o i + P i w R_o^w = R_i^w * R^b_o\\ P_o^w = R_i^w * t_o^i + P_i^w Row=RiwRobPow=Riwtoi+Piw
因此残差为:
r 1 = 0 − ( e 3 T ∗ ( R i w ∗ t o i + P i w ) ) r 2 = 0 − ( Λ ∗ R i w ∗ R o b ∗ e 3 ) r1 = 0 - (e_3^T * (R_i^w * t_o^i + P_i^w ))\\ r2 = 0- (\Lambda * R_i^w * R^b_o * e_3) r1=0(e3TRiwtoi+Piw))r2=0(ΛRiwRobe3)
求雅克比偏导:
∂ r 1 ∂ p = − e 3 T ∂ r 1 ∂ θ = lim ⁡ δ θ → 0 − e 3 T ∗ R i w ∗ ( 1 + δ θ Λ ) ∗ t o i + e 3 T ∗ R i w ∗ t o i θ = − e 3 T ∗ R i w ∗ δ θ Λ ∗ t o i θ = e 3 T ∗ R i w ∗ ( t o i ) Λ ∂ r 2 ∂ p = 0 ∂ r 2 ∂ θ = lim ⁡ δ θ → 0 − Λ ∗ R i w ( 1 + δ θ Λ ) ∗ R o b ∗ e 3 + ( Λ ∗ R i w ∗ R o b ∗ e 3 ) θ = lim ⁡ δ θ → 0 − Λ ∗ R i w δ θ Λ ∗ R o b ∗ e 3 θ = Λ ∗ R i w ∗ ( R o b ∗ e 3 ) Λ \frac{\partial{r1}}{\partial{p}} = -e_3^T\\ \frac{\partial{r1}}{\partial{\theta}} = \lim_{\delta\theta \to 0}{\frac{-e_3^T * R_i^w*(1 + \delta\theta^{\Lambda}) * t_o^i + e_3^T * R_i^w * t_o^i}{\theta}} \\ = -\frac{e_3^T * R_i^w * \delta\theta^{\Lambda}* t_o^i}{\theta} = e_3^T * R_i^w *(t_o^i)^{\Lambda} \\ \frac{\partial{r2}}{\partial{p}} = 0 \\ \frac{\partial{r2}}{\partial{\theta}} = \lim_{\delta\theta \to 0}{\frac{-\Lambda * R_i^w (1 + \delta\theta^{\Lambda}) * R^b_o * e_3 + (\Lambda * R_i^w * R^b_o * e_3)}{\theta}} \\ =\lim_{\delta\theta \to 0}{\frac{-\Lambda * R_i^w \delta\theta^{\Lambda}* R^b_o * e_3 }{\theta}} \\ = \Lambda * R_i^w * (R^b_o * e_3)^{\Lambda} pr1=e3Tθr1=δθ0limθe3TRiw(1+δθΛ)toi+e3TRiwtoi=θe3TRiwδθΛtoi=e3TRiw(toi)Λpr2=0θr2=δθ0limθΛRiw(1+δθΛ)Robe3+(ΛRiwRobe3)=δθ0limθΛRiwδθΛRobe3=ΛRiw(Robe3)Λ

以上就是认为地面是绝对水平的约束。如果不是绝对水平,而是平面的斜坡之类的,可以用两帧之间固定,比如两帧之间z的增量是一个固定值,roll和pitch是一个固定值之类的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值