vSLAM学习笔记——四元数到其他旋转表示的转换


四元数表示

q = q 0 + q 1 i + q 2 j + q 3 k q=q_0+q_1i+q_2j+q_3k q=q0+q1i+q2j+q3k

四元数到旋转矩阵

R = v v T + s 2 I + 2 s v ∧ + ( v ∧ ) 2 R=vv^T+s^2I+2sv^{\wedge}+(v^\wedge)^2 R=vvT+s2I+2sv+(v)2

四元数到旋转向量

对上式两侧求迹,得:
t r ( R ) = t r ( v v T + s 2 I + 2 s v ∧ + ( v ∧ ) 2 ) = v 1 2 + v 2 2 + v 3 2 + 3 s 2 − 2 ( v 1 2 + v 2 2 + v 3 2 ) = ( 1 − s 2 ) + 3 s 2 − 2 ( 1 − s 2 ) = 4 s 2 − 1 \begin{aligned} tr(R) &= tr(vv^T+s^2I+2sv^{\wedge}+(v^\wedge)^2) \\ &=v_1^2+v_2^2+v_3^2+3s^2-2(v_1^2+v_2^2+v_3^2) \\ &=(1-s^2)+3s^2-2(1-s^2) \\ &=4s^2-1 \\ \end{aligned} tr(R)=tr(vvT+s2I+2sv+(v)2)=v12+v22+v32+3s22(v12+v22+v32)=(1s2)+3s22(1s2)=4s21
由罗德里格斯公式可以推出:
θ = arccos ⁡ t r ( R − 1 ) 2 = arccos ⁡ ( 2 s 2 − 1 ) \begin{aligned} \theta&=\arccos\frac{tr(R-1)}{2}\\ &=\arccos(2s^2-1) \end{aligned} θ=arccos2tr(R1)=arccos(2s21)

cos ⁡ θ = 2 s 2 − 1 = 2 cos ⁡ 2 θ 2 − 1 , \cos\theta=2s^2-1=2\cos^2\frac{\theta}{2}-1, cosθ=2s21=2cos22θ1,
所以:
θ = 2 arccos ⁡ s \theta=2\arccos s θ=2arccoss
至于旋转轴,四元数的虚部组成的向量在旋转时是不动的,因此只要将其除掉模长即可。
从而言之四元数到旋转向量的转换公式如下:
{ θ = 2 arccos ⁡ q 0 [ n x , n y , n z ] T = [ q 1 , q 2 , q 3 ] T / sin ⁡ θ 2 \begin{cases} \theta=2\arccos q_0 \\ [n_x,n_y,n_z]^T=[q_1,q_2,q_3]^T/\sin \frac{\theta}{2} \\ \end{cases} {θ=2arccosq0[nx,ny,nz]T=[q1,q2,q3]T/sin2θ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卑微小岳在线debug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值