Производная времени состояний UAV
Эта функция требует, чтобы вы установили Библиотеку UAV для Robotics System Toolbox™. Чтобы установить дополнения, используйте roboticsAddons и выберите желаемое дополнение.
определяет производную времени состояния модели руководства UAV использование текущего состояния, команд управления и экологических входных параметров. Используйте состояние и производную времени с stateDerivative = derivative(uavGuidanceModel,state,control,environment)ode45 симулировать UAV.
В этом примере показано, как использовать multirotor модель руководства, чтобы симулировать изменение в состоянии UAV из-за ввода команд.
Примечание: Чтобы использовать алгоритмы UAV, необходимо установить Библиотеку UAV для Robotics System Toolbox®. Чтобы установить, используйте roboticsAddons.
Создайте модель руководства мультиротора.
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,:))

Постройте изменение в 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". Отображенное представление показывает перевод 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])

В этом примере показано, как использовать fixedwing модель руководства, чтобы симулировать изменение в состоянии UAV из-за ввода команд.
Примечание: Чтобы использовать алгоритмы UAV, необходимо установить Библиотеку UAV для Robotics System Toolbox®. Чтобы установить, используйте roboticsAddons.
Создайте модель руководства фиксированного крыла.
model = fixedwing;
Установите воздушную скорость транспортного средства путем изменения структуры от state функция.
s = state(model);
s(4) = 5; % 10 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,:))

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

uavGuidanceModel — Модель руководства UAVfixedwing возразите | multirotor объектМодель руководства UAV, заданная как fixedwing или multirotor объект.
state — Вектор состоянияВектор состояния, заданный как вектор с тринадцатью элементами или с восемью элементами. Вектор всегда заполнен нулями. Используйте эту функцию, чтобы гарантировать, что у вас есть соответствующий размер для вашего вектора состояния.
Для БПЛА фиксированного крыла состояние является вектором с восемью элементами:
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 - [r p q] в радианах в секунду.
Thrust - F в Ньютонах.
environment — Экологические входные параметрыЭкологические входные параметры, возвращенные как структура. Чтобы сгенерировать эту структуру, используйте environment.
Для БПЛА фиксированного крыла полями структуры является WindNorth, WindEast, WindDown, и Gravity. Скорости ветра исчисляются в метрах в секунду, и отрицательная точка скоростей в противоположном направлении. Сила тяжести исчисляется в метрах в секунду в квадрате (9.81 по умолчанию).
Для БПЛА мультиротора единственным элементом структуры является Gravity (9.81 по умолчанию) в метрах в секунду придал квадратную форму.
control — Управляйте командами для UAVУправляйте командами для UAV, заданного как структура. Чтобы сгенерировать эту структуру, используйте control.
Для БПЛА мультиротора модель руководства аппроксимирована как отдельные контроллеры PD для каждой команды. Элементы структуры являются командами управления:
Roll - Угол вращения в радианах.
Pitch - Передайте угол в радианах.
YawRate - Уровень отклонения от курса в радианах в секунду. (D = 0. P только контроллер)
Thrust - Вертикальная тяга UAV в Ньютонах. (D = 0. P только контроллер)
Для БПЛА фиксированного крыла модель принимает, что UAV летит при условии скоординированного поворота. Уравнения Модели Руководства принимают нулевой занос. Элементы шины:
Height - Высота над землей в метрах.
Airspeed - Скорость UAV относительно ветра в метрах в секунду.
RollAngle - Угол вращения вдоль тела передает ось в радианах. Из-за условия скоординированного поворота направляющийся угловой уровень основан на углу вращения.
stateDerivative — Производная времени состоянияПроизводная времени состояния, возвращенного как вектор. Вектор производной времени имеет ту же длину как вход state.
control | derivative | environment | ode45 | plotTransforms | roboticsAddons | stateУ вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.