主要内容

使用UAV指导模型块近似高保真UAV模型

在不同的开发阶段,仿真模型通常需要不同的逼真度。在快速原型阶段,我们希望快速试验和调整参数,以测试不同的自主算法。在产品开发阶段,我们希望通过提高保真度的模型来验证我们的算法。在这个例子中,我们演示了一个方法来近似一个高保真模型指导模型Block并使用它来原型和调整导航系统的路径点。看到固定翼无人机航路点跟随器调整.同样的导航系统在一个高保真模型上进行了测试,以验证其性能。

示例模型使用由植物模型和内置自动驾驶仪的中间电平的高保真无人驾驶飞行器(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 PlantModel_msf代码生成和编译。Mexa64并不存在。生成和编译的代码Mexa64并不存在。建造时间:0小时1米50.029秒
highFidelityRollAngle = RollAngle.Data(:);highFidelityTime = RollAngle.Time;图()图(highFidelityTime,highFidelityRollAngle,“——r”);标题(“横滚角阶跃响应”

图中包含一个轴对象。与标题横滚角阶跃响应的轴对象包含类型线的对象。

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

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

图中包含一个轴对象。与标题横滚角阶跃响应的轴对象包含类型线的对象。

对于一个二阶PD控制器,为了在一个临界阻尼系统中实现这个稳定时间,应该使用以下增益来配置无人机模型的低保真度变体中的无人机制导模型块。对于本例,无人机指导模型块是使用代码生成来模拟的,以提高多次运行的速度。请参见块参数。

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

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

load_system uavModel set_param (固定翼模型/固定翼模型/低保真度/固定翼无人机制导模型...“PDRollFixedWing”,strcat的('['num2str (newRollPD),']') save_system uavModel assignin (plantDataSet,“useHighFidelity”, 0);sim (stepModel);
###启动串行模型参考仿真构建###成功更新了模型参考仿真目标:模型重建行动的原因  =========================================================================================== FixedWingModel代码生成和编译模型或图书馆FixedWingModel已经改变了。建造时间:0h 0m 23.146s
lowFidelityRollAngle = RollAngle.Data (:);lowFidelityTime = RollAngle.Time;持有;情节(lowFidelityTime lowFidelityRollAngle,'-b');传奇(“高保真的反应”“低保真反应”'地点''东南');

图中包含一个轴对象。与标题横滚角阶跃响应的轴对象包含型线的2个对象。这些对象代表高保真响应,低富达响应。

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

controlBlock.StepControl =“空速步控制”;assignin (plantDataSet“useHighFidelity”, 0);sim (stepModel);
FixedWingModel的模型参考仿真目标是最新的。Build Summary 0 of 1 models built (1 models already up to date)构建时间:0h 0m 3.5756s
lowFidelityAirSpeed = AirSpeed.Data(:);lowFidelityTime = AirSpeed.Time;assignin (plantDataSet“useHighFidelity”1);sim (stepModel);
PlantModel的模型参考仿真目标是最新的。###已成功更新参考模型模拟目标:建成FixedWingModel制作摘要模拟目标:示范行动重建原因========================================================================================================================= FixedWingModel代码生成和编译的变控制useHighFidelity == 0值从true更改为false。建造时间:0小时0米39.077秒
highFidelityAirSpeed = AirSpeed.Data (:);highFidelityTime = AirSpeed.Time;图()图(lowFidelityTime lowFidelityAirSpeed,'-b');持有;图(highFidelityTime,highFidelityAirSpeed,“——r”);传奇(“低保真反应”“高保真的反应”'地点''东南');标题(“空中飞车阶跃响应”) xlim([70 80])

图中包含一个轴对象。标题为“空气速度阶跃响应”的轴对象包含两个类型为线的对象。这些对象代表低保真响应,高保真响应。

controlBlock.StepControl =“高度步控制”;assignin (plantDataSet“useHighFidelity”, 0);sim (stepModel);
###启动串行模型参考仿真构建###成功更新了模型参考仿真目标:模型重建行动的原因  ========================================================================================================================= FixedWingModel控制代码生成和编译变体useHighFidelity = = 1价值已经从真为假。建造时间:0小时0米20.75秒
lowFidelityHeight = Height.Data (:);lowFidelityTime = Height.Time;assignin (plantDataSet“useHighFidelity”1);sim (stepModel);
PlantModel的模型参考仿真目标是最新的。###已成功更新参考模型模拟目标:建成FixedWingModel制作摘要模拟目标:示范行动重建原因========================================================================================================================= FixedWingModel代码生成和编译的变控制useHighFidelity == 0值从true更改为false。2种型号内置1(1型号已经是最新的)建造时间:0小时0米39.47s
highFidelityHeight = Height.Data (:);highFidelityTime = Height.Time;图()图(lowFidelityTime lowFidelityHeight,'-b');持有;图(highFidelityTime,highFidelityHeight,“——r”);传奇(“低保真反应”“高保真的反应”'地点''东南');标题(“高阶跃响应”) xlim([70 150]) ylim([49 56])

图中包含一个轴对象。标题为Height Step Response的轴对象包含两个类型为line的对象。这些对象代表低保真响应,高保真响应。

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

现在,我们已经接近与高保真模型无人机指导模型块,我们可以尝试用无人机制导模型块在固定翼无人机航路点跟随器调整的例子。针对不同保真度的模型,测试了前视距离和航向控制增益的影响。

navigationModel =“pathFollowing”;open_system (navigationModel);
assignin (plantDataSet“useHighFidelity”, 0);sim (navigationModel);
###启动串行模型参考仿真构建###成功更新了模型参考仿真目标:模型重建行动的原因  ========================================================================================================================= FixedWingModel控制代码生成和编译变体useHighFidelity = = 1价值已经从真为假。建造时间:0小时0米22.108秒
图visualizeSimStates (simStates);

图中包含一个轴对象。轴对象包含型贴剂,线204级的对象。

用高保真模型进行验证

assignin (plantDataSet“useHighFidelity”1);sim (navigationModel);
PlantModel的模型参考仿真目标是最新的。###已成功更新参考模型模拟目标:建成FixedWingModel制作摘要模拟目标:示范行动重建原因========================================================================================================================= FixedWingModel代码生成和编译的变控制useHighFidelity == 0值从true更改为false。建造时间:0小时0米38.247秒
图visualizeSimStates (simStates);

图中包含一个轴对象。轴对象包含型贴剂,线204级的对象。

结论

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

discardChanges (plantDataDictionary);清晰的plantDataSet清晰的plantDataDictionaryclose_system(uavModel,0);close_system(stepModel,0);close_system(navigationModel,0);

另请参阅

||

相关话题