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