【干货】详解几种飞控的姿态解算算法

2018-12-17 12:33

  姿态解算是飞控的一个基础、重要部分,估计出来的姿态会发布给姿态控制器,控制飞行平稳,是的最重要保障。有关姿态解算的基础知识,这里笔者不会细细描述,有关这方面的资料,网上已经有很多。主要是先掌握坐标系的概念、彩圣网下载,姿态角的几种描述方法(欧拉角、四元数、旋转矩阵)等。

  姿态解算的难点主要在于,消费级飞控上一般所选用的惯性传感器,都是mems器件,精度相对较差,同时陀螺仪、加速度计、地磁计单个传感器无法得到满意的姿态角信息,所以需要一些融合算法,进行姿态估计。

  很多人都会有这个困扰,就是没办法确定所得到的角度的精确程度。一般用外部参考的方法测量,比如飞机上同时挂载自己的飞控以及高精度的IMU设备(比如xsens、sbg等),飞行完成后,对比自己飞控所解算的角度和外部设备的误差;又或者,在室内装vicon设备来给出外部参考。

  笔者手上没有精确的外部设备,所以本文不能得出结论哪种算法的好坏,只是提供大概思路。

  采用开源PX4飞控,进行姿态模式飞行,取出飞行数据,注意,验证算法的时候,最好还是用实际飞行的数据,否则加速度噪声对算法的影响无法验证,同时,这里的角度参考仅是px4飞控所解算得到的角度,不能算高精度参考,数据曲线:

  如上图所示,蓝色的陀螺积分角度随着时间会有漂移,而加速度计得到的角度则噪声很大,都无法使用。

  由于单一传感器获得角度都有缺点,一个动态精度好,一个静态精度好,很自然联想到互补滤波,即通过调整一个加权系数,如果陀螺仪所占的权重大些,则解算的角度则跟陀螺角度近似,加速度类似。

  综上所看,固定增益a,无论如何调整,性能总是不尽理想,陀螺仪的权重大了,动态性能还可以,大致能跟上角度,但是不能静态保持,当没有角速度时,角度也收敛了;加速度权重大了,噪音大,另外动态性能差,100s左右的来回打杆,所得的角度基本没有变化。

  如果权重参数可变呢?也就是如果角度变化大时,更相信陀螺,否则则更相信加速度的角度。

  如图所示,虽然动态精度看上去好了,但是当静态的时候,还是不能达到满意效果。另外,图中可以看出,加速度的角度所保证的静态精度是有延迟的。

  PX4飞控早期的姿态解算有一个SO3版本,其算法其实就是网上常见的mahony算法。算法原理:根据加速度计和地磁计的数据,转换到地理坐标系后,与对应参考的重力向量和地磁向量进行求误差,这个误差用来校正陀螺仪的输出,然后用陀螺仪数据进行四元数更新,再转换到欧拉角。

  该算法能得到大概的角度。至于哪个更准确,这里无法判断。不过俯仰角,在40s左右的一段,这时候飞机姿态是回平的,但是解算有误。

  卡尔曼滤波是非常常用的状态估计算法,相关的理论介绍有很多,这里不赘述了。有一点要注意,足彩13042,就是你的状态方程和量测方程的模型不一样,效果肯定也是不一样的,卡尔曼滤波只是理论,具体怎么用还得看具体情况,效果也是看所建的模型。

  建模一般则是根据物理规律进行定的,运用现成的数学理论,如果不是很了解,可以参考一些论文。

  简单来讲,就是重点调R矩阵参数,一般取数据,用matlab看曲线、数据的坐标系?

  很多人用同样的代码,输入数据后,运算的结果不对。一般主要原因就是正负号不对应,要对好数据的坐标系,就是正负号,不知道的话,本办法就是试凑。

  最后那个数据曲线就是手晃的数据,不是直接飞行的,加速度噪音小。数据质量一般关心的是加速度的数据,起飞后,加速度噪音比较大,可能你在地面测试,觉得姿态角算的挺准的,但是一起飞就不行了,这时候需要回过头来处理加速度数据,怎么处理?涉及到滤波方面的知识,后续会简单讲讲。

  主要是因为一般的互补滤波,权重参数是固定的,而卡尔曼本质也是调整权重参数,但是是时变的,不过计算量相对较大。

  动加速度对姿态解算影响较大,因为你的陀螺是靠重力加速度向量去校正的,一旦运动的加速度大了,则会影响参考,自然也算不准了。普遍的方法是会融合

  的速度算加速度。这篇文章只是简单描述了一些常用的姿态解算算法,并不直接点明好坏,没有参考数据,不太好分析。有的一些没有给出推导过程,读者可以自己推导。一些理论也请自行查阅相关文献。后续也会讲解下卡尔曼滤波等内容。

  声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。