天天看点

机器人学相关数学基础(一)四元数

四元数用来表示坐标系的旋转,通常表达旋转关系采用的方式有欧拉角、轴角等。

1. 欧拉角使用最为广泛,一般使用roll,pitch,yaw来表示旋转值,即三个:R、P、Y值。代表经过三次按照顺序的旋转变换,

而不同的旋转顺序会导致最终结果不同,所以存在不同的定义方法。

欧拉角存在的问题有:

1)不易插值;

2)存在万向节死锁现象;

2. 轴角通常表示为[x,y,z,theta],前面三个表示旋转轴,最后一个表示角度。

轴角存在的问题有:

1)不能进行简单的插值;

2)轴角形式的旋转不能直接施于点或矢量,必转换为矩阵或者四元数。

下面进入正题,四元数的数学概念

形如 ai+bj+ck+d 的数,a、b、c、d是实数。

其中,i^2=j^2=k^2=-1,ij=k、ji=-k、jk=i、kj=-i、ki=j、ik=-j

表达旋转的概念

在表达旋转时,使用一个3维向量表示转轴和一个角度分量表示绕此转轴的旋转角度,即(x,y,z,w),其中:

w = cos(theta/2)    

x  = ax * sin(theta/2)    

y  = ay * sin(theta/2)    

z  = az * sin(theta/2) 

其中(ax,ay,az)表示轴的矢量,theta表示绕此轴的旋转角度。

四元数还有一些乘法、求共轭、求模、求逆等性质,不加以赘述。

其中,单位四元数的概念:

机器人学相关数学基础(一)四元数

用四元数旋转矢量

给定一个矢量v1,再给定一个旋转的单位四元数q,让v旋转q。

首先将v改写成四元数的形式v1 = (x, y ,z, 0),  接下来要旋转v须用q前乘以矢量v,再后乘以q-1。

机器人学相关数学基础(一)四元数

用后面乘以共轭的q也是一样的,因为都是单位四元数。

对于旋转多个四元数,

机器人学相关数学基础(一)四元数

四元数的球面线性插值

四元数的一大优点在于可以进行球面的线性插值,过度均匀。

机器人学相关数学基础(一)四元数
机器人学相关数学基础(一)四元数

四元数的各种转换

1. 四元数转欧拉角

机器人学相关数学基础(一)四元数

2. 欧拉角转四元数

机器人学相关数学基础(一)四元数

3. 四元数转旋转矩阵

机器人学相关数学基础(一)四元数

内容部分转载于https://blog.csdn.net/shenshen211/article/details/78492055

继续阅读