【文献笔记】2022/07/13 Affine Formation Maneuver Control of Multiagent Systems

目录

摘要

Notations for Formations

克罗内克积和矩阵方程

矩阵向量化

Affine Span and Affine Dependence

Stress Matrices

 Calculation of Equilibrium Stresses

LMI求解及MATLAB的LMI工具箱使用


标题:Affine Formation Maneuver Control of Multiagent Systems

作者:Shiyu Zhao

期刊/时间:IEEE T RANSACTIONS ON AUTOMATIC CONTROL, VOL. 63, NO. 12, DECEMBER 2018

摘要

本文的编队问题分为了两个子问题:1.多智能体形成期望队形。2.多智能体可以完成集体动作,包括队形的平移、旋转、等比例放大、缩小等。本文提出了一种基于仿射变换的控制方法。与大多数控制方法不同,本文的控制律基于应力矩阵,应力矩阵可以看作是具有正边权和负边权的广义图拉普拉斯矩阵。采用领导——跟随法。

Notations for Formations

克罗内克积和矩阵方程

克罗内克积表示任意两个矩阵相乘,若A是m\times n的矩阵,B是p\times q的矩阵那么,C=A\otimes B就是mp\times nq的矩阵。具体解释可参照克罗内克积 - MBA智库百科。

克罗内克积在Matlab中用函数Kron(A,B)来表示,请看举例:

A=[1,2;3,4];
B=[1,2,3;4,5,6];
C=kron(A,B);
disp(C);
===============================================================================
C=   1     2     3     2     4     6
     4     5     6     8    10    12
     3     6     9     4     8    12
    12    15    18    16    20    24

克罗内克积具有如下重要性质

vec(ABC) = (C^{T}⊗ A)vec(B)

其中vec()表示矩阵的向量化。

矩阵向量化

矩阵向量化就是将矩阵的每一列按照顺序排列起来,例如一个m\times n的矩阵向量化后得到一个mn\times 1的列向量,具体可参照矩阵向量化_鬼道2022的博客-CSDN博客_矩阵向量化 。

在Matlab中矩阵向量化的两个方法,请看例子:

%方法一
A=[1,2;3,4];
B=[1,2,3;4,5,6];
C=kron(A,B);
disp(C);
a=A(:);
disp(a);

%方法二
b=reshape(B,6,1);
disp(b);

=================================================================================

a=   1
     3
     2
     4

b=   1
     4
     2
     5
     3
     6

Affine Span and Affine Dependence

可以参考文章仿射相关与线性相关_老子今晚不加班的博客-CSDN博客_仿射无关

引理1:\begin{Bmatrix} P_{i} \end{Bmatrix}^{_{n}}_{i=1}的点集仿射张成R^{d}的条件是,n\geqslant d+1,且r(\bar{P}(p))=d+1

Stress Matrices

 Calculation of Equilibrium Stresses

     令向量w为标称编队的应力向量,考虑无向图的任意方向,令H\epsilon R^{m\times n}为标称编队的关联矩阵,h_{i}是H矩阵的第i列,下面将用matlab实现计算Stress矩阵。

首先,写出编队的关联矩阵,为该无向图定义任意方向;在有向图中的关联矩阵由0、-1、1组成,0:表示边和节点没有相连

1:表示由此节点发出边

-1:表示由此节点进入边

列由定点索引,行由边索引。如矩阵D所示:

D=[1,0,0,0,0,0,-1,1,-1,0,0,0;...
   -1,1,0,0,0,0,0,0,0,-1,0,0;...
   0,0,0,0,0,-1,1,0,0,0,1,0;...
   0,-1,1,0,0,0,0,0,1,0,0,-1;...
   0,0,0,0,-1,1,0,-1,0,0,0,1;...
   0,0,-1,1,0,0,0,0,0,0,-1,0;...
   0,0,0,-1,1,0,0,0,0,1,0,0];

H=D';

然后构建矩阵E,定义r矩阵为标称位置矩阵,pbar 为r矩阵的增广矩阵,z为E矩阵空空间得一组基底,c为系数矩阵。

% r
r=[2,0;1,1;1,-1;0,1;0,-1;-1,1;-1,-1];

%n,m 顶点数、边数
[n,m]=size(A);
% P bar
pbar =[r,ones(n,1)];
d=2;
%计算E
E=[];
for i =1:n
E=[E;pbar'*H'*diag(H(:,i))];
end
z = null(E);
c = zeros(size(z,2),1);

LMI求解及MATLAB的LMI工具箱使用

LMI工具箱的使用可以参考matlab-LMI工具箱_泰兰纳斯的博客-CSDN博客_lmi工具箱

接下来是本论文的求解过程


%利用LMI ToolBox
%初始化
setlmis([])


for i=1:size(z,2)
%定义矩阵变量
   c(i) = lmivar(1,[1,0]);%ci为1个标量

%定义约束项因为seigema(ci*mi)>0
    lmiterm([-1,1,1,c(i)],1,M{i}); 
end

%获取lmi信息
lmisys = getlmis;

%求解lmi
[tmin,xfeas] = feasp(lmisys);

%dec2mat从xfeas中导出矩阵变量的可行值
for i=1:size(z,2)
    c(i) = dec2mat(lmisys,xfeas,c(i));
end
c = c/norm(c);

w =  z*c;
Omega = H'*diag(w)*H;

disp(Omega);

在论文中提到Ew=0,所以w可以用z表示,及w=zc

\Omega =H^{T}diag(w)H

最后得到应力矩阵\Omega


你可能感兴趣的:(控制理论文献笔记,矩阵)