среда

Экологические входные параметры для UAV

Синтаксис

envStruct = environment(uavGuidanceModel)

Описание

пример

Примечание

Эта функция требует, чтобы вы установили Библиотеку UAV для Robotics System Toolbox™. Чтобы установить дополнения, используйте roboticsAddons и выберите желаемое дополнение.

envStruct = environment(uavGuidanceModel) возвращает структуру, которая получает все соответствующие переменные окружения для заданной модели руководства UAV. Используйте эту функцию, чтобы гарантировать, что у вас есть соответствующие поля для ваших экологических параметров. Используйте экологические входные параметры в качестве входа к функции derivative, чтобы получить производную времени состояния UAV.

Примеры

свернуть все

Этот пример показывает, как использовать модель руководства multirotor, чтобы моделировать изменение в состоянии UAV из-за ввода команд.

Примечание: Чтобы использовать алгоритмы UAV, ou должен установить Библиотеку 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. С заданной тягой и углом вращения, мультиротор должен пролететь и потерять некоторую высоту. positve значение для Z ожидается, когда положительный Z снижается.

figure
plot(simOut.y(2,:));
hold on
plot(simOut.y(3,:));
legend('Y-position','Z-position')
hold off

Можно также построить траекторию мультиротора с помощью plotTransforms. Создайте векторы перевода и вращения из моделируемого состояния. Субдискретизируйте (каждый 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. Создайте векторы перевода и вращения из моделируемого состояния. Субдискретизируйте (каждый 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

Входные параметры

свернуть все

Модель руководства UAV, заданная как объект fixedwing или multirotor.

Выходные аргументы

свернуть все

Экологические входные параметры, возвращенные как структура.

Для БПЛА фиксированного крыла полями структуры является WindNorth, WindEast, WindDown и Gravity. Скорости ветра исчисляются в метрах в секунду и отрицательная точка скоростей в противоположном направлении. Gravity исчисляется в метрах в секунду в квадрате (9.81 по умолчанию).

Для БПЛА мультиротора единственным элементом структуры является Gravity (9.81 по умолчанию) в метрах в секунду.

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Введенный в R2018b