• 2012/5/27


    陀螺仪输出角速度,是瞬时量,一般角速度姿态平衡上是不能直接使用,多数惯导系统控制需要角度信号
    所以需要角速度与时间积分计算角度,得到的角度变化量与初始角度相加,就得到目标角度,其中积分时间Dt越小,输出角度越准
    但陀螺仪的原理决定了它的测量基准是自身,并没有系统外的绝对参照物,加上Dt是不可能无限小
    所以积分的累积误差会随着时间流逝迅速增加,最终导致输出角度与实际不符,所以陀螺仪只能工作在相对较短的时间尺度内。

    加速度测量的是重力方向,有系统外绝对参照物“重力轴”,在无外力加速度的情况下,能准确输出ROLL/PITCH两轴姿态角度
    并且此角度不会有累积误差,在更长的时间尺度内都是准确的。但是加速度传感器测角度也有缺点
    加速度传感器实际上是用MEMS技术检测惯性力造成的微小形变,而惯性力与重力本质就是一个东东
    所以它就不会区分重力加速度与外力加速度,当系统在三维空间做变速运动时,它的输出就不正确了。
    很可惜,多数需要惯导姿态角的系统,都不是工作在静止状态下。

    所以在没有其它参照物的基础上,要得到较为真实的姿态角,就要扬长避短,结合两者的优点,摈弃其各自缺点
    最简单的办法就是加权,设计算法在短时间尺度内增加陀螺仪的权值,在更长时间尺度内增加加速度权值,这样系统输出角度就更真实了

    其实MK四轴的平衡算法也是这样,首先对陀螺仪做PI运算,其中I的真正含义就是积分反演角度
    有了陀螺仪PI算法,四轴就有了瞬时增稳,就可以遥控飞了,但是它不会永远水平
    由于累积误差的作用,很快中立点就不是水平位置了,这时候就需要用加速度不断的纠正陀螺仪积分误差。

    你可以看到MK算法中有根据加速度方向不断把积分量I递减清零的代码,就是这个融合算法的核心了
    MK立足于一个高级航模玩具,为了在低成本8位单片机上运行,不去显式的计算姿态角,只把校正后的PI值输出负反馈控制电机了
    这样的好处是基本上只用整型算法就能完成运算,而要显式的计算姿态角,更专业的做法就是KALMAN滤波显式求解姿态
    卡曼滤波也是在对历史数据积分,并且可以同步融合陀螺仪与加速度数据,陀螺仪与加速度贡献权值还可以通过滤波参数调整
    所以它就成了惯性数据处理的经典算法,他的缺点是浮点运算量较大,对系统资源要求较高
    很少有人在资源较少的8位单片机上玩卡曼滤波的。

    总结一下就是:
    PITCH/ROLL角速度积分->PITCH/ROLL姿态角,再结合加速度纠正累积误差
    YAW角速度积分->方向角,再结合地磁传感器、GPS纠正累积误差

    当然导航并非只能用加速度传感器,其它有绝对参照物的传感器都可以
    比如人除了耳蜗外,还有视觉,根据身边的景物人也不会有累积误差导致摔跤的问题
    但一般人闭上眼睛,即便有耳蜗能保持平衡,摔跤可能性也会增加。
    还有其它传感器,比如红外,航模上有种德国红外平衡仪,就是检测地平线上下,红外背景强度不同来保证绝对姿态的。
    卫星上以前还听说过星光导航的,应该也是用它来作为一个相对静止的参照物。 

  • 相关阅读:
    vue.js click点击事件获取当前元素对象及获取自定义属性
    在C#的MVC中 Vue的基本用法实例
    使用Dictionary做特殊的json字符串时(可以随意起key的名称)怎么将json字符串反序列化为json匿名对象?及匿名对象的使用方法
    C#生成城市按照一定格式且按字母顺序的方法
    sid-msg.map文件概述
    Linux中 /boot 目录介绍 【转载】
    suricata 命令行解释【转】
    Ubuntu下查看软件版本及安装位置【转】
    linux top命令查看内存及多核CPU的使用讲述【转】
    linux下如何查看多核负载情况【转】
  • 原文地址:https://www.cnblogs.com/bowiehsu/p/2520470.html
Copyright © 2020-2023  润新知