derivative

Производная по времени от состояний БПЛА

Описание

пример

stateDerivative = derivative(uavGuidanceModel,state,control,environment) определяет производную по времени от состояния модели наведения БПЛА с помощью текущего состояния, команд управления и входов среды. Используйте состояние и производную по времени с ode45 для моделирования БПЛА.

Примеры

свернуть все

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

В этом примере показано, как использовать 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 интегрирование. The 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. Создайте векторы смещения и поворота из моделируемого состояния. Downsample (каждый 30-й элемент) и транспонируйте simOut элементы и преобразуйте углы Эйлера в кватернионы. Задайте mesh как 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 объект.

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

Для фиксированных БПЛА состояние представляет собой вектор с восемью элементами:

  • North - Положение в северном направлении в метрах.

  • East - Положение в восточном направлении в метрах.

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

  • AirSpeed - Скорость относительно ветра в метрах в секунду.

  • HeadingAngle - Угол между наземной скоростью и северным направлением в радианах.

  • FlightPathAngle - Угол между наземной скоростью и северо-восточной плоскостью в радианах.

  • RollAngle - Угол поворота вдоль оси x тела в радианах в секунду.

  • RollAngleRate - Угловая скорость вращения вдоль оси x тела в радианах в секунду.

Для мультироторных БПЛА состояние является тринадцатиэлементным вектором в таком порядке:

  • World Position - [x y z] в метрах.

  • World Velocity - [vx vy vz] в метрах в секунду.

  • Euler Angles (ZYX) - [psi theta phi] в радианах.

  • Body Angular Rates - [p q r] в радианах в секунду.

  • Thrust - F в Ньютонах.

Входные параметры среды, возвращенные как структура. Чтобы сгенерировать эту структуру, используйте environment.

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

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

Производная по времени от состояния, возвращенная как вектор. Вектор производной по времени имеет ту же длину, что и вход state.

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

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

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