如何在状态空间模型中选择参考信号?


0

我对选择参考信号以控制状态空间模型感到困惑。

我已经阅读(但没有深入的数学解释),必须缩放他的参考信号,以使系统能够跟踪输入信号。还有一个给出缩放系数的函数 Nbar,所以我必须乘以它的参考信号:

s = size(A,1);
Z = [zeros([1,s]) 1];
N = inv([A,B;C,D])*Z';
Nx = N(1:s);
Nu = N(1+s);
Nbar=Nu + K*Nx;

在我的特殊情况下,在一维推车上有一个摆锤的模型,任意选择的杆。我的状态变量是 $ {\ vec {\ textbf {x}}} = [x \ \ dot {x} \ \ theta \ \ dot {\ theta}] ^ {T} $。

以下是matlab代码:

clear all;

M = 1;
m = 1;
l = 1.5;
g = 9.8;
I = m*l^2;
b = 0.05;

denom = M*(m*l^2) + I*(m + m);

a22 = -(b*I + b*m*l^2)/denom;
a23 = (g*(l^2)*(m^2))/denom;
a42 = -(b*l*m)/denom;
a43 = (g*(M+m)*l*m)/denom;

b21 = (I + m*l^2) / denom;
b41 = l*m / denom;

A = [0 1 0 0; 0 a22 a23 0; 0 0 0 1; 0 a42 a43 0];
B = [0; b21; 0; b41];
C = [1 0 0 0];
D = 0;

% Check for controllability
co = ctrb(A, B);
fprintf("%f\r\n", rank(co));

% POLES
P = [-1.5 -0.9 -2.5 -3.5];

% Placing poles
K = place(A, B, P);

% Reference signal rescaling
sys = ss(A, B, C, D);
N = rscale(sys, K);

我的simulink模型: Inverted pendulum on a cart. Simulink

和位置图: Inverted pendulum cart position plot

一切都像魅力一样。但是我完全错过了背后的直觉。

想象一下标准PID控制,在这种情况下,如果我想控制位置,我会将错误设置为'current_position - desired_position',并将标准PID公式应用于该错误。从上面可以直观地清楚为什么控制位置,如果我想控制,例如速度,我只会将误差设置为速度发散。

然而,在状态空间中,我有一些系数在计算我的状态和增益矩阵之间的点积之后出现。由于某种原因,从你的缩放版本中减去它后,我得到了控制位置。为什么对我来说是个大秘密。在这种情况下,如何控制任何其他状态变量,例如速度?


位置是最实用的,这就是原因。如果要控制速度或加速度,可以这样做。但首先,请考虑系统的物理范围,以及您希望实现的目标。
Gürkan Çetin

@GürkanÇetin我清楚地知道我可以这样做。问题是如何。
Long Smith

1
好吧我也许误解了。因为最后一段中的第一个问题要求控制哪个参数,而不是如何做到这一点。你尝试用x_dot替换x吗?结果是什么?如果你再指定一点,我相信问题和答案对每个人都会更有用。否则我担心它可能被归类为“过于宽泛”。
Gürkan Çetin

@GürkanÇetin实际上这个问题听起来可能是双重的。我的意思是我看不出为什么确切地控制位置的任何理由。想象一下标准PID控制,在这种情况下,如果我想控制位置,我会将错误设置为(current_position - desired_position)并将标准PID公式应用于该错误。从上面可以直观地清楚为什么控制位置,如果我想控制,例如速度,我只会将误差设置为速度发散。
Long Smith

@GürkanÇetin然而在状态空间中,我有一些系数在计算我的状态和增益矩阵之间的点积后出现。由于某种原因,从你的缩放版本中减去它后,我们得到了受控制的位置。我只是错过了背后的直觉。
Long Smith

Answers:


2

所以假设我们正在处理表格的LTI系统

$$ \ {开始}对齐 \ dot {x}& = A \,x + B \,u \\ y& = C \,x + D \,u \ end {align} \ tag {1} $$

使用$ x \ in \ mathbb {R} ^ {n_x} $,$ u \ in \ mathbb {R} ^ {n_u} $,$ y \ in \ mathbb {R} ^ {n_y} $,这是可以稳定的可检测的,但我会假设已知完整状态,因此无需构建实际的观察者。我们的目标是找到$ u $的控制律,这样当时间变为无穷大时,输出的稳定状态$ y_ {ss} $等于已知的常量参考,用$ r $表示。

通常当你使用$ u = -K \,x $形式的状态反馈时,$ AB \,K $是Hurwitz,那么这将做的唯一一件事就是将完整状态$ x $强制为零,然后依次输出$ y $也是如此。所以这不会解决问题。为了解决上面提到的问题,还需要找到满状态的稳定状态,$ x_ {ss} $和输入$ u_ {ss} $需要这样的$ y_ {ss} = r $。由于模型是可检测的,当$ y = r $时,$ \ dot {x} $应为零。现在我假设$ x_ {ss} $和$ u_ {ss} $可以表示为$ y_ {ss} $和$ r $的线性组合,所以$ x_ {ss} = M_x \,r $和$ u_ {ss} = M_u \,r $。当我们开始解决问题时,您将看到可以存在解决问题的矩阵。也就是说,如果我们将其插入等式$(1)$我们得到

$$ \ {开始}对齐 0_ {n_x \ times n_x}& =(A \,M_x + B \,M_u)\,r \\ r& =(C \,M_x + D \,M_u)\,r。 \ end {align} \ tag {2} $$

但这应该可以解决每$ r $。因此,将$ r $分解出来然后可以将其重写为

$$ \ {开始} bmatrix A& B \\ C& d \ {端} bmatrix \ {开始} bmatrix M_x \\ M_u \ end {bmatrix} = \ {开始} bmatrix 0_ {n_x \次n_x} \\ I_ {n_y \次n_y} \ end {bmatrix} \ tag {3} $$

哪个可以解决

$$ \ {开始} bmatrix M_x \\ M_u \ end {bmatrix} = \ {开始} bmatrix A& B \\ C& d \ {端} bmatrix ^ { - 1} \ {开始} bmatrix 0_ {n_x \次n_x} \\ I_ {n_y \次n_y} \ {端} bmatrix。 \标签{4} $$

如果需要反转的矩阵是满秩并且如果$ n_y \ leq n_u $(当$ n_y< n_u $你可能需要使用 右反 )。如果$ n_y> n_u $然后它可能仍然可以解决,但不是每个$ r $。

假设等式$(4)$可以通过定义一个新的状态变量$ \ hat {x} = x - x_ {ss} $和新的控制输入$ \ hat {u} = u - u_ {ss} $来解决然后,如果存在将$ \ hat {x} $带到零的控制律,那么$ x $也将按照定义转到$ x_ {ss} $。 $ \ hat {x} $的时间导数可表示如下

$$ \ dot {\ hat {x}} = \ dot {x} - \ dot {x} _ {ss} = A \,x + B \,u - \ underbrace {(A \,x_ {ss} + B \ ,u_ {ss})} _ {0} = A \,(x - x_ {ss})+ B \,(u - u_ {ss})= A \,\ hat {x} + B \,\ hat 【U】 $$

如前所述,使用控制律$ \ hat {u} = -K \,\ hat {x} $使$ A-B \,K $为Hurwitz,应强制$ \ hat {x} $为零。通过结合$ \ hat {x} $,$ \ hat {u} $的定义和$ \ hat {u} $的控制律,可以解决$ u $

$$ u = -K \,x + K \,x_ {ss} + u_ {ss}。 \标签{5} $$

将$ x_ {ss} $和$ u_ {ss} $的表达式替换为$ r $的函数给出

$$ u = -K \,x + \ underbrace {(K \,M_x + M_u)} _ N \,r。 \标签{6} $$

使用等式$(4)$然后增益乘以$ r $也可以表示如下

$$ N = \ begin {bmatrix} K& I_ {n_u \ times n_u} \ {端} bmatrix \ {开始} bmatrix A& B \\ C& d \ {端} bmatrix ^ { - 1} \ {开始} bmatrix 0_ {n_x \次n_x} \\ I_ {n_y \次n_y} \ {端} bmatrix。 \标签{7} $$

因此,通过选择不同的$ K $,这个增益$ N $将会改变。但是可以注意到,如果你根据状态空间模型设计一个$ K $和相应的$ N $,其状态与你使用控制律的系统不完全匹配,由于在识别这个系统时出现了一些错误,那么随着时间的推移,稳态误差可能不会变为零。对此的解决方案可能是通过错误$ y-r $的积分来扩展状态空间,例如 LQI控制器

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.