From 9410feeec4ef9f07ff88e6bf4255c42832edfffa Mon Sep 17 00:00:00 2001 From: Thomas Dehaeze Date: Thu, 30 Apr 2020 15:53:43 +0200 Subject: [PATCH] Add some notes on stewart architectures --- figs/stewart_architecture_example.png | Bin 0 -> 37449 bytes figs/stewart_architecture_example_pose.png | Bin 0 -> 29132 bytes index.html | 977 +++++++++++---------- index.org | 114 ++- 4 files changed, 586 insertions(+), 505 deletions(-) create mode 100644 figs/stewart_architecture_example.png create mode 100644 figs/stewart_architecture_example_pose.png diff --git a/figs/stewart_architecture_example.png b/figs/stewart_architecture_example.png new file mode 100644 index 0000000000000000000000000000000000000000..1d81f4d096ecdc33f578a32a774392282291f0af GIT binary patch literal 37449 zcmY&eKYs|v1iZTv*)L! zXFY4}7*%B%WCQ{PFfcG=Iaw)nFfi~8(8Uf11A0?WdHDglfxD~ANPw^WVG0I4z`Mxm zxr2e>qW`{)Kgd0n8^WfoPTM$}Y%GWNtB{%yYb&Fn% z8IN<|u}L#dKi*!Ctoqm0UgQgM_VIJtOoa^YxbP97ME$?FF1LMN=lZReleW`bYNABp zK|V}ABGSp&E3rR+rIz&uc3gIMUCy{;4YaxHxO+%F(p~s++xdw66NX*3YH;fQ{LdGl zVQE?Z8yWQZzd0~*|C`3u74#spis44%!uLQj{uB9h!!8@K%eM&nE2ECn8sXzSe&&le z4Ds&T-|sU`IyLUvUVPI-JIgBNHKT%+wM-nePWm6k<|xZmye84Q>?QHbTZ?Ic%?jpe z;UT^C9UrCu-BRS8(;LD57p}E^vdS{Gt_RjrU4y&Xw)-KcPVeWO`&Q}19*+~ACreX=P0DEgK^aF9g- z#g^EBQ}_nJE@Zu+JVV8>{o?u}aGe>hHl#lZ7$0 z5KLT|vLWO+exia_jF?Dp#nErUzz7}TwF1Thk==WzAzDbEVWHWN@5OozxKO@uJLTz< zHMDJ_eaxJcD1~3}G~0KNQ`%o*B&>x_1!Di5>`2g%cLDLR*0fN}YF9|{ua6hG{`7=E z?a5=HTU>UbTP1A2mCF5IY*}#UX%ToUY|V2RBvj7c4r!d= zn)s<02TV$ZXV7j8u;eQT0xrNpQ$i2c8qfE@EU)atNxgh7PnDl|g9Ua*=yb@|hp|kHcV!f%Xjry;ZSdX(J3RI za(CtHM9@BuiI(n}+(-|eZ($%pbYLIrJ|8j7A;77aB{oxhob-U*jE+;t?b8?2N3Z*j2W?RxNK?*U4`^i5f=%3xkn&bfX7x6Wihh*SiB1?g{pHxWJ=R)}50Ppy7R18C;6IGv7qD~FuZ&6x-%uQXSJzjd!LHE{s z2QEVz;=qQ?`2ITbHtwL)cYqo0-A1`jhye5yzEsiN?$sW+f1a}>u8|AtnSKDU^eAwf*)%!F z5BZKNA4zQv8To`9_C;gOXWlk_w@fG(s9oj>b79*dyFqxCno~0epFwp zKt8@V9sLn~KC0>aoKxoQ*gXzFIx5M9jh8$SG`zkmXuo*UqF>4lcR^Bxy3&0}4#vxF zifm+Nt#)(%^-s>S?m{ibr0?4k27LiHS;@aU!-{eWPFfdFF-`CZ{@S4w`ugortdy%;V)M>CUUE+2XT4T?348Pxo+z zKB_x7-l0Eg|KE)rJvlm0&~LoWUb9*g*W1}H7UEC)L~VSItT_d+-e*%|Lzh&S&E32J zl=X!+-WWP=_b=duQpZqx4!@1`)q}i;^l0rT@|eEK`5y~wUKSVU-~TBp#M|{{TYl1W zOI)vjt^Ee6|H@=v0KL7TB@AaT?^pcR^K7*=#tg9F<%Fo4m=wjt8pCA-!}}s!W+F-? z7^#IGW*M9Qn!nzB4@o9lUawmUm%bg-?s~9B?z#$-ytH|@qdyCR4h9%S?lPSC0~zaK zEC*~}T)w`3Q~0>c_t!|A3Q<@&cL{*7p2#HnZspsTvo7>`v+#52CvTH<@M+s;`+YA8 zYwu0P99jqQzI6BRt)~sSnVtu-t>6mS>qAO*H{mfup2yB41Dc@?LN`88sGrTOn(8PG z4)WO`mT?X|jpN3b)agkRe(M(9^jbsgs+?)k<2tU;6+}6Zs}i? z`{urpO8w8Vfxv}P^f+s`rDY6h*X`9|L{v|fmaYaS1JnE7d2oemy6eB0hzhbV0}s9r z#_nCdTS$!0?q)QOh<*h5jAqnzop;_(ar_5I_B3w4)&-v5xvr&ea514LywSe)`)9Yk znB=JGt(-9J{WA?d5pL0*tGB97xwoayDG@FU&47cxkD${6Wp8cQGt_of%cwoh{fy7t z=aEP5&*k(k zJ+&vAMnU5?7vA#G_M>;u;^xm^c4#5c*|Wj}V9U|<(#Fcm22{Vm+vi}x`^rKrGf}|* z=6ZE?1Vm-`e&T(xt2mx; z4DuGoLj$o5`1oFfy4-%z`mxOMsNzy)ArdND8~~Be8=7KmEmbYXVY*lXE;F?>Q%)=; zJ8_B?4Et>ec(2!=Oc3S(^j{blYT{B-=+LO>U-iY}p?J@+j8lu@QCsP(Q(_Y;(y&Q7 z*@^^YB=is!7`6-!1^HXw^eaJdl>Oozd-=7&dwd}TBJ+4?}f}&(}3MU zjoTm|XsxAJ2E>6(U?AX>jk~mmB#*&ogpWwWo11TJu|0i~;ct7GnR~ z#uM&*v+#Fo*T!Eqbm&e77`hN@2c(x(DOnwla*DQww~UQ0d&y!B(k|38Es;Q47{c=% zxt*-aBKNg&IT&-S#rY>h5%f##c;LbrHBH3sHD-uhEDk{$ID=(y?#&JQpqR+t*b|zh z1Up@32DM)-aRz!9F?xhk-`jYt9E{!no|6V_Z^{dh3(rT;EBMKbb_J<2BE+!E`YW@IYmJGa*W!S|CXkjTk!9k|J?id{ z!#yg`m=9?}^hs#6qV^pzx>BLrm&VYmhr-{wsWq{+oD}0Vjk?vJvFt_OJP&a!F66Dp ze;REE{o2A?i4lz(=rEy)f3V^GC=-jkh?iJo!>m&un1c#fWa!Ism;ghqWl!I$S${;i|bcb>fnbpG)Y92RjK%(37 zRNB|nOU+L~UPgrf@$qyxxPh@bct@=1_phUNerru4vC~Y%EE!@z8n#oBlAxcIBNnHU zga- zdBzoHBYunwTN;wPn5)tS4^90*i}FqlFHW6Ony^M56&nX{fmf4ipZYCICPIhRJ8h$Z z7KHk?1|tVxBf?9duQj<Y%15<^WX{Msa&mJIh5+Ze~Pp>kL# zd5QgDVPGthd#V#;fvB*NqcHBrn=u&*~^h24#5q?QLyKAtWYFK zO{)ip#1G*+2`tIAxAa@cwJ#&-hzg()84+HJIe0AJ&C&h&M&Yy?qKT0))H3a*3^Whw z3nw^qit76L09%l^ooaf}A8WG1h=2vgbb%@XSJ$%^1OcAG6yzw`f&7piHnl(6KomtR z%aUTmkoNH6(UY zQ8Dt#1MvMk;ccoMp_OWrRSh=Y%8xm$ zwh(TS(MxVpeIZDWh#f|kF1gdN1g|_rj#n-EMuCd|w)8vW*}xx2h-uB^e{#8yC!ltiPGA!G}ARKyK%vDhj_p7oI@Hazg^v!-gaK@KqAptYv{d;z- z_~1}BY3KvQOXxA8fHXPzm;`z@_mw_Hd3OTP-dvX|b4jOG?>;hz*7Zz>xIT6rywa_? zk_fg{N=t&`4py4cA&CqDBNZcD1nv_&i?#B8Ww>j|3dd!4wuMnvZ{O17xdI(UZB&uO zNy3BQPF}37XdYrsYT3ceI5IMS`S3mfWEcb5HsVnwlTF8@?AgAl1fO`6sbQ9d^F?%Q z2xi+44@zp`E&Y%?NT1p0kJU~dI3By-KS;*z-uBoY`a&h4C5Z917|NqrG$y`=^`5;R zKL1AqEV}cF5I|SdjTRL41`CZsg%?q9=xf2A9pWy=j2fAru^P2EVP@Q&Xr*Ce5xn)m z5sjmu{`ktla+&~ir}!Y1PB41Up6C}i1?Aw05!ldyoVziY)uZ3oiNLy4Zt$zYQ*w$= zi~GDJCzTBaY(q(s_H2QuFjI2MJYGz6@^S1pVJ$Z~-}S2UJ<~x85j@PzUt*?p=wqhH zfEe^%+JvVYC{9`>O(=H?Sk{}089!oWIDjq-pYKDVTdiSE(~hu7xP0#h{z|Lkui__q zCFu!wdGGALWO!jtE$SM_V*Xn_dKMmI!qMtBX>G$#%kmokqA@z})Ul+OhDfdJ+=vJh z5I5C8bN6*7jj_O6+nrBfPIhn^X}b0^tK2wN_7l~X=yZ@I1GP`|p}i>^Gh;e_H8w1u zx@S6Cc)c=nL)V=;(gbURv}<8#MUW`3U;%s3jh9N_xgUss=9H+pjP&-ioZ*2`r!KGk zjC(UL-&=D4C>o01#cmph=PTCub{U_&(!Q!Uu_L>LVreO$9ZWkadtT^>CHpk6p~v5# z5VfV;)Rc*tp(3?$7fM^{!-)>#84xiXu)sJxVb?vaXD|B2XN+R4-p%Ct3<#JaFv@v8 zdN@g0`5xE=7*m8*fCEDms=dy)NfXjs+h;obZS_r;L->=A@xkd_OcP4eERle}uarao zw7TU}RRbpm@-bC&gvDiX`I|u2f$x?^m8dwd$Nm#z2uNwIpzOP2p`f4JlH2ZK82$5r zG}?w#9dA7}xf%iWA^A5nq!HAg5g<6q@!n9IRU&?uwdaXIe)ep41w{Zc@Z0LaP!qw_ z@!dfQ6Nk?4x1aTPT0i`oUW<RYO$rySEHX=^VO|aWW?WX;nG+>Y9_&z9;-1K(?$x_SxX(g2KKXDd5>GKz^ zq`jwwR?gPawC|LpjOC&(e*pc|JonCC>4&tc@?j88{;j^DNfWQP#6?yY(5L>Wyx;wD zeA6_rGV|$*^P03!^%~Kpp6;#Tt`I;xAbzeny|dZ(e7g z)T!nj*L+Ix;l^ucBet6yzUo_vUlpE|R#484%>(I2{|%}@k4yT2h!qrsb?D^_VOlUoz|tGqu5^1Zan?PF`nsCW&u z!)>?swrJrtW8$=o3Ii4zoRoD%sPnUmNBg`qTq7ZDN=fR|0d#s0GQO2XyC=)v z#5g2^fb4k9h8Ume2$o>mm`32>KbWroZAl^48i3e!BBYpcYiK8b zJHGHV-Plymb7{Rt%2WjnkK_*1yC zlc1)*vT<C2LrxjNh3gy!#jf{5iI zXXYuX*7<;9$LNMSbTSA55+|T)EzcNiUBe*XKQw|CR|hGZNt+guG!@O?zCbG%l*28g z1A@X_9%m~czY$#jJsD1&gWnDgv5_3e6XmbBAs1V?afI#{+Lj5<8C5DyrMx-IJW0D> z3vL4R^>zfGp$abog662lYyjdSmDIgsv3b2mHv7j;f3|%P?*TOWtZ7fRF`oe-JNgKc zv;814Ih$J(?33sdm^3QmBzW;^nP)c|cGok^_r@^4+^Dc1dkIkUlw9r1b7vus=k{iN z(^2!R_VZrC*5O_cJ>eeC&XQBvc@Esj#L^l0P$}%>KI<{o$mVT%hkDzM6<<44`Nk#P z*aH*7Jt-o_WaXUx+$4ci5?4mv$e zL{!tSo){!h8XDSA-g6)L+O!|O-`dPqYfZ1Z97bD~F&?)l)O9{5v$Pq>WLz2I} zTb@1_=N~43C4e+!6Zxad1$QIk4y~?EOYOlt(iKL6t*fOM?;944W~nqm9F=KS3=7oz zq=<-x8Q<5RHj7t-oj0SWu^+u4=ca)yfLp4SMA4vMc=c*5sr_jd=Zbq?~llX^%OXte((;x zASp$Mv`X}>?W%RRiTb$c9?U}V`QtCdO@1LNuGUBp_W?f!+AHtXW#?@7qu8a15ObT) z9VGI&5$5MJ$IIryc!nZr>ZSjtyyl=IiK3EiX{)7n^)g7`pz;)D_1^%3%=#FCwS1Ei z&|)(hXdTWfn^_b6#R8~o6hsWeBsTGSg}?&4aSELa&ZRyEo~m{M?P{Mg0`5nImwNVx z8>M&iudy~mL7c}pyFG(Nd$q##OOU}r&5yIUGG0f;xJ$SF{s#UKO`(FVjtllk9|J?! z$uV(^6qun&&K`HWwjG1B=fsO3QXVst4A?|^Adage(?@JXDmcqVg?)fbLJj1>Hm2N< znbO)!F4igtU*H-`%Ncln#B~=GQTVCY35uhIwuG6&*&c;wOZ%B=LHAVgbp(~RGF`&_ z^*<~S+$Y_;G;T065%!V0AA9b9L-BVKhnmz$A!P+~qUwNw;rl${<>AT~;j-V5d)E6C z&2b!;7J#`JDyDzm-4)g9rxZfr&!w2fOZI5mAXG7?>(%s14`m-Ll?77``{qJ%o3&wd zY7rpb@FgRcPgw`0-NtjTaV{#se)5an?}w>|{HCY)QBfIDJpXkN>Xbci4%5I2R+OLX zs;OsKwOW@C$C)p^I1R)W|H9huW6Dq;NGsGLfKt*>Tp1~&-pyAcuRYwF{x!q~B(!gE zFS&qhDa+J>IBKmKSkVz@U)U@2o6i!k{CFNzKaSNm&TUj|Xv5d>K?=BsmEEyO-cG-- zCB0eISGjOyi1F(+aQEXq^E7unLcYd^iLK36PlMz3I2p(S)26NdOvcgv9x(57fnlPK zQA3A@61oyGacbY=dKRWpBBbGsXm=%20kO*RK|)xv#5c<--|#GzH_f~NZB2Bb_0`B9E-;(69RSQ*?qy#{_W6Y+^hyD@jhPCpBa zc#>WJz)ditSi7j*Mj!nPwjl>ZGvQG3v0g+$@3TN@9o|h!;DZv7DO=-Fd%wGxb^Q2c zTbM^`O8WuOAXeaqFxuX2*Y>(6>d%D1A=?wY2FR08U+`*%-( z>)$IQPgu@dsFnodK}2rlKo{KmRt<2@K0`T*78f@MC>n^FP2@rJc4UN^w~3|2n;UZ_ zz(5Gyq$@lIQoGV`m>Gc+<54LI3zs2MVj}g+T{5C*r*6p8z)Ijag}~!e_e6%7KS2(Z z3yL7^Fs5d3d@=u8_j$hTyKkU>aV~^Vu7Cr_=Q??yUD=U}uGdU`wenMo2`mcKM=nMF zO22bxuq5o-gqJx_B$eQm!~vyb<>}k{SG7$9hM!E(^*sJ%z8Tp!qrN2S%xO;)eoWg@ zm@BM-QoKK~#i}iLfX$W;O1b0%gs~48eB|BCK|P?=D)z}CsLBRwNMG`)*@FF<(j z_AO1}XJZmPbV>TnF%E*g!9A(0J^#>vMX6+t)1+8Mor&y@Dluq_Q+7XG3AwK6q4^OU zASJDE8bc%1wm8X*%A76o#gO)Gbq(%&LO#TA^-1x1m%CgK-(U&> z-&XfVU?%4eMGgN-!7&_c)Xi^r52n38d>r=t#fTdNd#7gL@jrmsFpS+4;xyM6!!94Q z?l35ByN#@j)ybS~pVghd6M6O)M$O&CH=BpQRi=ZSn6-C0G+=+9%2UEFrb`ED8jw7@ zI_h2YT-WPBR{si51pi~m5%{;?Qc|;Y^b+gY`os@??{$l=!l}Kl-fe+V*V=FRtp_vs zb0idA?4(=OdE06G!$(Ct^M88*_NVhupeq;?h%^jvo)e;tS+tcEq^AQlJr$?gLi{$n zevvmB8UAkCa=fs11~0F`<08WAq`hV4fMi_O2+0Qpx)slZugX=TbCznq(1p4iAOkl@5OQHO`B9ldORa(q*KqP2kyv|CSv=Z*lt?*;WuF! zN!Qd14bC_^wT94sz0MQNppiuhEb4F-0CJulT|V7`AB7h*L?&JD2maRZE~B#*d7a+P zkz^7V66z3mAqZhi<0BrOwE3aBGYw>WVwp;Q$nx3}7aG(l*mew2cI_7R zxkU0%c&#I0EbiZdO06`b`gr&&Z&RNecL=`MSRLM}p0EUWZ^1XUjVrpVa_w!;)DLR= zst$f}FVbZfKeihThx;>|Y>(*rHEPQ&)2D5{ZPxyUzx=IbC=#-SPB2cj%;R0!$gHgV zl+JJEuqBs}KqSSXE_sX)KgagNrcnj~;oihwrKDY!bID#OZ3lc?}pxN;o)`P)w%KUWB-VNqa$61_l z(e`no_CW-TZYv6TbiCajyJ_8-6~zj3@Iy9du$oTxD^;d3gI{rjn_2cs8MEaxzA261 z>;oxSH_U|Ws(pdK1qj})+Z#D0W7AZQNrlEhz|t2oM3JjkEDH)9L`5thBeso0$p-4} zXGxV$tB_^y_MUVhl!Y-dSI0YEf>F(FBLPb7zP(s1=bENe<~@$Ndd%`%;Ouf+l~d`Q zSDn!JV=EhqD3n2$vQS6qN?;f{$~wFXDcs!3huzWnQ&+j~7@hJSBh^;t6bPcHr2({N zQs#V0ig`o6ewPT~7w;IA4-z4HLa0A!df7u{gxSZF7?SpM$VsYCjKNt6x%mm_OmGk^ z(HmH{kYd&EIHWZr`eW1L1C;w)@{IJU(YjFpEkT5gjFH}EUu*I?k=vH?Rb0Htpi}mCoCz#+XHvgf%lU(m2rybXw)%g>c!q(_E zC~exd>D{HYglB~BkLfelbMfBqF8LJ*1WBMNGSZ`&3J*pw@y<6Z zVHnmd4yNsx0t#9_ciOt@My1q`)`O6oKC#fQBA zG7wNcnYivqjoG2P-Jadpy|s{rOwd3}GQC;Y%hgxd%Je89RVTB*x?i77Nt~3*K{25) zQkUelTRe(_-6p^>8Ta?#ESL7w<_}5h-rQaj<+z*U*gu6J4amM>Eu_{$236jQOQ0{% zW-2=yyI(UjvEo;U_G)8AX69LWewPQ5B+pXs2On0|W+)LZuI&aZp>OGP*0wVU3}VOJ z6*`@4=QS$(U?`76rQ7mqXlf92XoR2p6W?(OuzeSa1Jl4SaM)iR)-C{7mgk90>`^e# zJ{Vt1doBx!TSg=w|7STq1igxyeW;q$in~V^j7xl|^Vba(%yCRK9jGY~plH&ZJEPJS zWeh?cn>9+zYm~uEH>LBs^N<;9aw4sCiT6b@|z#=PgpYtkm z9CBaaGi>2nNvP1Bs*-5(n?Y>7?z+%;?`}+Kv}lrBHOQ)hwl$omG;jXC&VcBcA9j35 z6L4#}9i=~oE@A&Qv3ML_cFu!@qy`Gb8jgCF;zoLwfsVcxm8&hhHnUoM0?g93%q}1Ji3@Ls`cHicKzN2bDTfXLg0Q2QS0?=a(g9JVjfI{QJ0@q+Ogw=M=WD663e} zQrwi!>R0nfEV(UqRT*`it(3pYStq-+0n<&3M0USLV(VMm1s;AFbr-~r zy4!u7N`R@kWmTv&U*dCJS=v=+|5B-&(ioHK#8B%5T!yy&YUimEOcOlN~F9jjghn6FlDA%yOtE%e3LoBGdmf!=ITN zATvZilD#6Rm;Q;=4Y9sAu^!Q#KHE(=v^)u-+(efl$xm$J14&1RfoA1Pk_)T@nKrSn zQW=XiaSqhn#2Mi#bhY})i-QL=d89!-xQr{t$6tS>&4J9hcM+cSo{)Y3!lec?U3nz8 zl=j)ii)r3*yzz}s^$PydU+Bsaj>p>FgIuZ)bgX@}8HxElcEmsiaFgl|*#K_4J8Fyj zomJ1|g^B@+f!kviCR6g}-pN!o*pggE<)%3Rf{H37&V@;t9 zo9KmKbaj$SXB7i!D-fSIw1B0WdKqFzF)Sk8Q4`D=oOGefVNGM$ad*K}&s0&`jxa^w zQ9b7_{A=W5WTGY;#UXsi>P`1ZwVQmUg~iYtDG8Pi@47A*%Yz1hrOKancd;X26GWF1 z+aY;Y*fL}0f7(sn{jv#A{^lX4uBh(cpwju0>7|J=F;wbQAskMumoBJJw8D5?w0SbI z&Xr!UiJV;GT~mYPvwUf0&a@x@$V{h6=BZsS{t_rtUFjyf=%@DiCi&SKoFRa_lF{OQ)7O{X3MZp9~+^KP^!G826BV~}x zaUJXpU00l~`vJ#={g-k{BFjKyT%^@dj{YH|pQNj&B)yB_&HNtJt(Taa;OXL%o0XAs>HEs!7HrZs7E~BnC^gn1P8L{$T zdp+sf++1NM^w70dc*7PqM}V#vDE`$KnGfH=r4@ZL=2q8Q%uAV@UOO;LEu3*aW|HpR z2Vh*iN8|C`&>sf1S$;Gb{t1S436lTnf$$5eq2x3PQ2%jo;zitil#&^Wlloa$^* z#75h$df6Nwz-V0N>Y~z~1i>a3hl7teE#UIXRC97uK#e1wPIEU;>@^l=LrS;^q zCJ=TrRz$S3(#-8O2b6nk2qxodRxo5?caapf3SFX>8>1WHj_2MG!PBzjq1E(PEp+o2 z`#dz16W%{j0>~-PdLWRtI(~>#|8A>hrKHxqoZTwa!PVwvQWW3@6*hczeg~D6S6-Wd zfsl+0R42C9$j{Oe*NG2Rh*FHcQU<>ywO3ECDRk<}m-p=1(Vw7tQGxYfLymg*5C&2L zzu8J(xuO@{Y82Ba$Izgw2XoLo4HJX{PKFH26r4YD7hGIDO@o!f=KyXA8Vnfi z%k}TrRO4R#r=LSa+8Wsg#yaW#+<(WZ_QRSTy&v0VRXJPQVexY|(KhJC%}kN1;+kdN zN_Pbp19Kgn`&MgZUKqpJy+=Oe3`TD*LtVzMq3Zeccu3r=<^2&tyhG#NLENJareEbK z%Xx)XvYi@nTs;H%=86TQPHi21oDhrbG>ER*>56X*={8VfQ{Su6f9gN+p6k@;>r0OZ z%)J&6bL_0Oyi@Q&qvxm8Y)sPyIQ)@uR1w7S$s@jHV#WB~No%;VcF7+?W;F4XYT?f~ z-ne&r)M)`@75JzUb^lYwXUSSKqD`M?rG!Rkrrm0aI^4f@{JqM2n2YzB*7BZ>J-iP~ zXDDbr4Y}Ebc3vZCwXs_eTDYu-S*pJGq=cWw<8XT{ZB5|m{zA?SKjp1E(v-tFt;#!* zstZvsh@c%#_gFDCNQleIRPWPCeT8*g78d!0W-rUOzGtg%$vKAdyA^Jd#vFr$@z@WDh2j`Kf&2#c%z z`Q~>mS`(2hWk|Py4cqC*MzW#k+X!bD&OhanLLs zz)b%Mt~$;EvwV_gv$S>Rq4Q=Pwno0YR6u((%>mDC=!*_0BDsf{dCuLSYN}kq5a;;? ziKW|o_(_?V8(@058(tC`B<+E~Y6m9nNWQ8Zo6e(381_3_IFl&y8|zhI;ZWAG`;Gcf zWFp&yM|UP0aQt(~{(vg|`%Uc*uT2_xzX<1Sj6VW>8_bbZ!kTbGS;k_RVs$NFY4m?# zT3Vk7)mD07;=!w$Bn$Re1{kF|N#B9Rt(&N0cQFz>+8Vm93IkB9{Xm?(fb?KdfTl6T z#-H;9%P0@ay1y&TO3bW_O4F}KN_xM1Y`8~Au1MIRpIH88&+fgWT+#gU!ygebUjYm@ zo+#XogQ$m(9l}cHQg==7n}fKIDJ%t$ceQ;U@^HT_b8<70kK zD`EF*a^&SQX-frY|Ve7?J zT}R)2t!;=fGe3}OCrNClQIF?cAz?9He9dPkEzq8k#xFRm9~| z`e6^UU%{V?57QkZ(hlq4hTujpzW6-JbWV7l9Dx{9mcu}spFNU+dKbDTblCPZd-gD4 z(8uIodMSj_H|T(SIKDiTXIq@R`3nhuOx_s;4^0h1M8WrzgUpq_o$SHn`Yv8w>|GeN zTG9WlqjZIr=6++x@nyRAtzPB?Z!mYB_HQ?{H}c)*n7*1#WQitFTS-c6^}>81Rl>QF zA5$HI*)}!h7n{_1eN0j+I<5==BuPTWFmy_%wZjRgKyyf@tuP4Tt*+i!?pU1W{pAzb zh1w>Cs_I)?maX3n{>eE_Yq5jhVbRTIRjeK)y&^=8OM;xszN|O zzeF_3G_3EabJS2O14oPdtkL2ERMvzY8r4Us8|c_z8*XIte+`IX`@zzz5J_0dN7{~1^>Sy-~Qo1jv| zh_(Eh2=;=Zcvk~~B$1-~kpeefQgRtLwU(mmI}#)=Lq2|q$+YfCK7KCfrSba6hQEWU zbuSB$Mx4c+Nu~<~)j;dX^l#7|u?FAqv+y5LyKZ}yN!C9m_rE|x-CCHy)PmP4^_HFN zcW{Qjen+nA^^m_h-1M{gBoKC z|3!8S^$JB%7YB@sNJF+?w_mQqm#A+#Zm0;vH5}y-fYkWZ{_wfKqZ`V%OQJ^@hazCU zlcGoe6*3Qg8p7SXpd&dfqN~|sArXkmmq47wn`&w^)9P5;1z9n0rBmoQzWak}Fix~p zHC<*3a>Y;`I}iF z{1Vl%64>&N-d5aes_)`5yTO)EXw?}@Ew2cKp~ zR8@#6!oao%TuG)1I=lme;8<+_S=~uYE?CQE1Ysx~16{_-Ky-R=p06TQ=EhgyWir~* zIspTsuNW?tH%G8=kwb#Tg7rvvNpEj1jR{Y>^J%C8lltxi(giU6+4<%kmI5>#9=o&b zZD1xU$2HAu8WhJkpAQ-xH&)Pl=&wVjn4Ev0i4o$(d`*xPYJNn)?WwiK>@aIBf~|z* zWsN=*5V{|&X8LQrBJaW7Bq_=AFG}E|=%Flr11<@FwF#8h%w*cG8Wps2BuZw-m{4QJ z(Je^|yz@>qiBbwh#M9{A-XftM&JP*$ z(A1Z@3oPs#;FBUuVf6Jc?e2E$&9;%c^Zjb_&b|>S`TSmdU1Wakkb#q^r2V4g1>#Q3fjOT$r9>NbCgf z)FU`9a101zF{@Da&e_K-T0M@kr+lFPqkb0=2zq@4&7NM&Q$ZTbtMZRhM3gIoJ!AYT z9%5QW#ixrUgFwXAE7VTkJ|;A_zHN%|4zxCVhoxQ%YvsA&6A?-ppaRr8f*(qm)`I>W zG^k_q%s+q(gG(0LehOq}IcKzZA9%YiezB?|LVPeyn$NfAMAQC)lZiM>cn22NLwV@` z*D``Y%~!an261G8)oB%hTNR7(Vh1W| zHimpv-PF-#h$N@Gq!40UWO)?U==!0DqvFTcxq$t(xuhiN049tZ@7wt}Y(Ej?ZdJ25bP5Dk@)zsKCvW6B!?`Q| zWe+a#!|+y=bxp6$stQpy))jDJs+EqMv8mH777AHqkcdUg-i5~R`?3ENe1me5N8xQY z(g3jaz90+y=}dh-LOD)pU=GUkA!4e8j-?0BE56DX&!FdEr;o2An}u9}#5$4EOK^dz z$G(IA-HhNBQTLJ_@nbkLy?Kpla^@NDyTd5W`~y0#Y8!mzdeRq3 z`aTUswuVpc?aRFTIOcy$;ebm$0kLh^d1hahJ3KKVqrbXXCL770U zF+>94R*&GW`XZk+`B<}WxD66+m03kO5qh=GKDHV?7%|eD0^k%dDX)^5lXBjdC+ObB zxGSm>3F&z@+U0{H$XXgnW^n_tU5WMWP}vJfjfGs7wrvY{^gT;4%s0Jtq0RA@Y5ZZ^ zdkIr2>4%oz-KzV|%bGRkV&-o?wiGEYnKbeK8HQ@MbSnm;n!gU)p2##b{$Q*WNHX+b zzSuLLHkaLlRpqmyAHGMMRAM1w5{Q6$G6da*;%2I7dmShpqYWcZ*99$E2rus@Q7avE zjK3{RwN_RcT4-IxNnwS{^@X#)Brd7ZW-oFdA4jrs*2AGN>>zFfNl4s|rt$5Rl|il@9>}K!6Y(gb?aGY<2yRUUgW&-n+>)7w7Sfbr9oAdF*?q4@u&;dgw(~RTc+d#H(%< z78#y=2&Zp8!f1q}alilc+ZEm*yxSB)@(7leilByBZ!^8OF3dPEUU^GQrzQIu{y5N^@(eqdO}kZ(=cs_cqqj9Tg7FDcsLM|mAXh6 zx)?kj&JdvK!L1VT=}U=fr7iZe7Z!waJ(A>_RN6_RAEN}6nEqzr!YOu;`VuvoQRuE^ znb%*uTOQ_1tFqqug9O!#(AjLIFp_Eq%*HGwWLSL@@{lXBa96v)&}(R6c_N!FA1qRP zwT!Se|A6sKo*Cn`LBI@|Ki+_-uBXwn$`QN_F;bag6(*N6AzOP_mV6A%w5&hlq{R>C zY5rA^YOIXm4n|({SutEhEHt!^2$)chZUz1q(F%HiqA(BcR+WcAiu{dk*ntMrAz!&Pni&UZ)CA}}G-gx)tpHZ?|Lp}hpex)+SHBGe>*P*w%Vp(B|J$R7l@K1=KBXz+$*a=`y44;Ec<$x;N$Q~iUXz`+@#kx7 zM=mrtAv~=+D}JWh2akuycBG^pk|Wt6G`j-MF~A0d-5+w^I^wE4M~v|8N+EkzWw&yw>zHdaRKu(UvaL2| zPU3fjnu!=@Efl9}`gDi1{jU9ZgE&L3)M8*}B^F$T6vN@`5b*M{^Yj3%`5Dvx1q{#P zFlh;tFYwVuS+O`J7?c#`@l_1Use94vwZHkls1lc{#{VAx`#=Q0+r}8jafF?SX=hYQ z#UX%7qN>>`4vkUTi8>pM=y5}%c`wT<8R1JntOyi6XJm(m58RM9*M{XVL$rBa^#Xr3^wa4&U?KL ztA1RS2;c&&woql6my0~BZ)9Emp$o2Tmk`&|U&2UR-%wp_3>^9f};~SP>~jwLl@(sHpdVY-amySRxl;ljnnIpk)(Rf*378 zh_~(tX%5;-jjR=${kBdFKdR`tC_gwNqR@>1vmMnFP~t_Iq0krA9Zn!H7uEAX7a>|K zDkrPsdJ5A!S&$s+$%}&#JO`*%iB3E3c88DfKB`+UCg9w{RGvff`nA0$f%YIY6Lk7h*q(Rw5kLg zM|Y^w9I+{*YG?$;1wllj)ay|$DvqKh0vJI=!}CCmHK4>%FYQ$A16@(8JtEXkU;R2U0svS^W;cqJeFm6y*BOC#`95 zxMgk48Pq&3&TZ7hh&EONjUC)(u1EvH#0k>Ss5&CjT-3xE4TKyq9lc<5OF^26=qjUh z7waegMU_)U*yuu006H3EsR%7aHBPNK;)w`_s;m$=9@W)G9OIzvjmmcpCP76S2`mLk zP)w1)T1DbSSdUVqB2kW*bs-HH2X!5F*BQhOiEJn2Y>x_r^2L$u>}Z_ddFs;Q12pGt z%CbldgU7Qk17PCtr(GaKbjvXb9844(^kV^g^C+~6ItnWHtux0Gk+T?hQn zrJY-6Vv7lVHcgT#aFk!WYNIHH46tO4z=Wx z`0b*BiEsFq-^VVi?d})-%njq!8f&Pvp2)zq^{t51> zUEKj}k!tw!C;PY7k!86=0W&Gr2ik$Hpj}j-e#Fu%Teor@=X(_y5^f|^rDbzPt7Adevptzb>Sr%JQdJRo`V5_D{?Co}diF)uT~8 z7o-5yUm)-i;x-{Or9O7Zyuq4+8KbEvJa=n- zBNhPHaqa=$*&VR}bbfRFGDJr>hB1I6#+iX#R{4qyJ|bqnb1LUtdlzs4HuW})bFsZk zDnUP?R5LML#g1lwBs2Lg1Vzj=kell1qH}n}>*s1oEY<=n$1^u>xp-jP7Zwdne0jy7_6_}8-v`hX<7~qU zv3AF5YJnALolu3N<0M2n<2W}m{)|%3_wfPH9NCSK>#)4Ks$y{+wpSC_l7g(gIEEk0 zKSIeREa(?rv42--rBZLO@XB`asKg&Xc~xZPZ&%NS(WUbK{bmqSqos<*BD%86>uVn9 zGG+DeflfPJ_d);G_W`mN4R!EdYy)lteoc87)^ZG;ew4NT^=roTi^w_@n|bM3$GZ~C z^b>K+n|1WrHzMNo%fK%_x$Hk2&Z)>zSi!k?@AVF>`ftD!PtOC6TyQR@VuskORqh#ZZn6(#d7+X?-5X^kS^bvo@|ldhAo=dS zl*_5qC0rFj3@$KgFOTDs%MnN}qp-f?F#bqAjI)GM9Nm0f&}@#qvwPgJPyVoNG;l@4 z+oxi?6TTPT5M2`LjUa0HpyFbcK?` zi>__kf)c#}=mXLQbTi18VG_|n1eO?Sr|9*-S_*W4XQ_XnX)FU^VFrq0xeZ#zb-fy4s3gql;~oRb3oq^cu-YeKxq-c{bJ$3 zwxa-!pR)Q16_$c5JMOL3EBvW>5RjQP7uE5E0&g=kyLGkurDtCcdNi<#QRi42?54#!!(2h!^KZxZ0Hw9mJm@wYSLg6}LZWNV25$i}+IDzq)u z44lQ^>&3t?kphEDzDqn`h325|0*L4cR5HWwcbT&0*8OU+3`|S~9V$rj@l#e;F3x*x z{#7j=2@o}Du}Peuths(M^g(s1KP?X;ntuEs`MshD$XwF1|4zV6X4D0%$;b<`RnNxZ zPK=(1$Sa_yMcidVAa|sdF>vOPn$r#|RTFlHrI4AFNqTONL-yN-XP=BQ(}3~p*g2T- zmxkTSGt2hrcxDj;AH9^! zx|s3j#p|(6f}?=}m5F7}5TX`;pZF}IF^X1liOH{lt&YPp-(7c9bA{8@q0z#t+TOfq zVB0?}9@u8Y{z_L~GO+Dwzykp%kkWZqVgaD*>l@dE0-;}lbYFaRyZeB4g5>$r@*pB3 z!;qOg0=Np5zJvlxNXsc8-xMSIBIrV*O?O;#H_(*f)B7@PW+G{MkAmjdIcDM!xeM2^ zO||mfTXEd~9Ma!4{KHs`yp8Z6nJIscAeM81US<24((6!eAvNd9eIys(C050X_;A9Q zN><7Z*v3iq75%YUEN#LY0>Urv_HX&=F^z*M0^cD#8kdd17eX z<@Ggx2tVu%`iZFAa{TM7CoUS;_5{!ciadV8l+||wEFRc)k_ywhytaCuV;&0!CccKs z7bm>FdXIt91y{G}D=Je2;Adjq+S=>FXEup}Funn|8qz$T91OEW|-$7GZPS3d) zr!h)SOEZGHE)i3mF-;kw|*gTf74N6{~LG<1i$bi?J<7!@p@f zhRKlG0_$>T~zy!CrEv}Y! z?)v)1HC61=u(CC|Xkg+FghG&i3(Qm1ATZ2PXF%uISFQA?YCT1I&aY5jBs00qLH*v; zoVhqUoG~fWBetFjd>!$O=#OF=pQ1im%&u* z4|T-jaEZBepkh7C4?t=?{Vkoa!grC10)@bRK$(QgiIdlS1>9WiQQls^?z`)bN{%ir z=?@U&#+-ljn?IL{@s$Lctq+>b1-S0^h?Pd6qHXu}2Q*vPwv8Lq;%bPcCAN*hc+b)- zGs;jT=idM%MXy6FXgoy<}Rg0ut9v*;&SGDOU4jsZ4 zn2)+_f0y<}i3Ua@dI{U*E%wlUVZUJ81u;mW!-fr&W36L>_knwWH!JyYPDg1(+@|uT zfyVh9(FSOx0@1tk+VjKo8+iY3;kL%5z*7H$AAaQWci_B;*SBGteAOp3#5N?mtJ3xf z*!r9ULzE7WiQ)ddzP!@DU3?=`q$x_^#(h2P>J2N`wM|HLmJMoqR3uqoJ0v!bczqAh zA|!#&9iYT@-mN&_IRVctxM*OTi$GF9&J{Hu`BS$ZAT#;UxQViQ7LuN`h4w9vuHvD; zco&O*SoXOf#~}JD8H3AXe4^(7AxeurF58wq{d_{^96tKzs&W!-u#(auKQ?%nk;_Gt z_q+z%x_Cl8`wiW&fx*bklWo{|(W?jYi@Qu-{qd4P?H+EM(B^(qD5XZ7!6&}4a-aLu z^qWCw@m0JNQf{JRkn=}uw$4F~$y`gn1JL!zoy`syM zweJJ(FB+J*Z^;Jfc`b->1C%sWq6(W)5Qs)x2Qd!8U<@IR#Zg6q4KP}YxDCK5#L-5C zD8P}%IFb(vu z*)*u(w>TOmU&bxoU9MH z5nJFHDJ1zha4pzE#{-SdlUIF;)hFA(b6eyQQJuYTVEflkn6mP_h_}{aU0rVhz2l-C zI>!ZDF3B(5fpu+eVrX{jU)J6~xC<+ya~k&efwa_nFziG)?UN0Up0g&9(2(>$bVF(9 zdC=p%`=GJ?UmAF(PZY)oh-3RfVjE5t2~Y&Z0>N;P$p9Gj>?8qoy*o=F+=|k{`&%O) zOxXH4AQWxi4|?rTN=oddEisUm6MpC^f@^n_5-vd7C;>#)p(X&b8bMHJ8E6#Z zF2W^5v@8TEpwL-OOvx5T4=C^-WxEi@7*szXHD>}@$*cCbNEJ#L)%WwVErTWnJden; z74~%b8v%I%DA(tUX|li{@G34rJtoCG;C%0O0dN*JK2aZ#0K5oXT4AjPPhy2NOAm*e zYyP12H>3LKYfbx({ByHgwt{v5I-uGHwB!I87Mc{MY{MEx&UVkq~GJ4m&XvB5XjV2+R`1*@-LP z;AjcKz?YcdCPtsP{;(gHw46s!E=59@kU3yi)rX7>hi$z^A`Aohfy|^c%Prj89;nVi zxQHgRJ|w@_I5LwX)YWAH=m`J>qOZX%ndIMyhlk}dGJ;qDZm&ng(g$06(>`L`I^eh1 zV0YcekarruIr~8w9U}(RLA}>b;+XHDco{$M_?gLr-Fo?y$V_^O^gI_0&LutfNz{E4b$`K$YJzGn@?{u; zi}F7!W8)!pc0;t#DpxqpH*7z@2cn;qy?^cK7Q8Z|GhqWZzz?|iI1DV8Ujgq@UjOj| zyGzNfI|yLwRvx5c8`95knATR^zCGTA6qWY{nr- zQQ^)CzVrhzj`4+!DK2S5AXJLcL`tJ}5G}`{rQ6Y97eZzmQO=13oUOQ~8&H7K2{4GX zLyZFxk7zXNG)7D`NQ@;CaSqP>RS+q`uoH*XsOID7986#fQThQ|yqr-N)$KZ@;d$LL z<}RBMqV2FT&2JGV&}7zs*_zavKxrO^5eS$fvX5cr$*?ibtjy?=>!aS zzB8V27v1L5N&P05_E>rF7T)W5o;z%3Jvi_GVgrO>lmdSP{?B`O9z5JL{U}N}4Uw}E zPDG^(XaY!cZ2tcKhCv9Sx&tUiWj&(#sIvw!8$j3a-ru@3|M{ces3M+jS^+jSyFz`z zqJfG35_IG7Q`X*l#LwO#)8lB~FpkpDvACgF0&)U|7#vPPR8Z**1QFVJUW!;$0-&2ZXlKgMwgl)lI40R;^I@Mzp%U(k=pO8L=R zHMxVCGQ1PZzkUpW#w|85jVNdcqyS+vs#}1?h!kQR7b_ase8kKG+?NRAWfVLQI1+=#EF51Ymj`rR1 zK}r$XgqXFcEWpT@C||Iu^_NWUR#LCVE-kl^_eRcTQSMm)v^!}jzaHD1F-a}$obVC( zz^*TNm`K4nxTB5}OANNB%$=1;d@?Wu*t%c7<<7kJMCnzCoCxM@l=eV8g#>ISQza?N zn$t=N$WD}1h;DE#KFu4*$w#Tg7b z0Hkp7)omo?>V&Rutn+g~Yr7~I$8umf@a66;qjwt7q`~PJ5^$V;VB%4y8%hft5>Ohl zNAX($h(fguDs6yM5xo`xI;?@ToFbIf2rE!$7NTF`l;+gU3^-B9{wK@7IjP(yadJzH zru)QFe=U~_vHeQIH}e0m{jcjPx_IXpAyK}ogiEb3BCidloP%QqqH+T0F^D$X`_-iy zPmgR1hNXxsLF5|(CErqH<{e@azX!IGx>a~X<0$8;X;-xUbK@wdY!U}bn-uuMmWLRr zAH*ZUo)GAWm?TtNf^!_0IB**7gA1-0VFO0yBD#Q3^egE09}c$-@1s^wywfUM z9M}6kmdvg)?9=!4=dqPvsHF_ZVw!{C$4h| z$cbQD*+A}I5lB9;24petIXFwvq8zd=++4@6`_b6!xk&w{3E1R~Qh(~!0}PrJpndDE zP&(t(`(} zeg^X`0i8%7<`W+6wdDYv`N*;}!( zm2!Qh;h(f3R5XBq4npO0&+Su->?}2ivl*j{fW95E zQ~irp|HviDvs%Kd_*c9OTi3?#E^OdFI%4}rz;C$g!)646x8O)0R6B!L;8rt~AhHUh za}eg@nhA{Szx)WjPh+r6(*{RuTY&Avxx$~uM*`_gie`JlIVe}7dIrex5wbrunW_r9 z9@Q^!$e}RsJWu!Au@`6Z2)5S}9?4wqU!3|yF0FxYDUY)(@vMWo6lZDSSy7in45#75 z{@-xnh5Kuxppgc6jMARmL7jS0NU*nV66+p_`!z(24m(P6B{CVPDE56_VZ6;iXi zgWLd|3C>A~){t-%M7E9M57&_FflZm2|(Y zL+98RE8)_vY)j*oaMAtH{^UJ<)_|-B^Er<535Di`gB*~o@3@DGO1E3E8f~BWL*s*t z42R9VPb2937Toi3Iu0#Or+wd zZR`7doj9{Q-tI$1^ZcCnea7#x zP1S;B4+ZNod(R&lAG_eb>;yujVB~sK&Oo&_LJd;*H6P(?T=_3<@dTc{NU)h=VORa} zo>#?3Js_8USgoz_#d{T-!h2{iWKI-~xBU+IE!)?h&ij9B$f^hrj1zzkr$WabaK<&^ zA>9EwAI$$ydAm$D!pHu`71$(-a5cY+&B}Y;9~vKfv~G5spM;UYpeZ0nv1h$JWzE8k z{O^vI5gwJs-hJnzj+0AkY&}b&_j(Doo+baFo<(|2N7M{MovVR%2*T1&VA|tQ6cO@i z-T^Lt5N7||<>xPiKfUoFrSdG#T(ZT#tqvOcVypS%${qk#t1ZJH8XvVn+DARXy$MWG zwPdp(2c~)57jICF( z2$jIB=ir++yyupO<9cl+IrRzR8a&6Si^gLM{!YTrcRv*94tzjl{0p7{QaRXypgs;0 zs4ybud_r;;LT{9o2*StD!xvr_@`=gttNX)C8fD@1^?dXCCN})E8Mm|rR&aGBaKy$_ z>k7GK0Dp;ieJj?de&CQg?Mfs#4D_rB*Gf4yFNgO=!iLH%xOvdKX?)Zj9PJUz@e$kp zgRP75tNDHG)tM5@{o2+YjG>4c^^_RqUOMmDBHwm5N{I&%HyA#=sQdf{1NjVypQ# z_`~C4AJEWSq=Xm2#{tV|7&n;0ZLiX-eF-=JJBWH&XvGEa)MXGG54TPZcQ#!M`Xbus zVX}G_`s8xp;CQZ#u&hThww`6*<1F{iYEEhKXp9U-DhNncg60F$G3F7*UJ%4)9~~F5 z!$xe{Yc^IJtN`0hGAm-A>E4ak%eP?a1fsFk{E^o00&KD6a({Sy>?KYIzViOwiH*$~ zpp*9u$Ri`~cD9*Y5dKJUK{uYdEJ#daxT8`jjG~}R5q*TrlnIAxX~Ll-m%mUktLHZ0 z*}Xp6ph*EbCftURyFoit&nM&~`VOj(k=6fus+Vw?ffb=#g{`M3@%F8p+x{T7Hm9HW z86S1yz8(#vMQmH+5zKe~@c7sZ{01vR3-Gn)VW}R$U_U~kT#h;|pQ|5lTzzW{4WaT8 zF{OXx(F>OzP6KwRnuYc8EPya3?=`WEnAVw6d6IyWj3HR1@gQ1+$}|G*UwHh2$V&f~ zz)RQ$RbjYT{h)^_&tVT?V=l4SI7=kLsmEve@A_N@eC!XAk6NNz z#NYGwxOXUY2T;tBJ);-^03ZNKL_t*YZ_Z=KvPCpG_I8Zi0UTGc6RZRgk|~K=LR#)d z43D#F;}|9nuJ`pbhr)7cg>`+k^p3-Ip>@7yyzj#B47(3?S8RQv2g@@N?RJtOT89z?hbB?_Bm)r^8I-}3HX&t%p2;S2N{Fle{OO3gV7 zhnG>hRAZ%VMr0&SXO6AGfM1DqUp0@|wh-GRrlyL^;nnXzZ}r;-o09wpHeK0A-9|TW z^0$xJ_9QS2znb4i_2>c2@&1m?6pKVGHg^11;PZ&>f3CEk-aYP}+KJNWr!ibmO-I^N zR3;KCy0xxL&g@@uNzJ(w;U$olP zuil`OM=+5KmWkNdj9<;~qbl4;dF*5kaAu|Vqp&X4v6U98j`wUBRO@dXGAD}0`40i9 zpjDJpr~&64n#ym;*sG>z^@v=C<(`M5ZzEjEnBUR%SnIuYyljBK*9-6NI%`g7)pMLgDLes09J9M8J- ztNDFY#$&+U-rxWB79x?)(3h~fh-)f+E)E-ixoMxieMHV6TpbJ2w#w(C${Q5P@Ak5@ zW*sM&L6ZV>NSF)yD48k$sr2pxShtZy`&0hH;LKD4?pZv3fvp!AHtkfL;1tkfsyM?C z>O9Ym9chfebZ0GB8&6ZQweTFQ8*HgRUygXhVqLQrR=Phf!msA{Q4#NARUYt2=JAO4 zezk{%>R*9z`)2_^?K~Xk1(4%+HDq)r5_p{*i*I85t#!fz-#_G%mYWRvB$-LwDpi~I z0&*!&1APa$oV1)wAVidTl8`eKrDGLmR)XrYd>u$nwG0XBHw$@}|a&l7X#F#N;rXmBFRNmV>IH=;a7X7cDmJ!sDU zIgIIp@O~v?319>0VPg5wvnCYL_fc-4)cK`KVnLpx$*fp1Q-;=(SkAzX1b;<279<5Yimd|>tJBA-$74*4049`FNWl21lsx&!mki07`-0(hMC z>}{lGUs(UiMQIIESytM`RzrV}4U}FFY$ZMC22|cdXjbVU24o8`kIbYYWMo)U88WA0 z{&(fq^;hs68-9Pv@@-D@q{VU(w$CwlizFMoKBc$`SNhi3m`$zsooUNeoRlKth8#L|7J<}IZB6%o% zcbVEEvk~WVFbh%gDy|#0y-R9tG@>hkM0DE>B4aqV;{PSA?=y@LHmmFZ@Ka2E)C}XW zQa)j8yBSuH@Hg1ljE^G|k+LuIsf*&YnSH(iS~6_<#W*q%8yW~dU%R74D@mVm4`cdf z)j!JxzCfjKHSZOWn$v)g^93T6iDeZ5=Oi+d&clQfQ4&CAR3t80gQE+9?WjIVR&pe< zBx6(mB8g==Rt7)ACl(*I#LL+JFJU?K7;LuT5Ylo=NYC+8&W~(znOCRJbZr0k$V`sI zFp`R0aidW8anf@B%k6n>>KD1}D3}U*9O=`~udsbsUNh2jpTg1mFtVD+ni7>6WF@y} zbiW@w66p;nrNNmM2}pltO!94HCf`n0N_K?Bm4U5-O^n$44d6836Ms(l*h{>FRk#kf zrwsuAWae`L&>jBp_~cUOF*f-@qD%{vPs$e9s>LX6Xy8s_Sl-nK<23ePol9EwZ$KU) z=$y}}ek)1+pcfLAiqaOLBSJKWRfx0zO$51^%%t*INP5nzC?}Gcd@|`dy$Lu!GOFK7 z(sDAuyoESDQ2B|>q@~!Rx1JH-9+q$!=g$Qn`w3mK#g^rA9IcM~fb~l+_ATNg3cp}w zqwqW=AJnU}AC`SC!ebyE5aLkT2D%DIXA{(sJl22Pf%Sf?OgeD+MQTYtf5EvWycceTpHgx(?C@CPbEz5E>jR+S?cEki4F(&z6d^%wW!I*`W zh-CqAwofcR_A};V1NsZgwya-zAvXTfz#pC?0*xyyF6xWrQo)Kz`IM~WJ_PtbM7{!D zgJ>d#nv5%dI4?&Uu;-FzPKHLkHPw6qU95Riv~ zwJ4joBRc`5fDA7Mc}Lt3#wL9YjN{W62NNoeoY)hv>BoKpC?5xE)p{NiW+79uKW^uHN4?Un=bt^4grsnbsa`3oXP zV+9?fQD-G$UO~xY<)*L78sMbowLsm6zzKooqYXzv(J_cVfU=%Y)JUG}y@BB$w&L3l z2a=t68$=WgIl)3q=w_^tqz@kl8nLwP_6w`$B}8od3R}&;zLv*I0RBLE6Eh!m7vWw_ z0H0A&E~tKD(4+tzTHXofR#ciJS_G^^^aGk~9$8JBl0!%?>A3?y$6+%RHlYYGmtf5O zj5>eswVF=3{AK2S@EbzK<>%R^3!HMBQY4_Q0as)nat!n_kmdAfLECN)(sKFqO|V(9@mWffpagK=->A~ z4l10Wa>Ku#1V%+{JqBCNf7%``AG`2+g2)(-kGhWfmnl|LWTni)4c>^d2{j!+9b8VL zq&SD6*(V=*a!Jqm2ys#oiAVG(#4JP1EsROtm)<64VI^FyDccg&pn$%&PvrV%))C_j zD2vDV@NrNHCZNDQRP6uK2AB!--_0k##%4G!@dwc-mpX&7z1L7$d@aZ%aMmMq0XdC; z%(336eZ$_n#nN)W1U;kdwQ4aY`Yguv{%#-6|(+TLWF?0nd7KdLzKcvZ~DPFo; z5O@%Hs1nJ&j?K#0;@{ss>H)q0dIKL)UT}90w$J*V{^IDcA(tZqS;?1?mNyNI7ef?> zoy=#*oaT%_qc+VNYhk&h<(&iiw~E$O;9|!1{<^}p+w&TemNOBDsUQv_|3=IhFy8=o zlAkc2l=Q2xLD0WMoI@ctP&&{j79aHt3xIR5?Ip@)0x*TLYJL@l=XEDGz6F8k=>7K1 z!}2K7q%a3qN-*ZQDpHZhaq4AbS&;J@6_W|(WAp#N_wQ*R^%SeIuH1L9Rs8^008{z( zmaorH6bpK^LHe)UMtjFQ^bV#^}^y$B4O#hGl%i)vDK4DDKX{6 zLK8{LoN)4Ljo6GX9KG|Dx>!Wmoi`wB<-lD!P4AV;UrE#l{l7-dmhU zX7cR)W4R2=yBbVHuV&d=C9w?6ZVmjFpnGB!#L^Ah7o&UGmZ+FgP8&FxFDBl|-5)o> zl$=c{xSX-Q{md{Q^%*;X%YlCaHv_O`MGXJD{T!h4?%ff|H<0>4JQB4DbPky*=THVbU-cDN1 z4DOj8=ilQ#>M2~Te%N2jwiNA%_pFvCyZ0DG+tg2Ws;(~>+ixqP{{vmI%X_L`@<71x zFTs8zmw89@NIaR64f<}xP1caKobmfkE@?T>fs_|CD$kLXTumX797okLlkX`{<5R2z zMn5|D%0W35xDLl1NM`b6n$8*uIt)02hFc2#d)!Aoh5{J`8{UnSaY<|76yRuVuzw7d z#SlgN+L>u)RDWbgaq3Vncb{AiZ)B!i3PcK8-ol;l$Ls^Ss9;q=!*_i#SxL86ySu2O zBGr(~y;$|wUjajbQZ#S@&=B-bj2>V+RAyutL^lDmcTwj|&*?~7?tP?X-?2ZW34HiC zD7b0TQ}p{2h?q*2%>r!UaAlWEAD|R*%l+DSf82!B-0RAxrddxwfAI(RppeUae>ea~ ze;fIMcERYBSFlP2VS4Eg>g=WE!fg=;DkdxW#oc~+ zz?};8=I*@q)wl@CvoF%KyCQT#`I?N3@)ey1dIC|X%&1^N1>6@g`VeFLZ6#Pz3NjTF zQ{Z25A9Wrvaj^jO81w^>3~VTyRgg(!HGgqwZ#yS-4XN2Fq-I}8diGF6GYOfG_V``u z6nS2RSbyO68qKj{q&~S+hH!0#SE+dq*PdKb^Nz!6C55f{XZOr(1J_YoDk z7AU~Tbl^*DHGgEhQ5lFzKI8iDImQwS&IUGvUh5D1UL!K` zXbY6JTlX<0c`6bSdl9{(_T&=Kva=ZO@ zQ&BcXH3gW>_%lk0j{XxRr3nZQzC4aCJdSvT|06y?j;ciSWwoUc#o5+UlBWY_6G`Z%o5VF z$B~|WJ!!d@k)C}wY1v=m$bD$&QeXqF)4c4nX*quZIT3V$JqKyU*nU4F#DR9g;eAFY zea^~_e@66?GAqW1k2(p{5JN2BB2sz&ticLiMpn{a&KvigLh+75N{fEto{x|6CSVKD z4{H9kZV6~1Xd?`<1e^J3$$L*OzDuk!wr;0KJX$>`@rP ztF^5Nn|VBW832<9yQJo9MD!B>;`^whmW#m_4ZlKa?g&J4NzFc)tQ1?=m^!;5fuiHt zx&2k%xW651<{b^d%J1NnyJETW(XAwOXkuLvNnZh9)#!Wg$WFkK8Nfs`lT-Z*;gidL z#|xKlCoLx*+btMEawqU=&B!Hv_6cZVL`re+wY@rttp4A#JFT!WNgpy~PA-kN9!+V< zi#&NzF#vbYe217qA#1>TyKr;nl^2JVSyLf|#{QM|QRflT*NI{jB9D@qy#z?}1dL9G(AQ*LxVge~?Q!*LzIrX3rPK+S4O{|zR`W@( zjX*%y;a`lsLISqX)hCzT!RUNMI@;UXG^jbbn6PM`{pg{0G4v}UHG4R2;9-W%%wSvT z%?J}1lRVSE%03Pm?w!?~(xPq^h@_O`fTbv3;pkVO>c_3rh(RBVU zYQ#g{sb1tSDmtIy;&5T{3!Hi-toSa8Wgm|~H3-B4Zvnr>#&CQbJaX}^mg=C+vYP1W zS3xckRc^0H-D&N)rx=b89|x3Mcp3BwMBW1~p~=i|Dii?k4Ib^a#j{Q#k?s9^1853F z0~0;#W{iI!d~!MDa7sexo-^EcO;a?wwVa{UPh<4q17J+jc+itkby59*{9Yq!R6`P* z;4RRkHghQ#Tg|_|jM`u{wwk~CHKTg(1&#U_%qN!v1~(?LMjTYd3T<(O6(jyg`tac) zGi5QE$%9cY1_lrnvxxNEA-h$i$m&@LvI6DYT7KIctYUIxd)bI;{;I4iIUCqcsNrh= zV)^89z!0E3LrkmpZtY4QcTGzs7$`T@W3&Z-Pub*;s1F~NkeZ!>$Y{_~aPB2DDW}T) zhUK1zqb~t75P6pE1q-}-u$rI^Rz3ODh;8ox*8qiNOp0b(!l{T1MD;oX@<&D|z2{$? zTB8N!x^DojD!uj*Mq17fT69}8^swvRYA5kAZ_B81RmoO%2Jkil70zcyNHL2PEWcY`z_R}{M1HT6T8L_P^ zR-deke*yLxe!Qh7DCl`E=sJXXh+2ffy4jm;JdV}U;;RX~_p7Nu8Fbo=wW-@Q8A@p%F< zJ2pn_xr#B#?fnt<;iFEWAMhr&njfql;61?O{?ODINkBM_d@YdZ4@o85{eF8wF)PY9 z=yEbsI_{n2^3>Uz&;n)JL}f3$u0sB`!c=mmTevF%3Sb)bvZ%!jM?+ky8vhS}zETS&On`)zpSIcaYwA?wM~u9`NXTG^`2+hq-IY79z*mR#-vO?GRG+I zdW`u`c})x8m|l$O|8Z>&Q@dthnMr4WtSdK@G>#4}Rx)T(z@NiDeAG!i2HXsUyw}aK z)%+J7c@NF(D^U3@ChB~TSRgW(ulfU-$8XVFGnMY#j`p+fh>&7L&}R{YZz3#R3s z0{XrsWqAnEIVf!qeGipnj5CI@{eC`th$S}_)yzul@Csv+uie{2I(zl0$NFzWOWL84 z7K}6{->f5jW>`|wdGF#|XsSQW9jd=y*F?;O^@+@&kRSCxpR4ex3q1dM1Ph<*fhxMH zoIpZPRI6gP#-WYt$t}6r^<#&lO|k(m*fO?);Jv^f=*ZFhV&YJ3?s&8hFX88HQVDJV;5AC00yZg3@{)0#Eb zGZbdu@_CQ``LvZM#~-0)OE;7qv3C)X=gBLb=lZe3(I(jz6)-V_Cf@`WG}Gie4$4O$ z=eO`pBd`uHlR?Z($NxB}V8hMEF&&Gtgn|NlY*T*lhrma4mY<Y)`tA972Fe(Ju{RtHd>ic&$*RmbzSeXpb|a1qF&7{SsHmFw}zehM<{ z*;)QDLVrT$jyBsC_m$m7edA7!ue||kLB7oFtin_EGpEkZT9}gsk)JfRX-YprzC+GT z=5Vx0s_|l8UWnN?5?BoMZL()USpvDibJ~x|rx^t|HG&i(I_FbECpwjn0um9LD$H?a zJRlhB373NTarjIGNG75^0C@4H2(TNW?YS`*6c}<#N{QI#Kw{gVibUy4Vb+3E`E#c} z!|{xgF<4my#5Mb+CG0qy6>WTn!_jsS;AtQ)X4_smb-RW;Ul@h(9bh=#nnW7t8jyLU znCB?S47VQvGe3^1t|h=OH1Xdl8e4awRv#Qlm{$=7gZzNPte+qIE-zSwa4VgccIU|W zY#^0cIe%&L{|_upr?GJ_MsDEgtXJC1wf~@OJU;t6kl19q@+PTE$22kXwOQc;Q1Dy= zm3`kvXr3;h0nAhiGym@Tv%}HmI3CU4DILD@SePz-Hj$A001fpe%)PpSg0ciE?G)f4 zgfOANSD8EUV7s}(naes8u73{9D3rMvy9i?|P+uRcUJvpu#6FJtrXkE_Ry4*Vw`2k$ zuK=ql%+4aO{hJX zG{wXK01>`PL_t*i2S#UN%}9!}9%_2b(k~OyuaRnQZxb`R>A_p^$vjk>n=%g&up@b5 z%8t`L9X`#P!h&;&#IHbURw7v~m}e-=y4Uq*hocQKb=Duj-opRPG^heZfV+U-G__C^ z7%C?egSv!=d|z2l!geHTKV zExwqdDeGJ1yz>_JLH$9`wAW;~S0Y--oa`BA;xx`&RmmBz-;Xsv1!+2qQK~VKY0SFf zdDp8Qj@CwnywY8)`qQJl@!S(Mjplz8C}=v6m5m1b0)<)q$qkN2n1YBP;kh&jP~P2 z|0fc#-^BV83EO87a!|dOqMSc;*!H?-Nd|%ND$ul;t*MCKz^t6VoiT+VzwB|W%}1oU zCtMhn2U}xid1g~S{4%qeS=pm7ItA6HImkr%VC+B03$7#om42?5I~=Wm)gGX`qMzQu z%eQs3UizPazn@@g@fb^};Tt?LrIM#I_hEDukb?T&Y4LYDN}}5&38QuzsyD^FuEgIw z?(Z~_7o0&}X$`6~n+O&KR7wanB)68yvUP6o(>WzTI{Co?t`AZ0AEEr1rfDZGMiaJ^ zTlzM>&{Uqja+~Y%4#ycnr4o@?Eqps(>Es!}gVA9tc5oXDWPtvRxmQ=k3~uKD<)kfM zcWm2?h24qxE&*<&((VKvYxnK-_=Jyvk~99hdBN$xPkn5w4 zmHiky4=1AbkKO`*6NP9v*1wg!;5u@PUG+SN<4lmoCZGp1%VHgH4gfPbUK1vk9|Djl z&o&cMlYzxe;wP+s5a36oJE(Du{Vy=1_#yIwM}VRh1j`|O`Xvgp22+%?wY5)G+DxP6 zE>A@2{)`tf+`@V3HVo6EvmS@TaoV)v(%+(5O;Psr&!9oqBU;U@oNmXqd4Yt7KysS| zAs+vq|3-BaMLCbU#{LZ4vmlE0Scq;36ZRxbzj`mPAwvNK=>j~I& zl$Sx8MU2V-tQ3dAz%K;|Une*C)lb~-zTnq^cvO}&+1?nM02qv2 zMDFrL@=C9BjruPz^Yz~3mAynDt_GF6PZTU#1@>+Vv(ws|V1d?JbNM8mm{JK`$2}`k z@YT-4=u{wfp{gs$Z1RFnK=EJE$oE|^ro(Xxc`|bs`NcPYd5QesaD4Gk^5pmtWQ+VD=Ti zZ__$Tn?19+qpN_MxveaLu8}!d`4&PP*Bu)e4cY@_KOz5$WBJ4i3Jg^f?gP#NRjlthB>sJ&o!Jdn>H1vw1b{irOP?-H< zd%tAqKo9I!5q$)ei&~z|9McAhLGPn5=L6Tv9gZ_Ozy`Ch+zj*wiFjFt_1CSI;PG^G z<9r`|)9(dyCsxl#q~&o*sYUc9G<)KfU z{>UTIIKH!jvop#)_w`AL|6zo2EmUcXWh3xD$lqwt#XOV!k?U0s$5}{0nV)hy3cp?h zG7cDj(iw^Zs(Uc}g$O@oPR{HD2=QaYP6j$RYn{zN9~29$0lES&A$BQZ zm+|zKHLlk=9352&eQgi~CLmmkN;-y1QB48a20EyjKv9tGn8@$I|7&Jt9y;5b&k2`U z?tX0$@qzCmG6A>@*az$f9f7hcS~fHdSPG0mc?IkWj9Eov!zyP&b2!>D)0gzZG)@E= z0Zc_?7pfzoYbC3J2?!fd5`lq;>_v4mKKV~7Q=V^9_SoTs%SpLsK|KEWNeCkmZozUc z!UkY0!Wxu5KnAb`m;|~WVIykZ#ZpR|tZA>oPY%b~VYOJ+n^5CqL`MRHfNKz0hUzFF z#L;4D!Wyjh_Uhco??FERUEsnQoNzfsT1{Dh4C5hk9V%lHwgclljYiIk&S;ha6A{)$ z6Krn7@-m|D(WuLLCg-qgNQa{pC@3&gP8@;>4@XT7Vn(4k#P$nsIC!`VLA6 zVI2`&fW$9n_QbueF`aN}MXhLl97obeVHty%3xTO1YdnF&9-s=i0A(@4B;Y+flUgFm zUx7o2ya9GSh1r{3E;NVZpJ2wqBpS@c1k7lJ{-{m?IUn?GkWqMRq!WPsD2EV+BDx5b z$%rmPWi_g6F|vqR&Lh+bmo_bI%KRMhUkZ(5u}nsY1FiwqfLsXb1J(kg@YZZ5;?*jT z1CoH3P(Jo%J$4f{>6_eQp~Hb!ium*psa zL{_4@2zZmC?A@+Wop5RI+SLGT+$acN4CV@iDwJ$s1JD;p27NPXN?U?55#>V+87K*; zzKlpUsw;r4__RX=Z;&^<#dlo_aw!l*WIbv(BC^t%xSVit9Odq^WD>)}u)a$W9gOH? zkaCnPlobeLP~98NuG%x|(K6!11E~eG5ws4~|H7~vtM5}&zlC|u+r`le%zV8!A^%`R z2B3N&#$JZXaL_c6mLlCF-Uy}ZQ5lBnB19%5vI^CK2rIC%8tez)TTRjAEpDyS2^Ysd ztJzg#T!`p}h+YB=_d26yBW4+D$A8K#jtU@M1~NXX2`VD*qmj*s*^Lct!TLWsThmlH zPSJB(p4JbaZvdhLP}9RJ<|iT0Ye3h4Ohjchq9cGB_=IG#9v=b+5O!dB1Cg!x1?`1&2N`*biq@k z1l8UsZ(uZp`Az4Fvgz)wkJXaOJ_vWQKHBZm3jwS@y8eKAr?zh{2$80YU{T zK76(_>i>Y`%0c7@gD7d9#|;Mf0JI9f?#8m8xa9rBy>^g-0_$#4J7C(&ok)r6fi*o) z)62`DrRSk^!pOy7<4_q!hy?t47^N2~>kz#J)i=E4ud)bHgKA||RO|&E3RHmU2?|0o zZ~$~0umxo`*f1gAn>08f;)IK%?eo;AeRw(1mNqq86d3BpolD3!7!&D@`Y%E?fRKa` z_AKIRukOJ&Rq$d!@Xg4pFe6;?%SRV)o4JbPhU4@#Jpc_DU zW7$HyZsCcXN_T^taB*}ryqUy~=<7tLm!%P)KOy?#i}dpZj9dU32I=gThz3+FqF^YcSFU z%ZC`^5xWO9A#CI@K3@aa8mv?yT1_af0e`5H245{H{st0)mF;fURPbB^^@9>o=}f3T zflwfc_{LQ5`>{41G#)V-AQo&NFmob1NXBYnw4QsQ$vG*F-fbo7x~t_N-4Nc!N)3i$l=p$3W6V~>?xZqxhns;o zoN#e8Wp-u-USQ|imIuJH1ZwO#M6?H@13*%Mw?Gm>Yd|_7T8@&AuotB_NCnUf)fz-V zsgDj^VFa*PPe6%)c0z4eU?@JRMHz{Y4Ja3(=0ji*#fGzc0cwm zdJvTi#CH&lWB`W%&$MXhckHu~a#VX`sf!B88br?ps(~JOcE}{4b5zssNhSM{#vX`l z0~tUd^d8m>K_Y8GhM{H^=ogQfp|GBNuJ{&3v-Z}Y+7)yoo{_T-0hAi=T`LeWfO3=! zPxzDO%|4`a^qfM#dXP=ftu-iSY1iOPV0s)>HDsCZ(<`^QE^4g=c}YCtxCz5#3pJ%VLF zY7XIJAGYxTyQ>cH;!P3vkUN}kakO2$0%}{Mug@T~$`Uvf=t7_|9U;}rCap;r$-qhi zLN`yCNCs+?F~pON#Gs-PZveK|TOSbX`7#{+D|(VJ32pK7 z(E(kodIP;29oW6&E0HGWq0$)j&1{Sckb2P0c<~&bFcnEeHH2yiksYWWL|Bco31K@% zx1+p;uoLuU)VBxhFNpXK;)~40au~uD6kYkTi}`T0HqI5<(J{EKEPM0~Z$)cOLb zF9o0aK$EZCZU8uGf*lKQh_RvZYcGLc15Hd)h@utK>D%ILIqYj zBeDlA literal 0 HcmV?d00001 diff --git a/figs/stewart_architecture_example_pose.png b/figs/stewart_architecture_example_pose.png new file mode 100644 index 0000000000000000000000000000000000000000..cf238a92a3087f820323837682b784c7a4b4ecb1 GIT binary patch literal 29132 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 Or1VZ*u3W}6;Qs(a%L{t| literal 0 HcmV?d00001 diff --git a/index.html b/index.html index d9035a1..951d391 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Design of the Nano-Hexapod and associated Control Architectures - Summary @@ -35,119 +35,119 @@

Table of Contents

@@ -161,7 +161,7 @@ This consists of a nano-hexapod and an associated control architecture that are

-To understand the design challenges of such system, a short introduction to Feedback control is provided in Section 1. +To understand the design challenges of such system, a short introduction to Feedback control is provided in Section 1. The mathematical tools (Power Spectral Density, Noise Budgeting, …) that will be used throughout this study are also introduced.

@@ -170,51 +170,51 @@ The mathematical tools (Power Spectral Density, Noise Budgeting, …) that To be able to develop both the nano-hexapod and the control architecture in an optimal way, we need a good estimation of:

    -
  • the micro-station dynamics (Section 2)
  • -
  • the frequency content of the sources of disturbances such as vibrations induced by the micro-station’s stages and ground motion (Section 3)
  • +
  • the micro-station dynamics (Section 2)
  • +
  • the frequency content of the sources of disturbances such as vibrations induced by the micro-station’s stages and ground motion (Section 3)

-A model of the micro-station is then developed and tuned using the previous estimations (Section 4). +A model of the micro-station is then developed and tuned using the previous estimations (Section 4). The nano-hexapod is further included in the model.

The effects of the nano-hexapod characteristics on the system dynamics are then studied. -Based on that, an optimal choice of the nano-hexapod stiffness is made (Section 5). +Based on that, an optimal choice of the nano-hexapod stiffness is made (Section 5).

Finally, using the optimally designed nano-hexapod, a robust control architecture is developed. -Simulations are performed to show that this design gives acceptable performance and the required robustness (Section 6). +Simulations are performed to show that this design gives acceptable performance and the required robustness (Section 6).

-
-

1 Introduction to Feedback Systems and Noise budgeting

+
+

1 Introduction to Feedback Systems and Noise budgeting

- +

-In this section, some basics of feedback systems are first introduced (Section 1.1). +In this section, some basics of feedback systems are first introduced (Section 1.1). This should highlight the challenges of the required combined performance and robustness.

-In Section 1.2 is introduced the dynamic error budgeting which is a powerful tool that allows to derive the total error in a dynamic system from multiple disturbance sources. +In Section 1.2 is introduced the dynamic error budgeting which is a powerful tool that allows to derive the total error in a dynamic system from multiple disturbance sources. This tool will be widely used throughout this study to both predict the performances and identify the effects that do limit the performances.

-
-

1.1 Feedback System

+
+

1.1 Feedback System

- +

The use of Feedback control in a motion system required to use some sensors to monitor the actual status of the system and actuators to modifies this status. @@ -249,11 +249,11 @@ Thus the robustness properties of the feedback system must be carefully g

-
-

1.1.1 Simplified Feedback Control Diagram for the NASS

+
+

1.1.1 Simplified Feedback Control Diagram for the NASS

-Let’s consider the block diagram shown in Figure 1 where the signals are: +Let’s consider the block diagram shown in Figure 1 where the signals are:

  • \(y\): the relative position of the sample with respect to the granite (the quantity to be controlled)
  • @@ -273,7 +273,7 @@ The dynamical blocks are:
-
+

classical_feedback_small.png

Figure 1: Block Diagram of a simple feedback system

@@ -295,11 +295,11 @@ In the next section, we see how the use of the feedback system permits to lower
-
-

1.1.2 How does the feedback loop is modifying the system behavior?

+
+

1.1.2 How does the feedback loop is modifying the system behavior?

-If we write down the position error signal \(\epsilon = r - y\) as a function of the reference signal \(r\), the disturbances \(d\) and the measurement noise \(n\) (using the feedback diagram in Figure 1), we obtain: +If we write down the position error signal \(\epsilon = r - y\) as a function of the reference signal \(r\), the disturbances \(d\) and the measurement noise \(n\) (using the feedback diagram in Figure 1), we obtain: \[ \epsilon = \frac{1}{1 + GK} r + \frac{GK}{1 + GK} n - \frac{G_d}{1 + GK} d \]

@@ -340,8 +340,8 @@ Ideally, we would like to design the controller \(K\) such that:
-
-

1.1.3 Trade off: Disturbance Reduction / Noise Injection

+
+

1.1.3 Trade off: Disturbance Reduction / Noise Injection

We have from the definition of \(S\) and \(T\) that: @@ -359,7 +359,7 @@ There is therefore a trade-off between the disturbance rejection and the meas

-Typical shapes of \(|S|\) and \(|T|\) as a function of frequency are shown in Figure 2. +Typical shapes of \(|S|\) and \(|T|\) as a function of frequency are shown in Figure 2. We can observe that \(|S|\) and \(|T|\) exhibit different behaviors depending on the frequency band:

@@ -385,7 +385,7 @@ We can observe that \(|S|\) and \(|T|\) exhibit different behaviors depending on -
+

h-infinity-2-blocs-constrains.png

Figure 2: Typical shapes and constrain of the Sensibility and Transmibility closed-loop transfer functions

@@ -393,11 +393,11 @@ We can observe that \(|S|\) and \(|T|\) exhibit different behaviors depending on
-
-

1.1.4 Trade off: Robustness / Performance

+
+

1.1.4 Trade off: Robustness / Performance

- +

@@ -418,11 +418,11 @@ The main issue it that for stability reasons, the system dynamics must be kno

-For mechanical systems, this generally means that the control bandwidth should take place before any appearing of flexible dynamics (right part of Figure 3). +For mechanical systems, this generally means that the control bandwidth should take place before any appearing of flexible dynamics (right part of Figure 3).

-
+

oomen18_next_gen_loop_gain.png

Figure 3: Envisaged developments in motion systems. In traditional motion systems, the control bandwidth takes place in the rigid-body region. In the next generation systemes, flexible dynamics are foreseen to occur within the control bandwidth. oomen18_advan_motion_contr_precis_mechat

@@ -452,11 +452,11 @@ This problem of robustness represent one of the main challenge for the de
-
-

1.2 Dynamic error budgeting

+
+

1.2 Dynamic error budgeting

- +

The dynamic error budgeting is a powerful tool to study the effects of multiple error sources (i.e. disturbances and measurement noise) and to predict how much these effects are reduced by a feedback system. @@ -467,19 +467,19 @@ The dynamic error budgeting uses two important mathematical functions: the Po

-After these two functions are introduced (in Sections 1.2.1 and 1.2.2), is shown how do multiple error sources are combined and modified by dynamical systems (in Section 1.2.3 and 1.2.4). +After these two functions are introduced (in Sections 1.2.1 and 1.2.2), is shown how do multiple error sources are combined and modified by dynamical systems (in Section 1.2.3 and 1.2.4).

-Finally, the dynamic noise budgeting for the NASS is derived in Section 1.2.5. +Finally, the dynamic noise budgeting for the NASS is derived in Section 1.2.5.

-
-

1.2.1 Power Spectral Density

+
+

1.2.1 Power Spectral Density

- +

@@ -508,11 +508,11 @@ One can also integrate the infinitesimal power \(S_{xx}(\omega)d\omega\) over a

-
-

1.2.2 Cumulative Power Spectrum

+
+

1.2.2 Cumulative Power Spectrum

- +

@@ -546,19 +546,19 @@ The Cumulative Power Spectrum is generally shown as a function of frequency, and

-
-

1.2.3 Modification of a signal’s PSD when going through a dynamical system

+
+

1.2.3 Modification of a signal’s PSD when going through a dynamical system

- +

-Let’s consider a signal \(u\) with a PSD \(S_{uu}\) going through a LTI system \(G(s)\) that outputs a signal \(y\) with a PSD (Figure 4). +Let’s consider a signal \(u\) with a PSD \(S_{uu}\) going through a LTI system \(G(s)\) that outputs a signal \(y\) with a PSD (Figure 4).

-
+

psd_lti_system.png

Figure 4: LTI dynamical system \(G(s)\) with input signal \(u\) and output signal \(y\)

@@ -573,15 +573,15 @@ The Power Spectral Density of the output signal \(y\) can be computed using:
-
-

1.2.4 PSD of combined signals

+
+

1.2.4 PSD of combined signals

- +

-Let’s consider a signal \(y\) that is the sum of two uncorrelated signals \(u\) and \(v\) (Figure 5). +Let’s consider a signal \(y\) that is the sum of two uncorrelated signals \(u\) and \(v\) (Figure 5).

@@ -590,7 +590,7 @@ We have that the PSD of \(y\) is equal to sum of the PSD and \(u\) and the PSD o

-
+

psd_sum.png

Figure 5: \(y\) as the sum of two signals \(u\) and \(v\)

@@ -598,15 +598,15 @@ We have that the PSD of \(y\) is equal to sum of the PSD and \(u\) and the PSD o
-
-

1.2.5 Dynamic Noise Budgeting

+
+

1.2.5 Dynamic Noise Budgeting

- +

-Let’s consider the Feedback architecture in Figure 1 where the position error \(\epsilon\) is equal to: +Let’s consider the Feedback architecture in Figure 1 where the position error \(\epsilon\) is equal to: \[ \epsilon = S r + T n - G_d S d \]

@@ -630,25 +630,25 @@ To estimate the PSD of the position error \(\epsilon\) and thus the RMS residual
  • The Power Spectral Densities of the signals affecting the system:
      -
    • The disturbances \(S_{dd}\): this will be done in Section 3
    • +
    • The disturbances \(S_{dd}\): this will be done in Section 3
    • The sensor noise \(S_{nn}\): this can be estimated from the sensor data-sheet
    • The wanted sample’s motion \(S_{rr}\): this is a deterministic signal that we choose. For a simple tomography experiment, we can consider that it is equal to \(0\) as we only want to compensate all the sample’s vibrations
  • The dynamics of the complete system comprising the micro-station and the nano-hexapod: \(G\), \(G_d\). -To do so, we need to identify the dynamics of the micro-station (Section 2), include this dynamics in a model (Section 4) and add a model of the nano-hexapod to the model (Section 5)
  • -
  • The controller \(K\) that will be designed in Section 6
  • +To do so, we need to identify the dynamics of the micro-station (Section 2), include this dynamics in a model (Section 4) and add a model of the nano-hexapod to the model (Section 5) +
  • The controller \(K\) that will be designed in Section 6
-
-

2 Identification of the Micro-Station Dynamics

+
+

2 Identification of the Micro-Station Dynamics

- +

As explained before, it is very important to have a good estimation of the micro-station dynamics as it will be used: @@ -666,7 +666,7 @@ All the measurements performed on the micro-station are detailed in 6. +The general procedure to identify the dynamics of the micro-station is shown in Figure 6. The steps are:

    @@ -676,7 +676,7 @@ The steps are:
-
+

vibration_analysis_procedure.png

Figure 6: Vibration Analysis Procedure

@@ -688,11 +688,11 @@ Instead, the model will be tuned using both the modal model and the response mod

-
-

2.1 Experimental Setup

+
+

2.1 Experimental Setup

- +

@@ -718,13 +718,13 @@ In order to perform the modal analysis, the following devices were used: The measurement consists of:

    -
  • Exciting the structure at the same location with the instrumented hammer (Figure 7)
  • +
  • Exciting the structure at the same location with the instrumented hammer (Figure 7)
  • Fix the accelerometers on each of the stages to measure all the DOF of the structure. The position of the accelerometers are:
    • 4 on the first granite
    • 4 on the second granite
    • -
    • 4 on top of the translation stage (Figure 8)
    • +
    • 4 on top of the translation stage (Figure 8)
    • 4 on top of the tilt stage
    • 3 on top of the spindle
    • 4 on top of the hexapod
    • @@ -740,14 +740,14 @@ It was chosen to have some redundancy in the measurement to be able to verify th

      -
      +

      hammer_z.gif

      Figure 7: Example of one hammer impact

      -
      +

      accelerometers_ty_overview.jpg

      Figure 8: 3 tri axis accelerometers fixed to the translation stage

      @@ -755,11 +755,11 @@ It was chosen to have some redundancy in the measurement to be able to verify th
      -
      -

      2.2 Results

      +
      +

      2.2 Results

      - +

      @@ -768,18 +768,18 @@ From the measurements are extracted all the transfer functions from forces appli

      Modal shapes and natural frequencies are then computed. -Example of the obtained micro-station’s mode shapes are shown in Figures 9 and 10. +Example of the obtained micro-station’s mode shapes are shown in Figures 9 and 10.

      -
      +

      mode1.gif

      Figure 9: First mode that shows a suspension mode, probably due to bad leveling of one Airloc

      -
      +

      mode6.gif

      Figure 10: Sixth mode

      @@ -807,12 +807,12 @@ This thus means that a multi-body model can be used to correctly represent th

      Many Frequency Response Functions (FRF) are obtained from the measurements. -Examples of FRF are shown in Figure 11. +Examples of FRF are shown in Figure 11. These FRF will be used to compare the dynamics of the multi-body model with the micro-station dynamics.

      -
      +

      frf_all_bodies_one_direction.png

      Figure 11: Frequency Response Function from forces applied by the Hammer in the X direction to the acceleration of each solid body in the X direction

      @@ -820,8 +820,8 @@ These FRF will be used to compare the dynamics of the multi-body model with the
      -
      -

      2.3 Conclusion

      +
      +

      2.3 Conclusion

      @@ -829,7 +829,7 @@ The dynamical measurements made on the micro-station confirmed the fact that a m

      -In Section 4, the obtained Frequency Response Functions will be used to compare the model dynamics with the micro-station dynamics. +In Section 4, the obtained Frequency Response Functions will be used to compare the model dynamics with the micro-station dynamics.

      @@ -837,11 +837,11 @@ In Section 4, the obtained Frequency Response Function
      -
      -

      3 Identification of the Disturbances

      +
      +

      3 Identification of the Disturbances

      - +

      In this section, all the disturbances affecting the system are identified and quantified. @@ -855,13 +855,13 @@ Note that the low frequency disturbances such as static guiding errors and therm The main challenge is to reduce the disturbances containing high frequencies, and thus efforts are made to identify these high frequency disturbances such as:

        -
      • Ground motion (Section 3.1)
      • -
      • Vibration introduced by control systems (Section 3.2)
      • -
      • Vibration introduced by the motion of the spindle and of the translation stage (Section 3.3)
      • +
      • Ground motion (Section 3.1)
      • +
      • Vibration introduced by control systems (Section 3.2)
      • +
      • Vibration introduced by the motion of the spindle and of the translation stage (Section 3.3)

      -A noise budgeting is performed in Section 3.4, the vibrations induced by the disturbances are compared and the required control bandwidth is estimated. +A noise budgeting is performed in Section 3.4, the vibrations induced by the disturbances are compared and the required control bandwidth is estimated.

      @@ -869,11 +869,11 @@ The measurements are presented in more detail in -

      3.1 Ground Motion

      +
      +

      3.1 Ground Motion

      - +

      @@ -881,12 +881,12 @@ Ground motion can easily be estimated using an inertial sensor with sufficient s

      -To verify that the inertial sensors are sensitive enough, a Huddle test has been performed (Figure 12). +To verify that the inertial sensors are sensitive enough, a Huddle test has been performed (Figure 12). The details of the Huddle Test can be found here.

      -
      +

      geophones.jpg

      Figure 12: Huddle Test Setup

      @@ -898,7 +898,7 @@ The low frequency differences between the ground motion at ID31 and ID09 is just

      -
      +

      ground_motion_compare.png

      Figure 13: Comparison of the PSD of the ground motion measured at different location

      @@ -906,11 +906,11 @@ The low frequency differences between the ground motion at ID31 and ID09 is just
      -
      -

      3.2 Stage Vibration - Effect of Control systems

      +
      +

      3.2 Stage Vibration - Effect of Control systems

      - +

      @@ -933,11 +933,11 @@ Complete reports on these measurements are accessible -

      3.3 Stage Vibration - Effect of Motion

      +
      +

      3.3 Stage Vibration - Effect of Motion

      - +

      We consider here the vibrations induced by scans of the translation stage and rotation of the spindle. @@ -948,15 +948,15 @@ Details reports are accessible -

      Spindle and Slip-Ring

      -
      +
      +

      Spindle and Slip-Ring

      +

      -The setup for the measurement of vibrations induced by rotation of the Spindle and Slip-ring is shown in Figure 14. +The setup for the measurement of vibrations induced by rotation of the Spindle and Slip-ring is shown in Figure 14.

      -
      +

      rz_meas_errors.gif

      Figure 14: Measurement of the sample’s vertical motion when rotating at 6rpm

      @@ -972,7 +972,7 @@ A geophone is fixed at the location of the sample and the motion is measured:

    -The obtained Power Spectral Densities of the sample’s absolute velocity are shown in Figure 15. +The obtained Power Spectral Densities of the sample’s absolute velocity are shown in Figure 15.

    @@ -989,7 +989,7 @@ Its cause has not been identified yet

-
+

sr_sp_psd_sample_compare.png

Figure 15: Comparison of the ASD of the measured voltage from the Geophone at the sample location

@@ -1004,19 +1004,19 @@ Some investigation should be performed to determine where does this 23Hz motion
-
-

Translation Stage

-
+
+

Translation Stage

+

The same setup is used: a geophone is located at the sample’s location and another on the granite.

-A 1Hz triangle motion with an amplitude of \(\pm 2.5mm\) is sent to the translation stage (Figure 16), and the absolute velocities of the sample and the granite are measured. +A 1Hz triangle motion with an amplitude of \(\pm 2.5mm\) is sent to the translation stage (Figure 16), and the absolute velocities of the sample and the granite are measured.

-
+

ty_position_time.png

Figure 16: Y position of the translation stage measured by the encoders

@@ -1024,20 +1024,20 @@ A 1Hz triangle motion with an amplitude of \(\pm 2.5mm\) is sent to the translat

-The time domain absolute vertical velocity of the sample and granite are shown in Figure 17. +The time domain absolute vertical velocity of the sample and granite are shown in Figure 17. It is shown that quite large motion of the granite is induced by the translation stage scans. This could be a problem if this is shown to excite the metrology frame of the nano-focusing lens position stage.

-
+

ty_z_time.png

Figure 17: Vertical velocity of the sample and marble when scanning with the translation stage

-The Amplitude Spectral Densities of the measured absolute velocities are shown in Figure 18. +The Amplitude Spectral Densities of the measured absolute velocities are shown in Figure 18. The ASD contains any peaks starting from 1Hz showing the large spectral content of the motion which is probably due to the triangular reference of the translation stage.

@@ -1055,7 +1055,7 @@ Thus, if the detector is only used in between the triangular peaks, the vibratio
-
+

asd_z_direction.png

Figure 18: Amplitude spectral density of the measure velocity corresponding to the geophone in the vertical direction located on the granite and at the sample location when the translation stage is scanning at 1Hz

@@ -1064,11 +1064,11 @@ Thus, if the detector is only used in between the triangular peaks, the vibratio
-
-

3.4 Open Loop noise budgeting

+
+

3.4 Open Loop noise budgeting

- +

@@ -1076,7 +1076,7 @@ We can now compare the effect of all the disturbance sources on the position err

-The Power Spectral Density of the motion error due to the ground motion, translation stage scans and spindle rotation are shown in Figure 19. +The Power Spectral Density of the motion error due to the ground motion, translation stage scans and spindle rotation are shown in Figure 19.

@@ -1084,26 +1084,26 @@ We can see that the ground motion is quite small compare to the translation stag

-
+

dist_effect_relative_motion.png

Figure 19: Amplitude Spectral Density fo the motion error due to disturbances

-The Cumulative Amplitude Spectrum is shown in Figure 20. +The Cumulative Amplitude Spectrum is shown in Figure 20. It is shown that the motion induced by translation stage scans and spindle rotation are in the micro-meter range for frequencies above 1Hz.

-
+

dist_effect_relative_motion_cas.png

Figure 20: Cumulative Amplitude Spectrum of the motion error due to disturbances

-From Figure 20, required bandwidth can be estimated by seeing that \(10\ nm [rms]\) motion is induced by the perturbations above 100Hz. +From Figure 20, required bandwidth can be estimated by seeing that \(10\ nm [rms]\) motion is induced by the perturbations above 100Hz.

@@ -1116,8 +1116,8 @@ From that, it can be concluded that control bandwidth will have to be around 100

-
-

3.5 Better estimation of the disturbances

+
+

3.5 Better estimation of the disturbances

All the disturbance measurements were made with inertial sensors, and to obtain the relative motion sample/granite, two inertial sensors were used and the signals were subtracted. @@ -1137,8 +1137,8 @@ The detector requirement would need to have a sample frequency above \(400Hz\) a

-
-

3.6 Conclusion

+
+

3.6 Conclusion

@@ -1163,14 +1163,14 @@ This should however not change the conclusion of this study nor significantly ch

-
-

4 Multi Body Model

+
+

4 Multi Body Model

- +

-As was shown during the modal analysis (Section 2), the micro-station behaves as multiple rigid bodies (granite, translation stage, tilt stage, spindle, hexapod) connected with some discrete flexibility (stiffnesses and dampers). +As was shown during the modal analysis (Section 2), the micro-station behaves as multiple rigid bodies (granite, translation stage, tilt stage, spindle, hexapod) connected with some discrete flexibility (stiffnesses and dampers).

@@ -1183,11 +1183,11 @@ A small summary of the multi-body Simscape is available -

4.1 Multi-Body model

+
+

4.1 Multi-Body model

- +

@@ -1211,11 +1211,11 @@ Then, the values of the stiffnesses and damping properties of each joint is manu

-The 3D representation of the simscape model is shown in Figure 21. +The 3D representation of the simscape model is shown in Figure 21.

-
+

simscape_picture.png

Figure 21: 3D representation of the simscape model

@@ -1223,11 +1223,11 @@ The 3D representation of the simscape model is shown in Figure -

4.2 Validity of the model’s dynamics

+
+

4.2 Validity of the model’s dynamics

- +

@@ -1235,7 +1235,7 @@ Tuning the dynamics of such model is very difficult as there are more than 50 pa

-The comparison of three of the Frequency Response Functions are shown in Figure 22. +The comparison of three of the Frequency Response Functions are shown in Figure 22.

@@ -1247,7 +1247,7 @@ We believe that the model is representing the micro-station dynamics with suffic

-
+

identification_comp_top_stages.png

Figure 22: Frequency Response function from Hammer force in the X,Y and Z directions to the X,Y and Z displacements of the micro-hexapod’s top platform. The measurements are shown in blue and the Model in red.

@@ -1280,11 +1280,11 @@ Then, using the model, we can
-
-

4.3 Wanted position of the sample and position error

+
+

4.3 Wanted position of the sample and position error

- +

@@ -1292,7 +1292,7 @@ For the control of the nano-hexapod, the sample position error (the motion to be

-To do so, several computations are performed (summarized in Figure 23): +To do so, several computations are performed (summarized in Figure 23):

  • First, the wanted pose (3 translations and 3 rotations) of the sample with respect to the granite is computed. @@ -1306,7 +1306,7 @@ Both computation are performed
-
+

control-schematic-nass.png

Figure 23: Figure caption

@@ -1318,11 +1318,11 @@ More details about these computations are accessible -

4.4 Simulation of Experiments

+
+

4.4 Simulation of Experiments

- +

@@ -1332,16 +1332,16 @@ Now that the dynamics of the model is tuned and the disturbances included in the

A first simulation is done with the nano-hexapod modeled as a rigid-body. This does represent the system without the NASS and permits to estimate the sample’s vibrations using the micro-station alone. -The results of this simulation will be compared to simulations using the NASS in Section 6.4. +The results of this simulation will be compared to simulations using the NASS in Section 6.4.

-An 3D animation of the simulation is shown in Figure 24. +An 3D animation of the simulation is shown in Figure 24.

-A zoom in the micro-meter ranger on the sample’s location is shown in Figure 25 with two frames: +A zoom in the micro-meter ranger on the sample’s location is shown in Figure 25 with two frames:

  • a non-rotating frame corresponding to the focusing point of the X-ray. @@ -1355,7 +1355,7 @@ The motion of the sample follows the wanted motion but with vibrations in the mi

    -
    +

    open_loop_sim.gif

    Figure 24: Tomography Experiment using the Simscape Model

    @@ -1363,14 +1363,14 @@ The motion of the sample follows the wanted motion but with vibrations in the mi -
    +

    open_loop_sim_zoom.gif

    Figure 25: Tomography Experiment using the Simscape Model - Zoom on the sample’s position (the full vertical scale is \(\approx 10 \mu m\))

    -The position error of the sample with respect to the granite are shown in Figure 26. +The position error of the sample with respect to the granite are shown in Figure 26. It is confirmed that the X-Y-Z position errors are in the micro-meter range.

    @@ -1388,7 +1388,7 @@ The vertical rotation error is meaningless for two reasons:
-
+

exp_scans_rz_dist.png

Figure 26: Position error of the Sample with respect to the granite during a Tomography Experiment with included disturbances

@@ -1396,8 +1396,8 @@ The vertical rotation error is meaningless for two reasons:
-
-

4.5 Conclusion

+
+

4.5 Conclusion

@@ -1422,11 +1422,11 @@ In the next sections, it will allows to optimally design the nano-hexapod, to de

-
-

5 Optimal Nano-Hexapod Design

+
+

5 Optimal Nano-Hexapod Design

- +

As explain before, the nano-hexapod properties (mass, stiffness, legs’ orientation, …) will influence: @@ -1440,9 +1440,9 @@ As explain before, the nano-hexapod properties (mass, stiffness, legs’ ori Thus, we here wish to find the optimal nano-hexapod properties such that:

    -
  • the effect of disturbances is minimized (Section 5.1)
  • -
  • the plant uncertainty due to a change of payload mass and experimental conditions is minimized (Section 5.2)
  • -
  • the plant has nice dynamical properties for control (Section 5.3)
  • +
  • the effect of disturbances is minimized (Section 5.1)
  • +
  • the plant uncertainty due to a change of payload mass and experimental conditions is minimized (Section 5.2)
  • +
  • the plant has nice dynamical properties for control (Section 5.3)

@@ -1458,11 +1458,11 @@ Also, the effect of the nano-hexapod’s damping properties will be studied

-
-

5.1 Optimal Stiffness to reduce the effect of disturbances

+
+

5.1 Optimal Stiffness to reduce the effect of disturbances

- +

As will be seen, the nano-hexapod stiffness have a large influence on the sensibility to disturbance (the norm of \(G_d\)). @@ -1474,11 +1474,11 @@ A complete study of the optimal nano-hexapod stiffness for the minimization of d

-
-

Sensibility to stage vibrations

-
+
+

Sensibility to stage vibrations

+

-The sensibility to the spindle’s vibration for all the considered nano-hexapod stiffnesses (from \(10^3\,[N/m]\) to \(10^9\,[N/m]\)) is shown in Figure 27. +The sensibility to the spindle’s vibration for all the considered nano-hexapod stiffnesses (from \(10^3\,[N/m]\) to \(10^9\,[N/m]\)) is shown in Figure 27. It is shown that a softer nano-hexapod it better to filter out vertical vibrations of the spindle. More precisely, is start to filters the vibration at the first suspension mode of the payload on top of the nano-hexapod.

@@ -1488,7 +1488,7 @@ The same conclusion is made for vibrations of the translation stage.

-
+

opt_stiff_sensitivity_Frz.png

Figure 27: Sensitivity to Spindle vertical motion error to the vertical error position of the sample

@@ -1496,21 +1496,21 @@ The same conclusion is made for vibrations of the translation stage.
-
-

Sensibility to ground motion

-
+
+

Sensibility to ground motion

+

-The sensibilities to ground motion in the Y and Z directions are shown in Figure 28. +The sensibilities to ground motion in the Y and Z directions are shown in Figure 28. We can see that above the suspension mode of the nano-hexapod, the norm of the transmissibility is close to one until the suspension mode of the granite. Thus, a stiff nano-hexapod is better for reducing the effect of ground motion at low frequency.

-It will be suggested in Section 7.6 that using soft mounts for the granite can greatly lower the sensibility to ground motion. +It will be suggested in Section 7.6 that using soft mounts for the granite can greatly lower the sensibility to ground motion.

-
+

opt_stiff_sensitivity_Dw.png

Figure 28: Sensitivity to Ground motion to the position error of the sample

@@ -1518,13 +1518,13 @@ It will be suggested in Section 7.6 that using soft mo
-
-

Dynamic Noise Budgeting considering all the disturbances

-
+
+

Dynamic Noise Budgeting considering all the disturbances

+

However, lowering the sensibility to some disturbance at a frequency where its effect is already small compare to the other disturbances sources is not really interesting. What is more important than comparing the sensitivity to disturbances, is thus to compare the obtain power spectral density of the sample’s position error. -From the Power Spectral Density of all the sources of disturbances identified in Section 3, we compute what would be the Power Spectral Density of the vertical motion error for all the considered nano-hexapod stiffnesses (Figure 29). +From the Power Spectral Density of all the sources of disturbances identified in Section 3, we compute what would be the Power Spectral Density of the vertical motion error for all the considered nano-hexapod stiffnesses (Figure 29).

@@ -1532,7 +1532,7 @@ We can see that the most important change is in the frequency range 30Hz to 300H

-
+

opt_stiff_psd_dz_tot.png

Figure 29: Amplitude Spectral Density of the Sample vertical position error due to Vertical vibration of the Spindle for multiple nano-hexapod stiffnesses

@@ -1540,13 +1540,13 @@ We can see that the most important change is in the frequency range 30Hz to 300H

-If we look at the Cumulative amplitude spectrum of the vertical error motion in Figure 30, we can observe that a soft hexapod (\(k < 10^5 - 10^6\,[N/m]\)) helps reducing the high frequency disturbances, and thus a smaller control bandwidth will suffice to obtain the wanted performance. +If we look at the Cumulative amplitude spectrum of the vertical error motion in Figure 30, we can observe that a soft hexapod (\(k < 10^5 - 10^6\,[N/m]\)) helps reducing the high frequency disturbances, and thus a smaller control bandwidth will suffice to obtain the wanted performance.

-
+

opt_stiff_cas_dz_tot.png

Figure 30: Cumulative Amplitude Spectrum of the Sample vertical position error due to all considered perturbations for multiple nano-hexapod stiffnesses

@@ -1555,11 +1555,11 @@ If we look at the Cumulative amplitude spectrum of the vertical error motion in
-
-

5.2 Optimal Stiffness to reduce the plant uncertainty

+
+

5.2 Optimal Stiffness to reduce the plant uncertainty

- +

One of the most important design goal is to obtain a system that is robust to all changes in the system. @@ -1591,15 +1591,15 @@ However, the dynamics from forces to sensors located in the nano-hexapod legs, s

-
-

Effect of Payload

-
+
+

Effect of Payload

+

The most obvious change in the system is the change of payload.

-In Figure 31 the dynamics is shown for payloads having a first resonance mode at 100Hz and a mass equal to 1kg, 20kg and 50kg. +In Figure 31 the dynamics is shown for payloads having a first resonance mode at 100Hz and a mass equal to 1kg, 20kg and 50kg. On the left side, the change of dynamics is computed for a very soft nano-hexapod, while on the right side, it is computed for a very stiff nano-hexapod.

@@ -1617,14 +1617,14 @@ For the stiff-nano-hexapod, the change of payload mass has very little effect (t

-
+

opt_stiffness_payload_mass_fz_dz.png

Figure 31: Dynamics from \(\mathcal{F}_z\) to \(\mathcal{X}_z\) for varying payload mass, both for a soft nano-hexapod (left) and a stiff nano-hexapod (right)

-In Figure 32 is shown the effect of a change of payload dynamics. +In Figure 32 is shown the effect of a change of payload dynamics. The mass of the payload is fixed and its resonance frequency is changing from 50Hz to 500Hz.

@@ -1633,7 +1633,7 @@ We can see (more easily for the soft nano-hexapod), that resonance of the payloa

-
+

opt_stiffness_payload_freq_fz_dz.png

Figure 32: Dynamics from \(\mathcal{F}_z\) to \(\mathcal{X}_z\) for varying payload resonance frequency, both for a soft nano-hexapod and a stiff nano-hexapod

@@ -1641,7 +1641,7 @@ We can see (more easily for the soft nano-hexapod), that resonance of the payloa

-The dynamics for all the payloads (mass from 1kg to 50kg and first resonance from 50Hz to 500Hz) and all the considered nano-hexapod stiffnesses are display in Figure 33. +The dynamics for all the payloads (mass from 1kg to 50kg and first resonance from 50Hz to 500Hz) and all the considered nano-hexapod stiffnesses are display in Figure 33.

@@ -1662,7 +1662,7 @@ For nano-hexapod stiffnesses above \(10^7\,[N/m]\): -

+

opt_stiffness_payload_impedance_all_fz_dz.png

Figure 33: Dynamics from \(\mathcal{F}_z\) to \(\mathcal{X}_z\) for varying payload dynamics, both for a soft nano-hexapod and a stiff nano-hexapod

@@ -1691,11 +1691,11 @@ Heavy samples with low first resonance mode will be very problematic.
-
-

Effect of Micro-Station Compliance

-
+
+

Effect of Micro-Station Compliance

+

-The micro-station dynamics is quite complex as was shown in Section 2, moreover, its dynamics can change due to: +The micro-station dynamics is quite complex as was shown in Section 2, moreover, its dynamics can change due to:

  • a change in some mechanical elements
  • @@ -1716,7 +1716,7 @@ This as several other advantages:

    -To identify the effect of the micro-station compliance on the system dynamics, for each nano-hexapod stiffness, we identify the plant dynamics in two different case (Figure 34): +To identify the effect of the micro-station compliance on the system dynamics, for each nano-hexapod stiffness, we identify the plant dynamics in two different case (Figure 34):

    • without the micro-station (solid curves)
    • @@ -1732,7 +1732,7 @@ For nano-hexapod stiffnesses above \(10^7\,[N/m]\), the micro-station compliance

      -
      +

      opt_stiffness_micro_station_fx_dx.png

      Figure 34: Change of dynamics from force \(\mathcal{F}_x\) to displacement \(\mathcal{X}_x\) due to the micro-station compliance

      @@ -1752,15 +1752,15 @@ If a stiff nano-hexapod is used, the control bandwidth should probably be limite
      -
      -

      Effect of Spindle Rotating Speed

      -
      +
      +

      Effect of Spindle Rotating Speed

      +

      Let’s now consider the rotation of the Spindle.

      -The plant dynamics for spindle rotation speed from 0rpm up to 60rpm are shown in Figure 35. +The plant dynamics for spindle rotation speed from 0rpm up to 60rpm are shown in Figure 35.

      @@ -1772,7 +1772,7 @@ For very soft nano-hexapods, the main resonance is split into two resonances and

      -
      +

      opt_stiffness_wz_fx_dx.png

      Figure 35: Change of dynamics from force \(\mathcal{F}_x\) to displacement \(\mathcal{X}_x\) for a spindle rotation speed from 0rpm to 60rpm

      @@ -1791,16 +1791,16 @@ A very soft (\(k < 10^4\,[N/m]\)) nano-hexapod should not be used due to the eff
      -
      -

      Total Plant Uncertainty

      -
      +
      +

      Total Plant Uncertainty

      +

      -Finally, let’s combined all the uncertainties and display the plant dynamics “spread” for all the nano-hexapod stiffnesses (Figure 36). +Finally, let’s combined all the uncertainties and display the plant dynamics “spread” for all the nano-hexapod stiffnesses (Figure 36). This show how the dynamics evolves with the stiffness and how different effects enters the plant dynamics.

      -
      +

      opt_stiffness_plant_dynamics_task_space.gif

      Figure 36: Variability of the dynamics from \(\bm{\mathcal{F}}_x\) to \(\bm{\mathcal{X}}_x\) with varying nano-hexapod stiffness

      @@ -1833,17 +1833,25 @@ In such case, the main limitation will be heavy samples with small stiffnesses.
      -
      -

      5.3 Nano-Hexapod Architecture

      +
      +

      5.3 Optimal Nano-Hexapod Geometry

      - +

      +

      +As will be shown in this section, the Nano-Hexapod geometry has an influence on: +

      +
        +
      • the overall stiffness/compliance
      • +
      • the mobility
      • +
      • the dynamics and coupling
      • +
      -
      -

      Kinematic Analysis - Jacobian Matrix

      -
      +
      +

      Kinematic Analysis and the Jacobian Matrix

      +

      The kinematic analysis of a parallel manipulator is well described in taghirad13_paral:

      @@ -1856,20 +1864,32 @@ In this analysis, the relation between the geometrical parameters of the manipul

      -From taghirad13_paral: -

      -
      -

      -The Jacobian matrix not only reveals the relation between the joint variable velocities of a parallel manipulator to the moving platform linear and angular velocities, it also constructs the transformation needed to find the actuator forces from the forces and moments acting on the moving platform. -

      -
      - -

      -The Jacobian matrix \(\bm{\mathcal{J}}\) can be computed form the orientation of the legs and the position of the flexible joints. +One of the main analysis tool for the Kinematic analysis is the Jacobian Matrix that not only reveals the relation between the joint variable velocities of a parallel manipulator to the moving platform linear and angular velocities, but also constructs the transformation needed to find the actuator forces from the forces and moments acting on the moving platform.

      +

      -If we note: +The Jacobian matrix \(\bm{J}\) can be computed form the orientation of the legs (describes by the unit vectors \({}^A\hat{\bm{s}}_i\)) and the position of the flexible joints (described by the position vectors \({}^A\bm{b}_i\)): +

      +\begin{equation*} + \bm{J} = \begin{bmatrix} + {\hat{\bm{s}}_1}^T & (\bm{b}_1 \times \hat{\bm{s}}_1)^T \\ + {\hat{\bm{s}}_2}^T & (\bm{b}_2 \times \hat{\bm{s}}_2)^T \\ + {\hat{\bm{s}}_3}^T & (\bm{b}_3 \times \hat{\bm{s}}_3)^T \\ + {\hat{\bm{s}}_4}^T & (\bm{b}_4 \times \hat{\bm{s}}_4)^T \\ + {\hat{\bm{s}}_5}^T & (\bm{b}_5 \times \hat{\bm{s}}_5)^T \\ + {\hat{\bm{s}}_6}^T & (\bm{b}_6 \times \hat{\bm{s}}_6)^T + \end{bmatrix} +\end{equation*} + +

      +It can be easily shown that: +

      +\begin{equation} + \delta\bm{\mathcal{L}} = \bm{J} \delta\bm{\mathcal{X}}, \quad \delta\bm{\mathcal{X}} = \bm{J}^{-1} \delta\bm{\mathcal{L}} \label{eq:jacobian_L} +\end{equation} +

      +with:

      • \(\delta\bm{\mathcal{L}} = [ \delta l_1, \delta l_2, \delta l_3, \delta l_4, \delta l_5, \delta l_6 ]^T\): the vector of small legs’ displacements
      • @@ -1877,28 +1897,47 @@ If we note:

      -The Jacobian matrix links the two vectors: +Thus, from a wanted small displacement \(\delta \bm{\mathcal{X}}\), it is easy to compute the required displacement of the legs \(\delta \bm{\mathcal{L}}\). +Similarly, from a measurement of the legs’ displacement, it is easy to compute the resulting platform’s motion. +

      + +

      +This will be used to estimate the platform’s mobility from the stroke of the legs, or inversely, to estimate the required stroke of the legs from the wanted platform’s mobility. +

      + +

      +Note that Eq. \eqref{eq:jacobian_L} is an approximation and is only valid for leg’s displacement less than \(1\%\) of the leg’s length which is the case for the nano-hexapod.

      -\begin{align*} - \delta\bm{\mathcal{L}} &= \bm{J} \delta\bm{\mathcal{X}} \\ - \delta\bm{\mathcal{X}} &= \bm{J}^{-1} \delta\bm{\mathcal{L}} -\end{align*}

      -If we note: +It can also be shown that: +

      +\begin{equation} + \bm{\mathcal{F}} = \bm{J}^T \bm{\tau}, \quad \bm{\tau} = \bm{J}^{-T} \bm{\mathcal{F}} \label{eq:jacobian_F} +\end{equation} +

      +with:

      • \(\bm{\tau} = [\tau_1, \tau_2, \cdots, \tau_6]^T\): vector of actuator forces applied in each strut
      • \(\bm{\mathcal{F}} = [\bm{f}, \bm{n}]^T\): external force/torque action on the mobile platform
      -\begin{equation*} - \bm{\mathcal{F}} = \bm{J}^T \bm{\tau} -\end{equation*} +

      +And thus the Jacobian matrix can be used to compute the forces that should be applied on each leg from forces and torques that we want to apply on the top platform. +

      +

      +Transformations in Eq. \eqref{eq:jacobian_L} and \eqref{eq:jacobian_F} will be widely in the developed control architectures. +

      +
      +
      +
      +

      Stiffness and Compliance matrices

      +
      \begin{equation*} \bm{\mathcal{F}} = \bm{K} \delta \bm{\mathcal{X}} \end{equation*} @@ -1910,52 +1949,59 @@ If we note: \bm{C} = \bm{K}^{-1} = (\bm{J}^T \mathcal{K} \bm{J})^{-1} \end{equation*} +

      +Stiffness properties is estimated from the architecture and leg’s stiffness +

      + +

      Kinematic Study https://tdehaeze.github.io/stewart-simscape/kinematic-study.html

      - - -

      -Mobility can be estimated from the architecture of the Stewart platform and the leg’s stroke. -

      - - -

      -Stiffness properties is estimated from the architecture and leg’s stiffness -

      -
      -

      Kinematic Analysis - Mobility

      -
      -
      +
      +

      Mobility of the Stewart Platform

      +
      +

      +For a specified geometry and actuator stroke, the mobility of the Stewart platform can be estimated. +

      + +

      +An example of the mobility considering only pure translations is shown in Figure 37. +

      + + +

      mobility_translations_null_rotation.png

      -

      Figure 37: Figure caption

      +

      Figure 37: Obtained mobility of a Stewart platform for pure translations (the platform’s orientation is fixed)

      -
      -

      Kinematic Study

      -
      -
      -
      - -
      -

      Flexible Joints

      -
      +
      +

      Flexible Joints

      +

      Active Damping Study https://tdehaeze.github.io/stewart-simscape/control-active-damping.html +

      + +
        +
      • Advantages compared to conventional joints
      • +
      • Simulations will help determine the required rotational stroke and will help with the design
      • +
      • Typical joint stiffness is included in the model
      • +
      + +

      Flexible Joint stiffness => not problematic for the chosen active damping technique

      - - +
      Table 1: Stiffness of flexible joints
      +@@ -1986,26 +2032,25 @@ Flexible Joint stiffness => not problematic for the chosen active damping tec
      Table 1: Stiffness of unversal and sperical flexible joints yang19_dynam_model_decoup_contr_flexib
      -
      +

      preumont07_flexible_joints.png

      -

      Figure 38: Figure caption preumont07_six_axis_singl_stage_activ

      +

      Figure 38: Flexible joints used in preumont07_six_axis_singl_stage_activ

      - -
      +

      yang19_flexible_joints.png

      -

      Figure 39: Figure caption

      +

      Figure 39: An alternative type of flexible joints that has been used for Stewart platforms yang19_dynam_model_decoup_contr_flexib

      -
      -

      Cubic Architecture

      -
      +
      +

      Cubic Architecture

      +

      Study of cubic architecture https://tdehaeze.github.io/stewart-simscape/cubic-configuration.html Has some advantages such as uniform stiffness and uniform mobility. @@ -2015,31 +2060,37 @@ This configuration is such not recommended.

      -
      +

      3d-cubic-stewart-aligned.png

      Figure 40: Figure caption

      + +
      +

      Conclusion

      +
      +
      +
      -
      -

      5.4 Conclusion

      +
      +

      5.4 Conclusion

      -In Section 5.1, it has been concluded that a nano-hexapod stiffness below \(10^5-10^6\,[N/m]\) helps reducing the high frequency vibrations induced by all sources of disturbances considered. +In Section 5.1, it has been concluded that a nano-hexapod stiffness below \(10^5-10^6\,[N/m]\) helps reducing the high frequency vibrations induced by all sources of disturbances considered. As the high frequency vibrations are the most difficult to compensate for when using feedback control, a soft hexapod will most certainly helps improving the performances.

      -In Section 5.2, we concluded that a nano-hexapod leg stiffness in the range \(10^5 - 10^6\,[N/m]\) is a good compromise between the uncertainty induced by the micro-station dynamics and by the rotating speed. +In Section 5.2, we concluded that a nano-hexapod leg stiffness in the range \(10^5 - 10^6\,[N/m]\) is a good compromise between the uncertainty induced by the micro-station dynamics and by the rotating speed. Provided that the samples used have a first mode that is sufficiently high in frequency, the total plant dynamic uncertainty should be manageable.

      -Thus, a stiffness of \(10^5\,[N/m]\) will be used in Section 6 to develop the robust control architecture and to perform simulations. +Thus, a stiffness of \(10^5\,[N/m]\) will be used in Section 6 to develop the robust control architecture and to perform simulations.

      @@ -2051,11 +2102,11 @@ A more detailed study of the determination of the optimal stiffness based on all

      -
      -

      6 Robust Control Architecture

      +
      +

      6 Robust Control Architecture

      - +

      Before designing the control system, let’s summarize what has been done: @@ -2082,8 +2133,8 @@ This would require to measure the mass/inertia of each used payload and manually

      -
      -

      6.1 High Authority Control / Low Authority Control Architecture

      +
      +

      6.1 High Authority Control / Low Authority Control Architecture

      Many control architecture could be used for the control of the nano-hexapod. @@ -2099,7 +2150,7 @@ Some properties of the HAC-LAC architecture are explained below (taken from

      -The HAC/LAC approach consist of combining the two approached in a dual-loop control as shown in Figure 41. +The HAC/LAC approach consist of combining the two approached in a dual-loop control as shown in Figure 41. The inner loop uses a set of collocated actuator/sensor pairs for decentralized active damping with guaranteed stability ; the outer loop consists of a non-collocated HAC based on a model of the actively damped structure. This approach has the following advantages:

      @@ -2111,7 +2162,7 @@ This approach has the following advantages:
      -
      +

      control_architecture_hac_lac_one_input.png

      Figure 41: HAC-LAC Architecture with a system having only one input

      @@ -2121,17 +2172,17 @@ This approach has the following advantages: The HAC-LAC architecture thus consisted of two cascade controllers:

        -
      • a Low Authority Controller that is used to damp the system (Section 6.2)
      • -
      • a High Authority Controller used to suppress the sample’s vibration in a wide frequency range (Section 6.3)
      • +
      • a Low Authority Controller that is used to damp the system (Section 6.2)
      • +
      • a High Authority Controller used to suppress the sample’s vibration in a wide frequency range (Section 6.3)
      -
      -

      6.2 Active Damping and Sensors to be included in the nano-hexapod

      +
      +

      6.2 Active Damping and Sensors to be included in the nano-hexapod

      - +

      Depending on the chosen active damping technique, either force sensors, relative motion sensors or inertial sensors should be included in each of the nano-hexapod’s legs. @@ -2152,18 +2203,18 @@ It would also be difficult to apply in a robust way due to the non-collocation w

-
-

Effect of the Spindle’s Rotation

-
+
+

Effect of the Spindle’s Rotation

+
-
+

dvf_root_locus_ws.png

Figure 42: Figure caption

-
+

iff_root_locus_ws.png

Figure 43: Figure caption

@@ -2171,28 +2222,9 @@ It would also be difficult to apply in a robust way due to the non-collocation w
-
-

Effect of Flexible Joint

-
- -
-

root_locus_iff_rot_stiffness.png -

-

Figure 44: Figure caption

-
- - -
-

root_locus_dvf_rot_stiffness.png -

-

Figure 45: Figure caption

-
-
-
- -
-

Relative Direct Velocity Feedback Architecture

-
+
+

Relative Direct Velocity Feedback Architecture

+

Active Damping can help:

@@ -2203,11 +2235,11 @@ Active Damping can help:

-Relative motion sensors are then included in each of the nano-hexapod’s leg and a decentralized direct velocity feedback control architecture is applied (Figure 46). +Relative motion sensors are then included in each of the nano-hexapod’s leg and a decentralized direct velocity feedback control architecture is applied (Figure 44).

-The signals shown in Figure 46 are: +The signals shown in Figure 44 are:

  • \(\bm{\tau}\): Actuator forces applied in each leg
  • @@ -2223,10 +2255,10 @@ The force applied in each leg being proportional to the relative velocity of the

    -
    +

    control_architecture_dvf.png

    -

    Figure 46: Low Authority Control: Decentralized Direct Velocity Feedback

    +

    Figure 44: Low Authority Control: Decentralized Direct Velocity Feedback

    @@ -2236,29 +2268,29 @@ This may not be the optimal choice as will be further explained.

-
-

Effect of Active Damping on the Primary Plant Dynamics

-
+
+

Effect of Active Damping on the Primary Plant Dynamics

+

-The plant dynamics before (solid curves) and after (dashed curves) the Low Authority Control implementation are compared in Figure 47. +The plant dynamics before (solid curves) and after (dashed curves) the Low Authority Control implementation are compared in Figure 45. It is clear that the use of the DVF reduces the dynamical spread of the plant dynamics between 5Hz up too 100Hz. This will make the primary controller more robust and easier to develop.

-
+

opt_stiff_primary_plant_damped_L.png

-

Figure 47: Primary plant in the space of the legs with (dashed) and without (solid) Direct Velocity Feedback

+

Figure 45: Primary plant in the space of the legs with (dashed) and without (solid) Direct Velocity Feedback

-
-

Effect of Active Damping on the Sensibility to Disturbances

-
+
+

Effect of Active Damping on the Sensibility to Disturbances

+

-The change of sensibility to disturbances with the use of DVF is shown in Figure 48. +The change of sensibility to disturbances with the use of DVF is shown in Figure 46. It is shown that the DVF control lowers the sensibility to disturbances in the vicinity of the nano-hexapod resonance but increases the sensibility at higher frequencies.

@@ -2267,29 +2299,29 @@ This is probably not the optimal gain that could have been used, and further ana

-
+

opt_stiff_sensibility_dist_dvf.png

-

Figure 48: Norm of the transfer function from vertical disturbances to vertical position error with (dashed) and without (solid) Direct Velocity Feedback applied

+

Figure 46: Norm of the transfer function from vertical disturbances to vertical position error with (dashed) and without (solid) Direct Velocity Feedback applied

-
-

6.3 High Authority Control

+
+

6.3 High Authority Control

- +

-The complete HAC-LAC architecture is shown in Figure 49 where an outer loop is added to the decentralized direct velocity feedback loop. +The complete HAC-LAC architecture is shown in Figure 47 where an outer loop is added to the decentralized direct velocity feedback loop.

The block Compute Position Error is used to compute the position error \(\bm{\epsilon}_{\mathcal{X}_n}\) of the sample with respect to the nano-hexapod’s base platform from the actual measurement of the sample’s pose \(\bm{\mathcal{X}}\) and the wanted pose \(\bm{r}_\mathcal{X}\). -The computation done in such block was briefly explained in Section 4.3. +The computation done in such block was briefly explained in Section 4.3.

@@ -2302,10 +2334,10 @@ Then, a diagonal controller \(\bm{K}_\mathcal{L}\) generates the required force

-
+

control_architecture_hac_dvf_pos_L.png

-

Figure 49: Cascade Control Architecture. The inner loop consist of a decentralized Direct Velocity Feedback. The outer loop consist of position control in the leg’s space

+

Figure 47: Cascade Control Architecture. The inner loop consist of a decentralized Direct Velocity Feedback. The outer loop consist of position control in the leg’s space

@@ -2313,32 +2345,32 @@ Some alternative to this control architecture have been studied, but this is the

-The plant dynamics for each of the six legs and for the three payload’s masses is shown in Figure 50. +The plant dynamics for each of the six legs and for the three payload’s masses is shown in Figure 48. The dynamical spread is kept reasonably small thanks to both the optimal nano-hexapod design and the Low Authority Controller.

-
+

opt_stiff_primary_plant_L.png

-

Figure 50: Diagonal elements of the transfer function matrix from \(\bm{\tau}^\prime\) to \(\bm{\epsilon}_{\mathcal{X}_n}\) for the three considered masses

+

Figure 48: Diagonal elements of the transfer function matrix from \(\bm{\tau}^\prime\) to \(\bm{\epsilon}_{\mathcal{X}_n}\) for the three considered masses

The diagonal controller \(\bm{K}_\mathcal{L}\) is then tuned in such a way that the control bandwidth is around 100Hz and such that enough stability margins are obtained for all the payload’s masses used. -The obtained loop gain is shown in Figure 51. +The obtained loop gain is shown in Figure 49.

-
+

opt_stiff_primary_loop_gain_L.png

-

Figure 51: Loop gain for the primary plant

+

Figure 49: Loop gain for the primary plant

-The sensibility to disturbance after the use of HAC-LAC control is shown in Figure 52. +The sensibility to disturbance after the use of HAC-LAC control is shown in Figure 50. The change of sensibility is very typical for feedback system:

    @@ -2356,30 +2388,30 @@ This should gives slightly better performance and robustness, but should not cha

    -
    +

    opt_stiff_primary_control_L_senbility_dist.png

    -

    Figure 52: Sensibility to disturbances when the HAC-LAC control is applied (dashed) and when it is not (solid)

    +

    Figure 50: Sensibility to disturbances when the HAC-LAC control is applied (dashed) and when it is not (solid)

-
-

6.4 Simulation of Tomography Experiments

+
+

6.4 Simulation of Tomography Experiments

- +

A new simulation of a tomography is performed with the optimal nano-hexapod and the HAC-LAC architecture implemented in the model. -The results of this simulation will be compare to the simulation performed in Section 4.4 without the nano-hexapod. +The results of this simulation will be compare to the simulation performed in Section 4.4 without the nano-hexapod. All the disturbances are included such as ground motion, spindle and translation stage vibrations.

-The Power Spectral Density of the sample’s position error is plotted in Figure 53 and the Cumulative Amplitude Spectrum is shown in Figure 54. +The Power Spectral Density of the sample’s position error is plotted in Figure 51 and the Cumulative Amplitude Spectrum is shown in Figure 52. The top three plots corresponds to the X, Y and Z translations and the bottom three plots corresponds to the X,Y and Z rotations.

@@ -2408,77 +2440,77 @@ This increase in rotation is still very small and is not foreseen to be a proble -
+

opt_stiff_hac_dvf_L_psd_disp_error.png

-

Figure 53: Amplitude Spectral Density of the position error in Open Loop and with the HAC-LAC controller

+

Figure 51: Amplitude Spectral Density of the position error in Open Loop and with the HAC-LAC controller

-
+

opt_stiff_hac_dvf_L_cas_disp_error.png

-

Figure 54: Cumulative Amplitude Spectrum of the position error in Open Loop and with the HAC-LAC controller

+

Figure 52: Cumulative Amplitude Spectrum of the position error in Open Loop and with the HAC-LAC controller

-The time domain sample’s vibrations are shown in Figure 55. +The time domain sample’s vibrations are shown in Figure 53. The use of the nano-hexapod combined with the HAC-LAC architecture is shown to considerably reduce the sample’s vibrations.

-An animation of the experiment is shown in Figure 56 and we can see that the actual sample’s position is more closely following the ideal position compared to the simulation of the micro-station alone in Figure 25 (same scale was used for both animations). +An animation of the experiment is shown in Figure 54 and we can see that the actual sample’s position is more closely following the ideal position compared to the simulation of the micro-station alone in Figure 25 (same scale was used for both animations).

-
+

opt_stiff_hac_dvf_L_pos_error.png

-

Figure 55: Position Error of the sample during a tomography experiment when no control is applied and with the HAC-DVF control architecture

+

Figure 53: Position Error of the sample during a tomography experiment when no control is applied and with the HAC-DVF control architecture

-
+

closed_loop_sim_zoom.gif

-

Figure 56: Tomography Experiment using the Simscape Model in Closed Loop with the HAC-LAC Control - Zoom on the sample’s position (the full vertical scale is \(\approx 10 \mu m\))

+

Figure 54: Tomography Experiment using the Simscape Model in Closed Loop with the HAC-LAC Control - Zoom on the sample’s position (the full vertical scale is \(\approx 10 \mu m\))

-
-

6.5 Simulation of More Complex Experiments

+
+

6.5 Simulation of More Complex Experiments

-
-

Micro-Hexapod offset

-
+
+

Micro-Hexapod offset

+
-
+

tomography_dh_offset.gif

-

Figure 57: Top View of a tomography experiment with a 10mm offset imposed by the micro-hexapod

+

Figure 55: Top View of a tomography experiment with a 10mm offset imposed by the micro-hexapod

-
-

Simultaneous Translation Scans

-
+
+

Simultaneous Translation Scans

+
-
+

ty_scans.gif

-

Figure 58: Top View of a tomography experiment combined with translation scans

+

Figure 56: Top View of a tomography experiment combined with translation scans

-
-

6.6 Conclusion

+
+

6.6 Conclusion

@@ -2513,25 +2545,25 @@ A more complete study of the control of the NASS is performed -

7 General Conclusion and Further notes

+
+

7 General Conclusion and Further notes

- +

-
-

7.1 Nano-Hexapod Specifications

+
+

7.1 Nano-Hexapod Specifications

-
-

7.2 General Conclusion

+
+

7.2 General Conclusion

-
-

7.3 Sensor Noise introduced by the Metrology

+
+

7.3 Sensor Noise introduced by the Metrology

Say that is will introduce noise inside the bandwidth (100Hz) @@ -2541,27 +2573,27 @@ This should not be significant.

-
-

7.4 Further Work

+
+

7.4 Further Work

-
-

7.5 Cable Forces

+
+

7.5 Cable Forces

-
-

7.6 Using soft mounts for the Granite

+
+

7.6 Using soft mounts for the Granite

- +

-
+

opt_stiff_soft_granite_Dw.png

-

Figure 59: Change of sensibility to Ground motion when using a stiff Granite (solid curves) and a soft Granite (dashed curves)

+

Figure 57: Change of sensibility to Ground motion when using a stiff Granite (solid curves) and a soft Granite (dashed curves)

@@ -2574,8 +2606,8 @@ Sensible to detector motion?

-
-

7.7 Others

+
+

7.7 Others

Common metrology frame for the nano-focusing optics and the measurement of the sample position? @@ -2598,6 +2630,7 @@ Slip-Ring noise?

@@ -2606,7 +2639,7 @@ Slip-Ring noise?

Date: 05-2020

Author: Thomas Dehaeze

-

Created: 2020-04-30 jeu. 14:42

+

Created: 2020-04-30 jeu. 15:44

diff --git a/index.org b/index.org index b9a4711..e02983e 100644 --- a/index.org +++ b/index.org @@ -1048,12 +1048,31 @@ This show how the dynamics evolves with the stiffness and how different effects In such case, the main limitation will be heavy samples with small stiffnesses. #+end_important -** Nano-Hexapod Architecture +** Optimal Nano-Hexapod Geometry <> *** Introduction :ignore: +As will be shown in this section, the Nano-Hexapod geometry has an influence on: +- the overall stiffness/compliance +- the mobility +- the dynamics and coupling -*** Kinematic Analysis - Jacobian Matrix +A typical Stewart platform is composed of six identical legs: +- a universal joint +- a spherical joint +- a prismatic joint with an integrated actuator + +#+name: fig:stewart_architecture_example +#+caption: Figure caption +[[file:figs/stewart_architecture_example.png]] + + +#+name: fig:stewart_architecture_example_pose +#+caption: Display of the Stewart platform architecture at some defined pose +[[file:figs/stewart_architecture_example_pose.png]] + + +*** Kinematic Analysis and the Jacobian Matrix :PROPERTIES: :UNNUMBERED: t :END: @@ -1065,33 +1084,55 @@ In this analysis, the relation between the geometrical parameters of the manipul #+end_quote -From cite:taghirad13_paral: -#+begin_quote -The Jacobian matrix not only reveals the *relation between the joint variable velocities of a parallel manipulator to the moving platform linear and angular velocities*, it also constructs the transformation needed to find the *actuator forces from the forces and moments acting on the moving platform*. -#+end_quote +One of the main analysis tool for the Kinematic analysis is the *Jacobian Matrix* that not only reveals the *relation between the joint variable velocities of a parallel manipulator to the moving platform linear and angular velocities*, but also constructs the transformation needed to find the *actuator forces from the forces and moments acting on the moving platform*. -The Jacobian matrix $\bm{\mathcal{J}}$ can be computed form the orientation of the legs and the position of the flexible joints. -If we note: +The Jacobian matrix $\bm{J}$ can be computed form the orientation of the legs (describes by the unit vectors ${}^A\hat{\bm{s}}_i$) and the position of the flexible joints (described by the position vectors ${}^A\bm{b}_i$): +\begin{equation*} + \bm{J} = \begin{bmatrix} + {\hat{\bm{s}}_1}^T & (\bm{b}_1 \times \hat{\bm{s}}_1)^T \\ + {\hat{\bm{s}}_2}^T & (\bm{b}_2 \times \hat{\bm{s}}_2)^T \\ + {\hat{\bm{s}}_3}^T & (\bm{b}_3 \times \hat{\bm{s}}_3)^T \\ + {\hat{\bm{s}}_4}^T & (\bm{b}_4 \times \hat{\bm{s}}_4)^T \\ + {\hat{\bm{s}}_5}^T & (\bm{b}_5 \times \hat{\bm{s}}_5)^T \\ + {\hat{\bm{s}}_6}^T & (\bm{b}_6 \times \hat{\bm{s}}_6)^T + \end{bmatrix} +\end{equation*} + +It can be easily shown that: +\begin{equation} + \delta\bm{\mathcal{L}} = \bm{J} \delta\bm{\mathcal{X}}, \quad \delta\bm{\mathcal{X}} = \bm{J}^{-1} \delta\bm{\mathcal{L}} \label{eq:jacobian_L} +\end{equation} +with: - $\delta\bm{\mathcal{L}} = [ \delta l_1, \delta l_2, \delta l_3, \delta l_4, \delta l_5, \delta l_6 ]^T$: the vector of small legs' displacements - $\delta \bm{\mathcal{X}} = [\delta x, \delta y, \delta z, \delta \theta_x, \delta \theta_y, \delta \theta_z ]^T$: the vector of small mobile platform displacements -The Jacobian matrix links the two vectors: -\begin{align*} - \delta\bm{\mathcal{L}} &= \bm{J} \delta\bm{\mathcal{X}} \\ - \delta\bm{\mathcal{X}} &= \bm{J}^{-1} \delta\bm{\mathcal{L}} -\end{align*} +Thus, from a wanted small displacement $\delta \bm{\mathcal{X}}$, it is easy to compute the required displacement of the legs $\delta \bm{\mathcal{L}}$. +Similarly, from a measurement of the legs' displacement, it is easy to compute the resulting platform's motion. + +This will be used to estimate the platform's mobility from the stroke of the legs, or inversely, to estimate the required stroke of the legs from the wanted platform's mobility. + +Note that Eq. eqref:eq:jacobian_L is an approximation and is only valid for leg's displacement less than $1\%$ of the leg's length which is the case for the nano-hexapod. -If we note: +It can also be shown that: +\begin{equation} + \bm{\mathcal{F}} = \bm{J}^T \bm{\tau}, \quad \bm{\tau} = \bm{J}^{-T} \bm{\mathcal{F}} \label{eq:jacobian_F} +\end{equation} +with: - $\bm{\tau} = [\tau_1, \tau_2, \cdots, \tau_6]^T$: vector of actuator forces applied in each strut - $\bm{\mathcal{F}} = [\bm{f}, \bm{n}]^T$: external force/torque action on the mobile platform -\begin{equation*} - \bm{\mathcal{F}} = \bm{J}^T \bm{\tau} -\end{equation*} +And thus the Jacobian matrix can be used to compute the forces that should be applied on each leg from forces and torques that we want to apply on the top platform. +Transformations in Eq. eqref:eq:jacobian_L and eqref:eq:jacobian_F will be widely in the developed control architectures. + +*** Stiffness and Compliance matrices +:PROPERTIES: +:UNNUMBERED: t +:END: + \begin{equation*} \bm{\mathcal{F}} = \bm{K} \delta \bm{\mathcal{X}} @@ -1104,53 +1145,55 @@ If we note: \bm{C} = \bm{K}^{-1} = (\bm{J}^T \mathcal{K} \bm{J})^{-1} \end{equation*} +Stiffness properties is estimated from the architecture and leg's stiffness + + Kinematic Study https://tdehaeze.github.io/stewart-simscape/kinematic-study.html -Mobility can be estimated from the architecture of the Stewart platform and the leg's stroke. - - -Stiffness properties is estimated from the architecture and leg's stiffness - -*** Kinematic Analysis - Mobility +*** Mobility of the Stewart Platform :PROPERTIES: :UNNUMBERED: t :END: +For a specified geometry and actuator stroke, the mobility of the Stewart platform can be estimated. + +An example of the mobility considering only pure translations is shown in Figure [[fig:mobility_translations_null_rotation]]. #+name: fig:mobility_translations_null_rotation -#+caption: Figure caption +#+caption: Obtained mobility of a Stewart platform for pure translations (the platform's orientation is fixed) [[file:figs/mobility_translations_null_rotation.png]] -*** Kinematic Study -:PROPERTIES: -:UNNUMBERED: t -:END: - *** Flexible Joints :PROPERTIES: :UNNUMBERED: t :END: Active Damping Study https://tdehaeze.github.io/stewart-simscape/control-active-damping.html + +- Advantages compared to conventional joints +- Simulations will help determine the required rotational stroke and will help with the design +- Typical joint stiffness is included in the model + Flexible Joint stiffness => not problematic for the chosen active damping technique +Example of flexible joints used [[fig:preumont07_flexible_joints]], [[fig:yang19_flexible_joints]] + #+name: tab:yang19_stiffness_flexible_joints -#+caption: Stiffness of flexible joints +#+caption: Stiffness of unversal and spherical flexible joints cite:yang19_dynam_model_decoup_contr_flexib | $k_{\theta u},\ k_{\psi u}$ | $72 Nm/rad$ | | $k_{\theta s}$ | $51 Nm/rad$ | | $k_{\psi s}$ | $62 Nm/rad$ | | $k_{\gamma s}$ | $64 Nm/rad$ | #+name: fig:preumont07_flexible_joints -#+caption: Figure caption cite:preumont07_six_axis_singl_stage_activ +#+caption: Flexible joints used in cite:preumont07_six_axis_singl_stage_activ [[file:figs/preumont07_flexible_joints.png]] - #+name: fig:yang19_flexible_joints -#+caption: Figure caption +#+caption: An alternative type of flexible joints that has been used for Stewart platforms cite:yang19_dynam_model_decoup_contr_flexib [[file:figs/yang19_flexible_joints.png]] @@ -1169,6 +1212,11 @@ This configuration is such not recommended. #+caption: Figure caption [[file:figs/3d-cubic-stewart-aligned.png]] +*** Conclusion +:PROPERTIES: +:UNNUMBERED: t +:END: + ** Conclusion #+begin_important In Section [[sec:optimal_stiff_dist]], it has been concluded that a nano-hexapod stiffness below $10^5-10^6\,[N/m]$ helps reducing the high frequency vibrations induced by all sources of disturbances considered.