在机器人控制中,经常需要控制末端工具的姿态,如果用欧拉角表示姿态,会出现万向锁的问题,而使用四元数就不会有这个问题,此外四元数求出的姿态差为一个标量,更容易在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