using linear observer on a nonlinear model
5 次查看(过去 30 天)
显示 更早的评论
I'm trying to use a linear luenberger observer
to approximate the motion of an inverted pendulum on a cart grpahically with ODE45:
With states θ and
and controller baed on the estimated states:
. The controller was designed from linearisation about
,
. The dynamics of my true state and estimated state should converge when the released from an initial displacement near π but this isn't happening. The code is:
A=[0 1; 1 0];
B=[0; 1];
C=[1 0];
T0=pi+0.1; %The initial angle of displacement
s1=[-1,-2]; %poles for the true dynamics
s2=[-2,-4]; %poles for the observer
K=place(A,B,s1)
L=place(A',C',s2)'
f= @(t,x) [x(2); -sin(x(1))+[K(1,1)*(x(3)-pi)+K(1,2)*x(4)]*cos(x(1))
;L(1,1)*(x(1)-pi)-L(1,1)*(x(3)-pi)+x(4);
L(2,1)*(x(1)-pi)+(1-L(2,1)-K(1,1))*(x(3)-pi)-K(1,2)*x(4)];
[t,x]= ode45(f,[0 20],[T0 0 0 0]);
plot(t,x(:,1),t,x(:,3),'--')
Where x(1) is θ, x(2) is
, x(3) is
and x(4) is
. The ODE45 was obatined from:
$\begin{bmatrix} \dot{x} \\ \dot{\hat{x}} \end{bmatrix} = \begin{bmatrix} A & -BK \\ LC & A-LC-BK \end{bmatrix} \begin{bmatrix} x \\ \hat{x} \end{bmatrix}$
0 个评论
回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Linearization 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!