在无人机控制领域,固定翼无人机的轨迹跟踪控制一直是个极具挑战性的课题。我最近复现了2024年航空航天领域TASE顶刊的一篇论文,研究了一种针对存在输入饱和和未知干扰的固定翼无人机的指数预设时间轨迹跟踪控制方案。这个方案最吸引我的地方在于它能够在精确用户定义的时间内实现误差收敛,而且这个时间与系统初始状态完全无关——这在实际工程应用中意义重大。
传统控制方法要么收敛太慢(渐近控制),要么收敛时间难以精确控制(有限/固定时间控制)。更棘手的是,实际无人机系统都存在执行器饱和限制,再加上复杂环境中的未知干扰,使得控制设计更加困难。本文提出的方法通过三个创新点解决了这些问题:指数预设时间控制器、固定时间干扰观测器以及基于高斯误差函数的输入饱和处理机制。
固定翼无人机轨迹跟踪面临的核心挑战来自三个方面:
时间约束:许多实际应用场景(如紧急救援、动态目标跟踪)要求系统在严格规定的时间内完成轨迹跟踪,传统渐近控制无法满足这种时效性要求。
物理限制:无人机的执行器(舵机、油门等)都存在物理饱和限制,直接忽略这些限制会导致性能下降甚至系统失稳。
环境干扰:风扰、气流变化等外部干扰以及未建模动态都会影响跟踪精度,特别是在长时间飞行任务中。
我们的解决方案采用了一种分层设计思路:
上层控制器:设计指数预设时间控制律,确保跟踪误差在用户定义的精确时间内收敛到零。
中层观测器:构建固定时间干扰观测器,快速准确地估计复合干扰并进行前馈补偿。
底层处理:通过高斯误差函数将饱和非线性转化为平滑函数,引入辅助系统将有约束问题转化为无约束问题。
这种分层结构既保证了系统的整体性能,又便于各模块的独立分析和调试。
控制器设计的核心在于如何将预设时间控制和指数控制有机结合。我们采用的控制律形式为:
u = B⁺[-K₁e - K₂ė - K₃sign(e)/(T_d - t)^k - K₄e·exp(-αt)] + D̂
其中几个关键点值得注意:
预设时间项:-K₃sign(e)/(T_d - t)^k 保证了系统状态在预设时间T_d内收敛,但单独使用会导致控制输入在接近T_d时急剧增大。
指数补偿项:-K₄e·exp(-αt) 的引入有效平滑了控制输入,避免了终端时刻的输入突变,同时改善了初始阶段的收敛速度。
增益选择:通过大量仿真实验,我们发现K₁和K₂主要影响跟踪精度,K₃决定收敛时间,K₄和α则影响控制输入的平滑度。
提示:在实际实现时,需要对T_d - t进行下限保护(如设置最小值为0.01),避免除零错误。
干扰观测器的设计采用了双模态结构:
D̂̇ = L₁(ë - f(e,ė) - B(e,ė)u) + L₂sign(ë - f(e,ė) - B(e,ė)u - D̂)
这种设计的优势在于:
在Simulink中实现时,我们采用S函数对sign函数进行了连续化近似处理,避免了数值振荡:
matlab复制function Dhat_dot = disturbanceObserver(e_pp, f, B, u, Dhat, L1, L2)
residual = e_pp - f - B*u - Dhat;
Dhat_dot = L1*residual + L2*tanh(100*residual); % 连续化近似
end
处理输入饱和的关键步骤包括:
饱和函数近似:使用高斯误差函数erf近似实际的饱和函数:
matlab复制function u = saturate(v, umin, umax)
sigma = (umax - umin)/6; % 99.7%值落在[umin,umax]
u = (umax + umin)/2 + (umax - umin)/2*erf((v - (umax+umin)/2)/sigma);
end
辅助系统设计:引入一阶滤波器平滑控制指令:
matlab复制function v_dot = auxiliarySystem(v, u_desired, tau)
v_dot = (u_desired - v)/tau;
end
参数整定经验:时间常数τ的选择很关键,太小会导致辅助系统响应过快失去平滑效果,太大则会影响动态性能。我们通过实验发现τ=T_d/20通常能取得较好平衡。
在Simulink中搭建完整仿真模型时,需要注意以下几个关键点:
无人机模型:采用6自由度非线性模型,包括:
控制模块划分:
mermaid复制graph TD
A[轨迹生成] --> B[位置控制器]
B --> C[姿态控制器]
C --> D[控制分配]
D --> E[执行器模型]
E --> F[无人机动力学]
F --> G[干扰观测器]
G --> B
关键参数设置:
通过对比实验验证了所提方法的优势:
与传统PID对比:
与普通预设时间控制对比:
饱和处理效果:
将算法从仿真移植到实际飞行控制器时,需要特别注意:
计算效率优化:
传感器数据处理:
安全机制:
c复制// 伪代码示例
if(fabs(T_d - t) < 0.1f) {
K3 = 0.0f; // 接近预设时间时禁用发散项
}
if(control_output > MAX_LIMIT) {
trigger_safety_mode();
}
参数调试技巧:
本方法不仅适用于固定翼无人机,还可推广到其他领域:
多旋翼无人机:需要调整动力学模型,但控制框架可复用
机械臂控制:处理关节力矩饱和和负载变化问题
自动驾驶车辆:路径跟踪中的转向饱和限制
未来值得深入研究的方向包括:
在实际应用中,我发现这套控制框架的鲁棒性相当出色。特别是在今年春季的风场实验中,当遭遇突发阵风时,配备该控制器的无人机仍能保持稳定的轨迹跟踪,而传统PID控制的无人机则出现了明显的轨迹偏离。这充分验证了固定时间干扰观测器的有效性。
对于想要复现这项工作的同行,我的建议是先从简化模型开始(如二维平面模型),逐步增加复杂度。同时要特别注意数值实现中的细节,比如对奇异情况的处理,这些往往是算法能否实际应用的关键。