Управление Quadrotor Используя нелинейное прогнозирующее управление модели

В этом примере показано, как спроектировать контроллер отслеживания траектории для quadrotor использование нелинейного прогнозирующего управления модели (MPC).

Модель Quadrotor

quadrotor имеет четыре ротора, которые направлены вверх. От центра массы quadrotor роторы помещаются в квадратное формирование с равным расстоянием. Математическая модель для quadrotor динамики выведена из уравнений Euler-Lagrange [1].

Двенадцать состояний для quadrotor:

[x,y,z,ϕ,θ,ψ,x˙,y˙,z˙,ϕ˙,θ˙,ψ˙],

где

  • [x,y,z]обозначьте положения в инерционной системе координат

  • Угловые положения [ϕ,θ,ψ] находятся в порядке крена, тангажа и рыскания

  • Остающиеся состояния являются скоростями положений и углов

Входные параметры управления для quadrotor являются скоростями вращения в квадрате этих четырех роторов:

[ω12,ω22,ω32,ω42].

Эти входные параметры управления создают силу, крутящий момент, и толкают в направлении тела zось. В этом примере каждое состояние измеримо, и входные параметры управления ограничиваются быть в [0,12] (rads)2.

Функциональная и Функция Якоби состояния состояния модели создается и вывела программное обеспечение Symbolic Math Toolbox™ использования.

getQuadrotorDynamicsAndJacobian;
ans = function_handle with value:
    @QuadrotorStateFcn

ans = function_handle with value:
    @QuadrotorStateJacobianFcn

getQuadrotorDynamicsAndJacobian скрипт генерирует следующие файлы:

  • QuadrotorStateFcn.m — Функция состояния

  • QuadrotorStateJacobianFcn.m — Функция Якоби состояния

Для получения дополнительной информации на любой функции, откройте соответствующий файл.

Спроектируйте нелинейный прогнозирующий контроллер модели

Создайте нелинейный объект MPC с 12 состояниями, 12 выходными параметрами и 4 входные параметры. По умолчанию все входные параметры являются переменными, которыми управляют (MVS).

nx = 12;
ny = 12;
nu = 4;
nlobj = nlmpc(nx, ny, nu);
In standard cost function, zero weights are applied by default to one or more OVs because there are fewer MVs than OVs.

Задайте функцию состояния модели предсказания с помощью имени функции. Можно также задать функции с помощью указателя на функцию.

nlobj.Model.StateFcn = "QuadrotorStateFcn";

Задайте якобиан функции состояния с помощью указателя на функцию. Это - лучшая практика обеспечить аналитический якобиан для модели предсказания. Выполнение так значительно повышает эффективность симуляции.

nlobj.Jacobian.StateFcn = @QuadrotorStateJacobianFcn;

Подтвердите свою модель предсказания, свои пользовательские функции и их Якобианы.

rng(0)
validateFcns(nlobj,rand(nx,1),rand(nu,1));
Model.StateFcn is OK.
Jacobian.StateFcn is OK.
No output function specified. Assuming "y = x" in the prediction model.
Analysis of user-provided model, cost, and constraint functions complete.

Задайте шаг расчета 0.1 секунды, горизонт предсказания 18 шагов и горизонт управления 2 шагов.

Ts = 0.1;
p = 18;
m = 2;
nlobj.Ts = Ts;
nlobj.PredictionHorizon = p;
nlobj.ControlHorizon = m;

Ограничьте все четыре входных параметров управления, чтобы быть в области значений [0,12].

nlobj.MV = struct('Min',{0;0;0;0},'Max',{12;12;12;12});

Функция стоимости по умолчанию в нелинейном MPC является стандартной квадратичной функцией стоимости, подходящей для отслеживания уставки и подавления помех. В этом примере, первых 6 состояниях [x,y,z,ϕ,θ,ψ] требуются, чтобы следовать за данной ссылочной траекторией. Поскольку количество MVS (4) меньше, чем количество ссылочных выходных траекторий (6), существует недостаточно степеней свободы, чтобы отследить желаемые траектории для всех выходных переменных (OVs).

nlobj.Weights.OutputVariables = [1 1 1 1 1 1 0 0 0 0 0 0];

В этом примере MVS также имеет номинальные цели, чтобы сохранить плавание quadrotor, которое может вести, чтобы конфликтовать между мВ и целями отслеживания уставки OV. Чтобы приоритизировать цели, установите средний приоритет отслеживания мВ ниже, чем средний OV отслеживание приоритета.

nlobj.Weights.ManipulatedVariables = [0.1 0.1 0.1 0.1];

Кроме того, оштрафуйте агрессивные действия управления путем определения настраивающихся весов для скоростей изменения мВ.

nlobj.Weights.ManipulatedVariablesRate = [0.1 0.1 0.1 0.1];

Симуляция с обратной связью

Симулируйте систему в течение 20 секунд с целевой траекторией, чтобы следовать.

% Specify the initial conditions
x = [7;-10;0;0;0;0;0;0;0;0;0;0];
% Nominal control that keeps the quadrotor floating
nloptions = nlmpcmoveopt;
nloptions.MVTarget = [4.9 4.9 4.9 4.9]; 
mv = nloptions.MVTarget;

Симулируйте систему с обратной связью с помощью nlmpcmove функция, задавая опции симуляции с помощью nlmpcmove объект.

Duration = 20;
hbar = waitbar(0,'Simulation Progress');
xHistory = x';
lastMV = mv;
uHistory = lastMV;
for k = 1:(Duration/Ts)
    % Set references for previewing
    t = linspace(k*Ts, (k+p-1)*Ts,p);
    yref = QuadrotorReferenceTrajectory(t);
    % Compute the control moves with reference previewing.
    xk = xHistory(k,:);
    [uk,nloptions,info] = nlmpcmove(nlobj,xk,lastMV,yref',[],nloptions);
    uHistory(k+1,:) = uk';
    lastMV = uk;
    % Update states.
    ODEFUN = @(t,xk) QuadrotorStateFcn(xk,uk);
    [TOUT,YOUT] = ode45(ODEFUN,[0 Ts], xHistory(k,:)');
    xHistory(k+1,:) = YOUT(end,:);
    waitbar(k*Ts/Duration,hbar);
end
close(hbar)

Визуализация и результаты

Постройте результаты и сравните запланированные и фактические траектории с обратной связью.

plotQuadrotorTrajectory;

Figure States contains 6 axes. Axes 1 with title Qruadrotor x position contains 2 objects of type line. These objects represent actual, reference. Axes 2 with title Qruadrotor y position contains 2 objects of type line. These objects represent actual, reference. Axes 3 with title Qruadrotor z position contains 2 objects of type line. These objects represent actual, reference. Axes 4 with title Qruadrotor phi angle contains 2 objects of type line. These objects represent actual, reference. Axes 5 with title Qruadrotor theta angle contains 2 objects of type line. These objects represent actual, reference. Axes 6 with title Qruadrotor psi angle contains 2 objects of type line. These objects represent actual, reference.

Figure Control Inputs contains 4 axes. Axes 1 with title Input 1 contains 2 objects of type stair, line. These objects represent actual, reference. Axes 2 with title Input 2 contains 2 objects of type stair, line. These objects represent actual, reference. Axes 3 with title Input 3 contains 2 objects of type stair, line. These objects represent actual, reference. Axes 4 with title Input 4 contains 2 objects of type stair, line. These objects represent actual, reference.

Поскольку количество MVS меньше, чем количество ссылочных выходных траекторий, существует недостаточно степеней свободы, чтобы отследить желаемые траектории для всего OVs.

Как показано на рисунке для состояний [x,y,z,ϕ,θ,ψ] и управляйте входными параметрами,

  • Состояния [x,y,z] совпадайте со ссылочной траекторией очень тесно в течение 7 секунд.

  • Состояния [ϕ,θ,ψ] управляются к окружению нулей в течение 9 секунд.

  • Входные параметры управления управляются к целевому значению 4,9 приблизительно 10 секунд.

Можно анимировать траекторию quadrotor. quadrotor перемещается близко к "цели" quadrotor, который перемещается вдоль ссылочной траектории в течение 7 секунд. После этого quadrotor следует тесно за ссылочной траекторией. Анимация завершает работу в 20 секунд.

animateQuadrotorTrajectory;

Figure QuadrotorAnimation contains 2 axes. Axes 1 contains 22 objects of type line, patch, text. Axes 2 contains 22 objects of type line, patch, text.

Заключение

В этом примере показано, как спроектировать нелинейный прогнозирующий контроллер модели для отслеживания траектории quadrotor. Динамика и Якобианы quadrotor выведены с помощью программного обеспечения Symbolic Math Toolbox. quadrotor отслеживает ссылочную траекторию тесно.

Ссылки

[1] Т. Луукконен, Моделирование и управление quadcopter, Независимой научно-исследовательской работы в прикладной математике, Эспоо: Университет Аалто, 2011.

[2] Э. Цорэколефтэракис и Т. Д. Мурфи. "Итеративное последовательное действие управляет для устойчивого, основанного на модели управления нелинейных систем". Транзакции IEEE на Автоматическом управлении (2018).

Смотрите также

| |

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте