单位四元数(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(一):安装与使用