单位四元数(unit quaternion)
在机器人学中,表示旋转变换的有旋转矩阵、欧拉角、角/度轴和单位四元数。
##1、四元数的表示
四元数是由复数扩展而来:
a+bi⟹ω+xi+yj+zka + bi \Longrightarrow \omega + xi +yj +zk a+bi⟹ω+xi+yj+zk
四元数表示为(齐次形式):
q=(ω,x,y,z)q = ( \omega,x,y,z) q=(ω,x,y,z)
或者(标量/向量形式):
q=(ω,v→)q = ( \omega , \overrightarrow v ) q=(ω,v)
##2、单位四元数表示旋转:
- 对于3D旋转:
坐标系绕轴 $ r $ 旋转 $ \theta $ 可以用四元数表示为:
ω=cos(θ/2)\omega = cos(\theta /2) ω=cos(θ/2)
(x,y,z)=v→=sin(θ/2)r^(x,y,z) = \overrightarrow v = sin(\theta /2) \hat r (x,y,z)=v=sin(θ/2)r^
- 3D旋转的逆
若 qqq 是单位四元数,则
q=(ω,v→)=(cos(θ/2),sin(θ/2)r^)=(cos(−θ/2),sin(−θ/2)r^)=(ω,−v→)=q∗q = ( \omega , \overrightarrow v ) = ( cos(\theta /2) , sin(\theta /2) \hat r ) = ( cos(-\theta /2) , sin(-\theta /2) \hat r ) = ( \omega , -\overrightarrow v ) = q ^*q=(ω,v)=(cos(θ/2),sin(θ/2)r^)=(cos(−θ/2),sin(−θ/2)r^)=(ω,−v)=q∗
四元数就是 轴/角 的进化,解决了 轴/角 无法表示转角位零的情况。
##3、四元数旋转
对向量 $ \overrightarrow p $ 和四元数 qqq, ppp 可看做四元数 $ p= (0, \overrightarrow p) $, 向量 $ p $ 旋转 qqq 后为:
p′=qpq−1p'= q p q ^{-1} p′=qpq−1
附:
i2=j2=k2=ijk=−1i^2 = j^2 =k^2=ijk=-1i2=j2=k2=ijk=−1
ij=k,jk=i,ki=jij=k,jk=i,ki=jij=k,jk=i,ki=j
ji=−k,kj=−i,ik=−jji=-k,kj=-i,ik=-jji=−k,kj=−i,ik=−j
单位四元数:
ω2+x2+y2+z2=1\omega ^2 + x^2 +y^2 + z^2 =1ω2+x2+y2+z2=1
##参考:
http://blog.csdn.net/silangquan/article/details/39008903
https://www.zhihu.com/question/23005815
http://www.qiujiawei.com/understanding-quaternions/
Bruno Siciliano 等,机器人学 建模、规划与控制[M],西安交通大学出版社,2013.11
勃拉坎茨. 四元数在刚体走位问题中的应用[M]. 国防工业出版社, 1977.
总结
以上是生活随笔为你收集整理的单位四元数(unit quaternion)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: git 基础教程总结
- 下一篇: ROS Gazebo(一):安装与使用