multirotor

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

Описание

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 интегрирование. The 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. Создайте векторы смещения и поворота из моделируемого состояния. Downsample (каждый 300-й элемент) и транспонируйте simOut элементы и преобразуйте углы Эйлера в кватернионы. Задайте mesh как 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++ с помощью Coder™ MATLAB ®

.
Введенный в R2018b