From fd87588a333f5d28e933a395cc2b0dcc83f3bbe9 Mon Sep 17 00:00:00 2001 From: NotXia <35894453+NotXia@users.noreply.github.com> Date: Tue, 8 Apr 2025 22:30:24 +0200 Subject: [PATCH] Add DAS formation control --- .../distributed-autonomous-systems/das.tex | 3 +- .../img/mass_spring_system.png | Bin 0 -> 28643 bytes .../img/mass_spring_system2.png | Bin 0 -> 28330 bytes .../img/mass_spring_system3.png | Bin 0 -> 26084 bytes ...{_leader_follower.tex => _containment.tex} | 2 +- .../sections/_formation_control.tex | 203 ++++++++++++++++++ 6 files changed, 206 insertions(+), 2 deletions(-) create mode 100644 src/year2/distributed-autonomous-systems/img/mass_spring_system.png create mode 100644 src/year2/distributed-autonomous-systems/img/mass_spring_system2.png create mode 100644 src/year2/distributed-autonomous-systems/img/mass_spring_system3.png rename src/year2/distributed-autonomous-systems/sections/{_leader_follower.tex => _containment.tex} (99%) create mode 100644 src/year2/distributed-autonomous-systems/sections/_formation_control.tex diff --git a/src/year2/distributed-autonomous-systems/das.tex b/src/year2/distributed-autonomous-systems/das.tex index 6ed69d6..1c87cf0 100644 --- a/src/year2/distributed-autonomous-systems/das.tex +++ b/src/year2/distributed-autonomous-systems/das.tex @@ -47,7 +47,8 @@ \makenotesfront \include{./sections/_graphs.tex} \include{./sections/_averaging_systems.tex} - \include{./sections/_leader_follower.tex} + \include{./sections/_containment.tex} \include{./sections/_optimization.tex} + \include{./sections/_formation_control.tex} \end{document} \ No newline at end of file diff --git a/src/year2/distributed-autonomous-systems/img/mass_spring_system.png b/src/year2/distributed-autonomous-systems/img/mass_spring_system.png new file mode 100644 index 0000000000000000000000000000000000000000..ef3997f9f8da5a1486a62525274d5ac0c28d3c68 GIT binary patch literal 28643 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 EUs#)sga7~l literal 0 HcmV?d00001 diff --git a/src/year2/distributed-autonomous-systems/img/mass_spring_system3.png b/src/year2/distributed-autonomous-systems/img/mass_spring_system3.png new file mode 100644 index 0000000000000000000000000000000000000000..fab4ae65bd917e6c9f1bb7621379884825c6e6ef GIT binary patch literal 26084 zcmdSBbyQYS`z_XqpE>8+LGrRR0!$9kXvpygZ*5H84QV5P^l!9aGSAGbV;8;WggUy5v983CT z2x@?11xz^9IdB{t{nlhm1sp@*1pRCOPrL*d+Y(|%w{Is&bbRth#kxYaGL6mlbi54- zt3#DpjfT8Ga^{r3>D>8xRR)HJV-^*a%-Ag`#r{%9yaWN3uw*mICnTyi6kfKiYLd{O zZ8fR9U*MNIB$*c?4C!B5utGAF&r5DB5}kgi*RL1^|$`1mN=39 zlT?)|uH?gco}v_o_{aip;j&}G0()~H+a>bxb3_X>1bK4%W7Pb6C4OhJ8j2gq47fLD zFK`)Ugi2d8l27LKdtwPUMkFzKPFh^H2;pijYl?>N(C8B~Ms@6*8Ej-&a2Gxa6Fk}Q zaYOlwTvHzHycf4vOm)w=_yxeYY>2wg6$&3pCzA7R21AoZI8io3w%rEXU&ZE5Z;Vg8 z!>Gv2V;iuLY|)J4{AUrkXbO4YFDJ3i48 z>;66yOhcDUK_0^y+C3GOs9N-~mY=9qZd$$#Q~z$qCl<-^v1ZQRlmvzq+K`RByOoYPA2>4*FMde$xGH9ZjN@HI=9g=Kbk|A#$S2D`vt0nD z@q&pfuVDd|7L~CSI#CKIW87CAo7}>h1I#k?7EP7X50ho|J6azhb7^(6w8hJdx@CVy zp)>J4h}E7u7B>#t2#M@QNfyrD^4T#C{Uz_JuCQF~dz1X#oWKYd`WS%`*nChsEQ>u0 zz8iI9$@y&@C-ak6PQ|+~HqXv%h-q`ruP3_NuU%V6*7Att-n{OJCUvxoK2U3d@x$>^ zq1PHW@$ zA*pg3x3e!b8wy_|sdg40DRHH|Ry|k{QtxKUZgF1cC0KSYC@ES{xNT-r`1FTi;0)v| z2?n-FSrHD#c*o@W32}9UpF=j&{Z*b1`!$!P{-VvW*w8rcka`)d9UF=HcFWqfC8b`R z@VL9OB0Rgm3l{Tsd9?}}ozrQn$Rl$H2vILTqn4b?=5snC1J@OVec0c%?7FI+9*L2= zx~SGL{)w>sy>>K-vY0xI^B?6lyyUuT)ygKX>7R)`{^6XxnH`p`-xMsK2W|uc6?xDW zej&Gu#J3GSrO$bc0+z5wDV(p$YP{9U$>@jI_!#%$L z2aJOvG3s2Q=&IXnm5eajP~_R1dwh$?DTTMv3BKxH*`52}Otw~9sm9#t$OQs57E=d- zhP|KTik2&ohw7EBtKpc+ZML|>(ntDg4mV!$O}AcHoZ>%6A)^$}S(&K-gW+$%g3N83 zic;g(5hRVvysHIIkJ=ndb4mtc#Ojv?;}W;6m70wu-xxKVrXm?zG|1|+V%XC~&uhQd zy1;F=Bv19@mML2^=Kqx1c`gn92nX0XmjkJt^~nd@6+aJhWM(oB6_p6G~GX^^T=&UConWI8xe3R&lR>kr#oR#NDQU*xvlpdW|P_FZ*>;M)l(K# zCMI`-EHoHHbkg2S)w0JkMuf$*Y9;sFeFoo2%S%`jTa_&ZuIoL2n?-?}=KodY>i>V;B_=$2Dc}5z z5TI=WhYxCLI`IdFH zV$37*XRzT?!>p^go4SrjQL9D2p6VMghpLMa^U!HqCSfX_iwcvIm zVy6&czPY>fkn_llnv-=lW&UyK$2fV;gkIo4h&`@UY!~{+6Mgpofint4ePCD=mrPun z{U%yxnR9PlvJuW%o?4j?;JMHKI5eysHsxlq>fW9y9(P@B-Dd5?7;N-Mo$!AEGq*k~ z(FwW2VMmdBJ(LxCK_1Ta<@D?c!h8dLIVEoZHjy=3cF?y|mY>R?Q3kXGz4*@tR9t`?mso0b}? zT|D-FPix0WF*bZy3d{wk;60!66OAM(Qmr;uHucl#ia$C+>)~{H`u+8K#DBjnGtmh% z=AT-vR0uAE!Nu<1t=r|t%esuuWuTnUn&hQ+zb577%B;4C_r6~z^W8(|JCF1@>A|z* zBYnPCQ1yeV_g&An;HxYK2ZLT`)o8Z__f35kF%8bjc~4jq0}=E`ppc0>Fq%p6Y3Dg= z))xlx0y>`@cOeipC$9V& z$Gxcm393}=X?;a(5gK$53zkDC-kunSAtw>jGK_;>BJ0q-6R_YQc;NbPepQd~T`lB{ zR51wLANvz~-=A#hxNOF%Zd461{`Wp;p3m$0i7ItVKi?@a(1k8QeC^im1G5Xsqn4b= z2BElZK5BdNS}}*60|P}f0F~ifG?3g>fjB)qT=m^Wf?PI;%@9HLrv9g1R+aH+T1Ke* zp8|#G5?#ySo$tP?byl#D3hOAI{wi8N1<}6)~O6mx~|z*v9*xIiR>}l1Cz@Ql@EIrAypG z$Y!Fe2}M97rk2r|Gg9;9DMuPR1w{h!!in9YmFeq|P%}^p);R zbMJ4lvwTDd>=OtU8xC?2R&ZALNMTq0P~Wme#FgF$)J1jD@%mtngM@(;+hQ%=4nz zTy$RMEAV-k(y$&7!PEKxqEnyZaXJtk74Iaxmod(8CXrx*@;f@J|#&RyTRT6 z^s76NH56fQHU?r0r^~c_)2o@*XN}X@eJOCQS}s&vcMJ2OjCySG zbyv*)oMKT*Q=hC4Cop&MZW*V0Zr#`$Ehf6EV)qCzRB1>3O@1^lrG*nJNm&ej{V7pn zJ+_B+t+QG**d9r3^+GQ?DK2mQbj-fFAq*=>O2vu$NJ{Z)CZ$=^`{BZFgnJtf-U9m} zLg2BU&0>b>m`@#(&+VK#ARB;0ZZ0+xRi^%e9m@z3o~cmJhR%W@EUKgumOpO;wAlqc zdxCLVy#n_VMDtRqje0+lgN&PQ z8#P~Vn|dzh* zcYf|5fsIt4R= zo^icg6S3Y8q)GzcERe{VoAOs}F7MAq#T=!;Y)gGpq%g&|`U5LRF;`OY+c%SL707a( z; zBX{--K;%76sP^0g!X6{@5Nz5M@huSN2taKNGrFwcfZ%r0C zzU+R~lIwB~DnYKl(cI<>3YDs5n-tH>+0*#8dy&WUe1X`1m5B_!^4&v`6brAquTR#) zmR+-aSW^z#CeNIE+@e-om+XcZe9H^%G;Mouwybe?S^9$Ic;`WKS&ly)r;{|xO1$g< z3yL^{mqZ4?C%}$lU85jL?fqI{t>t_YiXT0k`g6UZaNwL#pxxFP95P4=s@*ZayFBpq zk~RxUwH@IHqINItk{>9b2ZF{Gh-I{!#$O9n6(Hz77c-Z~d(%HUA<|(6mj)7^x~KdW_O39pW5rwv&sV zk;8UF;d?&q+Kcv>h%pgv#Vr9$I!K5*x7q((t2h@Olveh>7ONzF4o4yM{iQ(ftbwzf z-KHL`X3(3kZ^5jROXhuF`GI8$29=pWFi|@GZ|?p`o|!LZn%BiwRV^Hj0v)>niY)`v z$vm0fOEyAf{<7v%$?6|)cpM-3Z#H85J&Zuy9swsbB40$xX{9;FZ~kXE)aZ@oP94if z3z7yTMf$6^HuAj}D2Yu?Jwso0sNO@<(`|bRe9H$MZZy_jg-3f0#WAE^Wv7qY=dT^l znU^OT(t8cAC{xK_H&w4dEzdsHLxg!jAFQaT%tuN!6CZXxF!VZrKyR?t;D?n?95VxM zU?lTxW=6(aU01iYAgaOqbT8VV5g(YB(70;x>Rph?^Jp~Ey&rFw%b5-1QrjNFNqAtF z$wQ1^zkWv+?pXVA1fe1&CB@%`1FXpcxBC@^qZ4FU++2eN@S%oRaG9cSfAuC%INhzl z=?!+*=id0fwVqa{jMg&!P~j{>@wDWAMBtCZs7(6>-gTcefC0to60GD-e=f}eU1c#YcmMpfJ^A|rxXF7v1FCiY|4sn0X=q=J@(GH6K{1#uwwaF zNh&O8i+)9CkCt2KnS-VJgHP=Xf1>G-l%98RX7qA2mE^cJx^zPx9$A)R06CnDb04ty zFu%R;7;xD6dgmL>)qyX8Fp!r?M~Ea>++tc3REmAN?`hd;rOQ>d?aJ!*+xGH`h;Y=l|NL6Ka`w zBKpG!EbwGoH5j5HwcZ?Bh@upjT3WhQ67hTVE`?-cv5MP7F~%NY;!?H$gJD z2_!)ggGDopD^$u)ih9S=8cp5w>a|N~6Gy>kqY(-mSdRJ!^C@RhKfc)%sPMecRK6UU zy#~ErHoV2c-q<^Nb+N(-ZZy_Y{I+Mb%JCd!NbkO}lRwR_4Tmekw~F?2EviUu^j6;HxRVDwDMiM6%aVZ6!%V+~ktv7qTk*Zo1jH#uo-9+UqGu z->`5XqbW=|$QBRZW$z$LvO$G}o#G_3EU{>9Fz!1OxkhXep$n)pCRkrkt>rV#+f|;U zo}txSG3IB-;Hfy&8%88^lsvoJ;(kTA%{o0vSZ>R*C9kK#n2j09d98nt@^jiMOVw!l6mu}+WYT%^buGe9v|!H)e3TS6^cQMnF9$L z@t^wyRgVpYgC0DiW+-juE#>vMgyB4CS)UVsx`Zl5lfoZ-wt@maPCh8vPWxDO7zI3z zyV#TK6L?~)Pwg+!;a;H-z;t;8yf{!1{r0vK77Kugs?YvT+;$TZR0NsWhPKU>S_wU9 zIIQFO6ixQ=KY#e6>cyG7FH-i^H5;1wbx9r62isyU{Z*ypn_ep=>vqnIE+X053RXu| z`z5ct14OQZ=l+S3R+vYeIwE>@qN~=^u+8J{ppKGBI)SOf;vpC=xw!wjzu?tpsK1iB z7)h9Gu$IigdrZmtN{Cksj)lR2A9{1=4bd$;7SWaPuQcxW9RU3%C~`5Nq3nA5xzJl# z1VVf^r_z^bo&ZFrePuy3*w*~^9LUOv!1t0JPdK<5(^WFG`a;lv_{ zI`bX-oI{s&cau|Bzx7Ly`)X%^puQngyPCKA>zzgifuxXBSk%)(!7{ zmY?P}2!|&UYPamS-9*-(_U1(+h4so0T5N5)g^2<;FvKGk(6~3AeFKM-VTN~EJ*W0} z^bO7y=pBJJ)>gIBgM?Jv%YPxFJHt7pz# zEroxgQKMNo<#wG(D4kJ{-i5WmdcX_%JH0AYE>!GJR|?UxnUD>2~GS> z*gu=0*bnEEa$DxINS~Y!i4zbheLl?Z4*Ng%0)qN_Ub3A?Gvf<8T(8K#-KFM=4MZ@7 z#r2f8J(_KGHar)=Q-i4tTSd!%(ge|JN~dXu)STf2)Z~-NL;W>0cFS;4huKC_%WTP> zN0IQ;obgfmZi5Lwr3`Ftc?r0wHDq@M6nX_T4#7VRw zs*rDWDa(JIBCqBqL&`t`3qxck83WDxGh{ex|I%>dV0OaokHgNmmv{Tm-qIwgulwQK zMnjJsvSiq0@jXh_6xL4}l8IS@cW)E;J>BGQlGE7KaMD(O#V#<@`ymkJ$VbK-d_dYf zyV*`Bo0;~Ul;Mn>s1}z^n65RKe-#a;U$-rEU* zBl_?HfpTb+KXYZMB^-&&bbmoF>w`t1H~U+JW5W-S^p)gE;s-osp6k2$cA2&$ zAIT{hTw=y~5qYPB-_wH&4fewm7{W$WX)fRYEOUB4dQ>;YV7+v!DQ#KVc9rhgZvv-RFN@yOlxXOKx4A~^w6kg;k@$h z9dFWsJ>p4)+H6b8}pbjJ@@g`j(;jvK}N^ zI}GKeY?CDjUdCiqjLXlL4TvZN|@*{ z>S4;`k&&W4B5990m-{;RXjI^7!9bZFzEU2!ZLh2;6hG{QJ|575iRgDGcNvzV{f9<2 zsQi%rjJHQ)nf?ut5AR=BA2%{-kfA_kX*`?C3H(?^hpAhtzjbTHNFE!xhJx;@hg6Nz zxq-%1Rr2VAsh;2VW$sW9b{|nq9IhVhU6}~0Apz>aZfcH@5!+}0Nfo_$fkm5DN(vt0 znFQ*bAshkDpe=uimLTD#@?b@#ymr1O>8CpqWczt1othDY_}8$9wU#|aZ{W;44)CC= z1u1V$s%_`3$36@JM zuHC0zVs;PQfF>FHdH)^Z%MpPVoLPazyfQ@&c+v;|}(Kh-6K|wuY0T zTMJd|w%nBrl$t}Zs(!dgV=1$#S#bXA<-Xg}fMu|-M=OcqZ1=0f-t{@T*%Xv@A?lGgMS87k@VOTz^56S5go03E8Qq6{OU=q$m@uCkDuw$d zUxMFUpAekvnvUyhc<=dv{#;o-bXi?ohq^qf%_GOZI6Z2Wy3<1R{jS8cDtN-h-^xxq zgDs5;MSCPh6rJme1{x)CMIV1gnw%3r!}9-l0ZdY+*8<}DJbeV}i7H^&xr*No{7{Hc zLcV&b_Q}ldHf?{%YbO`LK?VnUYT{6jcXn=o{gXP^R7?eYRJ-HtyjMo^FiYf^bdpLy z6GE&a7nP>6$UTCERY(U)mavGzeU;c0!`$@fNa)z8c7uVAKvQZB(xmr@PD3xRZ0RMQ zq3D(tF{!{tOjWkY%Z|)Igr`Ka=`u@LMhqxTrCrB5 zVK!RZd>T@_s+MDH!;1)s7tZcW&%AerbJ#JB16ds=QL|H-st22iM7@=RcBGodB(A{N zQ*TlnRxO|VC7e2qvW|^BXmSXNJ{T7s7$2QsUA^8nhyE^tyJU(`E`BxZ;QPnA${O2# zo|ho`x9BHcj!#UawVqR-U2j8->?}KY)i5@~zET%+D5x*f?rj+j`8B?e1thjp>G%0- zd=$bOPbQm{&-&5dt1~-0zmRiuDwyA2pZNYxfV4Eoi&7Bv_OeX*e2IMfGKbilRmi9% zcEUH&Ql%jJ9qaAiQVmX}8(k;D7Fh2qcJnEGeH>xqD7U4QlvNtJo*s0AEjVY@c-_^O z3qZ}A12cjEs9_8y66nuTS|Cc~O|&(v8LH``qj&iyNUy4)L>=JY)L5$wCY)mp7qd{K zIcx?W)oi?E{84g;8Z->=dhcI)2aeYqMlB|v8ro;}>#+yRbq^sg<{x0)j%qbJL;*DP z?zrWd$YCafleD-*UPKewV)wW{&KUnFV1wE2QOUlUz-5~?7Z>;5pn>AS9dluzxzMLV zY#u%I1sV_qOrTJdrH?6aw31cwad$O!<*8IRv8*{F>Ml4}+ECS6_88n!KhIutgTRf_ z|Iy_{88rGTvg})=n+j5;wd3D;;zHvNQHQ+JYcFd&{V>8rNL;>ZBn(g#8%c+t8%T5P zPL&dEeCtJQGPmEIzIk0N6S8=j3qiyGqno#eXSDum;;8v7ywJnI(C`LrW&xK-`58_M zsf00y-0_TwQU|X^%uzW9<5#TyN8$V9gUX(3TP!<~=SdGkzFKSTsHamEG}7NvjQD3s!lV(kYv*rE^3QyjY0%^R74q|q09)5(_K4Q3Aag0#Q9 ztj+p>QF=R+z_~S)6Ob-`8I0N!j~+La!?_i2)_(Z~;7`GuVNxRt`ozCZ9iIc*!*vgS zV96qRkl`^38^HyCiyirdseGBS;ncEfD>>BPf9&bqZCP-)BQyU-kfXUWD@JRN9!Kzx z3C_B*7FW=^F`z5F#xgu3brmGrqDcno7M(P79Vy3NQthD`0t(Uy1;T!F>=y$wUHnOf zq7jpa`iaw$1y`z+Z8)C>OISxYx5mW2T6t2cgkp6~1<1FtsE_Cv zM0z_!5^}mLmDK6ql>ZYIm7WXC9BgnMAT~Ci!0@VbemEjTItX;Wy+>F;jn0o_we3u}o>NjFcTE!gL zu27CoNTJHu6gcAQ@6@@ozSJP;maHOJ=&BIr7XcA0(Y9=<#hvJHC0RWm!8FjZ!W8U!r7vV663an>CDw zPjs3o)w-AU$}8p^!ZRu_3)8m;aL?!$0^%9baAH%I zEBSQyZnMl@J|N{$s*|Go-k7QAH&#y=D3wf|t50-%M{0|o9^ z--c^*<70%qqjb=5|MMh9=2=td@|OO7zk2jNKLV8@er3h?*qCyY70!s2$e17E|Gbqb z-i)7KcVus#P|Jr43vbQEvvhVzf2{t!-|N)TMmVIfFRdSd?kufNfBmgVtwpibrfMrq z_+-xhyNJ9e(C0c4EO37wfBIhV1?5MuM2(LOJ7N?emAh4Yo(E~8&DL7TNB)1?K%cYA z5S)L>@33R3v{s`V=O-TaBCHY_1P!`4amIg8GYK2Qf8QxdKH56Fp%+S7IRiF7$i+Qq8h$F8Zdg;)5Xki{yoxj% zss@UvJz;+m6+|yqxwUycNbbzi9MZo<1$D8ktRX;p>1toGj&OBNudmhi4t&p*jCBYK&B}R8qd}VAeGrRt=4l~x z^Eq_G1qV6!6sXnhp=T9YZ@O^YVjxP{zF$%m((ewNK5lJiLinsM_ljCuGR*um(p1}> zRyQJB*{R&TU@svwN>KOEQ#U|;5BKArEtI*ZXHgHx4I0fI7T{*A{AR88QA|;!uC7V2 z${@X(H{Nhsh)1Dw#e|QS;q?Tm%nZb|nE>cOfM7u6{k7 zHCyi&wkptvwaq1Wj#}@^w%6qc8rFj8Livi8>2H8w%GArCZLT>m=c?25J-3)z@_S4b zxz4ipQ_HO3ep$N#3RbqNeqT5$OML}d{W-P%n|BQqGC#~~Eo6;ExV0pR`^|);=Dh^z z1cw4nJ`041>jKHks6o00N^1Rr#ag8B*T4Shj%;$Bks@JwDh1~zN~!|S0jo5?!Dm#G zRu%9Z)^{27YM;$TwX2~9vO`&Y6t4jzs~$WmN@M=5beHfz*q^{c_LReF!DOp6vFj46 zg41%&V5)+GxR`vZkp*gO~w1;r2u>KuoSe(;)lbhIl_u@~ViZ|C=`ocuXq z;wLEAGQVZO9bWeDc+&;Fq|)9OHD*l5=&ZefOTEa<4eiyn3h~e(=g$i)RNPS4V~*_~8NeMtsZsa#OILx2 zaYJlycw8SkDMLgcjGXOjHlX0+pL?=cx!w}BuahpqH zyN!B734oThlY~|I?K59mS{h)`PpGzAI#if7#}}?t0h1I)`iv8DC<$vw@bfdvAO5Q9 zB&KDdJczgjhuSr4%BPgcA4Lb;tpaKtX*Y&02$iUV{=9;S-E8Bobs_D9sff!4_y7_o zxMGuW8Pvs(mReqJ+Ng7fdcIj$Jg^6K1DCLdkLz+qUq;~WY*c_V(fOGL@EZBlD}S7w z*VX`xBfls~raCeAC1oj?SAPtLJHJuByE;0$YYlzbXk|Jxy_OQV66&p5u1#`HK>7I> z*-a~OkH`#;nBMt@CP9-?4CR6GBysg~*ht_<3K_{DYQ!ER)gLS;CRUf!DlEuxvK~g|hjHK)ryg;In_NoIJ$-T~n5@M0s+E7M$L@$=caV zpo;C>e7lY~V|Dfrli*#TVD{?%1?f=mcb{Eo95MPei!=opdGJvr+2qD~``YgquDu=5 zw;MwKPN7VV0ZH*Fy7hvWGKp*g0?QUK_IN(^71Tef3g%)d5zA_Qy;!q#e+_=ob0J;-q*nxiDa?-i&+?Ww@J#6iT^&#>+xs*=QmHD7cZru|} z!ndeTihw`V(g_v6x;{i4vf+18LXQ$eDXgD@p~|{1|LPD4YoOu*!J@ZoUm_F!icJ>t z5lFv4!LM@SQ&6UTO}C6YOJbp(3n6wCrX%lfwYZ74Wn%e2(eMsG`$gSTF4ETZUyb@l zz>syHCoFs2mF~oT{8sVym~ZgN1>vok{#}asKR*|SloyH$gUNeV1aFmkBVuk*2?zB* zHZzK`o8TV_Nt*1c6u%PSmrdE0tmnWpkvYqy*qpT%3pFF7!8K{-?PuIw0!| z9?ZlB3;s6y3tRp)RjT2+7&s3OX#ep!16>stG`RadSKo(|*h47g(lob5g%rN80?G{4 zE&W-Sc#e-yfC(v+a~OdrTR88jc=o>@gKXRN-YxggN9kk^hJFU~g?ihGa-B97KBL?< zpEETeutOcU>b1yD#LJ8fhHF`{&@|7VoiOVzD*3V`I(^l)>!N3^8=k@3ky#M<1jL3; zDVBWzK-tRrAdv36lFTe-2vFpv2vQsAJT*G* z;T|lt@T?sOT(9`Qgfq^>6E?nD_V)gR96`a!S!XhqAt)k7>S{2y&U^7kDfgTn$50?i zFP@CBMu-bwb3TC;uufIZ7wkuIw7hOMMHtj;sEc&kyt>h6M^br`SsJ60{$onI`T`1i z$P$2(S@-uIXVtNEs<{=LbZ@@S8dz!y$4~2D{>0l(_x93-fivtesUU`HI|1@2|1n>!2Z`tT zxS?B#WY5n_WFy+c_ZV%u-F_#?#ayK#R%~F}@(c_PMpx?hi8hl=HGV6mErbsVGbyex zJqBz&Q@Wf?GDj?V?_qEVCk#+N%$@OQ?fMA5}5JMeg)?WTHThN`%y5%CSs3lg>7=%tFTP%XHam5b> zdhXj&PhopIQtLp90$_>fIF72OZ9DW5Xm=Wr_;_P=?!(cas6;B1qY8yHy8G)_-OS|V zT`6$A>X^?Sn8D2kYEY!A_kkm*7p(pdTQPF{uWsAvf|!xjJb;M^!Nb_$1&d$eTHx_Gc7ozyi+Nnas!20zRbPdMY-Tbf-B}QTJ8&^oT=CKn7|Z zj?%@BXOOIE=c?5zPDMJ-U(G+;$EsN#K6>9sjRjJUxRZIFD~vlYd#XBsmWK2g<{rvA z3Z7emmcvR^x~DJ1&ky#jIy?N+uFus7u#=HEXe>z`j#@YF23`c$m6o3{QuLR32IHj~b!fL^ImQnlap5ikuMeVu^ugS3R)W~*MqW^weXqK5 zBx16b(u&Zr5DxEf7!fv|HR_hwSD3BwUFmIhS0zEc9VZ-nw7x;v5MnMklCh zyHeP+01(xBAOq~HVT2ER6B2@TJ&bts;_T-N;aqFK+8wW2u+UUq z+3R8I0Wx6Ay~MMpcQ!!lcxIc{HiNpyw%S6#I4jtWsUm2ob$JO4qs~=_2ZcknYCTGb zXzR^ZGK)8<0JN0V{dlj9Q!j%u^982FIx_1COQ1v-zuhIc((@ zN#ApWysdA!+}Z+3FI6NxZhSb2@aA2)Flc;{nN7z;#9|;GXQ|BO@bm zhl@?gd#0wQMtc5P5Oy+;W8W0ltwi5)IsO|1)7h$AVnBPJ4s$LiY`zCw=dWx0wx@@q zO<$Eny|R(amJ701=dzLPVwRC0E@)42+bwJrXe%g+3$(@F%^QGw-J>@4Te0 zjnDO0n02$wuJ+C7S~Txy2x@=@?r%F07Xt$Wn4me&P60+U;63}Jy9mH?7O-#j-Cq-N zTG4;H+pp#msCa|#xIe@E@2+uylG#?qVX92a{c|$>OB_{;y>KFsSlF%lN+HA&7xc-} z!U}8fFb=@m=8Hl)b{M!9j6?U`3rfIhgiT`G{YEh23|Q1=xhid|Fm`i#dzmRtR=T0( zEGg4`=fYt_U@;iKc87Go+w|k0L#te@Hb=+F&GLB@eCJEJcZ$L9@g}b!qT_wk{=UV! z(g!WNJX?|X zZ>qP`+-2P^_tkd$3LuPyL^VT5sB@AMpScf5zE$V9fHc*5*aWQT4ac1*{!WbmH5~xI zAWrp>%d@6jM+Pjp&t4wj%ad%@z13Z8blm#%^s{kYq)Cn%dK-byob@L{iG~lBBQF;H zAuPq^PgL&pSYg*C*;RkUn#!U6{A2(C=WZ6~+&A^c5KAajqM|zrI*Jvj3PCRyic$(dQhCpJaQ_xu{yjVltpN8*~J$JXA}8nID+S zh{y~r1>|pAFQzp3SgrB4Tu!344BFA*-1+N)!&__s(3*~9xfa)ebRXtzU5vnx1ULhB zy0GZ}qTHK(=`5-p??rs|v$x0N8F@`{35}$1vtr!S{C@W4vsjr)_N;N9@V^jI5C%#H zNxf|Q`DF4r@(d$>?y+Dq07N=4ccpbpfU9W`MiaQVQTnp^I8)*UG8TV&fMSw7-@AmL zC^J)Wf4<=I>vh8EL<~!${4QOr)DL7n*Bc1k1Vt3!?{u-P`YROvJ8UbxgvHDVR;A$zt_q?H^(d=4}9YV zEXK1wShaM|wmJ^d1*~=jg0AWQJ4Zi2qU3AqF%pw3tB%Gm@x9KQ z@oeVj8|?FKx0{~p?NLx%3!N=S7JJE88Op213}SCbySTouzw#j1ewV>5-Ue;@Hk;! zzVPf(?T?V9`r!iZaiP#&!f(Yf|NayzMQ(iw`lwE-3PFbD+if~*9J)H#;asxqBdPMZ zu~UNGZuNrYm?dbc2f24Y!$*eu94NZz23H(iO@PUeJhp)N8v@MWy9YGztZhrH#vMv5 z7r+*`A$q2t@Y6CrbJg9;<29yAVOR?DrP?HT^5LvSwq z$FbKdgv;_0K?s{R<@_9c$H3*kxNn4x2rCSAqAzbg4Sw?*;5i2I)W`Ivd#YaJ%x6Ox zPOhIn{?0Q%AN+AYV%r5w!q9|>y&nN*e?gZsY$oUTGS^k=Y-?Di-3Yz_Q(yt>_s!Y1 zSPS3Te9C?R(YjC&=?E(7n2-&o@v1OdJX@$6JrZ&3HQ33dK+9#oh1+fP>&HEd`=tdr zTU8?Ax+bKzQsQAU{qX}xSymauXn?9Jr^&6-*QRmD@EPA-ISQlLd4}mV2ni|mXs(d* z#N-GB-#P%Me9M{jc4jK|<$w3c(ztX~MjC27J{)-?8qO=5%KxT25d!;nm2L1Fsulp6 zYCQ_XB)OVP({a17t-)C~sV!D%z5KU>i>?7SG%T=zj>mJ^{f1 zn$k>1e?~;VBSz-lKUSO`{!JzbfPb7^ z*e=c5hcV&LKa+qyW*1*=zdMM?x>h*Knp+!V&Z& zVX);b<~ja4o?O(qll&(|yY~Q$v_`1Wc!KR^lJLFkqc%giQSFePy_clhbSP?90H}rD z5mNj$dEWG6RPqm;&PjHeQ2Ar%59FV2=F#V89U_&*bxmu ze%7I+^Z5Tjh8IRU(ei<;Vq%!@b|0gKnk}# zFPVR6a8x>&(eM|XU4jT+06r&K%9pp^7HwNnr_)lbgVDP@Pel)S0dTBs5(=XUes+Dw zGKz(at4_V4HSUiL^9p&}${`_0a0J*SUbu1$Gvx6*KpL;|4cUUh=Q8^^6as=ld+Be- zv6t&+zb)rEVs6HHoWFLRO9-)+gn+`Gk)}$!PMCkK*6$Z2OZ_dLMMEx+cvtYyZ)~{L z+r$(wcv1^mTtYVJ&Yk(n^#2*yK+it>40)D^#Un4glUjP8j32|7`6(&HXC3>_Eo-3! ztk7SPJl{oeN3E=?ES)ovTD}TUsP_=5p4XX-XBE_mNsuxUQ7TbVXY-;XQn{TsFu=Lp zPL^?USKmR}V}rxMb4Xy6Njd(%?*+i1ilSl0{4t9VFCS00RdI8ii+F&y<$Y3-=WK>2 zW|I{e8*3=J5{g>M<~JGGw4=U_$HsVdGeoGE+Map0+qj_|47|7q3_7R2xE)=rBGfU?Y_cxLh-x* zX&r-O_HM7&RKTkjMn~}s8kEod3yrY`(!cuy+rp5Vw{RWrsJ=nB=NsINuE)vheeZ(l z$|9dP{j8l-dBxHqZ}CNy$ixQwKF>t?g-7;Tn;KHOP5W}vVw60F^TEpY8W_PK)ID89 z5fPC$)*-a%1g0N5@H_Y?NG(|mMH}{^oG3bD?LzykLYNj6`?_?_&`x@ccs?{`~3r>Iwpf>1VKwezpqly0z)k5BY+c zil~q)xD161&hR$gA?+1kMAAsTuAi~T1T;AC!(fF7>h0lmQf`$ze2KuRe3Q)=`e4$| zNW_&`Rqs?0h4hy&vQh)TtD5v&o9VRYp7#q!u~K_&9Q+4d;=g}R=ue)p!K>Gv#*3xlPpDE?}PS zpzj&pCHQOqs*XZdf_RX_1n)4i`M3E8>v__n=a)(x1{15*Iki}Pe0_zlL1ArqV#$FA z+3cW|TOSSOjE)8k8MWg)Edrk*Y#mub$JURb5v%H?vu9uT zJuwBBKp){>lzsDodYXLq%wC!xxmoywuvwP134x(WEYYFogJf3zMW3}iNMBCV)e_ClyoKUoT0p8i#BFdAE3d!g)q`O>L0kNzcPgdp zDr|EWHG-(i%nUqLszdb1a<4CFi{NAH9y$k9L7M@+03@3d2jFt!X6sOqkO@vu>SjZ1 znQoWqLxB?T+JlUW$Ck}=W|9y*vT#mw#D|m~AeIa!LhD@Q!F^siT z6-1h*nD%7Havqa?&_i_h-p7vk3_F>CwYCTB8t6{gM3}NuJPhAb3=~Hdu#-H1jQy|H z&N?c}uHC~ZpdcV3B_XJQR&>=`kBQ*mZ3Ii!FX?pYdT&UzJ8AqijD( zVw!MLO(O~VAe}ABWPk(_jWkoTz3l-#ofceD-U)&G z@5&g4A zXA?fD^a#bl{(lgzaZOv%kjohPOT`x z8m|hcBZ79k!?W4tM#F=xx5LQtBdUzP>P?JU@u)S&fu!v>g&c#q@%<*&x)*k=ai~LB&9QOL`>t{+^JK^$k^TMabL)1Wj zu*(G=##fOrTQo($@75L`Yfw;gzPqaB5}4d)5{;i+H@WXmM9cJaR;t1u?YyZauu^~^ z&Zpcjhd|p!#((28I)Gm`UbK>{;<2~dqOn!#67RAflzS6-Sg5;sH@Hu9yS1IKiO~#; zLG&d((+Y)hB>w_ZVFy%PaVeB|hqMmwPeYhwIc@K(p};%QFC`|SLq0VG9s6Z)tx&fz zpNwnI>+RX6`oqiZ2EQr)53p3{$+ss8<=S%Z=wR^ZwF-Yw%K6PNoNbD4rf%y&B%lB~ zkIp^z*WbEN!C2NnOdA3?NBhM!)H0veIMQ~3U&Ngyp!d~bXH9j_i{Kh{cUHxMEzbh1 za(pOzgs?dT(u{X#5Ng`ZPdhy(t{BuiI=j)+uTNhjTXd6*$iT5rkS{!zt&1pA@;IXW z#f{Rc)&#$!4u3*&0D|~lZF&o82@eSt-8{jj>Y7*am8HdWtdY*QcL61oDH-SXTGqPv zrvdZk>(#HF06#<64;nIwa)zExSzraA4eXzLZtB#TS66FQnmpZ$m=b3;8z}lbrJe7_tV^o@Bo6SRZl|@v75g3~_gvHoR7@}qvq~R~9(@v>d)93~ zJ4!HIp>v1Gn2Ew<5>)kt?dY^5`HzV3JYZ6s-yA`ZF9}{1@Lp#iP14varPu(SM8*x0 zZXCcOnt%O=cb2D&|$;~*T%+%X<<9362n5vpga1n|rvVlzFwF_M~vP zS4W&lM#-W1)Zgg2!fINU{c_+NQDv4dO&(!hhoH!8U7r)#4dbhnIT(2J=O?w}J81P@ zJKc-6%&hds(t;6<;TJuZzyRT-m7@myGe61nM=#hx)zaydWn}s zv-hseeXo_akWi(nO<@gZc((0B0)pL7rRiI}wY%f@=^+W+yNt)60P)DP4CEk^|FEnQ zEgkON9{jzFDLhXwj@YB9dD(3I4bNEavY6SkOT%HJ2wKT~7$ej0&u*(U#>abL|CU7F z`iw3Yv3P-AzoIWbHSCa!KAg7f1FiY)Qi=M1!K(_S!W$gI-BNV1JcxbIg&Fj|eWFHP zu9LV9oHkBk5+Z|Om&2{fR{bpXaTCw(Y7t%O?^0=$taJye>Do3J+LG(`cD8`LiS26q z-FQFr=?8xTMMZ;IX*t_7uhLux#&nh55 z(Xq^G8Qg3R3t}NHw!a#o#8r3H?5waXN9ml$X|&SfyBG>jFu6_DZ3$c8en>mXU3MW% zq1jq^5{h^9Yx6jZnd**zdVrmBt&*!bt9heVw{IEIbik$w(dUIAlTJ5mOKj<{|C^3Q zQAtZH&T6vszLC87X^7#jV~G?~bB02?K_;{W_tunp*LD?Y|D?@_~>|bv6+~c z2LBZfzY|5-*0}*%%X%G7;v413Q@R{OE`^ak_71^(mB+1u;}FS(Ox45EzQ68|qOy2v zTEgyVTwhj{SYb}NCE#^WoY}U`VXCY=@X`Az-H4y1vLq%`J_`Kb``m}IW0+xNEc0md ztyK#?lhU3mY%x#uiV~uu$sU~sv&*5r-ENm#x4@keHYN2qq$p7{p&AvmzAu10{Ycmi z8}%O&U|6{fk1y^OyecqNx#n~i>LA0Dd=TAu8WW>L*GWk-spK2^VN9x8qtypsCRVK0 zU#?kwWe?YLh6`cO@vVH%Y&24V`34p^wPtYbtim!kF;r695EMG48`~3_RCgVf*PwIJ zt+LzNq;(*;vSAWbQ~1`Riy+#$L$@>mK22<=;-8Y@gP{d zty$}i=jExpkL6A18Xung3sAe@~xUapsaoHA4aq6ZR#r>hAkM>~xBA^_(RY)a*O;5Ffk zPXq-Ng2S{$Zfti~g!&=S8C($Pvp&nWJ&iF5tevcFzh-;jG^P0R9fNJj0B%Umue}Y@39>=VcbJzQakeFdV=*kR8eJ1&i z7+S{<>gn9ORki!^j^!aPa8m5YS2dVT4G;rfmRx3#;D4srR* z5@1ZZ!J&z;v#u@oL}HKki0b}#*NBx+TzXZ#BC#*|VSC-3bJD?m&_}NNE^a=IY!)@y zyF}cdxMi79!yOgr(k^v*25g@rX$3i=g3pc`E=bO-T0fETyY4PFPFz+mSwKI9w>Yqz zoW+G-^fksNgE%sqlT}16ka+JrC3e`4ob_Z1gk*9ljVG!VQ`h=lC7v<-X^ltqGOKmOv4vR0|eaA2%U-Rm9p+WnJv_s$g?_Wg(Qx{~Mq4Z>+61-NB^3p!iHjX9W}1N8#;u z+8t^0#;T~d8t;+sVeb1jjqTcj&Yut?e4%goZoDGoz}sF3yDj!b6iq|2o>%_qBe|dE z+vkyv%bo;;UHP@v{JXIMds4(K0cr=XzAJHsb7|J7B9-2k<;miRXBhjqFqBN6>R@{l z7QpYMANsg=%>5&(mMR&FN#{Ufw$b^J0zD;4Bbf~=GeNhHHekrO6oPovu2BWToY?o~6is$ZNK3)-lev=yV zmvHU})hWr@8=3&J8h+vjyV~*<5l}c-NkKwgF?X6?TXoC7dFj=|2!w_0LcL_E%BU|~ z;x?jqV?d9fc4(WtW-pAd+>Y~!!Ar)EQ>lt(Dh#C7tBt?ww%JlVmZgJJZ$CD+C|+ia zJP;U=7;&^x1?lZaL+PoFD3dqB=Hxz`qj@XU{;j&H@VuI9ywFU;s90UJdc!KjP+4gm z@|3)TYzyMm>TEN(S{=n6)Z(72cO*#XG*e~m(OAV{6S^R_JKKfIGq-~qBa5#j))#51 zVeTCp-y*;9r6HQ>X%bxOooK|!NjH#Fw)$Sf;;jPMhxcMyy(l#(r(z4g|J4%zFS{dq zc|8=|tvWAY*@Tx2V*VHaD0~OKUA=n{WGTaF&+T!{Wj6C9DP0-1W0L&Cy@-6YYt;H8 zX+|KfeK`g^6w}b-;zjO#TbU_F@;fR%pd4n7=TK{CI5Pw=xCcN_DD&1Mu8->5Z|FX| zE)Gn5>ZZ`i^@l!ISR4 z#*>W5sO8)ML6Y8Gqm6*%7eTTI&C1l$-V1U4kTa}JH72fcLL*lt7Vt~=m}nF_)$&#n zBe1!Wdk&rjAMf?ki#0GFh!YvJH9bwT2gl$%n4XF!lT18JGMzyrQTT#ATi=Md`&E+O z!p<`tn7Jtfw>kPq6f`k2BR&kFOurDrCXJLcVf8+P`5G$1u%2KKY-|eLB5U<&@ z_nD0NsP7nQMxyBXy7p>&R}Nu&^a%!_SYk%C;Xhs1rJV4rVQV6{T1D^6Qgjdo2fVN= z{&9X;n-ODIr(ih%XPu7XFyR-ZJ64nOIEb7mdBcd1sX2|D8{*-~p!0<&wSh*)swGcQ z+2Fm%4&>+F**a1d%g0RShClYr6JcLP`XfmSIGZ;Y8oUSTt3UUqNN;1LuG?5Jglcop zXsx#|giM5L;by~*pjVy>|4qmfhUiH-dyMT%*L@N+AF-{JNt%LANZ?@{xf0#Je(DRb z=b+1)OJApLK=I095692L(xba-;_|)RSNGHA$eA9?BGsNE3CSP&*A<~}#Eu7!QS;_^ zEVQ0`*f&dC+!c99v3{9YpsgTB01{?u1j9A^#~LXSF@SuPtf8BWxO<~VWY!3}hQ9Aa zX=-k2a|%v`iG759V}=};1Fv|;6=gLKA)S$?f|z^Y4}f!2^tVY_M$F6oO|@U6&5E2)S)wYyFmbca+OylG0ZW z!&+k7t>f-0i_R5sppsF|ZbfSt41R3&IkZ2_>e~Tl+)r`Vd&RkEtZj$7%4Gnwnfuk- zUkPnRaA0E71(rs&JHKuOU^SQ6xVVV*T_6fAd0*$!UyNJ&X@j1%gus*6cY?&`UX=&w zInwk8UWSK>kG+GgX%zUdE}sAF;d$v-s~2E*ckzKqe}+yKqtbHac2biX_L6UJnU5>0 zwx&T9-2^v?h-8{Dq=4hvxN;ylq6uVHa3_j>UvC<6{&k~I4YD6q)O7vVw4whsELbPV zW6Nj0L5Nj4pBGi;f_s0@7S}cF6y*s!5-}%hec%+T>6P2cs9P4XigR5gOGn#$+4;+D zZULmE-9P?F37E~ow0{6xPLN4H`iW|zP`+B}$bL-XK$0NmdmNa@qUM#^bnGh?7e5Jf z3zlK`nJn@dk$SDKP>4I-I?a?rfX&j$7T5VM?e$QKikGfv$DJW7L+saN^!Ui(AyWou zKvID7A%4edCBV1yNx^*Q1negHgp$4Z9VakcDc~*Nj3+`D#TM?N6HtRRd(;id4caV6 zpH`E(O+6P+5e@TLZZrm@1QN`&b1Y2J?u&-3&xd?rUx`u}oonbS>I&b1G2jJkrUaJ? z9qB9unnRFhKdRuaR1-r^4vS z5xD@HY)oZ@Vz?g5Zl=mwHJX)uh~F)=fMu7~1Ed*$gW2%`@AYt>4L}13(B#HjCWXd( zyD?`Vk`vMA2Con3xy_lJ$|GzLrFCVCY9-FE`xyEyC7onKHrH3Pw^!F-k0K8J&{6_g zB?sWzfg8^t#&_#QUoi;9e321vYjoyHTI`y(t@#)vEw>{|UtHQ_`Vmpoa?m(e|Bcg~ z=rwI*#l5yom#yha&Ox)a$@Ptn<#noQ0a6#n*Ys=dML{zR?ZG}^ni`--p|L#!Sa3n4 zKyN0E*B8{TX7UN5GCaP>?R7t4f}rehqr~GVZScV2s`n#WW~KmdCqjNmz@={doM4VE z7ad_^h_109oRkvRDV-4`ctmtQIq~XPhC?;Ci8A+V;3w@94-e zG=$kAJxC1NdFu_5#jb{7D#0Hmo-6ko_}{2eHp+9*)_8q~;5BTKJyH6osrVhJsj0ix zP5tX4zEzgbZgVFiBWw!$Tdl+Uj0_*LQ9bdoiHaN>3U5f9JI3@!om$A4yXn7FmoVSq zI@2-y;C(R}q0X;

!gK#oOqLVNE9EQAm2QgfW7FF%pEuM>D zC=^wGUATNVBU!w8)rDx9DN^G0@$^7pb#i#nFJ01ji_8~`w$H~Jdk!@LJN~3+MJcbT zyBB!1V?nA=A6@(7A#$hJIj7(sels z4{~(MoGS&`u8%O9v0%b3QOJ7*6jWw4<-QU}RSLKa%x?oXn#d1hpc6}=7rTgf+;(~g z9^cwh>F1N4T*MF@e#TYh#`l;B!~OBFiEAIoa3o^#JVrSfb-eOOk)`oVF}AFVu|kG8$Or2@TpaJmC}?*CB)YnA&qK03&chb__UwO~td&eQJ~^)o`Jzex zg*1pmiN*o+hkw`H%{HQYwgkvGl4-@e7S4HYLuw8fqG0r7qa#=#mT_V~Q;I{id<|m);k=#!I zC_tQ7zn-rk843oAyf6N|HCUYOoi)JF6sIu!SQmOf`t{S%QdVQg z#;x|Dg^0Msj;p4;`dnw+S4CKF;5n8#OvvBl7_;R1Nj?Q*FXz)!*uTq)PJR@J4W$AP zVfpv@Z<2U3)zr&d^`L|s+2G2g?sHi3X)7ic;`^Bn6qM&(-CY_i@ zAaop2n=9TOZhWn~bARtmnt?*vK~d$j`;9I?1=db-#v&E&*{YG1CL&sL@$z_EJT$~Epg zR+6c=UcYB|#BR;&n2|fM<+=W6N1e$fr#CvyK|Tk4Qt_`mBhMw~iJ<@5GeXw&IT_M) z;EOv|X&+vwSED_SS?wx5#|I&x8;?e`;8dC`q0~G==WixFdx`LLGsM3!#V*dJRg1^; z*Sc4v_a%()F17R>0NC6;Wb1b9EX~w|HI?XP`BD#PPmO1wz(2*~d;Dj$$W77S+2b6aua@&pE{@EPI8yl zp)8#(IQW`13-_N)QXCw7m&Wdlt#?9k4)_p0oXDXGfP$WgC58S;4SEU#KAtBB?UoSi~%J$#Z$q@Pt@W z{J88d+na^@$1j6C+)l(4{lkEd`dkHJr&j;z{ODT9Da&%HQ>&dQ z{7dA-M}viHUhQAuPbs-jqdU+MPchYXZD0kUpUJFYW7RQeVg10OudV4Gr!9U=cL2rn-~ zeNG*h%5?p6f&=UPA>Y$inGX>Uap|4EFIv8un66jpNNTY}<5KYKuHCR;u8Ompyj}oQ&iH#au2a$JOU~uL|OrA$0LQH81onm?8Wv*1UR5J%>8p!}Z+lqD$1xF^pv|s+3dkTm&SRu_$)IVPr z^F?YDoCm<`cRW1erMMmQj}XzUPeuHj5BSZbNogALVu-yUql4fJ5ts1C7X<&mH%buA zR=M#DS%y2gS~(r7y8yk*P;PE-p15Xv{m_fL?$|6@fTgizD+4{c??Ufe8VAEuJC>~v zT??8L?PE2Ye+-@3!b`g0Hn#Iz<)+ZCtR0S?8hJYAzwPK56kKtN!o;y>+Zxc>SAD4+ z20SCh3=oSLRwX);Wu>c`mrJAJYzN_u3*8qRTB1x=Q+ip6PK=)+7BfkTp;}~06M|xj z3&L^A@svF#J^i%9*)E&AoMOWDESc9|L{HnSu*Gk$>WxRJw&1s+~iL=UqShOLJmwqHeb6k3AvIuK3V3 zpIcu@aPB{$!;$?YgyVn98i(NiG|nyAiYxd0&2gm({{Mb3K8EWL2^S+q+kB`iFym_XLg%GPBR?=&@vXjOmF27e QpKZZWlvjCDENkTZA0txm&j0`b literal 0 HcmV?d00001 diff --git a/src/year2/distributed-autonomous-systems/sections/_leader_follower.tex b/src/year2/distributed-autonomous-systems/sections/_containment.tex similarity index 99% rename from src/year2/distributed-autonomous-systems/sections/_leader_follower.tex rename to src/year2/distributed-autonomous-systems/sections/_containment.tex index e1002c7..4380f21 100644 --- a/src/year2/distributed-autonomous-systems/sections/_leader_follower.tex +++ b/src/year2/distributed-autonomous-systems/sections/_containment.tex @@ -1,4 +1,4 @@ -\chapter{Leader-follower networks} +\chapter{Containment} \begin{description} diff --git a/src/year2/distributed-autonomous-systems/sections/_formation_control.tex b/src/year2/distributed-autonomous-systems/sections/_formation_control.tex new file mode 100644 index 0000000..61fee68 --- /dev/null +++ b/src/year2/distributed-autonomous-systems/sections/_formation_control.tex @@ -0,0 +1,203 @@ +\chapter{Formation control} + + +\section{Intuition with mass-spring systems} + +\begin{description} + \item[Mass-spring system] \marginnote{Mass-spring system} + System of $N$ masses where each mass $i$ has a position $x_i \in \mathbb{R}$ and is connected through a sprint to mass $i-1$ and $i+1$. Each spring has an elastic constant $a_{j, i} = a_{i, j} > 0$. + + \begin{figure}[H] + \centering + \includegraphics[width=0.5\linewidth]{./img/mass_spring_system.png} + \end{figure} + + The elastic force $F_{e,i}(x)$ at mass $i$ is given by: + \[ + F_{e,i}(x) = -a_{i,i-1}(x_i-x_{i-1}) - a_{i,i+1}(x_i - x_{i+1}) + \] + Equivalently, it is possible to express the elastic force as the negative gradient of the elastic energy: + \[ + F_{e,i}(x) = -\frac{\partial}{\partial x_i}\left( \frac{1}{2} a_{i,i-1} \Vert x_i - x_{i-1} \Vert^2 + \frac{1}{2} a_{i,i+1} \Vert x_i - x_{i+1} \Vert^2 \right) + \] + + \item[Mass-spring system with two springs] \marginnote{Mass-spring system with two springs} + Assume that the springs of a mass-spring system can be split with halved elastic constants. + \begin{figure}[H] + \centering + \includegraphics[width=0.5\linewidth]{./img/mass_spring_system2.png} + \end{figure} + + Accordingly, the elastic force can be defined as: + \[ + \small + \begin{split} + F_{e,i}(x) + &= + - \frac{1}{2} a_{i,i-1}(x_i - x_{i-1}) + - \frac{1}{2} a_{i-1,i}(x_i - x_{i-1}) + - \frac{1}{2} a_{i,i+1}(x_i - x_{i+1}) + - \frac{1}{2} a_{i+1,i}(x_i - x_{i+1}) \\ + &= + - \frac{1}{2} a_{i,i-1}(x_i - x_{i-1}) + + \frac{1}{2} a_{i-1,i}(x_{i-1} - x_i) + - \frac{1}{2} a_{i,i+1}(x_i - x_{i+1}) + + \frac{1}{2} a_{i+1,i}(x_{i+1} - x_i) \\ + &= -\frac{\partial}{\partial x_i} \left( + \frac{1}{2} \frac{a_{i,i-1}}{2} \Vert x_i - x_{i-1} \Vert^2 + + \frac{1}{2} \frac{a_{i-1,i}}{2} \Vert x_{i-1} - x_{i} \Vert^2 + + \frac{1}{2} \frac{a_{i,i+1}}{2} \Vert x_i - x_{i+1} \Vert^2 + + \frac{1}{2} \frac{a_{i+1,i}}{2} \Vert x_{i+1} - x_{i} \Vert^2 \right) + \end{split} + \] + The total potential energy (i.e., sum of the function in the derivative over all masses) can be compactly defined as: + \[ + \begin{split} + V(x) &= \sum_{i=1}^{N} \sum_{j \in \mathcal{N}_i} \frac{1}{2} \frac{a_{i,j}}{2} \Vert x_i - x_j \Vert^2 \\ + &= \sum_{i=1}^{N} \sum_{j \in \mathcal{N}_i} V_{ij}(x_i, x_j) + \end{split} + \quad + V_{i,j}(x_i, x_j) = \frac{1}{2} \frac{a_{i,j}}{2} \Vert x_i - x_j \Vert^2 + \] + where $\mathcal{N}_i = \{ i-1, i+1 \}$. + + Then, the potential energy at mass $i$ can be written as: + \[ + V_i(x) = \sum_{j \in \mathcal{N}_i} ( V_{i,j}(x_i, x_j) + V_{j,i}(x_j, x_i) ) + \] + + Finally, the elastic force at mass $i$ can be reformulated as: + \[ + \begin{split} + F_{e,i}(x) + &= - \frac{\partial}{\partial x_i} \Big( V_{i,i-1}(x_i, x_{i-1}) + V_{i-1,i}(x_{i-1}, x_i) + V_{i,i+1}(x_i, x_{i+1}) + V_{i+1,i}(x_{i+1}, x_i) \Big) \\ + &= - \frac{\partial}{\partial x_i} \left( \sum_{j \in \mathcal{N}_i} ( V_{i,j}(x_i, x_j) + V_{j,i}(x_j, x_i) ) \right) \\ + &= - \frac{\partial}{\partial x_i} V_i(x) \\ + &= - \frac{\partial}{\partial x_i} V(x) + \end{split} + \] + + \begin{remark} + The system can be generalized to a graph of interconnected masses. + + \begin{figure}[H] + \centering + \includegraphics[width=0.3\linewidth]{./img/mass_spring_system3.png} + \end{figure} + \end{remark} + + By adding a damping coefficient (i.e., dispersion of velocity) $c=1$, the overall system dynamics can be defined as: + \[ + \begin{split} + \dot{x}_i &= v_i \\ + m_i \dot{v}_i &= - v_i - c\frac{\partial}{\partial x_i} V(x) = - v_i - \frac{\partial}{\partial x_i} V(x) + \end{split} + \] + where $m_i$ is the mass of the $i$-th mass. + + By assuming small masses $m_i$, the following approximation can be made: + \[ + \begin{gathered} + \cancel{m_i \dot{v}_i} = - v_i - \frac{\partial}{\partial x_i} V(x) \Rightarrow v_i \approx -\frac{\partial}{\partial x_i} V(x) \\ + \dot{x_i} = -\frac{\partial}{\partial x_i} V(x) = F_{e,i}(x) + \end{gathered} + \] + + By more explicitly expanding the dynamics of the $i$-th mass, we have that: + \[ + \begin{aligned} + \dot{x}_i + &= - \sum_{j \in \mathcal{N}_i} \frac{\partial}{\partial x_i} \Big( V_{i,j}(x_i, x_j) + V_{j,i}(x_j, x_i) \Big) \\ + &= - \sum_{j \in \mathcal{N}_i} \frac{\partial}{\partial x_i} \left( \frac{1}{2} \frac{a_{i,j}}{2} \Vert x_i - x_j \Vert^2 + \frac{1}{2} \frac{a_{j,i}}{2} \Vert x_j - x_i \Vert^2 \right) \\ + &= - \sum_{j \in \mathcal{N}_i} \left( \frac{1}{2} a_{i,j} (x_i - x_j) - \frac{1}{2} a_{j,i} (x_j - x_i) \right) &&& \text{\footnotesize $a_{i,j}=a_{j,i}$ ($G$ undirected)} \\ + &= - \sum_{j \in \mathcal{N}_i} a_{i,j} (x_i - x_j) &&& \text{\footnotesize i.e., Laplacian dynamics} + \end{aligned} + \] + + Therefore, the overall system follows a Laplacian dynamics and can be equivalently formulated as the gradient flow of $V$: + \[ + \begin{split} + \dot{\x} &= -\matr{L}\x = - \nabla V(x) \\ + \begin{bmatrix} + \dot{x}_1 \\ \vdots \\ \dot{x}_N + \end{bmatrix} + &= + - \begin{bmatrix} + \frac{\partial}{\partial x_1} V(x) \\ + \vdots + \\ + \frac{\partial}{\partial x_N} V(x) + \end{bmatrix} + \end{split} + \] + And consensus is reached at a stationary point of $V(x)$. +\end{description} + + + +\section{Formation control based on potential functions} + + +\begin{remark} + The gradient flow based on the global potential function/energy can be computed in a distributed way (i.e., it depends only on neighboring states): + \[ + \dot{x}_i(t) = - \sum_{j \in \mathcal{N}_i} \frac{\partial}{\partial x_i} \Big( V_{i,j}(x_i, x_j) + V_{j,i}(x_j, x_i) \Big) + \] +\end{remark} + + +\begin{description} + \item[Formation control] \marginnote{Formation control} + Consider $N$ agents with states $\x_i(t) \in \mathbb{R}^d$ and communicating according to a fixed undirected graph $G$, and a set of distances $d_{ij} = d_{ji}$. The goal is to position each agent respecting the desired distances between them: + \[ + \forall (i,j) \in E: \Vert \x_i^\text{form} - \x_j^\text{form} \Vert = d_{ij} + \] + + To solve the problem, the potential function can be defined as: + \[ + \begin{gathered} + V^\text{form}(\x) = \sum_{i=1}^{N} \sum_{j \in \mathcal{N}_i} V_{ij}^\text{form}(\x_i, \x_j) \\ + V_{ij}^\text{form}(\x_i, \x_j) = \frac{1}{8} \left( \Vert \x_i - \x_j \Vert^2 - d_{ij}^2 \right)^2 + \end{gathered} + \] + where $\frac{1}{8}$ is used to cancel out the fraction when deriving. + + The gradient flow dynamics is then: + \[ + \begin{split} + \dot{\x}_i &= - \sum_{j \in \mathcal{N}_i} \frac{\partial}{\partial \x_i} \left( V_{ij}^\text{form}(\x_i, \x_j) + V_{ji}^\text{form}(\x_j, \x_i) \right) \\ + &= - \sum_{j \in \mathcal{N}_i} \left( \Vert \x_i - \x_j \Vert^2 - d_{ij}^2 \right)(\x_i - \x_j) + \end{split} + \] + + \begin{remark} + Apart from the desired formation, another equilibrium of this dynamics is $x_1 = x_2 = \dots = x_N$ (i.e., a collision). + \end{remark} + + \item[Collision avoidance potential function/Barrier function] \marginnote{Collision avoidance potential function/Barrier function} + Function $V_{ij}^\text{ca}(\x_i, \x_j)$ such that: + \[ + \lim_{\Vert \x_i - \x_j \Vert \rightarrow 0} V_{ij}^\text{ca}(\x_i, \x_j) = +\infty + \] + + \begin{remark} + A possible barrier function is: + \[ + V_{ij}^\text{ca}(\x_i, \x_j) = - \log( \Vert \x_i - \x_j \Vert^2 - d^2 ) + \] + where $d$ is the safety distance. + \end{remark} + + \item[Formation control with obstacle avoidance] \marginnote{Formation control with obstacle avoidance} + Formation control where agents avoid collisions and obstacles. The dynamics is: + \[ + \dot{\x}_i = - \frac{\partial}{\partial \x_i} \Big( V^\text{form}(\x) + V^\text{ca}(\x) + V^\text{obs}(\x) \Big) + \] + where: + \begin{itemize} + \item $V^\text{ca}(\x) = \sum_{i=1}^N \sum_{j \in \mathcal{N}_i} V_{ij}^\text{ca}(\x_i, \x_j)$ and $V_{ij}^\text{ca}(\x_i, \x_j)$ is the barrier function to avoid collisions between agents. + \item $V^\text{obs}(\x) = \sum_{i=1}^N V_{i}^\text{obs}(\x_i)$ and $V_{i}^\text{obs}(\x_i)$ is the barrier function to avoid collisions between an agent and an obstacle. + \end{itemize} +\end{description} + +