欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

单位四元数(unit quaternion)

发布时间:2025/6/17 编程问答 59 豆豆
生活随笔 收集整理的这篇文章主要介绍了 单位四元数(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=qpq1

附:

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)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。