Разработка контроллера для беспилотного автомобиля - PullRequest
0 голосов
/ 28 мая 2019

Я пытаюсь решить некоторые вопросы, связанные с моей системой (дизайн контроллера и наблюдателя), показанной на рисунке ниже:

Controller and observer design

Вопросы:

  1. Установите требования к шаговой реакции, такие как время установления, перерегулирование и статическая ошибка на выходе.

  2. Выберите нужные полюса в соответствии с вашими требованиями.Если возможно, рассчитайте матрицу обратной связи K для размещения полюсов на требуемые полюсы.

  3. Смоделируйте пошаговый отклик системы обратной связи и рассчитайте параметры, включая превышение, время установления и статическую ошибку.Если система не удовлетворяет требованию, вернитесь к шагу 2.

  4. Расчет состояния наблюдателя системы.Величина полюсов наблюдателя должна быть в 2 ~ 5 раз больше системных полюсов.Выберите разные полюса наблюдателя и сравните производительность наблюдателей.

Я реализовал код для решения этих вопросов, но я не уверен, что моя процедура верна.Не могли бы вы проверить мою реализацию?

Реализация MATLAB:

close all;
clear all;
clc
%% 1) Set a requirement for step response, like settling time, overshoot 
%and static error of output.
A=[0,1,0,0;0,-42.44,212.24,0;0,0,0,1;0,0,0,-42.44];
B=[0;106.12;0;78.6];
C=[1,0,0,0;0,1,0,0;0,0,1,0;0,0,0,1];
D=0;
sys = ss(A, B, C, D)
t=0:0.1:10;
figure;
step(sys,t,'r')

%The parameters including overshoot, settling time and static error.
S = stepinfo(sys)

%% 2)Select the desired poles according to your requirements. If possible, 
%calculate the feedback matrix K to place the poles to the desired poles.

eig(sys)
% Now we check the stability
rank(ctrb(sys))
%The desired poles
P = [-1; -2; -3; -3.2850]
K = place(A,B,P)

%% 3) Simulate step response of the feedback system and calculate the parameters
%%including overshoot, settling time and static error. If the system does not satisfy the
%%requirement, go back to step 2).

Acl = A-B*K
syscl = ss(Acl,B,C,D)
figure;
step(syscl,'g')
%The parameters including overshoot, settling time.
S = stepinfo(syscl)
title('Step response of feedback control system')
grid on

%% 4) Design state observer of the system. The magnitude of observer poles must be 2~5
%times of system poles. Select different observer poles and compare the performance
%of observers.

sys=ss(A,B,C,D)
eig(sys)
rank(obsv(sys))
% Observer pole placement at  -10 and -9
% This observer will lead to a fast approximation of the states
L_T=place(A',C',[-10,-9,-8,-7])
L=L_T'
% Observer pole placement at  -1 and -2
% This observer will lead to a slower approximation of the states
% L_anastrofos=place(a',c',[-1,-2])
% L=L_anastrofos'
% State observer Feedback
sys=ss(A,B,C,D)
eig(sys)
rank(obsv(sys))
rank(ctrb(sys))
K=place(A,B,[-5 -6 -7 -8])
...