【机器人】四元数与旋转矩阵的转换关系

本文探讨了如何利用四元数表示和插补电机与机械臂的姿态,对比了四元数与旋转矩阵的转换,并提供了详细的计算公式。重点介绍了四元数的构造、运算规则,包括共轭、逆运算和乘法规则,以及如何将旋转操作转化为矩阵和从矩阵回溯到四元数。

导语:最近在搭建电机与机械臂的联合仿真,闲暇之余顺便看了一下姿态轨迹规划的文章,对姿态的插补有点感兴趣,发现用四元数表示姿态然后来进行姿态的插补非常方便,且不会出现奇异。这里对四元数与常规的旋转矩阵的转换做一下总结。

四元数概念

  四元数由实部和虚部组成,设 qqq 为四元数,则可表述为 q=w+xi+yj+zkq=w+xi+yj+zkq=w+xi+yj+zk ,其中 www 为实部, ijkijkijk 为虚单位,满足 i2=j2=k2=ijk=−1i^2=j^2=k^2=ijk=-1i2=j2=k2=ijk=1 。四元数的模计算公式∣q∣=w2+x2+y2+z2 \left| q \right|=\sqrt{w^2+x^2+y^2+z^2} q=w2+x2+y2+z2模等于1时,则为单位四元数,四元数也可写成向量形式 q=[w,u⃗]q=\left[ w,\vec{u} \right]q=[w,u] ,其中 www 为实部,u⃗=[x,y,z]\vec{u}=\left[ x,y,z \right]u=[x,y,z] 为三个实数构成的虚部向量。单位四元数又可表示为轴对角的形式
q=[cos⁡(θ/2),sin⁡(θ/2)∗v] q=\left[ \cos \left( \theta /2 \right) ,\sin \left( \theta /2 \right) *v \right] q=[cos(θ/2),sin(θ/2)v]它表示任意向量 rrr 绕轴 vvv 旋转角度 θ\thetaθ 得到的四元数。

四元数的运算

共轭:设 q=[w,u⃗]q=\left[ w,\vec{u} \right]q=[w,u] 为四元数,则其共轭四元数为 q∗=[w,−u⃗]q^*=\left[ w,-\vec{u} \right]q=[w,u]
:单位四元数的逆 q−1=q∗q^{-1}=q^*q1=q
乘法:对应四元数 q=[w1,u1⃗]q=\left[ w_1,\vec{u_1} \right]q=[w1,u1]q=[w2,u2⃗]q=\left[ w_2,\vec{u_2} \right]q=[w2,u2],则有 q1q2=[w1w2−u⃗1∗u⃗2,u⃗1×u⃗2+w1u⃗2+w2u⃗1]q_1q_2=\left[ w_1w_2-\vec{u}_1*\vec{u}_2,\vec{u}_1\times \vec{u}_2+w_1\vec{u}_2+w_2\vec{u}_1 \right]q1q2=[w1w2u1u2,u1×u2+w1u2+w2u1] ,其中*和×分别表示三维向量的内积和外积。并且四元数的乘法是不可交换的。
数乘:对于 qqq 为四元数,rrr 为实数,则数乘定义为 rq=[r,0]q=[rw,ru⃗]rq=\left[ r,0 \right] q=\left[ rw,r\vec{u} \right]rq=[r,0]q=[rw,ru]

四元数转换为旋转矩阵

  一个绕轴 vvv 旋转角度 θθθ 的操作可以用单位四元数 q=[w,x,y,z]=[cos⁡(θ/2),sin⁡(θ/2)∗ν]q=\left[ w,x,y,z \right] =\left[ \cos \left( \theta /2 \right) ,\sin \left( \theta /2 \right) *\nu \right]q=[w,x,y,z]=[cos(θ/2),sin(θ/2)ν] 进行表示,其中 θ∈[0,π]\theta \in \left[ 0,\pi \right]θ[0,π]。对应旋转矩阵为 R(q)=[1−2y2−2z22xy−2zw2xz+2yw2xy+2zw1−2x2−2z22yz−2xw2xz−2yw2yz+2xw1−2x2−2y2] R\left( q \right) =\left[ \begin{matrix} 1-2y^2-2z^2& 2xy-2zw& 2xz+2yw\\ 2xy+2zw& 1-2x^2-2z^2& 2yz-2xw\\ 2xz-2yw& 2yz+2xw& 1-2x^2-2y^2\\ \end{matrix} \right] R(q)=12y22z22xy+2zw2xz2yw2xy2zw12x22z22yz+2xw2xz+2yw2yz2xw12x22y2

旋转矩阵转换为四元数

有旋转矩阵 iRj=[r11r12r13r21r22r23r31r32r33] ^iR_j=\left[ \begin{matrix} r_{11}& r_{12}& r_{13}\\ r_{21}& r_{22}& r_{23}\\ r_{31}& r_{32}& r_{33}\\ \end{matrix} \right] iRj=r11r21r31r12r22r32r13r23r33 , 转换为单位四元数q=[w,x,y,z]q=\left[ w, x, y, z \right]q=[w,x,y,z]

w=r11+r22+r33+12 w=\frac{\sqrt{r_{11}+r_{22}+r_{33}+1}}{2} w=2r11+r22+r33+1

x=r32−r234w x=\frac{r_{32}-r_{23}}{4w} x=4wr32r23

y=r13−r314w y=\frac{r_{13}-r_{31}}{4w} y=4wr13r31

z=r21−r124w z=\frac{r_{21}-r_{12}}{4w} z=4wr21r12

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值