论文部分内容阅读
摘要:近年来随着科技技术的发展,无人机在各个领域的应用及其广泛,而现在的无人机,已经趋向人工智能,趋向迷你化,多功能化。而四旋翼飞行器与其它飞行器相比,更具有易于操纵,稳定性高,应用性更强等优点。因此对于基于单片机的四旋翼飞行器的研究,将扩大无人机的工作领域,并且可以降低造价,对于我国无人机方面做出一些贡献。
关键词:四旋翼飞行器;STM32单片机;APM飞控系统
一、前言
该四旋翼飞行器由四个旋翼作为动力来源,产生升力,并且因为其为对称结构,使其具有其它无人机没有的功能和特性。本设计采用STM32单片机作为飞行器的控制器,内部由主控模块、飞行模块、光电感应板、无刷电机等部分组成,用PID控制姿态角以及滤波等对姿态角进行处理,测定后经PID输出相应电机的PWM增减量,然后作用于陀螺仪,陀螺仪控制机身的飞行轨迹和姿态;通过对陀螺仪的校正反作用于机身实现定高及飞行等任务。
二、设计方案
电源及驱动模块:对于电源模块,因为四旋翼飞行器需要保持轻便,长久的使用,所以需要使用重量较轻,容量较大的锂电池进行供电,考虑到芯片工作所需的电压,所以我们采用将11.4V的锂电池进行稳压后的3V状态进行工作。并且加入了600mA的保险丝,保护芯片的安全。对于驱动方面,我们采用无刷电机。
无刷电机具有使用寿命长,噪音低,成本较低等优点,因为其为自控试运行方式,所以不会产生震荡和失步,更稳定。
三、系统工作原理
软件设计上由单片机STM32读取传感器信息,解算姿态角,以姿态角为被控制量融合遥控信息后,输出到四个无刷电机以及两个舵机以完成四轴飞行控制和云台的稳定补偿。
四、姿态角计算
依据姿态解算方程和四元数,
PID的控制规律为下图所示:
在此理论基础上,即可通过矫正后的陀螺仪进行分析后得到姿态角。我们可设出加速度,加速度的向量,以及陀螺仪的数据和陀螺仪向量。(均在X,Y,Z坐标下进行)然后再带入四元数形式转换矩阵,再根据余弦矩阵和欧拉角的定义,将地理加速度的向量应用到陀螺仪上,机体对于陀螺仪是求导的关系,所以对陀螺仪进行校正即对机体进行校正,以此得到校正后的陀螺仪。再利用毕卡二阶算法:
最后将四元数转化为欧拉角:
Q_ANGLE.pitch=asin(-2 * q1 * q3)+asin(2 * q0* q2)
Q_ANGLE.rool=atan2(2*q2*q3)+atan2(2*q0*q1,-2*q1*q1-2*q2*q2+1)
Q_ANGLE.yaw=atan2(2*q1*q2)+atan2(2*q0*q3,-2*q2*q2-2*q3*q3+1)
由此得到了飞行器的姿态角,并且可以准确反映飞行器的运行轨迹,验证其姿态角的标准性。
五、部分程序
void IMUupdate(double gx,double gy,double gz,doubleax,double ay,double az)
{
static float q0 = 1.0f,q1 = 0.0f,q2 = 0.0f,q3 = 0.0f;
double delta_2=0;
const static doubleFACTOR = 0.002;
doublenorm=0.0f;
double vx,vy,vz;
double ex,ey,ez;
double q0q0 = q0*q0;
double q0q1 = q0*q1;
double q0q2 = q0*q2;
double q1q1 = q1*q1;
double q1q3 = q1*q3;
double q2q2 = q2*q2;
double q2q3 = q2*q3;
double q3q3 = q3*q3;
norm = sqrt(ax*ax)+sqrt(ay*ay)+sqrt(az*az); // 测量标准化 把加速度的三维向量转为单位向量。
ax = ax /norm;
ay = ay / norm;
az = az / norm;
vx = 2*(q1q3 - q0q2); // 估计方向的重力 vy = 2*(q0q1 + q2q3);
vz = q0q0 - q1q1 - q2q2 + q3q3;
ex =(ay*vz - az*vy);
ey =(az*vx - ax*vz);
ez =(ax*vy - ay*vx);
halfT=0.002000;
gx = gx + ex*FACTOR/halfT; //校正陀螺仪测量值 用叉积误差来做PI修正陀螺零偏
gy = gy + ey*FACTOR/halfT;
gz = gz + ez*FACTOR/halfT;
delta_2=(2*halfT*gx)*(2*halfT*gx)+(2*halfT*gy)*(2*halfT*gy)+(2*halfT*gz)*(2*halfT*gz);
q0 =(1-delta_2/8)*q0 +(-q1*gx - q2*gy - q3*gz)*halfT;// 整合四元数率 四元数微分方程 四元数更新算法
q1 =(1-delta_2/8)*q1 +(q0*gx*halfT)+(q2*gz*halfT)-(q3*gy*halfT)
q2 =(1-delta_2/8)*q2 +(q0*gy*halfT)+(q2*gx*halfT)-(q3*gz*halfT)
q3 =(1-delta_2/8)*q3 +(q0*gz*halfT)+(q2*gy*halfT)-(q3*gx*halfT)
norm = sqrt(q0*q0 + q1*q1 + q2*q2 + q3*q3);// 正常化四元
q0 = q0 / norm;
q1 = q1 / norm;
q2 = q2 / norm;
q3 = q3 / norm;// 化简为欧拉角
Q_ANGLE.Pitch = asin(-2 * q1 * q3 + 2 * q0* q2)* 57.3;// pitch
Q_ANGLE.Roll = atan2(2 * q2 * q3 + 2 * q0 * q1,-2 * q1 * q1 - 2 * q2* q2 + 1)* 57.3;// roll
Q_ANGLE.Yaw = -atan2(2 * q1 * q2 + 2 * q0 * q3,-2 * q2*q2 - 2 * q3 * q3 + 1)* 57.3;// yaw
}
六、總结
该由STM32单片机设计的四旋翼飞行器,可以完成飞行,定高等基本功能,还可以进行部分拓展,使其具有更多功能和应用。并且该飞行器具有飞行稳定,成本较低,可扩展能力强等特点。但是在续航方面和精准度方面,还需进一步的深入和研究,使其具有更强的续航能力以及对飞行器的控制,将其应用于民用和军用领域,低成本的无人机将产生一定的经济价值和社会价值,推动四旋翼飞行器事业的发展。
参考文献
[1]李朝清.单片机原理及接口技术.北京:北京航空航天大学出版社,1996.8
(作者单位:学校空军预警学院)
关键词:四旋翼飞行器;STM32单片机;APM飞控系统
一、前言
该四旋翼飞行器由四个旋翼作为动力来源,产生升力,并且因为其为对称结构,使其具有其它无人机没有的功能和特性。本设计采用STM32单片机作为飞行器的控制器,内部由主控模块、飞行模块、光电感应板、无刷电机等部分组成,用PID控制姿态角以及滤波等对姿态角进行处理,测定后经PID输出相应电机的PWM增减量,然后作用于陀螺仪,陀螺仪控制机身的飞行轨迹和姿态;通过对陀螺仪的校正反作用于机身实现定高及飞行等任务。
二、设计方案
电源及驱动模块:对于电源模块,因为四旋翼飞行器需要保持轻便,长久的使用,所以需要使用重量较轻,容量较大的锂电池进行供电,考虑到芯片工作所需的电压,所以我们采用将11.4V的锂电池进行稳压后的3V状态进行工作。并且加入了600mA的保险丝,保护芯片的安全。对于驱动方面,我们采用无刷电机。
无刷电机具有使用寿命长,噪音低,成本较低等优点,因为其为自控试运行方式,所以不会产生震荡和失步,更稳定。
三、系统工作原理
软件设计上由单片机STM32读取传感器信息,解算姿态角,以姿态角为被控制量融合遥控信息后,输出到四个无刷电机以及两个舵机以完成四轴飞行控制和云台的稳定补偿。
四、姿态角计算
依据姿态解算方程和四元数,
PID的控制规律为下图所示:
在此理论基础上,即可通过矫正后的陀螺仪进行分析后得到姿态角。我们可设出加速度,加速度的向量,以及陀螺仪的数据和陀螺仪向量。(均在X,Y,Z坐标下进行)然后再带入四元数形式转换矩阵,再根据余弦矩阵和欧拉角的定义,将地理加速度的向量应用到陀螺仪上,机体对于陀螺仪是求导的关系,所以对陀螺仪进行校正即对机体进行校正,以此得到校正后的陀螺仪。再利用毕卡二阶算法:
最后将四元数转化为欧拉角:
Q_ANGLE.pitch=asin(-2 * q1 * q3)+asin(2 * q0* q2)
Q_ANGLE.rool=atan2(2*q2*q3)+atan2(2*q0*q1,-2*q1*q1-2*q2*q2+1)
Q_ANGLE.yaw=atan2(2*q1*q2)+atan2(2*q0*q3,-2*q2*q2-2*q3*q3+1)
由此得到了飞行器的姿态角,并且可以准确反映飞行器的运行轨迹,验证其姿态角的标准性。
五、部分程序
void IMUupdate(double gx,double gy,double gz,doubleax,double ay,double az)
{
static float q0 = 1.0f,q1 = 0.0f,q2 = 0.0f,q3 = 0.0f;
double delta_2=0;
const static doubleFACTOR = 0.002;
doublenorm=0.0f;
double vx,vy,vz;
double ex,ey,ez;
double q0q0 = q0*q0;
double q0q1 = q0*q1;
double q0q2 = q0*q2;
double q1q1 = q1*q1;
double q1q3 = q1*q3;
double q2q2 = q2*q2;
double q2q3 = q2*q3;
double q3q3 = q3*q3;
norm = sqrt(ax*ax)+sqrt(ay*ay)+sqrt(az*az); // 测量标准化 把加速度的三维向量转为单位向量。
ax = ax /norm;
ay = ay / norm;
az = az / norm;
vx = 2*(q1q3 - q0q2); // 估计方向的重力 vy = 2*(q0q1 + q2q3);
vz = q0q0 - q1q1 - q2q2 + q3q3;
ex =(ay*vz - az*vy);
ey =(az*vx - ax*vz);
ez =(ax*vy - ay*vx);
halfT=0.002000;
gx = gx + ex*FACTOR/halfT; //校正陀螺仪测量值 用叉积误差来做PI修正陀螺零偏
gy = gy + ey*FACTOR/halfT;
gz = gz + ez*FACTOR/halfT;
delta_2=(2*halfT*gx)*(2*halfT*gx)+(2*halfT*gy)*(2*halfT*gy)+(2*halfT*gz)*(2*halfT*gz);
q0 =(1-delta_2/8)*q0 +(-q1*gx - q2*gy - q3*gz)*halfT;// 整合四元数率 四元数微分方程 四元数更新算法
q1 =(1-delta_2/8)*q1 +(q0*gx*halfT)+(q2*gz*halfT)-(q3*gy*halfT)
q2 =(1-delta_2/8)*q2 +(q0*gy*halfT)+(q2*gx*halfT)-(q3*gz*halfT)
q3 =(1-delta_2/8)*q3 +(q0*gz*halfT)+(q2*gy*halfT)-(q3*gx*halfT)
norm = sqrt(q0*q0 + q1*q1 + q2*q2 + q3*q3);// 正常化四元
q0 = q0 / norm;
q1 = q1 / norm;
q2 = q2 / norm;
q3 = q3 / norm;// 化简为欧拉角
Q_ANGLE.Pitch = asin(-2 * q1 * q3 + 2 * q0* q2)* 57.3;// pitch
Q_ANGLE.Roll = atan2(2 * q2 * q3 + 2 * q0 * q1,-2 * q1 * q1 - 2 * q2* q2 + 1)* 57.3;// roll
Q_ANGLE.Yaw = -atan2(2 * q1 * q2 + 2 * q0 * q3,-2 * q2*q2 - 2 * q3 * q3 + 1)* 57.3;// yaw
}
六、總结
该由STM32单片机设计的四旋翼飞行器,可以完成飞行,定高等基本功能,还可以进行部分拓展,使其具有更多功能和应用。并且该飞行器具有飞行稳定,成本较低,可扩展能力强等特点。但是在续航方面和精准度方面,还需进一步的深入和研究,使其具有更强的续航能力以及对飞行器的控制,将其应用于民用和军用领域,低成本的无人机将产生一定的经济价值和社会价值,推动四旋翼飞行器事业的发展。
参考文献
[1]李朝清.单片机原理及接口技术.北京:北京航空航天大学出版社,1996.8
(作者单位:学校空军预警学院)