智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 17274|回复: 16
打印 上一主题 下一主题

被MPU6050 DMP坑过的朋友看过来

  [复制链接]

4

主题

24

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2377
QQ
威望
1198
贡献
769
兑换币
779
注册时间
2015-8-12
在线时间
205 小时
毕业学校
成都信息工程大学
跳转到指定楼层
1#
发表于 2018-1-6 11:41:34 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
    做十二届直立的时候用了6050,开始没有用他自带的DMP,用原始数据自己融合的,越到后面越发现在快速加减速的时候,由于加速度计受到外界干扰较大,解算出的角度会稍微偏离真实角度,几种常用的方式都测试过,均会受不同程度影响。后来用了DMP以后发现稳的变态,无论如何用力晃动,角度都没有明显偏离真实角度。我直立控制是用了串级,内环角速度500Hz,外环角度100Hz,用了DMP以后虽然角度上更准了,但明显的可以感觉到内环效果变了,单独调试内环角速度,与不开启DMP时的效果完全不同,当时也查了很多资料没能搞明白原因,之前发的一个帖子中也有提到。这个库是基于正点原子移植好的,应该有相当大一部分朋友是用了正点原子的这个库。
    今天帮学弟做这届的车,重新移植DMP的时候突然发现了一个坑,

开始我还不以为然,我觉得我已经把库初始化的一些地方改过了,后来想想还是再去看看,结果就在DMP最后一个使能函数里发现了一个隐藏的很深的深坑

注意看标出的这三个函数,第一个是设置采样率为1K,然后是加载固件,最后使能,我们先进到使能里面看

他竟然又重新设置了一遍采样率,那么反过来再看这个st.chip_cfg.dmp_sample_rate在哪里被改变过,搜索发现是在加载固件的时候



那么最后配置成功的采样率显然就是宏定义的DMP_SAMPLE_RATE  200Hz,而这个原本是用来配置DMP的输出速率的,并不是陀螺仪的采样率,然而正点原子移植的库里就是这么写了。如果移植了正点原子移植好的DMP程序且完全没有改动就更坑了,默认的只有50Hz,我这个还是自己改成了最大的200Hz。控制频率500Hz,但数据更新只有200Hz,那么PID的微分项的效果就被大大降低了,那么这个控制就是有问题的。
    不得不说写这个库的程序猿思想和我等渣渣不太一样,既然最后一步又重新配置了,那么前面又装模做样一本正经的配置又有什么意义?逗我们玩呢?再感慨一遍,最后使能函数里的这个坑实在是太深了。

本帖子中包含更多资源

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

x

评分

2

查看全部评分

回复

使用道具 举报

4

主题

24

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2377
QQ
威望
1198
贡献
769
兑换币
779
注册时间
2015-8-12
在线时间
205 小时
毕业学校
成都信息工程大学
2#
 楼主| 发表于 2018-1-6 12:57:31 | 显示全部楼层
ggchasing 发表于 2018-1-6 12:20
从官方库里面移植过来的,看样子都比较粗糙。不过DMP也不至于稳的夸张,感觉使用起来也存在一定的加速度的 ...

影响也有一点,它的内部应该还是对这种情况处理了的,比起我们自己融合不做处理还是有点优势的,缺点就是速度略慢
回复 支持 反对

使用道具 举报

4

主题

24

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2377
QQ
威望
1198
贡献
769
兑换币
779
注册时间
2015-8-12
在线时间
205 小时
毕业学校
成都信息工程大学
3#
 楼主| 发表于 2018-3-14 15:03:56 | 显示全部楼层
安于现状 发表于 2018-2-15 14:01
我仔细翻看了一下正点原子的MPU6050,默认的50HZ我怎么没找到?
#define DMP_SAMPLE_RATE     (200)
#def ...

不好意思这里是我说错了,但总的来说这里头还是有很多坑的
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 20:30 , Processed in 0.057208 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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