
我在做电子罗盘项目,使用了加速度计、陀螺仪、地磁计。其中IMU的型号是ISM330DHCX,地磁计的型号是LIS2MDL。在使用motionfx库融合九轴数据时遇到了航向角不准确的问题。我通过反复试验,找到了一些问题点,希望能得到官方的技术支持。 问题1:原先我水平旋转传感器,航向角的误差很大,比如说误差30度。通过我反复测试后发现是陀螺仪零漂的问题,motionfx库设置静态时校准零漂,但是当旋转传感器的速度很慢时(2度/秒),motionfx库偶尔会识别为静止状态,实际上是运动状态,因此导致了航向角的累计误差。我反复修改MFX_knobs_t结构体的参数,无法解决此问题。后来我尝试用MotionGC库校准陀螺仪,通过一个一个测试MGC_knobs_t结构体参数,最终发现通过修改MaxGyro值可以解决此问题。MaxGyro默认的值是15dps,传感器旋转速度比较快才能使MotionGC库识别为运动状态,通过减小此值,目前我设置的是陀螺仪3倍的噪声均方根值。通过简单测试,目前航向角基本正常,误差没有特别大。 问题2:我的项目是电子罗盘,使用的场景以低速运动(<6度/秒)和静止状态为主。那么motionfx库和MotionGC库该怎么设置参数,可以提高航向角的精度和稳定性呢?这两个库只有函数的说明,实在是不了解参数实际的物理意义。我通过测试认为,地磁计数据应该只参与首次上电、倾角变化后的姿态解算。有没有什么方式让地磁计的权重更大?虽然文档中提到:减小MTime、FrTime值可以提高地磁计的权重,但是实际测试发现并没有什么效果。比如说关闭陀螺仪零漂校准,理论上将地磁计权重设置最高,则陀螺仪零漂导致航向角偏移会更小,但是实际上陀螺仪零漂不受地磁计权重影响,依然会导致航向角增加。理论上设置地磁计高权重,陀螺仪低权重后,陀螺仪零漂不应该影响航向角,因为航向角主要由地磁计提供,此时地磁计受外部干扰后会导致航向角突变。如果增加陀螺仪权重,降低地磁计权重,则地磁计受到干扰后导致航向角偏移会降低。但是实际测试发现,不论怎么设置,始终都是陀螺仪数据优先级最高,地磁计数据优先级非常低,低到陀螺仪漂移导致航向角误差很大时,航向角和地磁计数据差值非常大,motionfx库也不会使用地磁计数据校准航向角。理论上来说地磁计只有受到干扰后才不可靠,而正常情况下的地磁计是可靠的。我有此顾虑的原因是:虽然暂时解决了陀螺仪零漂对航向角的影响,但是实际工程应用时,反复低速旋转传感器,可能会有累积误差,如果地磁计权重太低,而陀螺仪累计误差一直得不到校准,则实际航向角误差会越来越大。如果可以设置地磁计权重,那么就算反复旋转传感器后陀螺仪误差累加也会因为地磁计数据正确而被成功校准。 我非常希望得到官方的技术支持,谢谢! |
LIS3DHTR在读取xyz三轴加速度值时发现高8位一直都是00,请问这是什么情况导致?
使用LSM6DSV16X和LSM6DSO16IS,有没有内置滤波器的设置调整?
请问哪位大咖知道可以替代LIS3LV02DL的加速度计
读取asm330lhhx传感器数据,偶尔陀螺z轴出现正负4.2度的误差,发生频率大约半小时出现一次
IIS3DHHCTR,这个料 温度从寄存器读取出来之后,把读取的数值转换成实际温度,有没有公式?
ASM330LHB测量精度可以达到0.001g吗?可以达到多少?
ISM330DLC是否可以配置倾斜检测的触发阈值?
L9663如何使用上行缓冲区发送同步脉冲
LSM6DSV16X内置的低功耗融合算法
使用主控IIC读取MPU9250的磁力计数据,速度特别慢,并且一....
有技术支持吗