新手朋友们最头痛的问题之一就是姿态,翻开书本全是非常复杂的数学过程,完全不理解,今天我们聊点轻松的,可能会帮助你对姿态有一些新的认识。
0.为什么需要姿态
我们先忘掉固有的姿态概念,先把在空间中摆放飞行器的状态叫做「姿势」。
我们高中以前学习物理知识,通常是把物体当做质点来进行分析的,所以只需要描述物体的加速度,速度,位置就够了,但是实际上的情况更加复杂,只有位置不够,想象一下,如果你让你的朋友帮你停车,你只说一个位置,他可能会停的千奇百怪,车头朝前,车头朝后,甚至是斜着给你停。飞机就更加复杂,在天上飞,在同一个位置可能会出现的无数种「姿势」。
实际上控制器就相当于你的朋友,你必须描述清楚你需要什么样的「姿势」,它才能帮你完成控制,实现这个「姿势」,
如果是车,这种「姿势」比较好描述,比如你和你的朋友都拿上指南针,然后告诉你的朋友把车头朝着北偏东多少度,这样他就可以完美的完成你的任务。
所以我们也需要找到一个好的方法描述这个空间中的「姿势」。
1.如何描述「姿势」
我们完全可以像停车一样,自己找一种描述方法,来解决这个问题,但是自己找的方法可能没有你现象中的那么好用。
我们先来看看前辈们是如何解决这个问题的。
现在我们常说的姿态其实是用刚体旋转的形式描述在空间中的「姿势」。
首先建立一个导航坐标系(地理坐标系){E}(北东天)然后在飞机上建立一个机体坐标系{B}(前右上),将两个坐标系原点重合。
假设初始状态是我们的机体坐标系与导航坐标系重合的(机头朝北),当前的机体坐标系与导航坐标系是不重合的,那么我们所说的姿态,就是飞机从初始状态旋转到当前状态的过程。
所以姿态的本质是个旋转过程。
为什么通过旋转这种方式可以解决我们的姿势问题呢?因为只要你清晰的描述了这个旋转过程,那么不论是谁来操作这个旋转,都能将飞机从初始状态,旋转到当前状态。
2.姿态是个动词
不论你用什么数学工具来描述姿态(欧拉角,四元数,旋转矩阵,轴角),它其实都是在描述一个旋转过程,所以姿态其实是个动词。
举个栗子,当前飞行器姿态为b1,
用我们新手最喜欢的欧拉角表示可以表示为(a,b,c)
将其转换成一个旋转矩阵
这个旋转矩阵表示的就是当前姿态b1,因为他是欧拉角变换过来的。
同时他是个旋转矩阵,如果一个{E}系下的向量左乘该旋转矩阵,就可以得到该向量在b1机体坐标系下的表示。
想想看我们经常说的E系下的重力转换到机体坐标系不就用的这个表达式吗?
发现姿态的动词属性了吗?而且聪明的你,应该还发现了不同旋转的描述有不同的优势。
欧拉角非常适合观察,给我们很容易想到它大概的姿态,但是却很难实现这个动作,给人的感觉就是名词属性强,动词属性弱。
旋转矩阵正好相反,看见一个旋转矩阵,完全不知道这代表什么样的姿态,但是旋转矩阵是可以直接参与运算的,使得坐标变换非常容易。(动词属性强,名词属性弱)
3.总结
一旦你能理解姿态的本质是旋转,你再去深入学习会有不一样的感受。
1.我们的问题核心是如何描述飞机在空间中的「姿势」,可以自己设计一套方法,但是我们通常使用旋转的方式来描述「姿势」这个旋转过程我们称作「姿态」。
2.姿态这个旋转过程,是从初始状态转换到当前姿态的过程。
3.数学界的前辈们早就研究出了很多工具用来描述旋转包括,四元数、欧拉角、旋转矩阵、轴角等。
4.欧拉角最适合观察,而其他形式可以直接参与运算,直接参与运算的工具使我们的坐标转换非常方便。
5.虽然欧拉角是三个数字,但是它描述的是旋转,有很多隐藏条件,比如旋转顺序等等,所以欧拉角直接相减没有意义。
还记得我们之前问过一个问题吗?为什么我们姿态更新的一定要求出欧拉角而不是角速度积分得到的三个独立角度吗?因为目前我们的飞控代码都是建立在这套旋转体系之上的,如果你要使用其他方式描述「姿势」,你就得重新设计姿势的求解过程,以计算姿势误差的方法。
欢迎加我的个人微信交流。
关注微信公众号【zinghd的思考】,回复【姿态】为您提供本文的全部参考资料。