exponenta event banner

окружающая среда

Экологические затраты на БПЛА

Описание

пример

envStruct = environment(uavGuidanceModel) возвращает структуру, которая фиксирует все соответствующие переменные среды для указанной модели наведения БПЛА. Эта функция используется для проверки наличия соответствующих полей для параметров окружающей среды. Использовать входные данные по окружающей среде в качестве входных данных для derivative функция получения производной по времени состояния БПЛА.

Примеры

свернуть все

В этом примере показано, как использовать multirotor модель наведения для имитации изменения состояния БПЛА за счет ввода команды.

Создайте многороторную модель управления.

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);

Моделирование состояния БПЛА с помощью ode45 интеграция. y поле выводит состояния многороторного БПЛА в виде матрицы 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. The axes 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. The axes contains 2 objects of type line. These objects represent Y-position, Z-position.

Можно также построить многороторную траекторию с помощью plotTransforms. Создайте векторы перемещения и вращения из моделируемого состояния. Понизить (каждый 300-й элемент) и транспонировать simOut элементы и преобразуют углы Эйлера в кватернионы. Укажите сетку в качестве multirotor.stl файл и положительное направление Z как "down". На отображаемом виде показан БПЛА, переводящий в направлении 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. The axes contains 48 objects of type patch, line.

В этом примере показано, как использовать fixedwing модель наведения для имитации изменения состояния БПЛА за счет ввода команды.

Создайте модель наведения крыла.

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);

Моделирование состояния БПЛА с помощью ode45 интеграция. y на поле выводятся состояния БПЛА на основе данного моделирования.

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. The axes contains an object of type line.

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

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. The axes contains 125 objects of type patch, line.

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

свернуть все

Модель наведения БПЛА, указанная как fixedwing или multirotor объект.

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

свернуть все

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

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

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

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.
Представлен в R2018b