我在用dmp处理mpu6050后,得到的roll和yaw是0~180度,pitch角因为万向节原因是0~90度;
我将陀螺仪采集的原始数据进行卡尔曼滤波或一阶滤波的时候滤波后的角度三个轴都不是0~180度,
为什么???
//这个函数就是把加速度当作参数计算出角度,因为要用于卡尔曼滤波参数
float get_angle(float x,float y,float z,u8 dir)
{
float temp;
float res=0;
switch(dir)
{
case 0://与自然Z轴的角度
temp=sqrt((x*x+y*y))/z;
res=atan(temp);
break;
case 1://与自然X轴的角度
temp=x/sqrt((y*y+z*z));
res=atan(temp);
break;
case 2://与自然Y轴的角度
temp=y/sqrt((x*x+z*z));
res=atan(temp);
break;
}
return
res*1800/3.1415926; //res*1800/3.14159265;
//这里res乘得不同,输出的滤波前的有加速度计算的角度也就不同......
}
求大神和原子哥指导@正点原子
一周热门 更多>