Matlab四旋翼无人机ADRC姿态控制器仿真:复现姿态模型、力矩方程与角运动方程的数学模型及...
Matlab四旋翼无人机ADRC姿态控制器仿真 / 复现 无人机姿态模型,力矩方程,角运动方程 包含三个姿态角的数学模型,以及三个adrc控制器。
要搞定四旋翼无人机的姿态控制,ADRC(自抗扰控制)这玩意儿是真香。今天咱们直接开撸Matlab仿真,手把手实现三个姿态角的ADRC控制器。先别急着写代码,得把飞行器的"扭动规律"摸清楚。
飞行器的姿态说白了就是滚转、俯仰、偏航三个角的运动。用欧拉角描述时,角速度转换关系挺有意思:
% 角速度转换矩阵
E = [1, sin(phi)*tan(theta), cos(phi)*tan(theta);
0, cos(phi), -sin(phi);
0, sin(phi)/cos(theta), cos(phi)/cos(theta)];
omega_body = E \ [p; q; r]; % 机体角速度转欧拉角速率
这矩阵看着唬人,其实就是处理机身转动和地面坐标系的关系。比如俯仰角theta接近90度时tan(theta)会炸,这也是万向节锁的老问题,不过咱们先假设在小角度范围内操作。
ADRC的核心在于扩张状态观测器(ESO),它能实时估计系统内外扰动。拿滚转角控制举例,先整跟踪微分器(TD):
function [x1, x2] = TD(v, h, T)
persistent v1 v2
if isempty(v1)
v1 = 0; v2 = 0;
end
fh = fhan(v1 - v, v2, 100, h);
v1 = v1 + T * v2;
v2 = v2 + T * fh;
x1 = v1;
x2 = v2;
end
function y = fhan(x1, x2, r, h)
d = r*h^2;
a0 = h*x2;
y = x1 + a0;
a1 = sqrt(d*(d + 8*abs(y)));
a2 = a0 + sign(y)*(a1 - d)/2;
sy = (sign(y + d) - sign(y - d))/2;
y = -r*(a2/d - sign(y))*sy - r*sign(y);
end
这个非线性函数fhan是精髓,比线性TD响应更快。参数r决定跟踪速度,h是滤波因子。调试时如果发现指令跟踪有超调,可以把r适当调小。
姿态控制最刺激的部分莫过于ESO设计。机体动力学模型可以简化为:
phi_ddot = (Mx - Kp*phi_dot)/Ix + w(t)
其中w(t)包含模型误差和外界扰动。对应的ESO写成:
function z = ESO(y, u, beta, delta, T)
persistent z1 z2 z3
if isempty(z1)
z1 = 0; z2 = 0; z3 = 0;
end
e = z1 - y;
fe = fal(e, 0.5, delta);
z1 = z1 + T*(z2 - beta(1)*e);
z2 = z2 + T*(z3 - beta(2)*fe + 0.8*u); % 0.8是控制增益估计值
z3 = z3 + T*(-beta(3)*fe);
z = [z1; z2; z3];
end
function y = fal(e, alpha, delta)
if abs(e) > delta
y = abs(e)^alpha * sign(e);
else
y = e / (delta^(1 - alpha));
end
end
beta参数需要满足带宽概念,比如取beta=[100, 300, 1000],但别照搬,得根据实际系统调。调试时盯着z3的输出,如果出现高频抖动,说明观测器带宽太高了。
最后把三个ADRC控制器并联:
for k = 1:N
% 滚转通道
[phi_ref, ~] = TD(phi_cmd(k), 0.01, Ts);
z_phi = ESO(phi_actual, u_phi, [80, 200, 500], 0.01, Ts);
e1 = phi_ref - z_phi(1);
u0_phi = 150*fal(e1, 0.75, 0.05) - 10*z_phi(2);
u_phi = u0_phi - z_phi(3)/0.8;
% 俯仰、偏航通道结构相同
...
end
非线性反馈里的fal函数参数需要配合TD和ESO的带宽调整。遇到过调时别急着改增益,先检查转动惯量参数是否正确——之前有哥们把Ixx单位搞错成kg·m²,结果控制器直接抽风。
仿真结果跑起来后,能看到典型的ADRC响应曲线:超调小于5%,上升时间0.3秒左右。故意加个20%的力矩扰动,估计器z3会在0.1秒内捕获扰动并补偿。调参秘诀就一句话:ESO带宽要比系统动态高3~5倍,但别超过采样频率的1/3。

更多推荐
所有评论(0)