四元数
四元数(quaternion)是威廉·哈密顿提出的。四元数与复数类似,可以借助复数进行理解,复数:i^2=-1。于此对应的四元数基本性质是:i²=j²=k²=i·j·k=-1。
四元数基本运算:
加法:
定义两个四元数
四元数加法:p + q
跟复数、向量和矩阵一样,两个四元数之和需要将不同的元素加起来。
乘法:
叉乘:
代数形式:
同矩阵,四元数的乘法有非可替换性,即pq不等于qp。
四元数点积: p · q
求共轭
q*=(-x, -y, -z, w)
我们着重考虑四元数与三维空间旋转移动之间的关系。
首先我们借助复数在二维空间移动来考虑四元数,在复数域,我们对一个复数乘i相当于在复数域逆时针旋转90度,,乘任一复数相当于旋转复数相对应的角度。
那么对于四元数,三维坐标系下给定一个矢量v,再给定一个旋转的单位四元素q,让v旋转q。
先将v改写成四元素的形式v = (x, y ,z, 0), 接下来要旋转v须用q前乘以矢量v,再后乘以q-1。即完成了q对应的旋转移动操作,其中q的实部使原先矢量移动,虚部使其旋转,位旋转轴。
在实际应用中四元数多和欧拉角转换,这里给出两者变换的公式:
姿态解算
对于上式的计算,首先我们需要知道一个矩阵:
即欧拉角坐标变化矩阵,实质上就是两个坐标系的转化,参数分别为Z轴旋转为偏航角(YAW)ψ,绕Y轴旋转为横滚角(ROLL)θ,绕X轴旋转为俯仰角(PITCH)φ。
使用四元数进行旋转:
经过矩阵运算后,
这里我们将矩阵右下角3*3的矩阵与欧拉角的矩阵对比我们可以得出三个方程,省略求解过程我们可以得到:
来源:https://blog.csdn.net/yinxian5224/article/details/99062883