摘要
本文设计了一个用于四轴飞行器控制的内部和外部PID回路。外部PID回路控制飞行器的位移,而内部PID回路则用于控制飞行器的姿态。这种控制结构能够有效调节飞行器的姿态和位移,实现平稳飞行并响应给定的轨迹。通过Simulink仿真模型对控制效果进行了验证,结果显示该设计能够稳定飞行器并具有较好的动态响应和稳态误差特性。
理论
四轴飞行器具有复杂的非线性和耦合特性,因此控制其姿态和位移是一项具有挑战性的任务。通过将控制器分为两个PID回路,外部回路控制位置,而内部回路控制姿态,可以有效地分解控制任务。
姿态控制(内部PID回路):姿态角度包括偏航角(Yaw, ψ)、俯仰角(Pitch, θ)和横滚角(Roll, φ)。内部PID控制器的任务是调节这些角度,使得飞行器的姿态稳定。姿态控制器的输入是期望角度和实际角度之间的误差。
位置控制(外部PID回路):位置控制用于调节飞行器在空间中的位置(x, y, z)。通过将期望位置和实际位置之间的误差输入外部PID控制器,生成所需的姿态角度作为内部PID控制器的输入。
PID控制器的公式如下:
实验结果
通过MATLAB Simulink模型进行仿真,飞行器能够稳定在设定的姿态和位移上。下图展示了飞行器在不同时间点的姿态和位移响应。该控制系统的动态响应具有良好的稳定性,且稳态误差较小。飞行器能够跟踪给定的轨迹,姿态角度和位移误差控制在合理范围内。
姿态响应:仿真结果显示,偏航、俯仰和横滚角度能够迅速达到稳定状态,并且稳态误差接近于零。 位移响应:位移响应同样表现出良好的动态特性,飞行器能够按照给定的轨迹移动,且位移误差较小。
部分代码
以下是用于四轴飞行器姿态和位移控制的部分MATLAB代码:
% 定义系统参数
Kp_attitude = 1.5;
Ki_attitude = 0.1;
Kd_attitude = 0.5;
Kp_position = 2.0;
Ki_position = 0.2;
Kd_position = 0.6;
% 姿态控制器(内部回路)
phi_error = phi_d - phi;
theta_error = theta_d - theta;
psi_error = psi_d - psi;
u_phi = Kp_attitude * phi_error + Ki_attitude * integral(phi_error) + Kd_attitude * derivative(phi_error);
u_theta = Kp_attitude * theta_error + Ki_attitude * integral(theta_error) + Kd_attitude * derivative(theta_error);
u_psi = Kp_attitude * psi_error + Ki_attitude * integral(psi_error) + Kd_attitude * derivative(psi_error);
% 位置控制器(外部回路)
x_error = x_d - x;
y_error = y_d - y;
z_error = z_d - z;
u_x = Kp_position * x_error + Ki_position * integral(x_error) + Kd_position * derivative(x_error);
u_y = Kp_position * y_error + Ki_position * integral(y_error) + Kd_position * derivative(y_error);
u_z = Kp_position * z_error + Ki_position * integral(z_error) + Kd_position * derivative(z_error);
% 将控制信号输入飞行器模型
QuadcopterModel(u_phi, u_theta, u_psi, u_x, u_y, u_z);
参考文献
❝
Bouabdallah, S., Murrieri, P., & Siegwart, R. (2004). Design and control of an indoor micro quadrotor. Proceedings of the 2004 IEEE International Conference on Robotics and Automation (ICRA), 3, 4393-4398.
Castillo, P., Lozano, R., & Dzul, A. (2005). Modelling and control of mini-flying machines. Springer. Pounds, P., Mahony, R., & Corke, P. (2006). Modelling and control of a quad-rotor robot. Proceedings of the 2006 Australasian Conference on Robotics and Automation (ACRA), 44(4), 299-308.