无人机指导模式块近似高保真无人机模型

仿真模型在不同的开发阶段需要不同的逼真度。在快速原型阶段,我们想要快速地试验和调整参数来测试不同的自主算法。在产品开发阶段,我们希望针对增加可信度的模型验证我们的算法。在这个例子中,我们演示了一个方法来近似一个高保真模型无人机指导模式块,并使用它来原型和调整一个航路点以下的导航系统。看到调整航点跟随固定翼无人机。用高保真模型对同一导航系统进行了测试,验证了其性能。

示例模型使用由植物模型和内置自动驾驶仪的中间电平的高保真无人驾驶飞行器(UAV)的模型。此模型包含接近一千块,这是相当复杂的工作。331。由于在开发过程中的第一步骤中,我们建立了一个变型的系统,可以此高保真模型和UAV指导模式块之间进行切换。高保真度模型是从文件交换项提取,万博1manbetxSimulink无人机参考应用

不同逼真度的无人机模型

uavModel ='FixedWingModel.slx';open_system (uavModel);

您可以通过更改存储在与该模型关联的数据字典中的MATLAB®变量值,在低保真模型和高保真模型之间进行切换。

plantDataDictionary = 万博1manbetxSimulink.data.dictionary.open(“pathFollowingData.sldd”);plantDataSet = getSection (plantDataDictionary,“设计数据”);%切换到高保真模式assignin (plantDataSet'useHighFidelity'1);

%切换到低精度模型assignin (plantDataSet'useHighFidelity',0);

与低精度模型指导近似高保真固定翼模型

利用无人机制导模型块逼近高保真模型,生成阶跃控制信号反馈到模型中,观察阶跃响应RollAngle,高度空速命令。

stepModel =“stepResponse”;open_system(stepModel)

首先,命令在侧倾角的变化。

controlBlock = get_param (“阶跃响应/步控制输入”,'宾语');controlBlock.StepControl =“RollAngle一步控制”;assignin (plantDataSet'useHighFidelity'1);sim (stepModel);
###启动串行参考模型模拟生成###已成功更新模型参考模拟目标为:PlantModel ###已成功更新模型参考模拟目标为:FixedWingModel
highFidelityRollAngle = RollAngle.Data(:);highFidelityTime = RollAngle.Time;图()图(highFidelityTime,highFidelityRollAngle,“——r”);标题(“横滚角阶跃响应”)

放大上面的仿真结果,您可以看到构建在高保真模型中的轧辊角度控制器的特性。滚转角的稳定时间接近2.5秒。

xlim([75 80]) ylim([-0.1 0.548])

对于二阶PD控制器,为了在临界阻尼系统下获得这个稳定时间,需要在无人机模型的低保真变体内配置无人机制导模型块。对于本例,无人机指导模式块使用码生成以增加速度运行多次模拟。见块参数。

ζ电= 1.0;%临界阻尼TS = 2.5;%2%的稳定时间WN = 5.8335 /(TS *ζ电);newRollPD = [WN ^ 2 2 *ζ电* WN];

设置新的收益和模拟的低高保真模型的阶跃响应。它比原来的响应。

load_system uavModel set_param (“FixedWingModel/FixedWingModel/LowFidelity/Fixed Wing UAV制导模型”,...'PDRollFixedWing',strcat的('['num2str (newRollPD),']')save_system uavModel assignin (plantDataSet,'useHighFidelity',0);sim (stepModel);
###启动串行参考模型模拟生成###已成功更新模型参考模拟目标为:FixedWingModel
lowFidelityRollAngle = RollAngle.Data (:);lowFidelityTime = RollAngle.Time;持有;情节(lowFidelityTime lowFidelityRollAngle,'-b');传说(“高保真的反应”,“低富达响应”,'位置','东南');

低保真度模型实现了类似的阶跃响应。同样,我们可以调优其他两个控制频道:高度空速。更复杂的方法可以在这里用来优化控制增益,而不是控制响应的目视检查。考虑使用系统辨识Toolbox®进行高保真无人机模型行为的进一步分析。

controlBlock.StepControl =“空速步控制”;assignin (plantDataSet'useHighFidelity',0);sim (stepModel);
###开始串行模型参考仿真构建### # FixedWingModel的模型参考仿真目标是最新的。
lowFidelityAirSpeed = AirSpeed.Data(:);lowFidelityTime = AirSpeed.Time;assignin (plantDataSet'useHighFidelity'1);sim (stepModel);
###启动串行参考模型模拟生成###模型参考模拟目标PlantModel是最新的。###已成功更新模型参考模拟目标为:FixedWingModel
highFidelityAirSpeed = AirSpeed.Data (:);highFidelityTime = AirSpeed.Time;图()图(lowFidelityTime lowFidelityAirSpeed,'-b');持有;图(highFidelityTime,highFidelityAirSpeed,“——r”);传说(“低富达响应”,“高保真的反应”,'位置','东南');标题(“空中飞车阶跃响应”) xlim([7080]) ylim([17.5 19.2])

controlBlock.StepControl =“高度步控制”;assignin (plantDataSet'useHighFidelity',0);sim (stepModel);
###启动串行参考模型模拟生成###已成功更新模型参考模拟目标为:FixedWingModel
lowFidelityHeight = Height.Data (:);lowFidelityTime = Height.Time;assignin (plantDataSet'useHighFidelity'1);sim (stepModel);
###启动串行参考模型模拟生成###模型参考模拟目标PlantModel是最新的。###已成功更新模型参考模拟目标为:FixedWingModel
highFidelityHeight = Height.Data (:);highFidelityTime = Height.Time;图()图(lowFidelityTime lowFidelityHeight,'-b');持有;图(highFidelityTime,highFidelityHeight,“——r”);传说(“低富达响应”,“高保真的反应”,'位置','东南');标题(“高阶跃响应”)XLIM([70 150])ylim([49 56])

用低保真度模型测试导航算法

现在,我们已经接近与高保真模型无人机指导模式块,我们可以尝试用无人机制导模型块来代替它调整航点跟随固定翼无人机例。测试先行距离的效果和标题针对不同保真度的这些模型控制增益。

navigationModel ='pathFollowing';open_system (navigationModel);
assignin (plantDataSet'useHighFidelity',0);sim (navigationModel);
###启动串行参考模型模拟生成###已成功更新模型参考模拟目标为:FixedWingModel
图visualizeSimStates (simStates);

用高保真模型进行验证

assignin (plantDataSet'useHighFidelity'1);sim (navigationModel);
###启动串行参考模型模拟生成###模型参考模拟目标PlantModel是最新的。###已成功更新模型参考模拟目标为:FixedWingModel
图visualizeSimStates (simStates);

结论

这个例子展示了我们如何用一个低保真度的固定翼无人机的抽象来近似一个高保真度的模型。相反的方法也可以用来帮助选择自动驾驶仪控制增益的高保真模型。您可以首先通过在不同的测试senarios中模拟一个低保真模型来确定一个自动驾驶仪控制响应的可接受特性,然后相应地调整高保真模型自动驾驶仪。

discardChanges (plantDataDictionary);

另请参阅

||

相关话题