Производная по времени от состояний БПЛА
определяет производную по времени от состояния модели наведения БПЛА, используя текущее состояние, команды управления и входные данные окружающей среды. Использовать состояние и производную по времени с 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 интеграция. 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,:))

Постройте график изменения позиций Y и Z. При заданных угле тяги и крена мультиротор должен пролететь и потерять некоторую высоту. Положительное значение для Z ожидается, так как положительное значение Z падает.
figure plot(simOut.y(2,:)); hold on plot(simOut.y(3,:)); legend('Y-position','Z-position') hold off

Можно также построить многороторную траекторию с помощью 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])

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

Можно также построить график траектории на крыле с помощью 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

uavGuidanceModel - модель наведения БПЛАfixedwing объект | multirotor объектМодель наведения БПЛА, указанная как fixedwing или multirotor объект.
state - Вектор состоянияВектор состояния, заданный как восьмиэлементный или тринадцатиэлементный вектор. Вектор всегда заполняется нулями. Эта функция используется для обеспечения правильного размера вектора состояния.
Для БПЛА с фиксированным крылом состояние представляет собой восьмиэлементный вектор:
Север - положение в северном направлении в метрах.
Восток - Положение в восточном направлении в метрах.
Высота - высота над землей в метрах.
AirSpeed - скорость относительно ветра в метрах в секунду.
Угол - угол между скоростью земли и направлением на север в радианах.
«FlireImageAngle» - угол между скоростью земли и северо-восточной плоскостью в радианах.
Угол поворота - угол поворота вдоль оси x тела в радианах в секунду.
RollAneyRate - угловая скорость вращения вдоль оси x тела в радианах в секунду.
Для многороторных БПЛА состояние является тринадцатиэлементным вектором в следующем порядке:
Положение в мире - [x y z] в метрах.
Мировая скорость - [vx vy vz] в метрах в секунду.
Эйлер Энглс (ZYX) - [psi theta phi] в радианах.
Угловые скорости тела - [p q r] в радианах в секунду.
Тяга - F в Ньютонсе.
environment - Входные параметры окружающей средыВходные параметры окружающей среды, возвращаемые в виде структуры. Для создания этой структуры используйте environment.
Для БПЛА с БПЛА полями конструкции являются WindNorth, WindEast,WindDown, и Gravity. Скорость ветра в метрах в секунду, а отрицательные скорости указывают в обратном направлении. Сила тяжести в метрах в секунду в квадрате (по умолчанию 9.81).
Для многороторных БПЛА единственным элементом структуры является Gravity (по умолчанию 9.81) в метрах в секунду в квадрате.
control - Команды управления БПЛАКоманды управления БПЛА, указанные как структура. Для создания этой структуры используйте control.
Для многороторных БПЛА модель наведения аппроксимируется как отдельные контроллеры ПД для каждой команды. Элементами структуры являются управляющие команды:
Roll - Угол крена в радианах.
Pitch - Угол тангажа в радианах.
YawRate - скорость рыскания в радианах в секунду. (D = 0. Только контроллер P)
Thrust - Вертикальная тяга БПЛА в Ньютонах. (D = 0. Только контроллер P)
Для БПЛА на модели предполагается, что БПЛА летит в режиме скоординированного поворота. Уравнения модели руководства предполагают нулевое боковое скольжение. Элементами шины являются:
Height - высота над землей в метрах.
Airspeed - скорость БПЛА относительно ветра в метрах в секунду.
RollAngle - Угол крена вдоль прямой оси корпуса в радианах. Из-за условия скоординированного поворота угловая скорость курса основана на угле крена.
stateDerivative - Производная состояния по времениПроизводная состояния по времени, возвращаемая как вектор. Вектор производной по времени имеет ту же длину, что и входной state.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.