多智能体集群协同控制笔记(1):线性无领航多智能体系统的一致性
对于连续时间高阶线性多智能体系统的状态方程为:
x˙i(t)=Axi(t)+Bui(t),i=1,2..N\dot {\mathbf{x}}_i(t)=A\mathbf{x}_i(t)+B\mathbf{u}_i(t),i=1,2..N x˙i(t)=Axi(t)+Bui(t),i=1,2..N
下标iii代表第iii个智能体,ui(t)∈Rq×1\mathbf{u}_i(t)\in R^{q \times 1}ui(t)∈Rq×1表示第iii个智能体的控制输入变量,xi(t)∈Rp×1\mathbf{x}_i(t)\in R^{p \times 1}xi(t)∈Rp×1表示第iii个智能体的状态变量。系统的一致性即设计控制器ui(t)\mathbf{u}_i(t)ui(t)保证如下等式成立:
limt→∞x1(t)=limt→∞x2(t)=...=limt→∞xN(t)\lim_{t\rightarrow\infty}\mathbf{x}_1(t)=\lim_{t\rightarrow\infty}\mathbf{x}_2(t)=...=\lim_{t\rightarrow\infty}\mathbf{x}_N(t) t→∞limx1(t)=t→∞limx2(t)=...=t→∞limxN(t)
-
定义Laplacian矩阵L={lij}i,j=1,..NL=\{l_{ij}\}_{i,j=1,..N}L={lij}i,j=1,..N,其中:
lij={∑j=1,j≠iNaiji=j−aiji≠jl_{ij}=\begin{cases} \sum_{j=1,j\ne i}^Na_{ij} & i = j\\ -a_{ij}& i\ne j \end{cases} lij={∑j=1,j=iNaij−aiji=ji=j -
定义变量:ξi(t)=∑j=1Naij(xi(t)−xj(t))\mathbf{\xi}_i(t)=\sum_{j=1}^Na_{ij}(\mathbf{x}_i(t)-\mathbf{x}_j(t))ξi(t)=∑j=1Naij(xi(t)−xj(t)),定义:
ξ(t)=(L⊗Ip)X(t)\mathbf{\xi}(t)=(L\otimes I_p)X(t) ξ(t)=(L⊗Ip)X(t)
其中:X(t)=[x1T(t),x2T(t),..xNT(t)]TX(t)=[\mathbf{x}_1^T(t),\mathbf{x}_2^T(t),..\mathbf{x}_N^T(t)]^TX(t)=[x1T(t),x2T(t),..xNT(t)]T,ξ(t)=[ξ1(t)T,ξ2(t)T,..ξN(t)T]T\mathbf{\xi}(t)=[\mathbf{\xi}_1(t)^T,\mathbf{\xi}_2(t)^T,..\mathbf{\xi}_N(t)^T]^Tξ(t)=[ξ1(t)T,ξ2(t)T,..ξN(t)T]T; -
定义控制器:ui(t)=cK1ξi(t)\mathbf{u}_i(t)=cK_1\mathbf{\xi}_i(t)ui(t)=cK1ξi(t),总的控制策略为:
u(t)=(IN⊗cK1)ξ(t)=(IN⊗cK1)(L⊗Ip)X(t)\mathbf{u}(t)=(I_N\otimes cK_1)\mathbf{\xi}(t) =(I_N\otimes cK_1)(L\otimes I_p)X(t) u(t)=(IN⊗cK1)ξ(t)=(IN⊗cK1)(L⊗Ip)X(t)
其中K1K_1K1是待求的控制增益矩阵,ccc为加权参数; -
定义LLL为该系统的Laplacian矩阵,存在一个酉矩阵YYY,使得:
YTLY=diag(λ1,λ2,...λN)Y^TLY=\mathbf{diag}(\lambda_1,\lambda_2,...\lambda_N) YTLY=diag(λ1,λ2,...λN)
其中:λ1=0;λi>0,i∈{2,3,..N}\lambda_1=0;\lambda_i >0,i \in \{ 2,3,..N\}λ1=0;λi>0,i∈{2,3,..N},由于LLL有右特征向量1N\mathbf{1}_N1N,YYY可以写成:
Y=[1NN,M1]Y=[\frac{\mathbf{1}_N}{\sqrt{N}}, M_1] Y=[N1N,M1] -
定义:ε(t)=[ε1(t)T,ε2(t)T,..εN(t)T]T=(YT⊗Ip)ξ(t)\mathbf{\varepsilon}(t)=[\mathbf{\varepsilon}_1(t)^T,\mathbf{\varepsilon}_2(t)^T,..\mathbf{\varepsilon}_N(t)^T]^T=(Y^T\otimes I_p)\mathbf{\xi}(t)ε(t)=[ε1(t)T,ε2(t)T,..εN(t)T]T=(YT⊗Ip)ξ(t),其中ppp为xi(t)\mathbf{x}_i(t)xi(t)的维度。
1.无向连通图定理
引理1.1: 当多智能体系统网络为无向连通图时,系统实现状态一致的充要条件是:
εˉ(t)=[ε2(t)T,ε3(t)T,..εN(t)T]T=0\mathbf{\bar \varepsilon}(t)=[\mathbf{\varepsilon}_2(t)^T,\mathbf{\varepsilon}_3(t)^T,..\mathbf{\varepsilon}_N(t)^T]^T=\mathbf{0} εˉ(t)=[ε2(t)T,ε3(t)T,..εN(t)T]T=0
且εˉ(t)\bar{\varepsilon}(t)εˉ(t)同时也满足:
ε˙(t)=(IN⊗A+cΛN⊗BK1)ε(t)εˉ˙(t)=(IN−1⊗A+cΛN−1⊗BK1)εˉ(t)(∗)\dot \varepsilon(t) = (I_N\otimes A+c\Lambda_N \otimes BK_1)\varepsilon(t)\\ \dot{\bar{\varepsilon}}(t) = (I_{N-1}\otimes A+c\Lambda_{N-1} \otimes BK_1)\bar{\varepsilon}(t) \quad (*) ε˙(t)=(IN⊗A+cΛN⊗BK1)ε(t)εˉ˙(t)=(IN−1⊗A+cΛN−1⊗BK1)εˉ(t)(∗)
其中:ΛN−1=diag(λ2,...λN)\Lambda_{N-1}=diag(\lambda_2,...\lambda_N)ΛN−1=diag(λ2,...λN),ΛN=diag(λ1,λ2,...λN)\Lambda_{N}=diag(\lambda_1,\lambda_2,...\lambda_N)ΛN=diag(λ1,λ2,...λN)。
定理1.1:给定矩阵Q1=Q1T>0Q_1=Q_1^T>0Q1=Q1T>0和R1=R1T>0R_1=R_1^T>0R1=R1T>0,若如下Riccati方程有正定解P1=P1T>0P_1=P_1^T>0P1=P1T>0:
P1A+AP1T+Q1−P1BR1−1BTP1=0P_1A+AP_1^T+Q_1-P_1BR_1^{-1}B^TP_1=\mathbf{0} P1A+AP1T+Q1−P1BR1−1BTP1=0
则系统(∗)(*)(∗)渐进稳定,由引理1.1可知,原系统能达到一致性。
其中系统的控制增益矩阵K1=−R1−1BTP1K_1=-R_1^{-1}B^TP_1K1=−R1−1BTP1,且加权系数ccc满足c≥12mini=2,...Nλi(L)c\geq\frac{1}{2\min_{i=2,...N}{\lambda_i(L)}}c≥2mini=2,...Nλi(L)1。
证明:构造Lyapunov函数V1(t)=0.5εˉT(t)(IN−1⊗P1)εˉ(t)V_1(t)=0.5\bar{\varepsilon}^T(t)(I_{N-1}\otimes P_1)\bar{\varepsilon}(t)V1(t)=0.5εˉT(t)(IN−1⊗P1)εˉ(t),其满足:
V1˙(t)=0.5εˉ˙T(t)(IN−1⊗P1)εˉ(t)+0.5εˉT(t)(IN−1⊗P1)εˉ˙(t)=εˉT(t)(IN−1⊗P1)εˉ˙(t)=εˉ(t)T(IN−1⊗P1)(IN−1⊗A+cΛN−1⊗BK1)εˉ(t)=εˉT(t)(IN−1⊗P1A+cΛN−1⊗P1BK1)εˉ(t)=εˉT(t)(IN−1⊗P1A−cΛN−1⊗P1BR1−1BTP1)εˉ(t)\dot{V_1}(t)=0.5\dot{\bar{\varepsilon}}^T(t)(I_{N-1}\otimes P_1)\bar{\varepsilon}(t)+0.5\bar{\varepsilon}^T(t)(I_{N-1}\otimes P_1)\dot{\bar{\varepsilon}}(t)\\ =\bar{\varepsilon}^T(t)(I_{N-1}\otimes P_1)\dot{\bar{\varepsilon}}(t)\\=\bar{\varepsilon}(t)^T(I_{N-1}\otimes P_1)(I_{N-1}\otimes A+c\Lambda_{N-1} \otimes BK_1)\bar{\varepsilon}(t)\\=\bar{\varepsilon}^T(t)(I_{N-1}\otimes P_1A+c\Lambda_{N-1}\otimes P_1BK_1)\bar{\varepsilon}(t)\\=\bar{\varepsilon}^T(t)(I_{N-1}\otimes P_1A-c\Lambda_{N-1}\otimes P_1BR_1^{-1}B^TP_1)\bar{\varepsilon}(t) V1˙(t)=0.5εˉ˙T(t)(IN−1⊗P1)εˉ(t)+0.5εˉT(t)(IN−1⊗P1)εˉ˙(t)=εˉT(t)(IN−1⊗P1)εˉ˙(t)=εˉ(t)T(IN−1⊗P1)(IN−1⊗A+cΛN−1⊗BK1)εˉ(t)=εˉT(t)(IN−1⊗P1A+cΛN−1⊗P1BK1)εˉ(t)=εˉT(t)(IN−1⊗P1A−cΛN−1⊗P1BR1−1BTP1)εˉ(t)
由于c≥12mini=2,...Nλi(L)c\geq\frac{1}{2\min_{i=2,...N}{\lambda_i(L)}}c≥2mini=2,...Nλi(L)1,因此cΛN−1≥IN−12c\Lambda_{N-1}\geq\frac{I_{N-1}}{2}cΛN−1≥2IN−1。带入上式有:
V1˙(t)=εˉT(t)(IN−1⊗P1A−cΛN−1⊗P1BR1−1BTP1)εˉ(t)≤εˉT(t)(IN−1⊗P1A−IN−12⊗P1BR1−1BTP1)εˉ(t)=εˉT(t)(IN−12⊗(P1A+ATP1)−IN−12⊗P1BR1−1BTP1)εˉ(t)=−12εˉT(t)(IN−1⊗Q1)εˉ(t)\dot{V_1}(t)=\bar{\varepsilon}^T(t)(I_{N-1}\otimes P_1A-c\Lambda_{N-1}\otimes P_1BR_1^{-1}B^TP_1)\bar{\varepsilon}(t)\\ \leq \bar{\varepsilon}^T(t)(I_{N-1}\otimes P_1A-\frac{I_{N-1}}{2}\otimes P_1BR_1^{-1}B^TP_1)\bar{\varepsilon}(t)\\=\bar{\varepsilon}^T(t)( \frac{I_{N-1}}{2}\otimes (P_1A+A^TP_1) -\frac{I_{N-1}}{2}\otimes P_1BR_1^{-1}B^TP_1)\bar{\varepsilon}(t)\\=-\frac{1}{2}\bar{\varepsilon}^T(t)(I_{N-1}\otimes Q_1)\bar{\varepsilon}(t) V1˙(t)=εˉT(t)(IN−1⊗P1A−cΛN−1⊗P1BR1−1BTP1)εˉ(t)≤εˉT(t)(IN−1⊗P1A−2IN−1⊗P1BR1−1BTP1)εˉ(t)=εˉT(t)(2IN−1⊗(P1A+ATP1)−2IN−1⊗P1BR1−1BTP1)εˉ(t)=−21εˉT(t)(IN−1⊗Q1)εˉ(t)
由直积的性质有:
λmin(IN−1⊗Q1)=λmin(Q1)λmax(IN−1⊗P1)=λmax(P1)\lambda_{\min}(I_{N-1}\otimes Q_1)=\lambda_{\min}(Q_1)\\ \lambda_{\max}(I_{N-1}\otimes P_1)=\lambda_{\max}(P_1) λmin(IN−1⊗Q1)=λmin(Q1)λmax(IN−1⊗P1)=λmax(P1)
由矩阵的极大极小值原理:
V1˙(t)V1(t)=−12εˉT(t)(IN−1⊗Q1)εˉ(t)12εˉT(t)(IN−1⊗P1)εˉ(t)≤−λmin(Q1)εˉT(t)εˉ(t)λmax(P1)εˉT(t)εˉ(t)=−λmin(Q1)λmax(P1)=−δ\frac{\dot{V_1}(t)}{V_1(t)}=\frac{-\frac{1}{2}\bar{\varepsilon}^T(t)(I_{N-1}\otimes Q_1)\bar{\varepsilon}(t)}{\frac{1}{2}\bar{\varepsilon}^T(t)(I_{N-1}\otimes P_1)\bar{\varepsilon}(t)}\leq-\frac{\lambda_{\min}(Q_1)\bar{\varepsilon}^T(t)\bar{\varepsilon}(t)}{\lambda_{\max}(P_1)\bar{\varepsilon}^T(t)\bar{\varepsilon}(t) }=-\frac{\lambda_{\min}(Q_1)}{\lambda_{\max}(P_1)}=-\delta V1(t)V1˙(t)=21εˉT(t)(IN−1⊗P1)εˉ(t)−21εˉT(t)(IN−1⊗Q1)εˉ(t)≤−λmax(P1)εˉT(t)εˉ(t)λmin(Q1)εˉT(t)εˉ(t)=−λmax(P1)λmin(Q1)=−δ
解上述不等式有:
V1(t)≤V1(0)e−δtV_1(t)\leq V_1(0)e^{-\delta t} V1(t)≤V1(0)e−δt
带入V1(t)≥0.5λmin(P1)∣∣εˉ(t)∣∣2V_1(t)\geq 0.5\lambda_{\min}(P_1)||\bar{\varepsilon}(t)||^2V1(t)≥0.5λmin(P1)∣∣εˉ(t)∣∣2 和V1(0)≤0.5λmax(P1)∣∣εˉ(0)∣∣2V_1(0)\leq 0.5\lambda_{\max}(P_1)||\bar{\varepsilon}(0)||^2V1(0)≤0.5λmax(P1)∣∣εˉ(0)∣∣2有:
∣∣εˉ(t)∣∣≤λmax(P1)λmin(P1)∣∣εˉ(0)∣∣e−δt2||\bar{\varepsilon}(t)||\leq \sqrt\frac{\lambda_{\max}(P_1)}{\lambda_{\min}(P_1)}||\bar{\varepsilon}(0)||e^{\frac{-\delta t}{2}} ∣∣εˉ(t)∣∣≤λmin(P1)λmax(P1)∣∣εˉ(0)∣∣e2−δt
因此上述系统(*)是一致指数稳定的,其必然是渐进稳定的。
2.仿真
2.1 问题
设固定翼无人机集群中每个无人机的俯仰方向运动模型的线性化系统方程为:
(α˙(t)q˙(t))=(−1.1750.9871−8.458−0.8776)(α(t)q(t))+(−0.194−0.03593−19.29−3.803)(δiail(t)δirud(t))\begin{pmatrix} \dot{\alpha}(t) \\ \dot{q}(t) \end{pmatrix} = \begin{pmatrix} -1.175&0.9871\\-8.458&-0.8776 \end{pmatrix} \begin{pmatrix} {\alpha}(t) \\ {q}(t) \end{pmatrix}+ \begin{pmatrix} -0.194&-0.03593\\-19.29&-3.803 \end{pmatrix}\begin{pmatrix} {\delta}_i^{\mathbf{ail}}(t) \\ {\delta}_i^{\mathbf{rud}}(t) \end{pmatrix} (α˙(t)q˙(t))=(−1.175−8.4580.9871−0.8776)(α(t)q(t))+(−0.194−19.29−0.03593−3.803)(δiail(t)δirud(t))
其中:α(t)\alpha(t)α(t):无人机俯仰角;qi(t)q_i(t)qi(t):无人机俯仰角速度;
δail(t)\delta^{\mathbf{ail}}(t)δail(t):副翼操作指令;δrud(t)\delta^{\mathbf{rud}}(t)δrud(t):升降舵操作指令;
先有3架无人机,其通信拓扑图如下:
3架无人机的初值为:
(α1(0)q1(0))=(10−3);(α2(0)q2(0))=(−72);(α3(0)q3(0))=(4−1)\begin{pmatrix} {\alpha}_1(0) \\ {q}_1(0) \end{pmatrix}=\begin{pmatrix} 10\\ -3\end{pmatrix}; \begin{pmatrix} {\alpha}_2(0) \\ {q}_2(0) \end{pmatrix}=\begin{pmatrix} -7\\ 2\end{pmatrix}; \begin{pmatrix} {\alpha}_3(0) \\ {q}_3(0) \end{pmatrix}=\begin{pmatrix} 4\\ -1\end{pmatrix} (α1(0)q1(0))=(10−3);(α2(0)q2(0))=(−72);(α3(0)q3(0))=(4−1)
设计控制策略使3架无人机能完成俯仰角与俯仰角速度上的一致性。
2.2 求解
A=(−1.1750.9871−8.458−0.8776)A=\begin{pmatrix} -1.175&0.9871\\-8.458&-0.8776 \end{pmatrix}A=(−1.175−8.4580.9871−0.8776),B=(−0.194−0.03593−19.29−3.803)B=\begin{pmatrix} -0.194&-0.03593\\-19.29&-3.803 \end{pmatrix}B=(−0.194−19.29−0.03593−3.803),设R1=50I2R_1=50I_2R1=50I2,Q1=10I2Q_1=10I_2Q1=10I2。
利用Matlab中的 care
求解Riccati方程P1A+AP1T+Q1−P1BR1−1BTP1=0P_1A+AP_1^T+Q_1-P_1BR_1^{-1}B^TP_1=\mathbf{0}P1A+AP1T+Q1−P1BR1−1BTP1=0得到:
P1=(6.1743−0.2904−0.29040.9991)=P1T>0P_1 = \begin{pmatrix} 6.1743&-0.2904\\-0.2904&0.9991 \end{pmatrix} =P_1^T>0 P1=(6.1743−0.2904−0.29040.9991)=P1T>0
代码如下:
>> A=[-1.175 0.9871;-8.458 -0.8776];
>> B = [-0.194 -0.03593;-19.29 -3.803];
>> R1 = 50*eye(2);
>> Q1 = 10*eye(2);
>> P1 = care(A,B,Q1,R1)P1 =6.1743 -0.2904-0.2904 0.9991
故由定理1.1多智能体系统可以实现一致性。
可以知道在验证线性系统一致性的过程中并没有考虑个体间的通信Laplacian矩阵。这说明同构多智能体线性系统的一致性本质上与其Laplacian矩阵无关!!!
可以得到其Laplacian矩阵为:
L=(1−10−12−10−11)L=\begin{pmatrix} 1&-1&0\\-1&2&-1\\0&-1&1 \end{pmatrix} L=1−10−12−10−11
其中矩阵K1=−R1−1BTP1=(−0.08810.3843−0.01770.0758)K_1=-R_1^{-1}B^TP_1=\begin{pmatrix} -0.0881 &0.3843\\-0.0177&0.0758\end{pmatrix}K1=−R1−1BTP1=(−0.0881−0.01770.38430.0758),ccc要满足c≥12mini=2,...Nλi(L)=0.5c\geq\frac{1}{2\min_{i=2,...N}{\lambda_i(L)}}=0.5c≥2mini=2,...Nλi(L)1=0.5,取c=0.6c=0.6c=0.6。得到控制策略:
u(t)=cK1ξ(t)=(I2⊗(−0.05290.2306−0.01060.0455))ξ(t)\mathbf{u}(t)=cK_1\mathbf{\xi}(t)=(I_2\otimes\begin{pmatrix} -0.0529 & 0.2306\\-0.0106 &0.0455\end{pmatrix})\mathbf{\xi}(t) u(t)=cK1ξ(t)=(I2⊗(−0.0529−0.01060.23060.0455))ξ(t)
下面用代码验证其可行性:
这里需要将连续系统零阶离散化,因此需要的采样时间很重要,不同采样时间会导致最后结果不收敛:
当Δt=0.04s\Delta t=0.04sΔt=0.04s时:
当Δt=0.06s\Delta t=0.06sΔt=0.06s时:
可以看到差距甚大,几乎不能用,因此说明了采样时间的重要性。同时也说明了该一致性控制策略有效!
3.代码
clc,clear;
A=[-1.175 0.9871;-8.458 -0.8776];
B = [-0.194 -0.03593;-19.29 -3.803];
c = 0.6;
K1 = [-0.0881 0.3843;...-0.0177 0.0758];
L = [1 -1 0;-1 2 -1;0 -1 1];
x1 = [10,-3]';x1_array = x1;
x2 = [-7,2]'; x2_array = x2;
x3 = [4,-1]'; x3_array = x3;
x_0 = [x1,x2,x3];
% 设置采样时间
delta_t = 0.04;
% num个时间步长内仿真
num = 100;
x = [x1;x2;x3];
%x_array = zeros(3*2,num);
for k = 1:num% 设计总的控制策略U = kron(L,c*K1*eye(2))*x;u1 = U(1:2);u2 = U(3:4);u3 = U(5:6);
for i = 1:3 x1 = (eye(2) +delta_t*A)*x1 + delta_t*B*u1; x2 = (eye(2) +delta_t*A)*x2 + delta_t*B*u2;x3 = (eye(2) +delta_t*A)*x3 + delta_t*B*u3;
end
x = [x1;x2;x3];
x1_array = [x1_array,x1];
x2_array = [x2_array,x2];
x3_array = [x3_array,x3];
end
% 下面开始画图
subplot(121)
hold on;grid on;box on;
plot(delta_t*(1:num),x1_array(1,1:num),'r.-');
plot(delta_t*(1:num),x2_array(1,1:num),'g.-');
plot(delta_t*(1:num),x3_array(1,1:num),'b.-');
xlabel('时间/s');ylabel('俯仰角');
legend('无人机1','无人机2','无人机3');
subplot(122)
hold on;grid on;box on;
plot(delta_t*(1:num),x1_array(2,1:num),'r.-');
plot(delta_t*(1:num),x2_array(2,1:num),'g.-');
plot(delta_t*(1:num),x3_array(2,1:num),'b.-');
xlabel('时间/s');ylabel('俯仰角速度');
legend('无人机1','无人机2','无人机3');