网站建设岗位将来有什么发展,萧县建设局网站,建设银行网站-个人业务,可以做甩货的电商网站之前看过学长姿态解算相关代码#xff0c;因为要做平衡车的项目#xff0c;希望陀螺仪处理数据能够达到很好的效果#xff0c;大概2个星期前#xff0c;看的学长代码#xff0c;当时把大部分代码看懂是用来干什么的#xff0c;但原理还是一窍不通#xff0c;没办法…之前看过学长姿态解算相关代码因为要做平衡车的项目希望陀螺仪处理数据能够达到很好的效果大概2个星期前看的学长代码当时把大部分代码看懂是用来干什么的但原理还是一窍不通没办法太高深了hhhhh。用学长的代码很顺利就完成了基本工作但当时调pid看上位机时看到波形是一堆毛刺把我的强迫症激起来了但当时急着调pid学长的代码就将就着用吧。
最近手头的急事都没了静下心来想好好姿态解算完善一下比如加个滤波我这才发现我都不知道应该在哪加滤波的。之前是用的mahony互补滤波四元数求解角度。学长用的姿态解算好像都是祖传的今天仔细找找网上的代码发现祖传代码还有点细节上的小问题直立组学长用的滤波我也认不出来名字其他有的学长用的是一阶低通滤波。
好吧这个姿态解算是第二个问题第一个问题是怎么处理陀螺仪原始数据我就从小小小小小白的层面来讲因为我现在也是一个小小小小白。首先陀螺仪读取三轴角速度数据加速度计读取三轴加速度数据理想情况下三轴角速度均为02轴加速度为0其中竖直方向始终有个重力加速度。所以竖直方向的加速度对角速度没有互补作用导致绕竖直方向旋转的角度偏航角不准和陀螺仪的xyz轴没关系。即使陀螺仪竖直放x或y轴到竖直面上绕竖直方向旋转的角度依然不准。
1.滤波 输入级使用算数平均滤波就可以取十次求平均一般比较稳定。如果要使用加速度可以再加一个系数比较小的低通滤波。 角速度记得去掉零点偏移值,角速度不用去除零点漂移。
加速度计的噪声较大所以最好用个滤波处理查到的有8层窗口滑动平均滤波效果似乎不错我用的是16层滑窗感觉效果更好还有FIR、IIR等的滤波算法我还没开始用用滤波器的话有一点要注意滤波器是会造成延迟的延迟对控制系统的影响是很大的所以千万不能为了追求滤波效果造成大的延迟通常不要超过一个周期最好。一阶低通效果就足够了当然也可以设计IIR、FIR之类的。
我之前找滤波算法花了几天时间真浪费时间其实这个原始数据不做滤波应该也是可以的pid调好就行了不过因为我的强迫症非想找个滤波那毛刺信号看的真的烦人结果卡尔曼滤波又看不懂只能用滑动窗口了。
然后就是网上遍地流传的四元数姿态解算关键是有的代码都不一样大家对比一下整理一下。这部分不可避免要看一大堆的博客。
2.角度融合 角速度积分得到的角度比较稳但会随时间慢慢漂移且只反映变化量加速度取反三角函数得到的角度不稳但跟随真实角度且是对地的绝对角度。 平衡车整个过程都要用到角度这个变量单纯角速度积分带来的漂移偏差不可忽视而且参考点不好确定所以需要用角度融合将两者得出的角度进行滤波融合取长补短就能得到比较可靠的角度。
角度融合滤波的方法有一阶互补滤波卡尔曼滤波、四元数mahony滤波。
很重要的一点是我一开始陀螺仪水平放用学长的代码完全问题不大然后我陀螺仪竖直放结果原来代码用不了了因为会出现角度跳变问题然后我捣鼓了半天代码改不了甚至去找了asinatan2函数的用法都没用最后我还是放弃了把陀螺仪位置改了。