请教大神们::关于卡尔曼和一阶滤波问题

2019-07-20 19:13发布

我在用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乘得不同,输出的滤波前的有加速度计算的角度也就不同......
}





求大神和原子哥指导@正点原子
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。