environment

Экологические входные параметры для UAV

Описание

пример

envStruct = environment(uavGuidanceModel) возвращает структуру, которая получает все соответствующие переменные окружения для заданной модели руководства UAV. Используйте эту функцию, чтобы гарантировать, что у вас есть соответствующие поля для ваших экологических параметров. Используйте экологические входные параметры в качестве входа к derivative функция, чтобы получить производную времени состояния UAV.

Примеры

свернуть все

В этом примере показано, как использовать multirotor модель руководства, чтобы симулировать изменение в состоянии UAV из-за ввода команд.

Создайте модель руководства мультиротора.

model = multirotor;

Создайте структуру состояния. Задайте местоположение в мировых координатах.

s = state(model);
s(1:3) = [3;2;1];

Задайте команду управления, u, это задало крен и тягу мультиротора.

u = control(model);
u.Roll = pi/12;
u.Thrust = 1;

Создайте стандартную среду без ветра.

e = environment(model);

Вычислите производную времени состояния, учитывая текущее состояние, управляйте командой и средой.

sdot = derivative(model,s,u,e);

Симулируйте состояние UAV использование ode45 интегрирование. y поле выводит мультиротор состояния UAV как 13 n матрицей.

simOut = ode45(@(~,x)derivative(model,x,u,e), [0 3], s);
size(simOut.y)
ans = 1×2

          13        3536

Постройте изменение в крене на основе симуляции выход. Крен (X Углов Эйлера) является 9-й строкой simOut.y вывод .

plot(simOut.y(9,:))

Figure contains an axes object. The axes object contains an object of type line.

Постройте изменение в Y и положениях Z. С заданной тягой и креном, мультиротор должен пролететь и потерять некоторую высоту. Положительное значение для Z ожидается, когда положительный Z снижается.

figure
plot(simOut.y(2,:));
hold on
plot(simOut.y(3,:));
legend('Y-position','Z-position')
hold off

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Y-position, Z-position.

Можно также построить траекторию мультиротора с помощью plotTransforms. Создайте векторы перевода и вращения из симулированного состояния. Downsample (каждый 300-й элемент) и транспонирует simOut элементы, и преобразуют Углы Эйлера в кватернионы. Задайте mesh как multirotor.stl файл и положительное Z-направление как "down". Отображенное представление показывает перевод UAV в направлении Y и потерю высоты.

translations = simOut.y(1:3,1:300:end)'; % xyz position
rotations = eul2quat(simOut.y(7:9,1:300:end)'); % ZYX Euler
plotTransforms(translations,rotations,...
    'MeshFilePath','multirotor.stl','InertialZDirection',"down")
view([90.00 -0.60])

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

В этом примере показано, как использовать fixedwing модель руководства, чтобы симулировать изменение в состоянии UAV из-за ввода команд.

Создайте модель руководства фиксированного крыла.

model = fixedwing;

Установите воздушную скорость транспортного средства путем изменения структуры от state функция.

s = state(model);
s(4) = 5; % 5 m/s

Задайте команду управления, u, это обеспечивает воздушную скорость и дает крен pi/12.

u = control(model);
u.RollAngle = pi/12;
u.AirSpeed = 5;

Создайте стандартную среду без ветра.

e = environment(model);

Вычислите производную времени состояния, учитывая текущее состояние, управляйте командой и средой.

sdot = derivative(model,s,u,e);

Симулируйте состояние UAV использование ode45 интегрирование. y поле выводит фиксированное крыло состояния UAV на основе этой симуляции.

simOut = ode45(@(~,x)derivative(model,x,u,e), [0 50], s);
size(simOut.y)
ans = 1×2

     8   904

Постройте изменение в крене на основе симуляции выход. Крен является 7-й строкой simOut.y вывод .

plot(simOut.y(7,:))

Figure contains an axes object. The axes object contains an object of type line.

Можно также построить траекторию фиксированного крыла с помощью plotTransforms. Создайте векторы перевода и вращения из симулированного состояния. Downsample (каждый 30-й элемент) и транспонирует simOut элементы, и преобразуют Углы Эйлера в кватернионы. Задайте mesh как fixedwing.stl файл и положительное Z-направление как "down". Отображенное представление показывает UAV, делающий постоянный поворот на основе постоянного крена.

downsample = 1:30:size(simOut.y,2);
translations = simOut.y(1:3,downsample)'; % xyz-position
rotations = eul2quat([simOut.y(5,downsample)',simOut.y(6,downsample)',simOut.y(7,downsample)']); % ZYX Euler
plotTransforms(translations,rotations,...
    'MeshFilePath','fixedwing.stl','InertialZDirection',"down")
hold on
plot3(simOut.y(1,:),-simOut.y(2,:),simOut.y(3,:),'--b') % full path
xlim([-10.0 10.0])
ylim([-20.0 5.0])
zlim([-0.5 4.00])
view([-45 90])
hold off

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

Входные параметры

свернуть все

Модель руководства UAV в виде fixedwing или multirotor объект.

Выходные аргументы

свернуть все

Экологические входные параметры, возвращенные как структура.

Для БПЛА фиксированного крыла полями структуры является WindNorth, WindEast, WindDown, и Gravity. Скорости ветра исчисляются в метрах в секунду и отрицательная точка скоростей в противоположном направлении. Gravity исчисляется в метрах в секунду в квадрате (9.81 по умолчанию).

Для БПЛА мультиротора единственным элементом структуры является Gravity (9.81 по умолчанию) в метрах в секунду.

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Введенный в R2018b