在机器人学中,表示旋转变换的有旋转矩阵、欧拉角、角/度轴和单位四元数。

##1、四元数的表示

四元数是由复数扩展而来:

a + b i ⟹ ω + x i + y j + z k a + 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 $ 可以用四元数表示为:

ω = c o s ( θ / 2 ) \omega = cos(\theta /2) ω=cos(θ/2)

( x , y , z ) = v → = s i n ( θ / 2 ) r ^ (x,y,z) = \overrightarrow v = sin(\theta /2) \hat r (x,y,z)=v =sin(θ/2)r^

  • 3D旋转的逆

q q q 是单位四元数,则

q = ( ω , v → ) = ( c o s ( θ / 2 ) , s i n ( θ / 2 ) r ^ ) = ( c o s ( − θ / 2 ) , s i n ( − θ / 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 $ 和四元数 q q q, p p p 可看做四元数 $ p= (0, \overrightarrow p) $, 向量 $ p $ 旋转 q q q 后为:

p ′ = q p q − 1 p'= q p q ^{-1} p=qpq1

附:

i 2 = j 2 = k 2 = i j k = − 1 i^2 = j^2 =k^2=ijk=-1 i2=j2=k2=ijk=1
i j = k , j k = i , k i = j ij=k,jk=i,ki=j ij=k,jk=i,ki=j
j i = − k , k j = − i , i k = − j ji=-k,kj=-i,ik=-j ji=k,kj=i,ik=j

单位四元数:

ω 2 + x 2 + y 2 + z 2 = 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.

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐