exponenta event banner

мультиротор

Модель руководства для многороторных БПЛА

Описание

A multirotor объект представляет собой модель наведения с уменьшенным порядком для беспилотного летательного аппарата (БЛА). Модель аппроксимирует поведение замкнутой системы, состоящей из контроллера автопилота и мультироторной кинематической модели для 3-D движения.

Для получения информации о БПЛА см. fixedwing.

Создание

model = multirotor создает многороторную модель движения с помощью double значения точности для входных, выходных и конфигурационных параметров модели управления.

model = multirotor(DataType) задает точность типа данных (DataType свойство) для входных, выходных и конфигурационных параметров модели управления.

Свойства

развернуть все

Имя БПЛА, используемое для его отличия от других моделей в рабочем пространстве, указанное как строковый скаляр.

Пример: "myUAV1"

Типы данных: string

Конфигурация контроллера БПЛА, заданная как структура параметров. Задайте эти параметры для настройки поведения БПЛА во внутреннем управлении. Укажите пропорциональный (P) и производный (D) коэффициенты усиления для динамической модели и других параметров БПЛА. Для мультироторных БПЛА структура содержит следующие поля с перечисленными значениями по умолчанию:

  • 'PDRoll'- [3402.97 116.67]

  • 'PDPitch' - [3402.97 116.67]

  • 'PYawRate' - 1950

  • 'PThrust' - 3900

  • 'Mass' - 0.1 (измерено в кг)

Пример: struct('PDRoll',[3402.97,116.67],'PDPitch',[3402.97, 116.67],'PYawRate',1950,'PThrust',3900,'Mass',0.1)

Типы данных: struct

Это свойство доступно только для чтения.

Тип модели наведения БПЛА, указанный как 'MultirotorGuidance'.

Входные и выходные числовые типы данных, указанные как 'double' или 'single'. Выберите тип данных, основываясь на возможных ограничениях программного или аппаратного обеспечения. Определить DataType при первом создании объекта.

Функции объекта

controlКоманды управления БПЛА
derivativeПроизводная по времени от состояний БПЛА
environmentЭкологические затраты на БПЛА
stateВектор состояния БПЛА

Примеры

свернуть все

В этом примере показано, как использовать 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.

Подробнее

развернуть все

Ссылки

[1] Меллинджер, Дэниел и Натан Майкл. «Генерация траектории и управление для точных агрессивных маневров с квадроторами». Международный журнал исследований робототехники. 2012, стр. 664-74.

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

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

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