利用四元数求解旋转矩阵

绕空间某一旋转轴 ω⃗  旋转 θ 角度的表示形式

如下图所示:

Rodrigues

O 表示坐标原点,OR表示原始向量, ω⃗  表示旋转轴,为单位矢量,平面 v 表示垂直于ω⃗ 并且包含向量 R 的平面, OR 围绕 ω⃗  旋转 θ 角度之后得到旋转之后的向量 OR ,沿着 ω⃗  的逆方向看去能够得到如右图所示的平面图,能够得到如下关系:

OR=OP+PRcosθ+PQsinθ

OP=(ORω⃗ )ω⃗ 

PQ=(ω⃗ ×OR)

PR=OR(ORω⃗ )ω⃗ 

OR=(ORω⃗ )ω⃗ +cosθ(OROR)ω⃗ +sinθ(ω⃗ ×OR)

=cosθOR+sinθω⃗ ×OR+(1cosθ)(ORω⃗ )ω⃗     (1)

已知空间中一向量 OR ,沿着 ω⃗  旋转 θ 角度后得到 OR (1) 式描述的即为 OR OR ω⃗  、以及 θ 之间的关系,也即著名的 Rodrigues 公式。

四元数简介

​ 四元数由四个元素组成,给定一个标量 q0 和一个矢量 q⃗ =(qx,qy,qz) ,可以将其表示成一个四元数 q=(q0,q⃗ ) ,用复数的记号表示为 q=q0+iqx+jqy+kqz ,这里 i2=j2=k2=1 ij=k jk=i ki=j ,将两个四元数 q1=(q10,q1) q2=(q20,q2) 的乘积展开能够得到如下关系成立

q1q2=(q10q20q1q2,q1×q2+q20q1+q10q20)

​ 四元数 q=(q0,q⃗ ) 的共轭定义为: q¯=(q0,q⃗ )

​ 四元数的模定义为: |q|2=qq¯=q2+q⃗ 2

​ 四元数长度可分离的特性: qq2=|q|2q2

用四元数表示对应向量之间的旋转关系

​ 回到上述推导得到的 (1) 式:

OR=cosθOR+sinθω⃗ ×OR+(1cosθ)(ORω⃗ )ω⃗ 

​ 现在将变量 OR OR 以及 ω⃗  重新用四元数表示:
r=(0,R⃗ )

r=(0,R)

q=(q0,q⃗ )=(cosθ2,sinθ2ω⃗ )

​ 根据四元数乘法的定义,它们之间的关系可以推导为

r=qrq¯

​ 将上述等式按照四元数乘法定义展开,即能够得到 (1) 式。

利用四元数求解旋转矩阵

di=(0,di) , di=(0,di) ,为两组数据中的对应点,两组数据仅存在旋转,则存在关系:

di=qdiq¯

​ 若要求得空间中两组对应点之间的旋转四元数,则建立以下目标优化函数:

E2=diqdiq¯2=diqdiq¯2|q|q¯=diqqdi2=|Oi|2      (2)

​ 把 q 代入上式,则有:

Oi=[q⃗ (didi),(di+di)×q⃗ +q0(didi)]

​ 其中 (di+di)×q⃗  可以写成反对称矩阵的形式: q⃗ Di Di 为对应于 (di+di) 的反对称矩阵的转置。

​ 令 Oi=q4Ai ,其中 q4 是四元数 q 转化成的四维向量;而

Ai=0(didi)TdidiDi

​ 注意到 Ai 仅与采集到的数据有关; (2) 式可写为

E2=|Oi|2=q4AiATiqT4

q4 i 无关,所以上式变为:
q4(AiATi)qT4=q4BqT4

​ 其中,
B=AiATi

​ 此时 E2 最小化问题就是典型的一次函数最小化问题,其最小解即为对应于 B 的最小特征值对应的特征向量;得到q4之后,即可得到四元数 q=(cosθ2,sinθ2ω⃗ ) ,从而得到旋转矩阵。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值