主要内容

具有无人机制导模型块的近似高保真无人机模型

在不同的开发阶段,仿真模型通常需要不同程度的保真度。在快速原型阶段,我们希望快速试验和调整参数,以测试不同的自主算法。在产品开发阶段,我们希望根据保真度不断提高的模型验证我们的算法.在本例中,我们演示了一种使用制导模型拦截并使用它来原型化和调整航路点跟踪导航系统。看见固定翼无人机航路点跟随器的调谐. 同一导航系统在高保真模型上进行了测试,以验证其性能。

示例模型使用高保真无人机(UAV)模型由一个工厂模型和一个中级内置自动驾驶仪组成。该模型包含近千个模块,使用起来相当复杂。作为开发过程的第一步,我们创建了一个变体系统,可以在高保真模型和无人机制导模型模块之间切换。高保真模型被提取从文件交换条目中删除,金宝appSimulink无人机参考应用.

不同保真度的无人机模型

UAV模型=“FixedWingModel.slx”开放式系统(UAV模型);

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

plantDataDictionary=Si金宝appmulink.data.dictionary.open('PathFollowData.sldd'); plantDataSet=getSection(plantDataDictionary,“设计数据”);%切换到高保真模型转让人(工厂),“使用高保真”,1);

%切换到低保真度模型转让人(工厂),“使用高保真”,0);

近似高保真固定翼模型与低保真制导模型

要使用UAV制导模型块近似高保真模型,请创建阶跃控制信号,以输入模型,并观察阶跃响应滚转角,身高空速命令。

阶梯模型=“逐步反应”; 开放式系统(stepModel)

首先,命令更改滚动角度。

controlBlock=获取参数(“阶跃响应/阶跃控制输入”,“对象”);控制块。步进控制=“滚动角度步进控制”;分配(工厂数据集),“使用高保真”sim(stepModel);
###启动串行模型参考仿真生成####成功更新的模型参考仿真目标为:PlantModel###成功更新的模型参考仿真目标为:FixedWingModel生成摘要仿真目标生成:模型操作重建原因=================================================================================生成和编译的PlantModel代码PlantModel_msf.mexa64不存在。生成和编译的FixedWingModel代码FixedWingModel_msf.mexa64不存在。生成了两个模型中的两个(0个模型已更新)生成持续时间:0h 1m 50.029s
highFidelityRollAngle=RollAngle.Data(:);highFidelityTime=滚动角度时间;figure()图(highFidelityTime,highFidelityRollAngle,“--r”);头衔(“滚动角度阶跃响应”)

图中包含一个轴对象。标题滚动角度阶跃响应的轴对象包含类型为line的对象。

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

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

图中包含一个轴对象。标题滚动角度阶跃响应的轴对象包含类型为line的对象。

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

zeta=1.0;%严重受潮ts=2.5;%2%的沉淀时间wn=5.8335/(ts*zeta);newRollPD=[wn^2*zeta*wn];

设置新增益并模拟低保真度模型的阶跃响应。将其与原始响应进行比较。

加载系统(uavModel)设置参数(“固定翼模型/固定翼模型/低保真度/固定翼无人机制导模型”,...“PDRollFixedWing”,strcat('[',num2str(newRollPD),']'))保存系统(uavModel)分配(plantDataSet,“使用高保真”, 0); sim(stepModel);
###启动串行模型参考仿真生成###成功更新了以下的模型参考仿真目标:FixedWingModel生成摘要仿真目标生成:模型操作重建原因======================================================================================================================================================================================================================================================================================================================================================================================================================================================================library FixedWingModel已更改。已构建的1个模型中的1个(0个模型已更新)构建持续时间:0小时0米23.146s
lowFidelityRollAngle=RollAngle.Data(:);lowFidelityTime=滚动角度时间;持有在…上; 绘图(lowFidelityTime,lowFidelityRollAngle,“-b”);传奇(“高保真响应”,“低保真度响应”,“位置”,‘东南’);

图中包含一个轴对象。具有标题滚动角度阶跃响应的轴对象包含两个类型为line的对象。这些对象表示高保真响应和低保真响应。

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

步进控制=“空速步进控制”;分配(工厂数据集),“使用高保真”, 0); sim(stepModel);
###开始串行模型参考仿真构建####固定翼模型的模型参考仿真目标是最新的。生成摘要已生成1个模型中的0个(1个模型已更新)生成持续时间:0小时0米3.5756秒
lowFidelityAirSpeed=空速.Data(:);lowFidelityTime=空速.Time;assignin(plantDataSet,“使用高保真”, 1); sim(stepModel);
###开始串行模型参考仿真构建####PlantModel的模型参考仿真目标是最新的。###已成功更新以下对象的模型参考仿真目标:FixedWingModel生成摘要生成的仿真目标:模型操作重建原因===================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================值已从true更改为false。构建的2个模型中的1个(1个模型已更新)构建持续时间:0h 0m 39.077s
highFidelityAirSpeed=空速。数据(:);highFidelityTime=空速。时间;figure()绘图(lowFidelityTime,lowFidelityAirSpeed,“-b”); 持有在…上;绘图(highFidelityTime、highFidelityAirSpeed、,“--r”);传奇(“低保真度响应”,“高保真响应”,“位置”,‘东南’);头衔(“空气速度阶跃响应”)xlim([70 80])ylim([17.5 19.2])

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

步进控制=“高度步进控制”;分配(工厂数据集),“使用高保真”, 0); sim(stepModel);
###启动串行模型参考仿真生成###成功更新了以下的模型参考仿真目标:FixedWingModel生成摘要仿真目标生成:模型操作重建原因====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================已编译和已编译的变量控件useHighFidelity==1值已从true更改为false。已生成1个模型中的1个(0个模型已更新)生成持续时间:0h 0m 20.75s
lowFidelityHeight=Height.Data(:);lowFidelityTime=Height.Time;assignin(plantDataSet,“使用高保真”, 1); sim(stepModel);
###开始串行模型参考仿真生成####PlantModel的模型参考仿真目标是最新的。####已成功更新模型参考仿真目标:FixedWingModel生成摘要仿真目标生成:模型操作重建原因================================================================================================================================生成和编译的FixedWingModel代码变量控件useHighFidelity==0值已从true更改为false。生成的2个模型中的1个(1个模型已更新)生成持续时间:0h 0m 39.47s
highFidelityHeight=Height.Data(:);highFidelityTime=Height.Time;figure()绘图(lowFidelityTime,lowFidelityHeight,“-b”); 持有在…上; 绘图(highFidelityTime、highFidelityHeight、,“--r”);传奇(“低保真度响应”,“高保真响应”,“位置”,‘东南’);头衔(“高度阶跃响应”)xlim([70 150])ylim([49 56])

图中包含一个轴对象。标题高度阶跃响应的轴对象包含2个line类型的对象。这些对象代表低保真度响应、高保真度响应。

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

现在我们已经用无人机制导模型块,我们可以尝试在固定翼无人机航路点跟随器的调谐实例针对这些不同可信度的模型,测试前视距离和航向控制增益的效果。

导航模型=“路径跟踪”开放式系统(导航模型);
转让人(工厂),“使用高保真”,0); sim(导航模型);
###启动串行模型参考仿真生成###成功更新了以下的模型参考仿真目标:FixedWingModel生成摘要仿真目标生成:模型操作重建原因====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================已编译和已编译的变量控制useHighFidelity==1值已从true更改为false。已生成1个模型中的1个(0个模型已更新)生成持续时间:0h 0m 22.108s
图1:模拟状态(模拟状态);

图中包含一个Axis对象。Axis对象包含204个patch、line类型的对象。

用高保真模型进行验证

转让人(工厂),“使用高保真”,1); sim(导航模型);
###开始串行模型参考仿真生成####PlantModel的模型参考仿真目标是最新的。####已成功更新模型参考仿真目标:FixedWingModel生成摘要仿真目标生成:模型操作重建原因================================================================================================================================生成和编译的FixedWingModel代码变量控件useHighFidelity==0值已从true更改为false。生成的2个模型中的1个(1个模型已更新)生成持续时间:0h 0m 38.247s
图1:模拟状态(模拟状态);

图中包含一个Axis对象。Axis对象包含204个patch、line类型的对象。

结论

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

丢弃更改(plantDataDictionary);清除plantDataSet清楚的plantDataDictionary关闭系统(uavModel,0);关闭系统(stepModel,0);关闭系统(navigationModel,0);

另见

||

相关话题