在机器人控制中,经常需要控制末端工具的姿态,如果用欧拉角表示姿态,会出现万向锁的问题,而使用四元数就不会有这个问题,此外四元数求出的姿态差为一个标量,更容易在RL算法中使用。
首先,假设末端工具的姿态为,期望姿态为
。
其中,均为单位四元数,即
,单位四元数还具有以下特性,其中
为单位四元数的逆,
为单位四元数的共轭。
均为三维单位向量,即
.
为求末端当前姿态到期望姿态的差距distance,使用。解释如下:
可见,构建了从
到
的映射。由于一个四元数表示三维空间中的一个刚体的姿态,那么认为
是从
到
的旋转。
令,认为 从
绕着向量
转动了
角度到达了
。
如果当前姿态就是期望姿态,那么旋转角度,
.
令,
.
将Q转换为轴角形式:
求.
总结以上,为求实际姿态与期望姿态
的差距,分为以下步骤:
一、求距离四元数:
二、将其转换为轴角形式:
,
三、求,这个标量即可代表实际姿态
与期望姿态
的差距。
参考文献:
https://web.archive.org/web/20200503045740if_/http://www.cs.ucr.edu/~vbz/resources/quatut.pdf
https://www.astro.rug.nl/software/kapteyn-beta/_downloads/attitude.pdf