derivative

Производная времени состояний UAV

Описание

пример

stateDerivative = derivative(uavGuidanceModel,state,control,environment) определяет производную времени состояния модели руководства UAV использование текущего состояния, команд управления и экологических входных параметров. Используйте состояние и производную времени с ode45 симулировать 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.

В этом примере показано, как использовать fixedwing модель руководства, чтобы симулировать изменение в состоянии UAV из-за ввода команд.

Создайте модель руководства фиксированного крыла.

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);

Симулируйте состояние UAV использование ode45 интегрирование. y поле выводит фиксированное крыло состояния UAV на основе этой симуляции.

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 object. The axes object contains an object of type line.

Можно также построить траекторию фиксированного крыла с помощью plotTransforms. Создайте векторы перевода и вращения из симулированного состояния. Downsample (каждый 30-й элемент) и транспонирует simOut элементы, и преобразуют Углы Эйлера в кватернионы. Задайте mesh как fixedwing.stl файл и положительное Z-направление как "down". Отображенное представление показывает UAV, делающий постоянный поворот на основе постоянного крена.

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 object. The axes object contains 125 objects of type patch, line.

Входные параметры

свернуть все

Модель руководства UAV в виде fixedwing или multirotor объект.

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

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

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

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

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

  • 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 по умолчанию) в метрах в секунду придал квадратную форму.

Управляйте командами для UAV в виде структуры. Чтобы сгенерировать эту структуру, использовать control.

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

  • Roll - Крен в радианах.

  • Pitch - Передайте угол в радианах.

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

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

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

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

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

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

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

свернуть все

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

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

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

Введенный в R2018b