|
楼主 |
发表于 2011-1-18 18:59:07
|
显示全部楼层
回复【53楼】largolun
-----------------------------------------------------------------------
不好意思,我搞错了。送给KALMAN的数据应该是角速度、加速度计求得的角度而不是加速度。
acc=acc-1650;//加速度测量数据-静态值
acc=acc/800;//这里得到角度的正弦值
if(acc>1)//算出的值可能大于1或小于-1,是错的,所以限下幅
acc=1;
else if(acc<-1)
acc=-1;
acc=180/3.1415*asin(acc);//asin求反正弦,得出的单位是弧度,*180/pi得到角度值
w=(gyro-1178)/0.67;//角速度值
Kalman_Filter(acc,w);//角度,角速度。函数原型:Kalman_Filter(float angle_m,float gyro_m)
加速度计反正弦求出的角度静止时是很精确的,但是在运动(偏航就是运动吧)时由于有除重力附加的加速度,所以算出的角度将不准。角速度积分求出的角度,因为是积分,所以在累加过程中又慢慢的累计误差,慢慢得出的角度也不准了,角速度传感器本身也有温漂问题,也会造成影响。融合之后很精确。 |
|