智能车制作

 找回密码
 注册

扫一扫,访问微社区

楼主: 在路上520
打印 上一主题 下一主题

[咨询] 卡尔曼滤波图形

  [复制链接]

68

主题

807

帖子

0

精华

杰出人士

Rank: 12Rank: 12Rank: 12

积分
12168

优秀会员奖章活跃会员奖章在线王奖章论坛骨干奖章论坛元老奖章

QQ
威望
7954
贡献
2434
兑换币
496
注册时间
2011-10-4
在线时间
890 小时
21#
发表于 2012-6-2 21:42:21 | 只看该作者
在路上520 发表于 2012-6-2 21:29
不知道,反正参数能调的我都调了,可还是不行?

我Q415650679,咱们多交流一下
回复 支持 反对

使用道具 举报

3

主题

70

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1631
威望
875
贡献
376
兑换币
76
注册时间
2012-2-5
在线时间
190 小时
22#
发表于 2012-6-2 22:34:12 | 只看该作者
亲,别乱换,我觉得调一种就行
回复 支持 反对

使用道具 举报

0

主题

22

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1244
威望
642
贡献
312
兑换币
6
注册时间
2012-2-13
在线时间
145 小时
23#
发表于 2012-6-2 22:50:52 | 只看该作者
但是尖峰可以用限幅稍微滤下的
回复 支持 反对

使用道具 举报

17

主题

284

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1549

活跃会员奖章优秀会员奖章

威望
781
贡献
396
兑换币
89
注册时间
2012-5-26
在线时间
236 小时
24#
 楼主| 发表于 2012-6-2 22:52:57 | 只看该作者
autozhubeilife 发表于 2012-6-2 22:34
亲,别乱换,我觉得调一种就行

嗯,之前用官方的,可是陀螺仪漂移太严重,后来就用卡尔曼滤波了,现在不想换了。可现在卡尔曼滤波进行不下去了,尖峰实在消不掉,求助
回复 支持 反对

使用道具 举报

34

主题

708

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6200
威望
2640
贡献
1404
兑换币
689
注册时间
2010-12-16
在线时间
1078 小时
25#
发表于 2012-6-3 01:48:59 | 只看该作者
你是不是用的买来的模块??
回复 支持 反对

使用道具 举报

5

主题

27

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
488
威望
296
贡献
76
兑换币
2
注册时间
2011-10-27
在线时间
58 小时
26#
发表于 2012-6-3 08:13:13 | 只看该作者
在路上520 发表于 2012-6-2 21:20
你用的是网上的卡尔曼滤波程序吗?还是自己又写的?

网上的 但感觉有些错
回复 支持 反对

使用道具 举报

17

主题

284

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1549

活跃会员奖章优秀会员奖章

威望
781
贡献
396
兑换币
89
注册时间
2012-5-26
在线时间
236 小时
27#
 楼主| 发表于 2012-6-3 09:35:30 | 只看该作者
skywolf 发表于 2012-6-3 01:48
你是不是用的买来的模块??

是买的,买的不好吗?是因为买的造成的吗?
回复 支持 反对

使用道具 举报

17

主题

284

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1549

活跃会员奖章优秀会员奖章

威望
781
贡献
396
兑换币
89
注册时间
2012-5-26
在线时间
236 小时
28#
 楼主| 发表于 2012-6-3 09:40:03 | 只看该作者
滑民航 发表于 2012-6-3 08:13
网上的 但感觉有些错

嗯,是前面求P那块错了吗?我自己觉得那块是错的,但是改过之后,几乎没有陀螺仪的输出的,融合后的基本都跟随加速度计的。

看下我改过的


static float P[2][2] = {{ 0.005, 0}, { 0, 0.005 }};//误差相关矩阵,如果我们不确切的知道最初的位置与速度,那么协
                                                                                                        //方差矩阵可以初始化为一个对角线元素是b 的矩阵
  
         static float q_bias=0;                                                //陀螺仪偏差
         
        
         static const float dt = 0.005;             //dt的取值为kalman滤波器采样时间
         static float A[2][2]={{1, -0.005 }, {0,1}} ,a[2][2]={{1,0}, {-0.005,1}} ;//a为A的转置
         static float angle_err;
         static float X[2][2]={{0,0}, {0,0}} ,Y[2][2]={{0,0}, {0,0}};
         static float PHt_0=0,PHt_1=0;
         static float En=0,t_0=0,t_1=0;
          float h_0 = 1.0;
          int i,j,k;
              
        g_fCarAngle=g_fCarAngle-g_fangle_dot  * dt;     //X(K|K-1)=A*X(K-1|K-1)
     
     
      
          for(i=0;i<2;i++)                                           //P(K|K-1)=A*P(K-1|K-1)*A'+Q
              {
                  for(j=0;j<2;j++)
                      {
                             for(k=0;k<2;k++)
                                 X[j]+=A[k]*P[k][j] ;
                       }
                }
   
           
          for(i=0;i<2;i++)
             {
                 for(j=0;j<2;j++)
                     {
                            for(k=0;k<2;k++)
                            Y[j]+=X[k]*a[k][j] ;
                       }
               }
         
          P[0][0] =Y[0][0]+ Q_angle;
          P[0][1]= Y[0][1] ;
          P[1][0]=Y[1][0];
          P[1][1] =Y[1][1]+Q_gyro ;
      
     //Y矩阵清零   ,X矩阵清零   
          for(i=0;i<2;i++)
               {
                     for(j=0;j<2;j++)
                         {
                              Y[j]=0;
                               X[j]=0;
                          }
                 }
        
        
        
         
        angle_err = g_fGravityAngle - g_fCarAngle;
         
         PHt_0 = h_0*P[0][0];
         PHt_1 = h_0*P[1][0];
         
         En = R_angle + h_0 * PHt_0;
         
         K_0 = PHt_0 / En;
         K_1 = PHt_1 / En;
         
         t_0 = PHt_0;
         t_1 = h_0 * P[0][1];

         P[0][0] -= K_0 * t_0;
         P[0][1] -= K_0 * t_1;
         P[1][0] -= K_1 * t_0;
         P[1][1] -= K_1 * t_1;
                 
         g_fCarAngle   += K_0 * angle_err;
         q_bias += K_1 * angle_err;
          g_fangle_dot = g_fGyroSpeed-q_bias;      
}
         
回复 支持 反对

使用道具 举报

34

主题

708

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6200
威望
2640
贡献
1404
兑换币
689
注册时间
2010-12-16
在线时间
1078 小时
29#
发表于 2012-6-3 09:55:22 | 只看该作者
在路上520 发表于 2012-6-3 09:35
是买的,买的不好吗?是因为买的造成的吗?

我怀疑你买的模块有问题。我们最初买的龙丘的模块有问题,出现反向过冲,就是变化时先往反方向变化然后才往正确的方向变化,导致一个多月车根本站不起来。建议照着官网做,完全可用,温飘几乎没有。

回复 支持 反对

使用道具 举报

17

主题

284

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1549

活跃会员奖章优秀会员奖章

威望
781
贡献
396
兑换币
89
注册时间
2012-5-26
在线时间
236 小时
30#
 楼主| 发表于 2012-6-3 10:14:51 | 只看该作者
skywolf 发表于 2012-6-3 09:55
我怀疑你买的模块有问题。我们最初买的龙丘的模块有问题,出现反向过冲,就是变化时先往反方向变化然后才 ...

我的现在就是这个问题,先往反方向转,再往正确的方向转,这是反向过冲吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-6-17 18:25 , Processed in 0.043762 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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