倾转旋翼无人机作为融合多旋翼垂直起降能力与固定翼高效巡航特性的新型飞行器,在军事侦察、物流运输等领域展现出巨大潜力。然而其独特的过渡飞行模式(VTOL与固定翼模式间的转换)带来了显著的控制难题——传统PID控制器在面对旋翼倾转过程中的非线性气动耦合时,往往需要针对特定飞行状态进行繁琐的参数整定,且难以适应突发扰动。
2019年巴斯大学Caelus项目的实践表明:当飞行器处于30-60度倾转角度区间时,旋翼下洗流与机翼气流的相互干扰会导致升力损失高达40%。这种动态特性使得基于模型的控制方法面临三大技术瓶颈:
针对倾转旋翼无人机的连续控制需求,我们采用Actor-Critic双网络架构:
matlab复制actorNetwork = [
featureInputLayer(10,'Normalization','none','Name','observation')
fullyConnectedLayer(200,'Name','fc1')
reluLayer('Name','relu1')
fullyConnectedLayer(200,'Name','fc2')
reluLayer('Name','relu2')
fullyConnectedLayer(4,'Name','output')
tanhLayer('Name','tanh1')]; % 输出归一化到[-1,1]
matlab复制statePath = [
featureInputLayer(10,'Name','observation')
fullyConnectedLayer(200,'Name','fc1')];
actionPath = [
featureInputLayer(4,'Name','action')
fullyConnectedLayer(200,'Name','fc2')];
commonPath = [
additionLayer(2,'Name','add')
reluLayer('Name','relu')
fullyConnectedLayer(1,'Name','qvalue')];
分层奖励函数设计:
动态噪声调节:
采用改进的Ornstein-Uhlenbeck过程,噪声标准差随训练轮次衰减:
matlab复制noise_std = initial_std * (1 - episode/1000)^0.8;
noise = noise_std * randn(size(action)) + 0.5*prev_noise;
在Simulink中建立六自由度模型,重点考虑:
matlab复制env = rlSimulinkEnv('Transition','Transition/RL Agent',obsInfo,actInfo);
env.ResetFcn = @(in)setVariable(in,'Desired_Location',40*rand(3,1)-20);
agentOpts = rlDDPGAgentOptions(...
'SampleTime',0.2,...
'TargetSmoothFactor',1e-3,...
'ExperienceBufferLength',1e6,...
'MiniBatchSize',128);
悬停稳定阶段(0-200轮):
过渡训练阶段(200-600轮):
全任务阶段(600+轮):
matlab复制agentOpts.ExperienceBuffer = ...
rlPrioritizedExperienceBuffer(1e6,'ImportanceSamplingFactor',0.6);
matlab复制agentOpts.CriticGradientThreshold = 1;
| 指标 | PID控制器 | DDPG控制器 |
|---|---|---|
| 悬停稳态误差(m) | 0.12 | 0.08 |
| 过渡时间(s) | 8.2 | 6.5 |
| 抗风扰能力(N) | 3.5 | 5.2 |
训练初期发散:
matlab复制function in = resetFcn(in)
if rand() < 0.3
setVariable(in,'Initial_Attitude',[0;0;5*randn()]);
end
end
过渡过程震荡:
实时性优化:
安全保护机制:
matlab复制function action = validateAction(action)
% 电机指令限幅
action(1) = min(max(action(1),0),1);
% 倾转角速率限制
action(2) = sign(action(2))*min(abs(action(2)),30); % deg/s
end
硬件在环测试:
建立X-Plane联调环境,通过UDP协议传输控制指令,验证算法在真实气动环境中的表现。实测数据显示,在15节侧风条件下仍能保持过渡轨迹误差<1.5m。