初级会员

- 积分
- 76
- 金钱
- 76
- 注册时间
- 2016-7-27
- 在线时间
- 8 小时
|
发表于 2017-8-25 15:22:20
|
显示全部楼层
无校验库的哪些地方被修改了呢? 1.inv_mpu里面,run_self_test函数被更改1:原子的if(result==0x03)改成了无校验库的if(result==0x07),下面解释: 首先找到这一句:result = mpu_run_self_test(gyro, accel);这个的意思是对陀螺仪和加计(加速度计)进行检查。 跳到该函数,找到这里: accel_result = accel_self_test(accel, accel_st); //对加计进行自检,OK返回1,不OK返回0; gyro_result = gyro_self_test(gyro, gyro_st); //对陀螺仪进行自检,OK返回1,不OK返回0; result = 0; if (!gyro_result) result |= 0x01; //如果陀螺仪OK,result变成1; if (!accel_result) result |= 0x02; //如果加计也OK,result变成3; #ifdef AK89xx_SECONDARY compass_result = compass_self_test(); if (!compass_result) result |= 0x04; //如果磁力计也OK,result变成7; 【结论】因为MPU6050没有磁力计,所以result不可能为0x07,也就是说if必然失败,所以不会执行if里面的校正,也就是无校准。 2.inv_mpu里面,run_self_test函数下面的return被更改:return直接被注释掉,所以不会报错MPU6050 Error。 【结论】这种去掉校验的方法不可取,因为去掉校验之后,数据收敛的时间很长,而且不准。可以试试保存偏移量的办法实现以水平面为参考。 |
|