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

Постройте график изменения позиций 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 объект.
controlStruct - Команды управления БПЛАКоманды управления для БПЛА, возвращенные в виде структуры.
Для многороторных БПЛА модель наведения аппроксимируется как отдельные контроллеры ПД для каждой команды. Элементами структуры являются управляющие команды:
Roll - Угол крена в радианах.
Pitch - Угол тангажа в радианах.
YawRate - скорость рыскания в радианах в секунду. (D = 0. Только контроллер P)
Thrust - Вертикальная тяга БПЛА в Ньютонах. (D = 0. Только контроллер P)
Для БПЛА на модели предполагается, что БПЛА летит в режиме скоординированного поворота. Уравнения модели направления предполагают нулевое боковое скольжение. Элементами конструкции являются:
Height - высота над землей в метрах.
Airspeed - скорость БПЛА относительно ветра в метрах в секунду.
RollAngle - Угол крена вдоль прямой оси корпуса в радианах. Из-за условия скоординированного поворота угловая скорость курса основана на угле крена.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.