Open imuncle opened 5 years ago
找到问题所在了,我的云台速度环反馈值还是电机的转速,但其实应该使用MPU9250的陀螺仪数据,这两者是不一样的。
更正反馈值之后云台就老稳了!
我六轴计算出来的yaw角都会有漂移,不管怎么滤波都会有,请问您遇见过吗,做了什么样的处理呢
@Benjemin1010 yaw轴漂移主要是因为角速度有误差,静置的时候角速度值不为0。我每次上电后将陀螺仪静置几秒钟,让陀螺仪采集静态时三轴角速度的静差,然后把这个静差减掉。最后结果看来基本没有漂移。
如果还有漂移可以考虑给角速度设置一个死区,比如:
if(gyro.x < 0.1 && gyro.x > -0.1)
gyro.x = 0;
这样可以缓解零漂问题
我现在是采用的陀螺仪静置十几秒采集一个静差,在机体静止的情况下确实漂移很小,但是一旦长时间运动再加上温漂yaw角就会漂移较大,还在摸索解决方案中。。。不过设置角速度死区确实没有想到,先去尝试一下,非常感谢
老板同问....最近C板的陀螺仪也有这个问题,主要体现在往一个方向转的时候陀螺仪给出的角位移有时候甚至超出了设定值,导致它在某个时候会停转并且往回转,严重的时候甚至会疯转。这个是应该往pid的方向想还是陀螺仪的问题呢?
@Jason0-0 不太清楚你这个问题的描述,QQ细聊
你好,为什么我的陀螺仪平放在桌子上转yaw轴还挺稳定的,然后拿起来晃一晃再放回去yaw轴就开始疯狂漂移,请问您遇到过这种情况吗?
@huoxingdawang 遇到过,这个是真没办法,本质上还是陀螺仪太菜了,晃了之后陀螺仪的噪声方差就变了
啊这,有不那么菜的陀螺仪推荐吗?或者上9轴用磁力计修正?
最近我发现一个问题,yaw轴会在一个很大的值收敛,话说这个是我pid的问题还是我用的问题,求大佬解答
前段时间我研究了MPU9250的数据读取和九轴姿态解析算法,效果还不错,详情点这里。
但是今天发现九轴算法得出来的角度有两个问题,一个是波动较大,一个是会出现下图所示的斜坡。
后来我发现,应该是陀螺仪积分出来的角度和磁力计加速度计坐标转换过来的角度不一致,导致被缓慢纠正,进一步发现pitch轴和roll轴没有这个问题,只有yaw轴有,所以是磁力计的问题。
磁力计这东西吧,问题还真挺多,到了一个新地方还要重新校准一下,而且特别容易受到干扰。我采集了一段数据后发现,加速度、角速度、磁场强度,就磁场数据波动最大,这也是角度波动大的罪魁祸首。
我尝试对磁力计进行低通滤波或者均值滤波,但效果都不是很好,最后角度数值稳定下来了,但是那个斜坡还是无法消除。
没办法,暂时抛下磁力计试试六轴算法,也就是说只使用MPU9250里面的MPU6050。
六轴算法
我参考了正点原子的飞控代码,在正式总结之前先说一声
正点原子牛逼!
陀螺仪数据
六轴算法中最重要的就是陀螺仪数据的处理,因为陀螺仪数据是四元数更新的根本依据。加速度能纠正pitch轴和roll轴,所以yaw轴的稳定全靠陀螺仪数据的准确。
这里主要是采集一段陀螺仪静止的数据,找到三轴数据的静差。我采集了1024个数据,先计算他们的方差,如果方差大于阈值,则表明陀螺仪不是静止的,则不进行校准,当方差满足要求时,计算样本数据的平均值,当做陀螺仪的静差。
处理过后,才静止情况下三轴的陀螺仪数据小数点后两位都是0,效果还不错。
实现代码如下,函数较多:
这里的方差计算与正常的方差计算公式有些不同,算是近似了一下吧,比较方便写程序一点。
加速度数据
加速度数据处理起来就简单很多,主要是计算一个缩放因子,直接贴上代码吧:
数据融合
融合算法和九轴的一样,只是少了磁力计一项,代码如下:
最终效果
后话
后来我兴致冲冲地把六轴算法移植到步兵车上,结果云台还是响应速度慢,摆尾动作云台稳不住。