智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 5885|回复: 14
打印 上一主题 下一主题

[咨询] 平衡车互补滤波后的图象,求鉴定是否可用

[复制链接]

2

主题

21

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
312
威望
161
贡献
99
兑换币
104
注册时间
2013-6-11
在线时间
26 小时
跳转到指定楼层
1#
发表于 2013-8-4 08:05:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式





以下图象是加速度计和陀螺仪进入互补滤波器后的结果,
红色为加速度计的角度输入,黄色为陀螺仪的角速度输入,绿色为互补滤波后的角度输出
第一张为加速度计和陀螺仪直接输入互补滤波器的图象
第二张为MPU6050装在小车上面,未启动电机,手动模拟小车摆动时
最后请懂互补滤波的大哥,看看这样的滤波器能行吗?、






37

主题

565

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4385
威望
2300
贡献
1251
兑换币
1399
注册时间
2012-9-25
在线时间
417 小时
2#
发表于 2013-8-4 08:29:29 | 只看该作者
碉堡了 不能用
回复 支持 反对

使用道具 举报

8

主题

324

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1209

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

威望
528
贡献
373
兑换币
291
注册时间
2013-7-24
在线时间
154 小时
3#
发表于 2013-8-4 09:53:32 | 只看该作者
貌似情况不妙啊、、、
回复 支持 反对

使用道具 举报

51

主题

1633

帖子

0

精华

版主

Rank: 9Rank: 9Rank: 9

积分
7556

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

威望
3701
贡献
2453
兑换币
1398
注册时间
2012-5-3
在线时间
701 小时
4#
发表于 2013-8-4 11:21:37 | 只看该作者
指定是不能用啊
回复 支持 反对

使用道具 举报

5

主题

118

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4825
威望
2207
贡献
1044
兑换币
1242
注册时间
2010-5-24
在线时间
787 小时
5#
发表于 2013-8-4 11:36:39 | 只看该作者
本帖最后由 yxw_bob 于 2013-8-4 11:39 编辑

感觉滞后太大。(互补输出角度) 应该等于 (加速度计的角度输入)— K*[SIGMA(陀螺仪的角加速度输入*DELTA_T)]。    你最好给出陀螺仪的角加速度输入曲线(也就是 陀螺仪的输出信号)。
   另外,你最好给出一个 陀螺仪的角加速度输入 的积分曲线,也就是陀螺仪的角速度输入 的 曲线

回复 支持 反对

使用道具 举报

2

主题

21

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
312
威望
161
贡献
99
兑换币
104
注册时间
2013-6-11
在线时间
26 小时
6#
 楼主| 发表于 2013-8-4 16:13:41 | 只看该作者
yxw_bob 发表于 2013-8-4 11:36
感觉滞后太大。(互补输出角度) 应该等于 (加速度计的角度输入)— K*[SIGMA(陀螺仪的角加速度输入*DELT ...

void complement_filter(float angle_m_cf,float gyro_m_cf)//分别进入加速度计角度和陀螺仪角速度
{ //采样率为0.01
//    bias_cf*=0.0001;            //陀螺仪零飘低通滤波;500次均值;0.998
//    bias_cf+=gyro_m_cf*0.009;           //0.002
//    angle_dot=0.6*angle_dot+0.4*gyro_m_cf;
    Gyro_angle=angle+gyro_m_cf*0.01;//把陀螺仪的原始数据进行积分得到陀螺仪角度           
    angle=Gyro_angle*0.95+angle_m_cf*0.05;//使用互补滤波得到最终角度
    Send_data((int)angle_m_cf);    //发送原始加速度计角度到串口上位机
    Send_data((int)Gyro_angle);//发送陀螺仪角度到上位机
    Send_data((int)angle);    // 发送最终角度
}
上位机图象如下:红色的为加速度计的角度输入,黄色的为陀螺仪积分后的角度,绿色的为互补滤波器最后输出的角度



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

2

主题

21

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
312
威望
161
贡献
99
兑换币
104
注册时间
2013-6-11
在线时间
26 小时
7#
 楼主| 发表于 2013-8-4 16:15:20 | 只看该作者
本帖最后由 hanlinson 于 2013-8-4 16:24 编辑
奋斗小青年、 发表于 2013-8-4 08:29
碉堡了 不能用

void complement_filter(float angle_m_cf,float gyro_m_cf)//分别进入加速度计角度和陀螺仪角速度
{ //采样率为0.01
//    bias_cf*=0.0001;            //陀螺仪零飘低通滤波;500次均值;0.998
//    bias_cf+=gyro_m_cf*0.009;           //0.002
//    angle_dot=0.6*angle_dot+0.4*gyro_m_cf;
    Gyro_angle=angle+gyro_m_cf*0.01;//把陀螺仪的原始数据进行积分得到陀螺仪角度           
    angle=Gyro_angle*0.95+angle_m_cf*0.05;//使用互补滤波得到最终角度
    Send_data((int)angle_m_cf);    //发送原始加速度计角度到串口上位机
    Send_data((int)Gyro_angle);//发送陀螺仪角度到上位机
    Send_data((int)angle);    // 发送最终角度
}
上位机图象如下:红色的为加速度计的角度输入,黄色的为陀螺仪积分后的角度,绿色的为互补滤波器最后输出的角度
下面在上传一张;
下图为把加速度计角度和最角度融合在一起的图片,,红线为加速度计的角度,绿线为互补滤波最后输出的角度,黄线为陀螺仪的角速度

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

5

主题

118

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4825
威望
2207
贡献
1044
兑换币
1242
注册时间
2010-5-24
在线时间
787 小时
8#
发表于 2013-8-4 17:49:45 | 只看该作者
本帖最后由 yxw_bob 于 2013-8-4 18:13 编辑

再说一下,陀螺仪的原始输出信号为角加速度w=d(theita) /dt。  你的系数为应该与你的采样率相关的。我上面给你的公式是在直立车偏离垂直方向比较小的角度(theita)下得到的。
真正的过程如下:
  (1) 计算 小车的等效运动加速度 a= g*cos(theita)-w*L ,[ g*cos(theita)为三轴加速度的小车运动方向的分量] ;;;[应该在这里进行卡尔曼滤波,或者互补滤波;但是有的为了利用非线性,对角度进行卡尔曼滤波,或者互补滤波]。
  {在这里a= g*cos(theita)-w*L,中 g*cos(theita)这项的值可能有误,请参照卓老师给出的第2版的计算}
   ( 2)  利用上面求出的  a来反求theita,[即小车偏离垂直方向的角度(theita)],其实这个角度theita,表明你的小车是出于加速状态,还是减速状态,还是匀速速度状态。根据这里得出的状态和你期望的状态来对小车进行直立、方向、加/减速状态进行控制。[请注意为了进行得到更大的加速度,必须先进行减速/加速得到相应的偏离角度后再进行加速/减速操作。为了保证加速度是持续的,必须保证小车偏离垂直方向的角度在合理的区域内]  。
         在这里,小车偏离垂直方向是指小车偏离重心的垂直方向。而不是车体作为垂直方向。

回复 支持 反对

使用道具 举报

5

主题

118

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4825
威望
2207
贡献
1044
兑换币
1242
注册时间
2010-5-24
在线时间
787 小时
9#
发表于 2013-8-4 18:20:22 | 只看该作者
本帖最后由 yxw_bob 于 2013-8-4 18:22 编辑

对了。你的波形差不多了,比较不错啦。       如果采用互补滤波的话,在表达式中angle_dot=k1*angle_dot+k2*gyro_m_cf;
    主参数所占的比重必须在0.95以上,最好在0.98-0.999之间。我是说转换为相同的单位的情况下的主参数的比重值。如果单位不同则没法给出限定。

回复 支持 反对

使用道具 举报

2

主题

21

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
312
威望
161
贡献
99
兑换币
104
注册时间
2013-6-11
在线时间
26 小时
10#
 楼主| 发表于 2013-8-4 22:30:48 | 只看该作者
yxw_bob 发表于 2013-8-4 18:20
对了。你的波形差不多了,比较不错啦。       如果采用互补滤波的话,在表达式中angle_dot=k1*angle_dot+k2 ...

你又没有办法办法确定主控,因为你不知道到底是陀螺仪准,还是加速度计准,我这儿选的陀螺仪准,但是事实上我的陀螺仪也不准,在PMU6050静止时,输出为三分之一是15,三分之二是0,然后我前面先加了一个求平均然后再搞了一个低通滤波,呵呵!我这儿取得是,0.95和0.05,效果还是不错,
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 07:23 , Processed in 0.064341 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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