HCS Toolbox for MATLAB

Home Downloads Manual About

Homogeneous Proportional-Integral Control (HPIC)

$\textbf{Model of the control system:}$

$\dot x={\color{blue}A}x+{\color{blue}B}(u+\gamma+ p), \quad x\in \mathbb{ R } ^n, \quad u\in \mathbb{ R } ^m, \quad {\color{blue}A}\in \mathbb{ R } ^{n\times m}, \quad {\color{blue}B}\in \mathbb{ R } ^{n\times m}, $

where the pair $\{A,B\}$ is controllable, $\gamma:\mathbb{ R } \times\mathbb{ R } ^{n}\to \mathbb{ R } ^m$ is an unknown (vanishing at $x=\mathbf{ 0} $) function and $p\in \mathbb{ R } ^n$ is an unknown constant.

$\textbf{Control law:}$

$u_{hpic}=u_{hpc}+\int^{t}_{0}u_{\mathrm{int}}(x(\tau)) d\tau $

$u_{hpc}={\color{magenta}{K_0}}x+\|x\|_{\mathbf{ d } }^{1+{\color{blue}\mu}} {\color{magenta}K}\mathbf{ d } (-\ln \|x\|_{\mathbf{ d } })x, \quad {\color{magenta}{K_0}}\in \mathbb{ R } ^{m \times n}, \quad {\color{magenta}K}\in \mathbb{ R } ^{m\times n}$

$u_{\mathrm{int}}=\|x\|_{\mathbf{ d } }^{1+2{\color{blue}\mu}}\tfrac{{\color{magenta}{K_i}}\mathbf{ d } (-\ln \|x\|_{\mathbf{ d } })x}{x^{\top} \mathbf{ d } ^{\top}(-\ln \|x\|_{\mathbf{ d } }){\color{magenta}{PG_{\mathbf{ d } }} }\mathbf{ d } (-\ln \|x\|_{\mathbf{ d } })x}, \quad {\color{magenta}{K_i}}\in \mathbb{ R } ^{m\times n}$

where ${\color{blue}\mu}\geq -0.5$, $\mathbf{ d } (s)=e^{s{\color{magenta}{G_{\mathbf{ d } }}}}$ is a dilation in $\mathbb{ R } ^n$, ${\color{magenta}{G_{\mathbf{ d } }}} \in \mathbb{ R } ^{n\times n}$ and the homogeneous norm $\|x\|_{\mathbf{ d } }$ is induced by the weighted Euclidean norm $\|x\|\!=\!\sqrt{x^{\top} {\color{magenta}\!P}x} \in \mathbb{ R } ^n$, ${\color{magenta}P}\!\in\! \mathbb{ R } ^{n\times n}$.

$\textbf{Properties:}$

    HPIC Design    

The function ${\color{red} { \texttt{hpic_design }} } $ computes parameters $ {\color{magenta}{K_0,K, K_i, G_d}}$ and $ {\color{magenta} P}$ of HPC for given ${\color{blue}A}, {\color{blue}B}, {\color{blue}C}, {\color{blue}{\rho}}$ > 0, ${\color{blue}{\gamma_{\max}}}\geq 0$

  • $\textbf{Input parameters}: {\color{blue}A}, {\color{blue}B}, {\color{blue}\mu}$ and ${\color{blue}\rho}$ (by default $\rho=1$) and ${\color{blue}{\gamma_{\max}}}$ (by default $\gamma_{\max}=0$)

  • $ \textbf{Output parameters}: {\color{magenta}{K_0,K,K_i, G_d}} $ and $ {\color{magenta} P} $

    HPIC Implementation    

  • The function ${\color{red} { \texttt{e_hpic }} } $ computes $\textit{explicit} $ discretization of $u_{hpic}$

    • $\textbf{Input parameters}: x$, $ {\color{magenta}{K_0, K}}, {\color{blue}\mu}, {\color{magenta}{G_{\mathbf{ d } }}, P}$

    • $ \textbf{Output parameters}: u_{hpc}$ and $u_{\mathrm{int}}$

Use ${\color{red} { \texttt{demo_hpc.m}} } $ from $\texttt{HCS Toolbox} $ as a demo of HPC design

${\color{red} { \texttt{demo_hpc.m}} } $

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Example of Homogenenous Proportional Controll (HPC) design %% %% System: dx/dt=A*x+B*u, %% %% where %% x - system state vector (n x 1) %% u - control input (m x 1) %% A - system matrix (n x n) %% B - control matrix (m x m) %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%% %% Model of system %%%%%%%%%%%%%%%%%%% A= [0 1; -1 0]; % sysytem matrix (harmonic oscillator) B= [0; 1]; % control matrix n=2; m=1; %%%%%%%%%%%%%%%%%% %% HPC design %%%%%%%%%%%%%%%%%% rho=1; %convergence rate tuning parameter (larger rho, faster convergence) mu=-0.5; % the homogeneity degree % mu<0 - finite-time stability, % mu>0 - nearly fixed-time stability [K0 K Gd P]=hpc_design(A,B,mu,rho); % design of HPC %K0 - homogenization feedback gain %K - control gain %Gd - generator of dilation %P - shape matrix of the weighted Euclidean norm %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Numerical Simulation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% t=0; Tmax=5; h=0.01; % sampling period x=[1;0]; tl=[t];xl=[x];ul=[]; if mu<0 %computation of the setting time disp(['Settling Time=',num2str(hnorm(x,Gd,P)^(-mu)/(-mu*rho))]); end; noise=0.00; %magnitude of measurement noises disp('Run numerical simulation...'); [Ah, Bh]=ZOH(h,A,B); while t<Tmax xm=x+2*noise*(rand(n,1)-0.5); %u=(K0+K)*xm; %linear control (for comparison) u=e_hpc(xm,K0,K,Gd,P,mu); %explicit discretization of HPC %u=si_hpc(h,xm,A,B,K0,K,Gd,P,mu); %semi-implicit discretization of HPC %u=c_hpc(h, 2, xm, A, B, K0, K, Gd, P, mu, rho); %consistent discretization of HPC x=Ah*x+Bh*u; %%esimulation of the system t=t+h; tl=[tl t]; xl=[xl x]; ul=[ul u]; end; ul=[ul u]; disp('Done!'); %%norm of the state at the time instant Tmax disp(['||x(Tmax)||=',num2str(norm(x))]) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Plot simulation results %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% figure; axes1 = subplot(1,2,1); hold(axes1,'on'); plot1 = plot(tl,xl,'LineWidth',2,'Parent',axes1); set(plot1(1),'DisplayName','$x_1$'); set(plot1(2),'DisplayName','$x_2$'); ylabel('$x$','Interpreter','latex'); xlabel('$t$','Interpreter','latex'); title({'n=2'}); xlim(axes1,[0 Tmax]); ylim(axes1,[-2 2]); box(axes1,'on'); hold(axes1,'off'); set(axes1,'FontSize',30,'XGrid','on','YGrid','on'); legend1 = legend(axes1,'show'); set(legend1,'Interpreter','latex'); axes2 = subplot(1,2,2); hold(axes2,'on'); plot2 = plot(tl,ul,'LineWidth',2); ylabel('$u$','Interpreter','latex'); xlabel('$t$','Interpreter','latex'); title({'HPC,m=1'}); xlim(axes2,[0 Tmax]); ylim(axes2,[-5 5]); box(axes2,'on'); hold(axes2,'off'); set(axes2,'FontSize',30,'XGrid','on','YGrid','on');