机器人学相关数学基础(一)四元数
四元数用来表示坐标系的旋转,通常表达旋转关系采用的方式有欧拉角、轴角等。
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
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)