abc138929
abc138929
采纳率100%
2016-09-10 02:53 阅读 3.9k
已采纳

mup6050中的dmp与卡尔曼动态滤波的优劣

最近在网上买了一块6050模块,用店家的给的代码,他用的是6050自带的dmp来直接得到姿态的
可是,如果拿着模块在空中剧烈翻转的话,就会有二十多度的误差,如果用卡尔曼滤波的话,会不会有这么严重的误差呢?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

5条回答 默认 最新

  • 已采纳
    fanleung fanleung 2016-10-18 01:54

    DMP使用方便,直接调用函数接口,得出来的数据比较稳定,但是有误差。
    卡尔曼滤波算法比较灵活,可以有比较好的解算结果,不过需要自己调参数。

    点赞 1 评论 复制链接分享
  • HJ199404182515 _IRONMAN_ 2016-09-14 05:20

    用自带的DMP解算虽然缓解了主机的负担,但是数据更新的速率慢,而且误差大。一般最常用的就是把原始数据读出来在主机上进行姿态解算,这样就可以对不同的需求对算法进行改进,大幅度的提升精度。

    点赞 评论 复制链接分享
  • qq_38203234 qq_38203234 2017-05-12 03:00

    楼主,有没有卡尔曼滤波的算法?求分享图片说明

    点赞 评论 复制链接分享
  • wangjing20081996 wangjing20081996 2017-06-01 09:00

    同求卡尔曼滤波算法,谢谢大家

    点赞 评论 复制链接分享
  • m0_46383658 m0_46383658 2020-02-22 17:18

    x_last = Data[0] ;
    // x_now = x_last;
    /* Output_Data = ((float)Value_sum/Cnt) * 5.01/65536; //采样求均值
    我也在用这个,效果不是很好,我是直接把数据进行滤波后输出的
    Value_sum =0; //AD_Null=0x00,AD_M=0x00,AD_H=0x00,AD_L=0x00,AD_E=0x00,AD_Value=0x00;
    /
    for(i=0;i<Cnt;i++){
    x_now = x_last; //x_last=x(k-1|k-1),x_now=x(k|k-1)
    p_now = p_last+ProcessNiose_Q; //p_now=p(k|k-1),p_last=p(k-1|k-1)
    kg = p_now/(p_now+MeasureNoise_R); //kg为kalman filter,R为噪声
    // z_measure=z_real+frand()*0.03;//测量值
    x_next = x_now+kg
    (Data[i]-x_now);//估计出的最优值 x_now=x_now+kg*(*(Data+i)-x_now);
    p_next = (1-kg)*p_now;//最优值对应的covariance
    p_last = p_next; //更新covariance值
    x_last = x_next; //更新系统状态值

    点赞 评论 复制链接分享

相关推荐