exponenta event banner

контроль

Команды управления БПЛА

Описание

пример

controlStruct = control(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 объект.

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

свернуть все

Команды управления для БПЛА, возвращенные в виде структуры.

Для многороторных БПЛА модель наведения аппроксимируется как отдельные контроллеры ПД для каждой команды. Элементами структуры являются управляющие команды:

  • Roll - Угол крена в радианах.

  • Pitch - Угол тангажа в радианах.

  • YawRate - скорость рыскания в радианах в секунду. (D = 0. Только контроллер P)

  • Thrust - Вертикальная тяга БПЛА в Ньютонах. (D = 0. Только контроллер P)

Для БПЛА на модели предполагается, что БПЛА летит в режиме скоординированного поворота. Уравнения модели направления предполагают нулевое боковое скольжение. Элементами конструкции являются:

  • Height - высота над землей в метрах.

  • Airspeed - скорость БПЛА относительно ветра в метрах в секунду.

  • RollAngle - Угол крена вдоль прямой оси корпуса в радианах. Из-за условия скоординированного поворота угловая скорость курса основана на угле крена.

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

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

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