multirotor

Модель Guidance для БПЛА мультиротора

Описание

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

Для БПЛА фиксированного крыла смотрите fixedwing.

Создание

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

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

Свойства

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

Имя UAV, используемого, чтобы дифференцировать его от других моделей в рабочей области в виде строкового скаляра.

Пример: "myUAV1"

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

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

  • 'PDRoll'- [3402.97 116.67]

  • 'PDPitch'- [3402.97 116.67]

  • 'PYawRate'- 1950

  • 'PThrust'- 3900

  • 'Mass'- 0.1 (измеренный в kg)

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

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

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

Тип модели руководства UAV в виде 'MultirotorGuidance'.

Типы числовых данных ввода и вывода в виде любого 'double' или 'single'. Выберите тип данных на основе возможного программного обеспечения или аппаратных ограничений. Задайте DataType сначала создавая объект.

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

controlУправляйте командами для UAV
derivativeПроизводная времени состояний UAV
environmentЭкологические входные параметры для UAV
stateВектор состояния 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.

Больше о

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

Ссылки

[1] Mellinger, Дэниел и Натан Майкл. "Генерация траектории и Управление для Точных Агрессивных Маневров с Quadrotors". Международный журнал Исследования Робототехники. 2012, стр 664-74.

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

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

Введенный в R2018b