OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4005|回复: 2

导航专业的在读博士,说说我对四轴姿态解算的看法吧。看完大多数问题都能解决

[复制链接]

1

主题

19

帖子

0

精华

高级会员

Rank: 4

积分
586
金钱
586
注册时间
2016-2-22
在线时间
103 小时
发表于 2020-8-12 14:44:10 | 显示全部楼层 |阅读模式
本帖最后由 redawnlc 于 2020-8-12 14:45 编辑

   看到论坛中有很多帖子,是大家在做四轴过程中的调试的困惑,其中有关姿态解算的部分我也稍有了解。从论坛中看,大多数都是工程应用问题,其实这方面的理论都很基础也很成熟了。
     我本人也做过一点无人机姿态解算方面的研究,说说我自己的心得体会吧。希望能覆盖大多数疑问。这里关于理论知识的问题就不多说了,主要是抛砖引玉,给大家找找解决思路,毕竟具体问题需要具体分析。

1、基本应用和方案
    无人机包括单轴、共轴反桨、四轴、多轴、固定翼等多种飞行方案。论坛里多数都是四轴吧。    无人机的姿态解算主要是依靠陀螺仪和加速度计,这是最基本的惯性器件。受限于成本和体积原因,大家使用的器件多数都是MEMS器件,当然土豪使用光纤陀螺了就另说了,估计也不会在这儿问了。除了惯导之外,也可能会使用磁、GNSS接收机。
    多数人还是使用的是大厂家生产的消费级九轴芯片吧,通常集成了三轴加计陀螺和磁传感器了。对于飞控应用来说,精度在1°左右应该足够了。
    常用的姿态解算方案就是惯导+磁+GNSS。其中惯导不受外界干扰,自主性很强,是姿态解算的核心。但是由于器件本身工艺等等的原因,必然有一定的误差,因此长时间进行积分解算就会出现误差,所以可以使用磁传感器和GNSS进行修正。


2、姿态解算算法
    姿态解算算法常用的就是Mahony互补滤波和Kalman。其中Mahony比较简单,也容易理解,Kalman属于最优估计,滤波精度高,但是需要针对性建模,运算量大。对于自己玩来说,互补滤波基本够用了。姿态表示可以使用欧拉角、四元数、等效旋转矢量等等。如果你使用了卡尔曼的话,一般都是利用四元数进行更新。比如MPU60xx,MPU925X中,内置的DMP就使用了卡尔曼滤波,直接输出四元数了。使用欧拉角倒是比较易于我们理解分析,但是存在奇异点的问题,比如俯仰角在接近±90°时,姿态旋转矩阵中航向和滚转就难以区分了,这个时候欧拉角解算就容易出问题。


3、多轴融合
    使用加速度计和陀螺仪、磁进行组合姿态解算非常常见而且算法成熟。网上到处都是这类代码。
    加速度计可以利用重力矢量,提供与时间无关的准确姿态。它的主要问题是会受到无人机机动的干扰,而且由于重力矢量特点,不能解算航向角(heading/yaw),只能解算俯仰角和滚转角(pitch&roll)。
    陀螺仪主要通过角速率积分进行求解姿态,但是如果你的陀螺标定不准、同时还有陀螺的零点漂移问题,会造成误差随时间累积发散的问题。
    磁传感器常用来解算航向,利用地球磁场。但是由于地球磁场强度只有0.5Gauss左右非常容易受到铁磁干扰。准确度不行。当进行九轴融合解算的时候,如果周围磁环境不好,那就要及时隔离磁传感器数据了。

4、校准
    姿态解算中,对于传感器的数据的准确性要求很高,这是根本问题。如果你的传感器数据就不准,那么算法再强也没用。
    所以如果有条件的话,还是应该进行一下陀螺、加计和磁标定的。陀螺一般标定使用转台进行。加计和磁的话,手动标定一下也能凑合用,常用方法就是椭球拟合、十二位置法等等。知网上文献很多。
    标定的时候至少需要标定零点、灵敏度、不正交角和安装误差角。
    其中加计的零点会影响你在静态中的姿态解算准确度。
    陀螺的话,零点倒是可以实时进行标定,比如静止时MEMS陀螺的角速率输出可以认为是0。陀螺是惯导的关键器件,很多论文更进一步对陀螺进行了零偏随机游走的建模和模式识别等等,具体的可以看看随机过程教材,这也是高精度陀螺(光纤、激光、机械)为什么这么贵的原因。MEMS陀螺的零偏稳定性多数在30°/h以上了,光纤陀螺可以到0.001°/h以内。

5、航向角解算
    如果只使用重力矢量的话,加计是无法解算航向角的,可以想象无论你航向如何,加计的输出几乎是一样的。但是使用磁传感器就可以利用地球磁场确定磁北,虽然磁北和地理北有一定的磁偏角,但是在一定区域内磁偏角差别很小。航向角解算主要使用的是电子罗盘算法,其原理主要是将磁分量投影在加速度计解算出的当地水平面上,从而根据地磁场在磁传感器三个轴上的投影,利用反三角函数求出与磁北的夹角。
    至于大家所说的为什么我的航向角总是不准总是漂,那是因为你的陀螺零点在漂,在静止中出现不该出现的角速率积分。如果你的磁航向角不准,那很可能是因为周围磁环境不太好,如果你把磁铁放在附近,那估计解算的就更不准确了。


6、精度
    姿态解算精度主要依赖于器件,也就是你的陀螺、加计和磁传感器的器件精度和标定精度了。要是你的boss要求更高,那你做一个温度补偿也有效果。对于算法来说,STM32的浮点精度够用了,你的ADC在12位以上也够用了。要是板子画的不好噪声过大,那估计算法再改也没啥用了。
-------------------------------------------------
上述几点是我能想到的主要问题了。大家如果有问题的话再回复我吧。

转载请注明。




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2020-9-5
在线时间
7 小时
发表于 2020-9-23 21:19:02 | 显示全部楼层
回复 支持 1 反对 0

使用道具 举报

3

主题

28

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
455
金钱
455
注册时间
2020-3-27
在线时间
52 小时
发表于 2020-9-9 16:41:38 | 显示全部楼层
感谢楼主讲解!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 16:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表