Аппроксимированная модель High-Fidelity UAV с блоком Model Руководства UAV

Имитационным моделям часто нужны разные уровни точности во время различных стадий разработки. Во время этапа быстрого прототипирования мы хотели бы быстро экспериментировать и настройки параметров, чтобы протестировать различные автономные алгоритмы. Во время производственной стадии разработки мы хотели бы подтвердить наши алгоритмы против моделей увеличивающейся точности. В этом примере мы демонстрируем метод, чтобы аппроксимировать высокочастотную модель блоком Model Руководства и использовать его, чтобы моделировать и настроить waypoint после системы навигации. Смотрите Настройку Последователь Waypoint для Fixed-Wing UAV. Та же система навигации тестируется против высокочастотной модели, чтобы проверить ее эффективность.

Модель в качестве примера использует высокочастотную модель беспилотного воздушного транспортного средства (UAV), состоящую из модели объекта управления и встроенного автопилота среднего уровня. Эта модель содержит близко к тысяче блоков, и она является вполне сложной, чтобы работать с. Как первый шаг в процессе разработки, мы создали вариантную систему, которая может переключиться между этой высокочастотной моделью и блоком Model Руководства UAV. Высокочастотная модель извлечена из записи Обмена файлами, Примера готовых узлов Беспилотника Simulink.

Модель UAV различной точности

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

Можно переключиться между низкими и высокочастотными моделями путем изменения значения переменных MATLAB®, сохраненного в словаре данных, сопоставленном с этой моделью.

plantDataDictionary = Simulink.data.dictionary.open('pathFollowingData.sldd');
plantDataSet = getSection(plantDataDictionary,'Design Data');

% Switch to high-fidelity model
assignin(plantDataSet,'useHighFidelity',1);

% Switch to low-fidelity model
assignin(plantDataSet,'useHighFidelity',0);

Аппроксимируйте высокочастотную модель фиксированного крыла моделью руководства низкого качества

Чтобы аппроксимировать высокочастотную модель блоком Model Руководства UAV, создайте управляющие сигналы шага питаться в модель и наблюдать переходной процесс к RollAngleвысота, и AirSpeed команды.

stepModel = 'stepResponse';
open_system(stepModel)

Во-первых, управляйте изменением в крене.

controlBlock = get_param('stepResponse/Step Control Input','Object');
controlBlock.StepControl = 'RollAngle Step Control';

assignin(plantDataSet,'useHighFidelity',1);

sim(stepModel);
### Starting serial model reference simulation build
### Successfully updated the model reference simulation target for: PlantModel
### Successfully updated the model reference simulation target for: FixedWingModel

Build Summary

Simulation targets built:

Model           Action                       Rebuild Reason                             
========================================================================================
PlantModel      Code generated and compiled  PlantModel_msf.mexa64 does not exist.      
FixedWingModel  Code generated and compiled  FixedWingModel_msf.mexa64 does not exist.  

2 of 2 models built (0 models already up to date)
Build duration: 0h 1m 25.937s
highFidelityRollAngle = RollAngle.Data(:);
highFidelityTime = RollAngle.Time;

figure()
plot(highFidelityTime, highFidelityRollAngle,'--r');
title('Roll Angle Step Response')

Figure contains an axes object. The axes object with title Roll Angle Step Response contains an object of type line.

Масштабируя в результат симуляции выше, вы видите характеристики контроллера крена, встроенного в высокочастотную модель. Время урегулирования для крена близко к 2,5 секундам.

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

Figure contains an axes object. The axes object with title Roll Angle Step Response contains an object of type line.

Для контроллера PD второго порядка, чтобы достигнуть этого времени урегулирования с критически ослабленной системой, следующие усиления должны использоваться, чтобы сконфигурировать блок Model Руководства UAV в варианте низкого качества модели UAV. В данном примере блок Model Руководства UAV симулирован с помощью генерации кода, чтобы увеличить скорость для нескольких запусков. Смотрите параметры блоков.

zeta = 1.0; % critically damped
ts = 2.5; % 2 percent settling time
wn = 5.8335/(ts*zeta);
newRollPD = [wn^2 2*zeta*wn];

Установите новые усиления и симулируйте переходной процесс для модели низкого качества. Сравните его с исходным ответом.

load_system(uavModel)
set_param('FixedWingModel/FixedWingModel/LowFidelity/Fixed Wing UAV Guidance Model',...
    'PDRollFixedWing',strcat('[',num2str(newRollPD),']'))
save_system(uavModel)

assignin(plantDataSet, 'useHighFidelity', 0);

sim(stepModel);
### Starting serial model reference simulation build
### Successfully updated the model reference simulation target for: FixedWingModel

Build Summary

Simulation targets built:

Model           Action                       Rebuild Reason                                
===========================================================================================
FixedWingModel  Code generated and compiled  Model or library FixedWingModel has changed.  

1 of 1 models built (0 models already up to date)
Build duration: 0h 0m 16.869s
lowFidelityRollAngle = RollAngle.Data(:);
lowFidelityTime = RollAngle.Time;

hold on;
plot(lowFidelityTime, lowFidelityRollAngle,'-b');
legend('High-Fidelity Response', 'Low-Fidelity Response', 'Location','southeast');

Figure contains an axes object. The axes object with title Roll Angle Step Response contains 2 objects of type line. These objects represent High-Fidelity Response, Low-Fidelity Response.

Модель низкого качества достигает подобного переходного процесса. Точно так же мы можем настроить другие два канала управления: Height и AirSpeed. Более сложные методы могут использоваться здесь, чтобы оптимизировать усиления управления вместо визуального осмотра ответа управления. Рассмотрите использование System Identification Toolbox®, чтобы выполнить последующий анализ высокочастотного поведения модели UAV.

controlBlock.StepControl = 'AirSpeed Step Control';
assignin(plantDataSet, 'useHighFidelity', 0);

sim(stepModel);
### Starting serial model reference simulation build
### Model reference simulation target for FixedWingModel is up to date.

Build Summary

0 of 1 models built (1 models already up to date)
Build duration: 0h 0m 2.8406s
lowFidelityAirSpeed = AirSpeed.Data(:);
lowFidelityTime = AirSpeed.Time;

assignin(plantDataSet, 'useHighFidelity', 1);

sim(stepModel);
### Starting serial model reference simulation build
### Model reference simulation target for PlantModel is up to date.
### Successfully updated the model reference simulation target for: FixedWingModel

Build Summary

Simulation targets built:

Model           Action                       Rebuild Reason                                                              
=========================================================================================================================
FixedWingModel  Code generated and compiled  Variant control useHighFidelity == 0 value has changed from true to false.  

1 of 2 models built (1 models already up to date)
Build duration: 0h 0m 30.6s
highFidelityAirSpeed = AirSpeed.Data(:);
highFidelityTime = AirSpeed.Time;

figure()
plot(lowFidelityTime, lowFidelityAirSpeed,'-b');
hold on;
plot(highFidelityTime, highFidelityAirSpeed,'--r');
legend('Low-Fidelity Response', 'High-Fidelity Response', 'Location','southeast');
title('Air Speed Step Response')
xlim([70 80])
ylim([17.5 19.2])

Figure contains an axes object. The axes object with title Air Speed Step Response contains 2 objects of type line. These objects represent Low-Fidelity Response, High-Fidelity Response.

controlBlock.StepControl = 'Height Step Control';
assignin(plantDataSet, 'useHighFidelity', 0);

sim(stepModel);
### Starting serial model reference simulation build
### Successfully updated the model reference simulation target for: FixedWingModel

Build Summary

Simulation targets built:

Model           Action                       Rebuild Reason                                                              
=========================================================================================================================
FixedWingModel  Code generated and compiled  Variant control useHighFidelity == 1 value has changed from true to false.  

1 of 1 models built (0 models already up to date)
Build duration: 0h 0m 14.377s
lowFidelityHeight = Height.Data(:);
lowFidelityTime = Height.Time;

assignin(plantDataSet, 'useHighFidelity', 1);

sim(stepModel);
### Starting serial model reference simulation build
### Model reference simulation target for PlantModel is up to date.
### Successfully updated the model reference simulation target for: FixedWingModel

Build Summary

Simulation targets built:

Model           Action                       Rebuild Reason                                                              
=========================================================================================================================
FixedWingModel  Code generated and compiled  Variant control useHighFidelity == 0 value has changed from true to false.  

1 of 2 models built (1 models already up to date)
Build duration: 0h 0m 28.988s
highFidelityHeight = Height.Data(:);
highFidelityTime = Height.Time;

figure()
plot(lowFidelityTime, lowFidelityHeight,'-b');
hold on;
plot(highFidelityTime, highFidelityHeight,'--r');
legend('Low-Fidelity Response', 'High-Fidelity Response', 'Location','southeast');
title('Height Step Response')
xlim([70 150])
ylim([49 56])

Figure contains an axes object. The axes object with title Height Step Response contains 2 objects of type line. These objects represent Low-Fidelity Response, High-Fidelity Response.

Протестируйте алгоритм навигации с моделью низкого качества

Теперь, когда мы аппроксимировали высокочастотную модель блоком Model Руководства UAV, мы можем попытаться заменить его на блок Model Руководства UAV в Настройке Последователь Waypoint для примера Fixed-Wing UAV. Протестируйте воздействие предварительного расстояния и возглавляющий усиления управления против этих моделей различной точности.

navigationModel = 'pathFollowing';
open_system(navigationModel);
assignin(plantDataSet,'useHighFidelity',0);

sim(navigationModel);
### Starting serial model reference simulation build
### Successfully updated the model reference simulation target for: FixedWingModel

Build Summary

Simulation targets built:

Model           Action                       Rebuild Reason                                                              
=========================================================================================================================
FixedWingModel  Code generated and compiled  Variant control useHighFidelity == 1 value has changed from true to false.  

1 of 1 models built (0 models already up to date)
Build duration: 0h 0m 12.474s
figure
visualizeSimStates(simStates);

Figure contains an axes object. The axes object contains 204 objects of type patch, line.

Подтвердите с высокочастотной моделью

assignin(plantDataSet,'useHighFidelity',1);

sim(navigationModel);
### Starting serial model reference simulation build
### Model reference simulation target for PlantModel is up to date.
### Successfully updated the model reference simulation target for: FixedWingModel

Build Summary

Simulation targets built:

Model           Action                       Rebuild Reason                                                              
=========================================================================================================================
FixedWingModel  Code generated and compiled  Variant control useHighFidelity == 0 value has changed from true to false.  

1 of 2 models built (1 models already up to date)
Build duration: 0h 0m 32.059s
figure
visualizeSimStates(simStates);

Figure contains an axes object. The axes object contains 204 objects of type patch, line.

Заключение

В этом примере показано, как мы можем аппроксимировать высокочастотную модель абстракцией низкого качества фиксированного крыла UAV. Противоположный подход может использоваться также, чтобы помочь с выбором усилений управления автопилотом для высокочастотной модели. Можно сначала решить приемлемые характеристики ответа управления автопилотом путем симуляции модели низкого качества в различных тестовых сценариях и затем настроить высокочастотный автопилот модели соответственно.

discardChanges(plantDataDictionary);
clear plantDataSet
clear plantDataDictionary
close_system(uavModel, 0);
close_system(stepModel, 0);
close_system(navigationModel, 0);

Смотрите также

| |

Похожие темы