wenzhouyxc 发表于 2014-4-10 10:16:47

求助:四轴PID参数调节

X型的四轴,1和3号电机反转,2和4电机正转。在进行PD调节,只调节俯仰和滚转通道,现在调出的参数是四轴会缓慢的往一边倾斜,就是在平衡点附近特别不灵敏。。加大P的参数,四轴会出现在两个通道上的振荡,P越大振荡越厉害,调小对静态的状态补偿又不够。。请问这种情况该怎么办?是要从控制方面再调PD,还是要检查下滤波出的数据是否稳定?

qinkaiabc 发表于 2014-4-10 10:52:43

楼主你好:
   请问1.在读取MPU6050的数据,经过四数素转换得到了Pitch和Roll的角度。就可以用PID调节了吧?
         2.四轴水平放置时,读取的俯仰、翻滚角度不是0°,该怎么校准?和怎么处理数据?
谢谢!

wenzhouyxc 发表于 2014-4-10 11:01:51

qinkaiabc 发表于 2014-4-10 10:52
楼主你好:
   请问1.在读取MPU6050的数据,经过四数素转换得到了Pitch和Roll的角度。就可以用PID调节了 ...

在读取MPU6050的数据之后你有没有对陀螺仪加速度计进行零漂温漂补偿?如果都补偿了再进行数据融合

qinkaiabc 发表于 2014-4-10 11:08:22

wenzhouyxc 发表于 2014-4-10 11:01
在读取MPU6050的数据之后你有没有对陀螺仪加速度计进行零漂温漂补偿?如果都补偿了再进行数据融合 ...

做了
#define ax_offest 840
#define ay_offest -105
#define az_offest -1102

#define gx_offest 79
#define gy_offest 114
#define gz_offest -58


MPU6050放的好的话,水平放置时角度在1°以内。有没有什么方式处理水平数据,使得每次水平放置都在1°以内?

wenzhouyxc 发表于 2014-4-10 11:17:06

qinkaiabc 发表于 2014-4-10 11:08
做了
#define ax_offest 840
#define ay_offest -105


你再加个低通滤波试试

qinkaiabc 发表于 2014-4-10 12:42:33

wenzhouyxc 发表于 2014-4-10 11:17
你再加个低通滤波试试

Single_WriteI2C(CONFIG, 0x06); //低通滤波器

是这个吗?MPU6050初始化的

wenzhouyxc 发表于 2014-4-10 13:03:45

qinkaiabc 发表于 2014-4-10 12:42
Single_WriteI2C(CONFIG, 0x06); //低通滤波器

是这个吗?MPU6050初始化的

这个是它自身带的。你自己还要再设置一个低通滤波器,或者移动平均法对数据再进行处理

qinkaiabc 发表于 2014-4-10 13:05:26

wenzhouyxc 发表于 2014-4-10 13:03
这个是它自身带的。你自己还要再设置一个低通滤波器,或者移动平均法对数据再进行处理 ...

平均法对数据

/*均值滤波*/
void Data_Filter(int16 Acc_Buf,int16 Gyro_Buf)
{
        unsigned char num;
        int16 Ax_Temp=0,Ay_Temp=0,Az_Temp=0,Gx_Temp=0,Gy_Temp=0,Gz_Temp=0;
        int32 Ax_Sum=0,Ay_Sum=0,Az_Sum=0,Gx_Sum=0,Gy_Sum=0,Gz_Sum=0;
        for(num=0;num<20;num++)
        {
                READ_MPU6050(Acc_Buf,Gyro_Buf);
                Ax_Temp = Acc_Buf;
                Ay_Temp = Acc_Buf;
                Az_Temp = Acc_Buf;
                Gx_Temp = Gyro_Buf;
                Gy_Temp = Gyro_Buf;
                Gz_Temp = Gyro_Buf;
                Ax_Sum += Ax_Temp;
                Ay_Sum += Ay_Temp;
                Az_Sum += Az_Temp;
                Gx_Sum += Gx_Temp;
                Gy_Sum += Gy_Temp;
                Gz_Sum += Gz_Temp;
        }

        Ax = Ax_Sum / 20 - ax_offest;
        Ay = Ay_Sum / 20 - ay_offest;
        Az = Az_Sum / 20 - az_offest;
        Gx = Gx_Sum / 20 - gx_offest;
        Gy = Gy_Sum / 20 - gy_offest;
        Gz = Gz_Sum / 20 - gz_offest;
}

我也做了

wenzhouyxc 发表于 2014-4-10 13:15:03

qinkaiabc 发表于 2014-4-10 13:05
平均法对数据




我们这边这样处理就没什么问题了。。不好意思,真的不知道了

qinkaiabc 发表于 2014-4-10 13:23:20

wenzhouyxc 发表于 2014-4-10 13:15
我们这边这样处理就没什么问题了。。不好意思,真的不知道了

能看下你的代码不?

wenzhouyxc 发表于 2014-4-10 14:06:26

qinkaiabc 发表于 2014-4-10 13:23
能看下你的代码不?

那部分代码我们参考的是john大神的开源飞控,你看网上能找到不?姿态这部分的代码不是我写的,具体的我也不是很清楚

茶亦爽 发表于 2014-5-1 15:54:12

看到两位大神的交流,不错。。。

bigeye17 发表于 2014-5-12 22:04:16

我也一直卡PID这块好久了。。怎么个思路啊

hhhhhchch1 发表于 2014-5-14 20:45:10

学习了,谢谢

hhhhhchch1 发表于 2014-5-14 20:45:36

学习了,谢谢

残忆视觉 发表于 2014-7-8 20:03:51

楼主你好,我现在的情况和你当时的差不多,不知道你现在解决了吗?
页: [1]
查看完整版本: 求助:四轴PID参数调节