两个向量叉乘可以得到一个转轴,点乘之后可以得到一个角度
一个转轴,一个角度我们可以得到一个旋转。
这是我们非常熟悉的一个思路,我们使用两个N系下的z轴叉乘,来得到一个对齐z轴的旋转。
但是这个旋转,是个什么样的旋转呢?
我们之前接触的旋转,都是坐标系旋转,这个旋转使得初始坐标系 cur,与目标坐标系,tar 的 z 轴重合了。
我们把这个中间状态叫做 half,也就是说这个旋转使得,cur 坐标系和 half 坐标系重合了。
正常来说如果我们会使用下式来描述机体坐标系之间的误差。
但是使用这种描述方式是有前提的,如果使用这个轴角表示这个旋转过程,这个旋转的转轴是属于 cur 系的,这就是就是我们常说的「机体系下的机体误差」。
同理如果我们描述地理系下的误差
用轴角表示的话,这个轴是属于 N 系的,我们可以称作「地理系下的地理误差」。
但是我们来看看这个叉乘后的旋转,这是两个 N 系下的 z 轴向量叉乘得到的旋转,所以他们的转轴是N系的。 但描述的是 half 与 cur 的误差。 跟我们通常说的机体误差是不一样的。
如果非要用一种方式来描述,应该是这样:
叫做,可以叫做「地理系下的机体系误差」!
现在能看出这个旋转的特殊性了吗?
所以这个旋转是不能直接使用链式规则加在别的旋转上的哦。
想使用这个误差,必须把这个误差转换成「机体系下的机体误差」,或者「地理系下的地理误差」。
上次我们说了,APM就是把它转换成了,机体系下的机体误差,巧合的是PX4选择了后者。
ps:轴角的转轴经过旋转是不变的,它在两个坐标系间的坐标是一样的。
这个是 APM 或者 PX4 求解姿态误差里最具有迷惑的点,现在大家再去看源码,应该思路更加清晰了。
ok,今天就介绍这么多,我是zing,一个有趣的飞控算法工程师,更多干货,我们下期见。
关注一下吧