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

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

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

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

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

uavGuidanceModel - модель наведения БПЛАfixedwing | объекта multirotor объектМодель наведения БПЛА, заданная как fixedwing или multirotor объект.
state - Вектор состоянияВектор состояния, заданный как вектор с восемью или тринадцатью элементами. Вектор всегда заполнен нулями. Используйте эту функцию, чтобы убедиться, что у вас есть правильный размер для вектора состояния.
Для фиксированных БПЛА состояние представляет собой вектор с восемью элементами:
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 - Входные параметры окружающей средыВходные параметры среды, возвращенные как структура. Чтобы сгенерировать эту структуру, используйте 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.