From c8ffabb03a30c753da014bd227e05cf2d504d90e Mon Sep 17 00:00:00 2001 From: CreaRobotics Date: Mon, 2 Mar 2026 11:44:31 +0100 Subject: [PATCH] 1 --- docs/assets/images/DSC_6715.png | Bin 0 -> 51331 bytes .../{primo-cover.png.bkp => primo-coover.png} | Bin docs/index.md | 2 +- site/assets/images/DSC_6715.png | Bin 0 -> 51331 bytes .../{primo-cover.png.bkp => primo-coover.png} | Bin site/index.html | 4 ++-- site/search/search_index.json | 2 +- 7 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 docs/assets/images/DSC_6715.png rename docs/assets/images/{primo-cover.png.bkp => primo-coover.png} (100%) create mode 100644 site/assets/images/DSC_6715.png rename site/assets/images/{primo-cover.png.bkp => primo-coover.png} (100%) diff --git a/docs/assets/images/DSC_6715.png b/docs/assets/images/DSC_6715.png new file mode 100644 index 0000000000000000000000000000000000000000..d8a49f1a67910ad46c7ad80476d1dec0b6f0410a GIT binary patch literal 51331 zcmbTdbx<5#@HVR^7kuy}PwlQ?os1PR}{rPj^2(FH0|f0dJM$6y*R&NJs#4#24_g3Xlf8MngkK zd-WO}9UTMXH6|7zHrAUrSfuy_xP%mBRFo8C~!Sh%z`ZJT-2&#&vl zpySp0M`YnXjroqAZ;RpbKh^$6v;TLBef|HX+5b`O|JG{-fQ5pDSUeOw01ze7SgyE=@1+^voAbY(@xs`qqo<=&L5 zy*{D2E%8mWFz}oFqhUa`#&z-nIH@+5iODisw|W5-A*K?TA+hf90s!K_05(6DpKqsn z*?#;~d*1K@p!%OvMUn8s25^xgLXvF4=drc?liM}EKPFoG`WK0gbf|+xE$=Vdk7154 z0Hj)rPD4(1{@0d<%8e>NNB|hDZjFl*?^=A`rE;w=uZi)>xhK%{k?S2lEDl)ho)8P8 zP{=>%IdgO*2jaT_Qp}sF`jkwMUu9cEOvQqdHUAII$J~Zw{0r;_fRX#-2lWZD0q|@V zxW%yWGhC#4K=*(Ja?{h&gw7B?+0y?BkL)~&;cXFZRxmK{V=9Zw!JMZ$jwY8i1JMO4A%P*R?XG^(ls!r;$(4@LP0bU&W z@45aFz$1mOPrMi2uCel@Uo0LS6OOy~`=3<-Z_1@P*BHT#M&f4=_!h6GeVV;v8m0FX zzRGYkwUY@Oc+lbMC7jrgwrDd>c7^jNGnRWp7>_Mp|8?PCQnq&CiKoSXU(2s!D`HFX zEDU)b%4H*(o`8To2y`fm5xD8{d^jgs&#izNGLuT}@lIl@|6w)vuI$+|_R)6peqK@m z0?>BH{iGfz{1dyZ(UQ^T4sc~x>F2}!N9j@y{9SO&zGzm=`b(?N?oO#vL(T!AdpK9~ zsMCR;p5M>93!3ek_mAPwX7EH=LSWfsYhjY`&*(}X%lnzS8{>>t`Z*9q!Sk!mDoyfoxu02q0;DHUGzdoCUIH+-D7c zfF9!0##m`SOplU}9pgs4lc26|jtclXln2H$Q;wsLCWfW;)&!ir-Q7nRRd?uzl`}Vl z`QU*!rE-})$OufvMJqe24E@cw6VH68u9sf`7ZnpCp$V{)GCA-nVQi({@RGw4(#-}- z@h9V1V*URS5!w7FbFH}jpj-4=lYpFH&~?@UWHh8>uTkht)2?swZ{m34eh|~C_&SA| zgf~Xcx2X46f^JQbz^?Lr@?@GC?o6v(N2@p^c%tJ&#KgNDHPpYT?qF_HC&mKlvl#LI zMOQ-kPrL@E#<-6N)4iV;J!|=2w;d$DCKzCQXe|=FegRAhg)b=OzXvpmFkX7IcLW={YcPs^FS%J`IO8mc0NP zmzR+I>=InLY*9Qnj1j~7ARbeBk7L_^qaqAI?~C@B+HxvIy|}&8flwaWu}=%o+)9^;~C_cn0T&;K3jLB!qE4mRTc0G-=k0J-UiF^iwQHlZ+tqXlE@QI!=BiiTL8 zErPGF1z~p%^$#{49)dq-zg&s@NZU%w*b4PA!_@YPWNQ@32&O;H`6JTlNy z|A3gJ@QIPut)t$X-G)HBy8MJSB|6J}%H)Zru}5H+%S4N_P$)ckBBzPn5-ioL^~TBA+sVhdpofBBs=M?Tz(E7tGq42wc>Ds$ma}6< zMhGCTGP^E3(?%?nK0>bwRv?+V;{V82B4jJRyZ~yz69suwsJZsJhz)U|cvt>E<9Jap za4|gVLjJpX;u$aEavSKe#9R{6hn3PZUbyG~7T287pq2KL04@R#R3ndfg1#J_oT!Mi z)Zu1c=6x35dI3aKy#TazkzN4uZin{k|D9;uyr4SJ4HGMuXnY-zo5Fj}(u=^a7eKFF zY%C|Rtn~6O9)5;G6Xdk_0`N}p_IaPj_&~pjO=rK;uBXL+{s8#C!AWo4gjnz9}ua$`l@ZeFQXeT&O}3A09+?u1G!kQ#v2c6R4L8b z{Rpdg(&o;UUI4=aJ2$1#N*7{w4M7&w$Zo;vpg3;oYf0lGFSf>^bsh^yjY6?V_T3uT zdZa__%XX~`dK+4pqfZ_J^Uf&b;UT4PIHuVdwmLP~2KV`absz3A%XjwZm?%luy;*TL zTlfO#X$&K%2BL{1gkn0@Q1;0VI zPwEI01_3IZn-Y8@7vWEQIYEs9Al!lZ=?Qhh^zC3awiB7FyTX5bTd>+J((3EYJ$@^c z9N(QLVXLFufmu9#=bFFU+iT!nY(CBkk{3Wp{|g}K1@Lt1wVBu;#5XNTI0ni;c>X9q z!)n%W%tSf|W)3x?a8n};(-KJCMLZKl$PBmq66f==hZ}sj^6#~pxZjZq*6r-M=&=v! z6Q=7d1Ks{yP3)e2xyK+iuUdRZVwoxV3!p_27Fl%dhwwdMHVuo^C^y+S(%dEQXTR2V z;N9HZw~tM9>CWmcSq@TJI70U&XuebIMi&v8Cv4#84|iyYZ6cNivvRqtMt1it^*)h} zi<-_m>XH}@KUNj9710=SEC7a@jSErU7-E&QQ>J&&4&e^64o}_OQdcKY-Jj}=Bx=j; zHhZ+milge72#k2ZBLEN;Ikv_JFCT`|A847#aw)R|Ga?lLA5Jb0<7w*^1;|YMhwvSr zsH7Kw_xuYWt(YN?c5^U{Hh>xzTIT|Ltv^9LtKj7jir=cqLV`Wh9sba`d35LS0#Lz) zhnfj)k{@5^DymI#YR1D25qVUEt9SXhYrO?Bcy_iaY}J$QnxVH zq^Al6GE(*eO!cw!KB^ctA2mjMm9bd0h#5Iv0sVrfc^IAYY|Ur4K)+p9tmr@YU1df~ zdPg8pgPk|A$!Z_(_iKzFzFHUtO}_5y8}ch2j*MzES!r|X6y8c_Fj*NI!;z!_E15{k z%sTP~ykD2tJGgfFE;{lzn8&xOWZtID+9@)Rs#O>(@EUaQl#6bQ^y|%W0zs_3aRej6 z--J$7Bq+)a-J~-qD0wje1e<6|wKPyv2^%ef2?&!KHBj7SIa#o|@DoxZ0nXTjh!eKOgM_`7fh!8_ zvDL!xGj_?#+dM3zDPR-*3&8gUAW}uVn-nnr^YjH^4}2bn9=Csc-nx(sH5W^R7i5Rr zB_p;^n#Y~j)9fnHR=pS?_t(z@#`-4qHU$j&wLH+jQfchj2t30CxFTTiIZm`%TzEG2 zxp5;SYG z4)-*cN#9SUh77CSh0o|TPz@)@0(QlEhpJ=RVf%PmUI`BGwyVF?n}Bv}jNy@!Z$pcsF zh}Jx4+v)0a@9fqw#~L8jq!kUD{iqU_g%#goUg^Qt8YUHi7a5$v^XoU`oa#zt_i+#& zIcZ)YEP=c7FQ*cl9PKvZW$kZxg659DDt;+m-)ry>EgM|Tkwu_taPe69=pV~kKIq@e z$nv}N<~_$!i7cI|#+i~G2iE7e9?-J=kE0_kl>6UxW4*_sa`rRpB?bAM3xNYgT4AKS zZn|y+ELgn+Lw+?aTZdHt(iCI9&Li+L5OXK_*LDY0*b6`~vgZBF)C=HHDybQt_M!0w za4FPeri=jVe6q*U(*v!n12`!6z)Ttna(T$@73WBO0Z8#*7aa&*T}KUrvz3+*JA4jaG>kP2zv9nle7)cB zS-7j7>Siu?Y9aBaFVC9vNzXGl&eaX1?a80bB(0d_?!Wmordfo$rVt29Gz4}@?B^EY z-sm9$nEa4DG?txe>QW>vZo7WMq<=WfBn7e885%$;e~|QBN*3^Nsau9bW3TjVwLeuq zO5MehPj9WnkiUK&RG8%J>C-PlFTBIC7XV!#n?yDDBkoLvPoA~WH9T_uhl7I#!p^mC ztL#%-hi1W;feZkFgzQKqz^Cn$q)28Y78bX01^@$tC}C2sy1$Cnv?O*xN~F0!B#0S> z&8$07eP+YJZJ&}@qG=Sg@ep(S8{!!;iCXRQ(7K}*E$>4(d^V#j1md@f1AIizU`RBh zdPwJf0XS8>dY*ZnyNAFT*}<#)_&Z;6m88kQJIg_h`@o*4r$`rQ`?Z>d*l;v}X0PO+ ztRmIy*h&3as`_$YNnEdd0}QFIyKz&%0Piy~!90pv_D8zIGG74P@9tx=5r{`=b7*&q zEX1Wnx0s>P?+LSOKG=<2%JBWPub#W7H58?em%Y%u>(N*B2jw{(xXxd?{UKvwtww0v z`sf94yb7BINk)(~2+Znf76+)Yp;T zkXGtFHKot&s&l3GV>$6*#j4UT$!PFObPhGGcoBn^j=E=!T-Q zHrKGe^~azq{SQHtV+X#aK*t;U8Np0-HJDk?f$`*`sVC z8|0N{FF`{FCQtZl4XG!Tx7fq%LO!#c#-EL^x3))0kZ~;ui?cqT1d)Gp?+KrT-5Z$d zI2v@OIsOwb6F4+|#T9Tzxi8ts0`K`}NLR!onkaKHkrcA=62BjW>SKs3C`> zw!n3i$2(5w1VmOPtm}9`s0G4Et!j!EFrYys1?)z@2%+mI{?c{?xV&ni^=(w#H8`() zt+ApAZRqh#@Q;c0Wk1@sFhi6^mFtSkJfyVkSl_bKMa3M?Eir|?zUzv@&)VgE^4D>b z^&VALevP_AuM_shfLJhNu*w&XHv$b)RVy~Z53HbABJ(O$Kc8y(Q3jska0f1xuMSe; zG|ol=tul@;NUj@xp**|*LfsP|as)hf%ibLNRcItKOfVRU<29Mc$zZ)D#eg(B*YtzyNGjCl}u`Qwl*1U9+@!=VSDp$az^h zK@N6%-%`1sYIQn(^#kWaY%vD(8CEg;Yw)j4rE}f0G{kb=pCA_)LeN2(7F>t)vjRmN zE~St-iClPv%do;?%DSmnj-=QOp!bm5=$*d)8{D`sZjwVKWCwJ$xdd37NlayS+g})~ zLTw2?VfZ))Z0c*lBJ2J{WyQwI3Vyx($N_g`P-@wx@e*6(U#pwfY`JYc39@Xi^+f1# z!z>F=jqy@4n7{eOrQGD1J>F;3)Rq|-p+_F{NEPH-2L^gM)+>5$W#%R!8TjZgegN2Q zGrT`f_=c8ES?u$wJ{~IsqnAeZ-J8to#_Ivglx;cf3GB~8)=5JFp7&)tb04fMB4f;E zBR`7Ot9`k#vZfl;Oa4AW#?6RiQAED0@Aa<_yq(uA?q-khF@gGT(=CQNdP4tZn`v0C ztjoj2RZo?;gE$b#^F1EDxE?G}o8!^`aFCzavd|s;(7b%9NP6U$4s$rz%59=l5WRky ztNtDfYMHuGtnMet^wlu3Zsps2knI$c7Ix^%3DW5$8l{`4tMRIAoJ3`f{Zp$nk*M7h zW>Em&>ZK1nKJ(=I>8JC&{pqakgEekj##5C58BR5zQEOT$eC&EkKq9@OrDef=iD#g^ ztrb-U{iecOUzOoW+0TuJZK`$s!DFVW=!&0!J;)`UT-ueK^ZhY8KPFz}UdgIy0CaRe zalyMMWk~3q+wwVnUDgYr-Yr(?sEJlB`>z+opcp)-XSVE_gxR2=3*y)WR|e>H*C5Bf zD!4IX`t&$AVhB8`pwdw}yZ%6TK^7-SR|~2^9IKTSuaAE=Ajnqx1KhBD(#z`c5kFyg zEmB-|g9BEYOM*6r>7-qr8D7N?6M0(>YC4BM&eg}r8=#H_HAy5Q+-~kaIt}~f>(vvz z#=#eWwD!3@3GKhTQk*Pp$?Ys`nxBY>x=$T&KZrsB0cmGx;h;ZYf~1LKl1>9=kS6&q zey3r?9+-yzdjwB8<5ndfY^t%%hyj4xdIuC%dGen(UFZF?;ag?cC@l6&u=kf$iJmBe#jIYw_qpKv;M~^5kLLjJ zqBQiFCRRYbSUE7ZxdrA4oX97+&OK7F^nK<&QuDZ$RW*CKvnPp?y)8lM*=u+Kbm*M- z?2Hl|-g?A}*TGiGJ<*p6CvA%Ekkuc5z$}WJ_osWvY@h>)8zO-%&;UWlM0w4(t1p0x zs3(3E%*Rp7R|zrb1`i)OWYKrNlfWh@7@GC2}74c(Ls)NTgy5C7<@a5A9*KQ2&;iKsF)f5zB=}4&i3U z+uLDc`IL`$W;nisOz$mQ6#k%%7q)cT^_vzCjPIeh~%m^k>xAb257l2;J#b z$OUPs8wKi$zwCSQs+mfh$l7>COK;kE__FI>vj4A(BZHq5Gt8e3Dsl2qRQ%4v85miE zE?NEZzjAaf<}Bi|JI^RRs#bxMbq#-ckCLLdmd}VHs#tTNQL|Sq%tNd_cb|(6#fEn! zg6{~!SWh`xDIhIP%DcQW6N-;=ii|l=PK(Qh(bSIRyH9g2B^yK<)QMCBJgnd4$^Wqo zlRD>Zx2JpxD3xc1GoZDJ{`5AKDpDyEA{ATIFaEe^cY+t!VCi;;7Tg>LW*wEcZ*MQs zcsC|tbt*y-`E{Fx&K=oicBAqPPx%+}Ox>SfyRq;tY#*YL8kciSMA^&OPcuhG!7cZ9 zg)~J~9^c|uRA(MKPB16>3FuwQ!o)^Yd!-}%HWGEiK$aq&hT@^vUQxx8IE zY7nLO;jxe^MWsf~-BZB{TABLU+dLBHuJ9BOtyE-hVt<7vStBCk?C|T7F?lN*+aghA zjx1onsTvS(^{B3;KyGasDxw*OXFF zqJOL8sA!Mj$}9jzAX2`?#6LcDUD<uf2w1GkjCDy%p-FyIPkAn))Q2G)|^?U=pbzE*@sT?@z4Q9yF2W%kc-_&=WZ&VY8ncF90H|jfEp< zv@f5f*DxuH#}3np>A|IS&-Sm5gCdL@$xZ9EqWg<_r-ZI&a@RvH&o;ftG~wK5Y5?;`_K8fuMO9&j5Ij4{*L~; z!@o%6+jTKDsy0)i`pJl6|)#kQ*n!|_knKa=vftLwzvue^@59t2)-S4^G^kSkl zq6jD4QIYJ4rRKm?OYGxTBLt(c^tSAoJy7!vxkwN{=Y@apH7$(g_7!f+W0O(PgM78H z_zM8@PZOdZ+$c05qY53gS8?Ut2xghoG0u*D(k(aQS2Jtfm}hTvCyO8Nx8W}=IXLCM zT;$Izzjj^ID?wx*lx}XT;(^B`9DgjU(GwwCl1E2MB05Q8IO`oVG3ghPwr7#9dFUt? z$`3O*IgNR{4@DLE#4To^4Elq=>XXqk%||1PwBe3u=+p;} zhJ_?~(LEFdQn5lHN$jUP%bXPe|<|pF*)?nM(pBB{gazfbUodpf;CQ zs^y)BO8Y;BBVJh!k`i>b+AkY4vs2#mi+TN=9H}`!O#><^HrN_WTS2EP-=+KxS&BW? zwNtzH&k($DKHTf=3&3Wr!S-ezz$icvQ3tCd2hChCj~y^Pi%?xkguPfK&N|6t*+~K_k|XLpHl~3;v8rZegQ3o z^#FN*)3_~^dis>}%SZaucXgxFAQ#CUS1bc81Ydu=ST|X?0qSRMJ~Ej@nRj*2{tJzG z*TwF9Ty+!(ZJUcvm*$$M`{f;A@ z_P=-!3pj;^YsTadM5Uy+PEBc2MyTU_g0#^@xQ%-R5eRspuV}jH-^5+#VYWM4i{czn2WC4L)%5t0<>fGBT#0^j zKeT+VKqn%ipSdT3d*71lZj=g15FMVe#6HWNc=NXS*vAJE9DQoId!DR0KAg@E*AR>i zm@_XoB3@M%Zu>1wHiMIvV}=cB)iG>U|!dXU$x z%TXHa0Nquv;DPpO@gWTJH4<d~a=U#8;7r>4#F?Ci> zQVp-MY5yEIWG46S5cmD%gC4cBNQQ(3PaDMeuHdh8<{xumcQ9tohMSOt7Mkwy7`MT~ zyOW@E!6-R5#@VcZK!^ND!WeSq-(^UWlsACP%$%P$gqdi{2p_9hY8h#|l!qpGzWo`1 zofmJs_;acz_($8?1j*l9@oN(X2p8Aw&UF$rE<^AB=Vd0NtrV>cYM~^o5s@MF1l;Rbq zy8${N-LMdAWRA@rPBj$rj683-q2rE$4gHkTGO6AH3cD90(3AaCY>Ut9D`w^EVqTo7 zJWaS*hZ#@RXHchZ`m6ge2!$({>cAKr2?drs_?_wXQRtZ~qd6WBtr>6F?vFcF-#S=H zy07LkRQ|kdTJP#VI>KJ_VdQgcw0T^dvrb~&Ivk3Yt>2uuke;Y!9%+-!>h}AqUkqiX z>YT@Iw0vAlr-QED5FJxt%302>&c_9XbqScq5N~(b41vNMF@cw(m#^JzP;G?IOlL0< zgz4a?it8D~zM6XF+exlc9h1yvrQ*&1fl#p#k2N?*oBor>qqfnhLn*rhi9cO~nsktU|;Xt&TSlKxtEmw$Yks@ASb^2DS!@Z(6K|G{5{jFWfIemQbXVIjn zR|OdSY&T{V&k#YI_g>(|eEi0%qR7x7g+CNaB5i@b=;|ric?|aepLfk0tO@%x8z}j7<2M(8qPBDqxlTLm7@UhsM zfVcw)@>8f4PBzp7S;1Xsu4-+H^0=3ke%0nsR*JNd4lRcl5;0&35uRSEmbyv4nN;!? zLU8FyrfXBk_vCk_mn!6BrrFF${l)&Z-@^FV%)Vq?#Si)~ejnl!1>W0*OeqCv@NN{8 z{<)Xue`m`)J~uh>ZAzDXeq0&mPGw)J@CwSpT#y_r(U{a$v>l9dlQlD=fvlxn&XR|~ z&L)x)6x$I0Y&`G@_UJ7?j@s>~VKb|^# zX?Ba$FuX0_nW@fn7B0RRyHlA7o*_Tqt=4K_8i5qf|HfU(%-t&LBYA>@>t~rBqRs6f z`!4wiNBGtmK5Bf6w-E&1 z>lI;^?!yhM-}Ag`IC%bD|9o5hh8G^qG^g>#qxhfO`nCdW$7Rp(DdnAVf}9)8&Sm8W zBKe5Vpt^tms4K4X>HHFQ2lvX=vzwY3hEHb2KJL1LF;_C>+y1S+)7QJVqn{mYC01{B zGq9V;^!BOxQrcbE<<@xJ-;0BL|AATclR`)MrFFs# zJkuFdne(!%{10+3t1?*zQk7jK%*IGGFSNG#Cc^x>brtm;ozOR!VmuUL=v6H925nB- zgTu_~e+QXVM2W;8LgfmM&P-i};AoSNmTU8Tw4IS9?_%V2(UT{uC8?uw-UvPyLhY}N zWID4FwK<8;%Sz3e8FJJSjd%O?O^-RF6H?XJDcnOJk77IJd+d*CLwDVxo-U13f6(wu z78#ktuK_T_Fxy`>UUzTbIEk#h(kKv0GRJu!h1oC5>%0#~-St4kqKhSND>>dj=5W-R zgl=B|w^}6A3o&y(#TSx83K9n$v9lRQX&|AKxx*;w<9@1ZCDk#beI0FimfF4V9rP7KFtE6CxJx5SW};xza8)tBBG?(;mY|+~vugeM%=TJNj+M2? zmz|W%y$#w-f&1h4fl+8=2tGj2}}4Y_ixiIuPUu5Z7x->x6iDen5iBPYpFw&l>nst zC!2W5&SEyz12a|DX{-&N6Vs;d?XL#p*?jCe;s=rn>uE)aXq!_Mi8M*G;)M7&jE?W7 zKQcd~v@C1*Eo)xE91?!2%zcUz^SP@C{L-gI0o0E}cp8HDW*fMf_l5g4P)-3~hbxW= z{|AG`7D4IKM6ECurv+ujkL^eW@8!p^KbD(tmRkCht{4clg(@p1qu8P+8lb4n_ZLRX zt?_WqOW2Ca7b`S_ro0oM)m8&I7hL$E4k;kp~ z=*-k8p{b{)G~Y>Cl7Lg;Os~}USGN{k3`WIU)q@6+C?p6dJzC+t$lWU;$^Lg2BXJWb#?VY-DDC!yxp zS=*{NJ-3h?UZaJ9z-)(oY?1i*9tKtreojd}E3zo1D(~qk)Y)g$u(E@Y+ax5XWEJx$A8`&(+jiV`=@f8h$ z75o$e`;}O88C}2SzeGY%oINxk>@N2v>N_ejjjct+McmwqYI!qAoik+KEU&lIunYg| zM8HoZJk`=h>MA=@8$|GfiT|}Bs4H=Aq{L03GdTJ@H1Dhe^v+Jsnt-6*Sp&fc7aV^9 zpwh}*3`gCutk$7odO*h+flVW#Tr4c%4r4W17`sMTHKL+QyV)rn84{U3_BBKCN+K+) z`Wf=1?Jkyhn`b#9Veht5kjXgXVyX2GwoQIlwhKI*jdh;$L>7Dj7=5-^2)gNq6>4<5 z*#=@O6F-gkyDsNDGwL^!$dMl2x^Uc8fg5zqh4m5LMAgnNjW_6fw?#wE+_zWYdPLCT zlBF+NO5P3RbjV+<_l$>JE{c}E0IE(vk`vO?-Lj=P^O(6w+7UO^ujxO-SZ@>2n&V3Yc`IMi)*#rFtOx{?y3_tK;rN2k#8s^Y0e z>`yQFpb#wbr;_jR=hV)rHkuHn<_MH|8n5L0_f0x1%Sty@@}or*cpBB7{uipC6{oZK z4LxB3hqrCwtTuI;YYWYWG@tgZ6~sy1OjHqM{3TuY+GWbs`x0^1(}Go;cXtx(oxa~yk3|-_Nyo-vCihAz|I!di5gN4KSX1ZOe!V(M7qi-3`YWH>F%o_! zWYO!aPD-A5`btpk*D`fm4)ir|EqZ^je&U(zw_wIYXU1Sd3>DFR>E@;OQw|)^<a6~ zYt*ybk#W;V`YygAo#Hzg3l(#>)uo*#WPX`5aJT+@s{~nR962;_wLfY=jT6T?fQF2_ z1z~Dovl+sL25IITAX?DJ@#)4h!_xW-Ol$;7xa~T|%U9ox>BPdP^-*q%(A5Pa-mA~k2poe*Ev;;<0hKu56bDPG zOTOk6Sk*Q6Ti(;eWuquK1sL;Mw99sF#rhp~kMGdv*hf@z%C&{Fno1WhOg>f=u6>E) zKyJf@qKesMVaHiB-yO#6=^M2Rf5BML_2wJjW>yID9^N*uSfrq5<0vvY8W z7b09c?y&n%p=%R5ivqrbv z4n%-a^W}L^h*iom1BN4T=%=+bVpD7Jpaa}i^p*DuzarWZer&5Xe^BRg5_n?2qA;S; z)EgFqYy+@&OiYZCu{NjlDLsctcAcrBeR2t$qI+U$AGS3Ta0lfd^r;|a+dobSWxSbR z0M>oE+mj2ir^ATqp-3lKMH^!nqGn$erbA}ZD&`D50@qi=jIJv!O9BJ5+wTg7F@ek8 zkMIu@xs=IHt@s9Te#fu!vt6uz$=HK+b)y_*k>pVbDI1-OCctEXrV=pZtPcWh_y|2d zZ5!8~1@0UlKA}<-8z%+(Pw_B$O zi6$qIc=-9TDOcHp{53tw9<@G_TTyid{H9DI+4$=L;ieIIQt8!M8=PCe zQ60OcnCJvgNkOASj$F^@~VR`8;W!3`LVcjS|6il`>!*|ib z#=2H7SWI7Ar>4j7q^VO%tXE%8jNQ1M>%y0iC4`(D?!I8h!op0_R>Y^Jfpl9kEek+j z$k_DiPHJ3y0qAWi0d{WGHym0{0~8!AwWvCxz>REdzmKVOx;nY!e$vkSO>6zvb&W8&!sbLiCr>sjCPk-T^-a+l7E{iRGo{_pOyV~T z5(-B3UdE~NVV!0J^R+nq?50qgwp;{xe#Wu&(ultdp7U92MU-hi~{r=&6&W2wg zXJXsq!^Vc&O~s5G82?)zC}S*pCMyS5DNs6Z2|PC@dR_$<*%p2C)y8S-!DC6Uk;>iG z|GcVg$kCbDN4SWVLdlSFjpa+t*x#oG?<}w%NF)vRn~085_w&)_iBP4?FYVB~kwTwZ z;S!deS`WDZ95yNR1Bn6uh0sV0r@iQGZ6?uJ`|-)~zG^l`(!qbeyRx*3 zhZQvTY|M%yPb&5;%4-}^0p6m0UHtK+O9NTeKp6`<(`;~0p9p$=5FI*Z%4l@BZBc-c+41uv%l$nr92 z#Hi>7^`_K{=1-P(fAlf#$7`}sqgI$bh1{;;k)RL#j+H$6iGoemh`V#AYJksPXC!Hx zu`4?Gz-V^K;N&0we#T)#eF(kF??3QAF$3QA2RE4x={FsVUr8AC(Z4XYSwa@A&Evy0z>ur3l;hpwqo2N;J1 zb*3LlH!f;S|IwhGY7xjpnJ|^vDuthwRMEKnZ#hKwj^CTj_H0L?I$vQ&vq@JDKx7Y7 zv@=d&?zPrM3i?`MrU3FdW!>hjrblz?xg*79Z(_lnd3CH#619W`<6W- zElwbDNM8M4P5rjX;b{?_SL|cyw-zccC~Hb${(G2|sQDgN5%R{@E{lbU_iVZ?A;?2nxL^;hQHATTR%;rS z&gdi%{`A1D%%26bt8zrK3`W5Yi$No(XU|LVlNR#8Y+FOS6iqJc=BQk~_dVHcOJ7>V z%;f$_lzR8Au*@Bt54Axjm8RSNRTym4u0W3%B9N;BLNGTyv7c+&NXhg z(voz<{hi8dEmUOq&jaH&mwvV2wSJH~M~=fZTgXEohLf^J`VeMt(`H84XiPtgyb`w> zgfPrX1?anWU!!iugy@kkz&x>fKD(^}npwi~kFGFR7~PltOgbypDn4iiHt6Kc<=)o0 z@~%hxJxZzP3M5x}+%D-I5O8RC@sw+m1~%>-aY~*GQ|0sT zbIa8->pNBWZ+AytPW(i?f`|LP=F@lQbV79`is1vQAGKK+eZnLV4LkWdQQn1aya%vK zm-3m^KJ&SCm?ojc$GAe$3Dyr$-Xff7DfrSZNOcT#&uiMZ_~Sjpz9c*5>SPw};zr+NkMO!fFeg`L@nbI+#c z3m_)4Nf7jQlqbhQ;^qZV*fLYAy3kNNa)qtTyvOhYFoUQp+=xk&V!fvm(?huiYL8TZ z5B-YWf+KV&$&ZES&|_-<@j=(v80BjGeV|@$_aW}B=C3<@*>@e!Pnepw6~Fz0AFB~b zL2#VyGYGdcp;mlq26UoXP@5zs?IxYj+#Q$*58FT$kiO$yeW{X zla@Cw7HV5JHH=Tw5@WG~JW9)xd1YSF9%uLQ6^VOp@fklgdkl-Bi5_&T9j!J>&bsTI zN>?GMO0MYinAWf>Qv+4ngJSn;_fhUvvY9Za754oSm9oMg3)|@z92<t$4kvzeO!icnXo#1tFyov_4&s{LuC+N@Jfxf(S+d7p$z;L3ICHrYs9yjZ zq!l^zDKds+{8(QmP-TVgfkwsZxlKpM8pO|4p=^G1r%f*Hmcc=_7$ zUX`f0p&%NqAIqF4Ru$Es8H0sh0B_c+Jk}cst`#7+)jyARQf!eAE+P-Uh+#y2zO?{@ z7QqkCE$Gkl1#(VN9VnBnf5BBQ2by1c80Gy_F41${`XNK zq=FjL26{sIz?F`PeR&uHi3CzLbqtOUx4pBO`LPeAU9>Vc`~V;xVMPF=|d%7bLjBHZ0QhqE_cs3a@@@g z?BaxWHK^>QeFULO0h67~MhhUS?keh6H699X=n?ESxa(4V-Qhlj0~6sYGuX*J1ntHu zT)%l^x*~3FpY+D`{uwdrXdp*n&C>-EXSP!=k5JxXrADc1z2YYOY>i&46r((Eyz{Rr zk@^1@%I9tyAUIL2?QqIk^RPay6^dIi^$ zwc0vPTnsiAd9QYJvhDSHntlq$HTY8_-j@RfvxDCrL}?eti2hK~mPwFXOa2t+z^SUy zkjwg(d#Y{nkd?TzJ+bOL%CZCqu&Pbe&iqI#DTIQFzNPRKTK`W_80A5pD!mGeXfHEY zkDoks3i4`TRHbe;WWUkURpn+J;3QDWmYcw@w#>v>z^h8#udwTn5@K8oiPS}UcQ>}{ z$?0ZDOvx};IvO!ReS^n|jpQ+FVa7PU7Tk6#bY{@<+*20`3AeErV8cm1nBiah(V%uE zA`DPCSDO9Ey7&5Mjq>$vQAs=D(VvRCDL;Jnw*yFu^odMSlx%WW^vxN}3_yV?Wy_KP zvV+s6fJ~-H?TD?3zX@4UxYA1tT|?zKb?hx}*irIaiKEj25hdB_Qx9r$0(JBq;Q4&u z?9-x^{2$|s5U0_jR02VhKBT)7n5-wb|6#7BT=~-{@`dVO+YK~S{PwFctX5ha-cYv5 z5|fqc{{IU|LASn<{ARrm__v#VRpJ3=cWTsL-B3{&bmQdFfgipF?~<*VkL{vQTr>G+D5rlOZ~=N-ehYH@t=o_kaqiaAoG5P1ivr7i7R0O2$?Yc0g;8yuXj zPCW&4x=r+-Y>)wnq+-E+GhGtfwbQI9h1t%~pk$JJS9zlR4ZM~CadmxfX(Nn?)Ndo} z+Oert6x!xxsJSf;2Rpi-#+}l-uM~Ve)x0kkpDA0LJpTZ$i}-${wQ^+hR|=7uyjd+Z zxc%JqrveXNDj~_~QdJ1j()c$={+f^ED#WDcHCs#jwFfwNdk&@- zIUja;hvS-mT;`rS{uF?dPl8s}Eq71630H!+?_S+y_j8R>G>r08j_G zs!WEib75vPgmo#;TD017vuEuYHLTzqlA!%XRw_#Z03N(ka$us2*=<%8-REV!D#BeX zdQ9j@3~EWEi+1J%fmrj#vPj2q0GUon#YE~Jh|L)=~meq z-M?`APeOfZ#o3BV=r0*$mQ3LM#;aSf^H>AYnqZKem(EU2OB^W^79CGoOlYy1Hvl?{ zf=9>8p0v*+%;lKl+K|g$Vt;s3ywv{q{OX{!Pf~vxU$V#V`OpQwH8J{&ansKSTM@1+P9a$#GS63#i3}*m3twFWIBUG5XaFUIa}l;eh@FL)Z)t4T1J1 zJaTJM&NT~h?_B1Msf%kuhCK6E$0C{wZDEdvkPgZH-y=1fst_$) zw;(XBFP(~TD=S%Kj>cmr3LBhICPy*F^`1w}SBk%5{mkwF((qvJCyLfVwWbx0WN))yK2B8nPy;X2t*k)j{Z}Hh zEKVgE?^;*Hn^;e*T}@@#aWDrzTC^rdp1n!Q{&d1m(9^O2C%#Qa$Iy&b5I;ONO<%A- z=#t})m{w-vky=`L#iYYLZXKyHqqF#QbK^^Xe}TW1N3Q+*)BgZX8~*@8r~Eh{@mkxC zP7#mkP1eWFe0?Tw=UJ`UuS8p4`378n*8}{knvHfyjm8-R59|EDTImP;gKj_TiT+iL zP|0BvsQJ-JgtJDWWIRW5QroiZR26i(qrDd2I>TCzv;)X;kIOvob? zs@UT_PbQEK9mjlhrRX~TBAdGh+qbnLJ-bi?Ze#NnG6w8*&q`vbl0=Cce6Db)oRWPi zMjNBrM_R~|>L0huX3SD}@ql>Vq-P`WJtzSVw`!6+XpCJ+Rt_150r!Z$eH#N~+g) zD3W<$qlw$*&q8{CT8D8`p;<#I_n+{AX;Ge*XXZsiKf z-C4RH!;wf?j?Jv+{sXjTp0PPr1!Gg3WD~I_)pVFY0sWwy3e)N~%_{{XE?Z8VTdCPv!h`FF0m$KiL1^#=1Mv`aN^t#v3<{{Vc9 zpVGSR8{rkLoXIw?d~Y_K`4J|>KE$3#_Tr1AOH!8R--fNcj|1=^r0fq($O0<&FeR;+J9VIMVW+b;sMU|wrh-FTu!BEcUa`d1W-AKIoQDdg91 zN6L8ZTm#0RYMdTEbKa!`G`tF<>^ICYgL2i?u;Zn2egVL;zfg0FmaedlDGh8#)0(K{ z$tmsyI`ZH^tWQN5HI=1m!%)3wV~K!KlE#`sY|y!NhSzC4wRx9`?g#eNfO0mDYoPHS zy(jjQLvD8@UoRfD=${XKKcs5D6^~HVbh~SdspNg{JYk3c;0}6Lt43z^M}ojsX>ii) z9=NAsM9xw1*s_}Xp4Y<~4VA#2+efjAP%s@}P(@VKbgNb}LiX_(*-i$*_fJt)o4FP~ zV~%HzP~)gM74%PlHTBlKJrc9-ngt5kJdxY{E5iIwqe-Fbw-#(ZP;(jeQ_{Bn9r%T` zU2!9ou?&X|&lo*_#+ZiuQSjgP7m6C@729WhnNuADe-Qln{A-Bak9>5^eJSJ54=;*5 zCp-}V*AWjo*}Yf}pNQhVW+bDPU{tBW2enLHv?VKOb)FJfm7aD`TpSGcuIOL9aF>c_ zjg)69#8;GQmxA8m5=o3uy8!Y5lB3rZ>K6VKmiozB4Q>goq!}$AC71K!yqvuW4O|F82n4&X;$e2E5=o`--`Lp1KAf9F!neriK0%6Y8KO@Ox})N@)gpP!Cv zD^+43By;#wvW|6mxL^0HbGZ6?)(j;5p>yk7MxlZy&jaaC>M>Dd;}rehD5Nppr8sux zqs=?8?@S3Z$KghBIO|LY*FTjgKD{UcLBPd3zI`enY2tyG^pE)s*^)qCGn)1*N#Y5T zw#q|ZX zl%xqG$AQTdv1^k>GD?uPSmG z>~WJ-7^Xy`paZ)V&s`(Uq1_`fEM+G@jcEoy+T)zBl~Ayl>DLGW-dvC|+Nnhn z+bP}0zVAwG5#{iID%R7^%bT9RGiIwuvU#>;LE686iqN!ums1uT9-LB=MMbhO4*5^D zb2i3fVX70maC5hc>DjR))rhwaEiYsse2j20N-E&l72fZ%KpQ{mc{Q77#I>=gZf!a# z3X!=w;<0SM)((FfVjv`vN4dx6OllaMl0Up@rTuzS5LTX^NVJ>kD=QwgrKcbCS@JW; zG=`4j;la<1El>Lm{HZmZ@4p_hxBi7k!&AG)Fn0ML82VE+qx0W({p)||RV#LB(HBVn z0EuPJKj(q|RbN4fPc^hGG96ieHN{W=05Hp*f8~k(RUd|bsNKlV{58R0K!OjujBs!*Ue{!?0Gez1Hu0A6r-o(nvVzar>kIk&;lO0G`Zw^ z({s-p`cjez18?a_2QGV#GmdMK@stKVRttsW%!G11RO9(#y71Y-tZxy*mq~9PK#>bE zIN&MA^%TISg67lgao+>B(ltBxa+8umA7R$6+v<9Y=~3y8 z_Ib3gD<$NKSdF{{RY`0ZQVR{yMhHjD zkb+bH0IVtqtRDkp1d=+1-I4S))4ue#jb(g1m=dBKDfI``dm5fR1==t^lw1x^>{B~! zP8TQd9Adi<4R{6(O5QuG%jtr*{Ii8Z{-;06v*)++?%9CCxZF7W>(V?QAN)z}{+v)W zk)x#e8$-9aNu;&=R>TPucR^%W$NM0Tr{6W##}Yvpju_H3AHs?henOzMP6b}uQqgFE zhZO@ySGMs{82zejJDFDz@mZ2b&2$sR!Q!&yi<+c_$SvdMwP23|t6Rm$;JF+vH`UBy^B6v1iLwrkS-JE{KwWNYxV99rCg4BmkM01JM6el=FHJr7W-_mO#!?gK2G zlZdme|8&kA5}dniLvb;4*WtjodF_u%=W-3&r-d=!n~W}zlMLXyiC`y zCM@ssBIBaJ@ek|x)ZPWw&V#PR#gCC8*&y~m=QZnoI`H&<9Vu7|Lk+m+@u!9xmp-*wPAT!RF1hul2Ii6f03IawGC%XD&F@j^ zIT~so_L%;roiWZy=}2g&Av?Ggm8!c4bBfcDlE$+&L;H%BQGpLPDsj}-ws31E4sI8o z{MMN~`&5D_&%Hl27I>#_<2j@;`3L&bw`E5>R9n08OSlg70WL;)=9fOhii>wl8Z(c= zfF|9~2Q=kjnt(U+?kU@-16M~m)Zy>RuR^sgq@+p9`x4x$LmTs!R=mLR;cS{KBK5#F0P(YZ?ZFFw?O8E+ zo@p+GW-X&VPp7SGT}UlFCN=;{MVxx^T&1Mk`ioHo^PX@0g#p#8Y_gLZk z6Ia;rS@s6e?c>CNFgfF`Uu~`TO*;Wn?HBh%{{VWfB7x9V8{>pte~PXLcH zmA{=uw0S^ab*#+^a-L`;j+L3I4ckwniqXQE7mk9cY9r(r9awa$r|}U};T)SrrMmzC zg0B3&X}}!&RXEfO;gQD5yYl&j^f;-W)T=B@H8+I_`ts({UyC0UN z461+DOIc0DwbKAP)}d@mC_PPPu|H_1ORBQ07KqovGZc){k7AMvXvPrTc^?312zff*(o?_7q?J*!(t)9!Vn zB>G*>nr(r>l&EP&JyV^(jVq4EOxG!G3r#8882%8Lbu`3q%z{bR=`zkHaFoi{`n0!s7#Kj+%L55iH8?0bGXiplX6gMVjfx|3P0q>@MF+(N6gD|X<1Kc#Q@ zRTOD31v~+Yj3y>Hnrfs=twqtO;QAe9s*DP^wxPBhRlIXsvIzE5N>uoxZ2(f5KbNIu z%NNaCQl}L{Sox|*mO%u3iqe5Ns?jBAM7&dI5b&H=jeJwKHr^(RVUQ+-ek2<9pexM2 zGT0W=EOiAO#VL)Cvk&p8Xl&+w8C|SiD+=d{qbfeN?6O1&>0dhdV^BJ7w{3XC<%&RC z=xgZZk!FDG|?Q*o10_hOYe@2_=?u9M^7zfsEgp(g@A_P zeTn&7@IRrhwx`G$4dh;I83Qbwk8#{rmHbN4p5sUwjk<1@*Y9JzXZ$PH#bRofXhe|6 zo1u|TN2;E**I_f|QGGhh7%>G;2EL5=eXk8$L5??X-ol_@o_5!Rc&9{@MDZNp>CUPH4Mlx(PaK1{cFzwJP%s> zi^jSHek<^m#iU>~;e6|7^l`}i`d7yxYSAI<|3)A+Jb`Vio7MYvr@2`}OF17$4z$%EbJ} zhB#Vpb534d3gD+3%`Y>iZppKp(e7uu@ekO-xLD*YPi$AC6;$XkS$bZbZ4}RTs06LS zHKxbCeYVK(dX1(r=dCy#iiyrSqz5hHP+B=XF-lYKkTj05e#H zA%+0+ZCvq_-lkEw?oe%DT=;2rDPpODF!~KrFF2Ss>IPCK(FbFrzBSP zx$@O=2Wq5ApQqkOWqBgcC|!r;$?IE|{v@z@mNuDk-u34Cw35rH$kL|M*n3nqi@MM1*y$iJgAd22Wnq zrFYCp{Hq;~Z$~wv+|FAa^~#^M-4mW_$#A)YN|6s1Tj{)|G+9ti)$I z9V;`vXxN|hNxq_hJI{s(cZ?%F{I~v99jY-F5!} zT}b}`$ErHBPKeQv{{Y0Y>z+K5{Hk9H5A^FkdIsb0s3rdZkWJsTC;3&62@mx9U!nd~ zq%?YFn~nEb{{Wv^Kb2?LkMu~f{o21_*6;qkB>q)K%ZoU_-K4%IH?k~q>-y7yBi54? z;Z`FbSMbK2tP>-nTiqY|Zx0NA-W?n9t^-!^hOwgD{l3t-WaM4h60ASoQP1-g>l6%w zngr428ehbD78bDaC8)W#kxXxOZn$Cy!Q7n>)MM#hUw>?t_behL#7@n%eFkmUtXG{{XxXPxI?s@czmE%ol>{Ua-*Zb1)wr4|40}XuPYa&-{Oc#d z*9;8SGVthks6UY(okO8(I)ru+TiK|UZKll8?aMSx(;k>?{$j1_kqslo340mDQlBuW z_u|=^-NRSH5@g|O%?}x86_X9E^*nJzZ ztx!0lrAW_|+S+?7iS6zISz>aIr?D04ei8VAXKUfsw$!G@#k!v?H&-32Z^i!r4=wep zr_?Plmrsu|bAaCe09xQLz833hRNBNCuTanYsU=|;nx?llp{reLGs+TU{;SI!J*&3( zf1*wH3!Pf*64UU6^&{4^bRUJl9&tM==RaniO#JwKC zGe*C22RYRvHm$IENzB8$VCJo3yA=^pb4syzTwa!=u2lHLOFllAcZhv5*f9r&Z+ z3x5e~5b9c0vcsocuG1R**yJ6(fgJt@mZGuCYaTDY@nz++>J~8D%LY^!!O0$nH6k%r zQaXdiDDak%{kP&PSZ<^Wv%U)+wd>v__C_B`X?2lajs7 zKZpA7_Lhpa@;+v_80V>9{N94w#2KOVH-26&hIAH10(b4P4_To%zk-TilZH^)Ml9*v{{SCalZ*~}(iooIDR?~5`Qn$T$e;iYarx1V{xlD2L)U>o00NW_`1YkA<$D>qU95%-XB88}c-C<0>I@e7hLr16rSMjv<*{3jY9j8uB@H zwn-KokWWFHW!AfK0|naT9{a29{gQ8U=lR-KvFs0hXXLbz%%=m^vXjJiQf>_4NImPx zrPZa0u%))i+dV2J)@D#sVI+REDr)+VncC-fsB3HX*%l0t!>?+@xs+TorNWknImT<8 zi&D9kT(SBJbeA_p^3C!NX>!D?wDmeU+7PHM#?8L<8@z~$e8s^$^H>jhQB|1dH8sYf zlEWBIG1`t;t%&Aim%3yZZ7st}cLl1px^=ukT+5d0ijo~g3Yg^tDd~>&T1&{HlOai~ zi|C1F+_$m|LXe-E7!|vvJBuj9hvvm|ntBPLX^#N(6~AhB!kF}|Y@?z^iMOjXg9?7? ztgo7OXegg|G-jd)(~4c(QvyuZeyHE*tSaW}%+*`>L1v=qPxGjY6Bzk= zR%MknJJ+`RGASNp@~mS$vTMDM!?CyS%Ap|x5=C&AdTZ(z)-AheidB4i^Iouo2a_Ws z%3RY?QhI}vj>b3qBT3m~{0%Aa;q4lq#;#uKwi;kTIuKi+2bzt1L!}Y{^AwsLIQI`} zBDnDD{{YV)%8>YSPH_>d>8|M{XU=i>)ak8hWPrDf57v%I_YQa1#BUDE$@1IssN~S) zUREc^(z-A0eK=qn_8*N~g6iJs3AerT0PBuu_I_dQJdY*umYw!JEX>G5vtuT_^4#K4 z^{-+0qN)9WjpuG}FaR-LJ8zL7{#4@^9-@@Fx>$jaU#&OrrEa}=%{RXk$q%hxvp?vw z4xEb5tqVSFW&Z$pPzQDJwInR?z`5I@U5#RF_Uf!7q{eOXCtrj$o~LpjsQ44v&U+)_Gql*w-(-cp4m$321B_7q@BA@Y~!cavi7m&s-g1L463f;hpg1R#Drc&vC&1ydt$BR+?k)PelSf$lgpt-6_Cq3IqJz57;>s_Zx0 zpDl?!yC2Js!ldyhjI>_~>G9p_HwFCG+Y~nVcazkCoM3vBT(5@wi`lNUOSb<2MAdED z)ye)ABjj(u*O$YmG--9D>ImL-lsQMk!JN?C$<~1$bit{TA2ei}HRFHj?%+M@&7C<~sh{{Rz^3^s>4A471z;a0SN8rtg@i)k&Sma|B49$Y%H z^v@VI;@St=?NUp7m){v;AYw_*KJwu7$D!%XZ4FvGNurTdK_HYYY}o*~NsDA}6&YNd zP{6GHF;wP@da%W4ymZkHQK=*|DPY=|#XS=Su6Y!B1XZG0p`;JpN%gHNqoyv{pX*nt zJ;4eq55@i-i^TpJyVGO?%w^vTAK`JxHMvSD0rI>{KAms}qaN7U@4wr4qwm~d;|J{)*}YPt$U?U^6|b^ag! z09|7IV(}J}FNI^%g~V4E?J}}7Y#VC#IsTQ$d@9w=rn?*^u^h)?A7B2xR9(@XXec$M zh(0iQd}&@R`*a8v-u-;uoCh2?^fl+furXgj{9)5p^TA^CZe+5VTR-f#2l`jfXBikY z~a3gCPp{{SC12iS34>u1UT0D#xYX3zbl{J$gG!T$gS6+2dTum1ob$-mt- zp`I%@TYZ{6(_!i)R?Fn5Qak zT~2wm86;J^BH1!N@oKFc?K9!JW09JZQGMWJrsIxkD-w~jJcA<`tm>6jwsugJ4YF-3uq?fl0KD~$if|}=cZ{cQw#_B@%;9%`hHmbHxBD zKdoizT&T&#X=bvuBghoi;(HlaX9qsjmk}Ot$r-IH_5rcfGuIQ=iVFX;*5FXuChXx)|rpZa*4{&&w7&b*ye^UAL1Lk**GR3iL*Di8BtO5Jh>t zvxBH1CpjX$7Ge9FkNV&%ND(v7FR$jB@mg=0obl``KeiI@^8LZdrrfXkWC!a{WdcVV zI*w^Obs8FO*g~!c4sa>IXpl2;%8E7*D15&vo+%Fwaz60pmC*GV^0cwIIQd3Nt6mq^ zA4j|DS{H0G)mI^5m?-6wnysWEd)stO64I|)xa`P#qp0|&BFm&&$fE&{e@gNw4j%;9 zt^89PbemKok?HiWB!h>c?j%+xCX$2JleHm>T_1*HNfzKbgVU{Zb-SQl3s~nQWD+PD z>3#@;DD}Dmjy%&aLI#@|}e@Xt5#;E%d!X#zUu{TXt@9@wsG>R9bAV$@V_3NVYF8C(&A?a3d7DNEgU+^ECeT-qjU>NgVF zYOAH`*J(bHZpPv%mB+~`T$bIBybcf4)CcWWI!(2JjydAi0?lx-9J*t-vy6~wZ4s>R z?N(SCYaI!M*CBDWx3e}#J#*Oq0J18Sw*vnF?F(TU0{Uj0HVa6oqZ>)=2P{vx^sXrM zOK$po{{WPaLQ#6Iy|w$l_R{<}CTSKcM1dr#R&b6(M9RC1x)nqPaWNf1Nif`*XUG} zO`;5I8>EH{+X=EFx>aOskCJ3LLzB=RRQ~|I?NtoWzz(Fc726jFV0B@TKw;cxj=W^o zEva8#+rhYA#>{y67!oT&!&q^rLLMXx7aX@*m9WUBoph@!Infx!CDX|)Zh3*a6$k$M z9QCW(jByOfIW21;5z86-xIGwp5J;+q`5I9)kiZ#6&~kcp>7IG@s(1RO#qt{{l^LdB zrwC3mdghuH&uI8ZeDC4orq1Nc0P_Mbdele zN006g zk?Gc{YHB2~nH!M96>+*%4N5?kGBNb5Xe-o@skHQqJi}GDj^61}SDa?5%^LZL#c-@E zqMphdnOZOF}igfC;llUF(PwP3}zoDTJ350tkxs_I6b#EcLy zc&wBFBOXT;=;4>R&MZT`hEEWZ1t*i5g<#nk#(LI*DzpiantNL(m6m;(?rV~>eC+6? zmmyVR8PBa^rK@mQ?K`k{yQ12Gt$2S(=CZe0S+ua*&}j+}3WQ58Ci6 zYCjR2_BOP^l#l6KOT}bqg9@I@TL>#DZp|a`k__~x4|-syk4lni`MLh^sgu;Gk(d3}F~)y7P|M~iVcVr4g-k^NI8&N-#Vn75 zp4B5Eb<8&m4@EerGy(qr6I)OE>MG3RY%-u2+&yT}tjv0~pkg!T16oC;7DG>&8($U= z`W?Tw_*aocaN@md;?e&AMuXVbk;lVzs(X^QAT-(y6p9MavXjfVl$@NAS>vr-xBmc- zcmDu*PzQhT-ay*y-GAfVt1nQQPnpg?dHrhV!)E^giPgb9t=h3K95b->m-^H$rSwMp z)8k9JA-UV@TYd|fpHV@(IE?qMM&eWbmvB4n#cX^%mCn5CN!lSidKx4PbJjfeTYJEJ z+cg%FgKZW^@QS5#DG*QBm>Rh0{CL)Oj zOXm*jNYWu4arK}NEclOaGv8ViLO@fTeihDH6823SukRoyXd|)d`u_kr^bZ#VYv{gp z`==SMZLO7w`@b+C;+HPBDb&0pcWbpBC%eVFSdKxTDlG|SY0N3B@Qnb>VY2q_(8&}JXN#z%DV~Cn1UR;fm z;eLFceSiAZ>UXd=i6KoU%fs-`J*#EzAVa-}Ru8~jo}7|F>CI>7?-wJV!llr@73+smlKWDFPP2Fz7?MXf3p;0)ARY%!yqff%4`{OJuwI*snCH2^ zyKA|OF?n&TFarp=I3FndX`}|U5QyVQ<3&i&VO2%~k6~9)J?aFjNllCx4YYs(A06q; zdBrpl@{ISS0+2F2g$>ez!zP%{H)4>-pys4;@*0U8b6iJ@wY%$GTkOzXyfK);+B=@~ zH(?#NC^h8+TGmCY&lTM4h`Wg#;-`Fdu=fS_BkPMF16t;_WIuW5YMLuAs1t$rcrBG?S~yrG(PMFAmx;C^%My8-xfEQ@b3Ko0Mnj7 zO8K9h;=Yve$uWF5)ClJmz<((Zr+hTHvb)~&Bzqpvkm*!=Zv zdXAMW2?q!IQ@>hZ>rUxNV)L3`;`$0q^V_8^dF?<8-!u+I1Fz#ob3nijIi(-UllZx# z*S#P*{{ROM-OPX6723*wbZd<8aQ^^DlO5!)#&7jzzC$wC6(iij{{RLhHu}~^y&K7; zN)f^^8O>}O=R97_x(uZ{}h4ciQXcQ!iwbF z$g8!pw4U^-GlVOgQ%aSVrK{2o(eJYK#(mbIViBsD(po1vY z=wa2V+~ThN;tQ9WD58-v6Vy}Zy%#n>5%UhBm0L2UyoWK7k}9s;JfVK*&MT6uT+HgC zu8m7usKhDT>sB7}CzL4U)(n4ib5`v@Ta_oZVRw5Sii~+ViyE^sEF=;z^;Yf6T>^at zY2G5s3YP41Sl28K*&y^du9`cX6WHrC?m~aNT8ckP%+i+@>c_olsqI-yb4ctzr8r`f zieJK{q4e2b%80k8N^t8~n%=b@pEBFLO!*tKC<9Gx<1ucTLowv$xh-8|k5X|8gd2Iq zTs|$gf4u{WqjRm=O_CvOp5~g|m#QhV8fHnV^V}?qN|qG{^VyA6$+7HrQJ?K=oRf{m z`PF2Mc~az)%}aN5i>h3)f8!(ds=sQ9V_;jBHHoQaBvNh2{_w8t^Rj>X;w#S}yN%_6 z0XYsU(B%7*{{Yt!TGQ%8&MNE=EN9-JeY@kQ>MbIw1YOyx8}3^N${>!F65OS+Z{^IR z(waySAp)!UcV&xg#(LC=ZFK4bU;)rn+;(JhGE5H{2Cr!{{TSg-n7(h)1~K~txm$ZsqpE?_Kn+v{{SxL zx%;>I!S$2+)BG{39U}A0Jfx^mhu5W4xni$_kVEJ7sJ5lwLq_IL^f|ye$m?6*4xEi@ zQb+u;u3qL}+_29CR+oeBmJMqrVH$Z%FitXiQkX|`*DqxvDKXv_uPD8_-)S^qGn|24 z%3c{Dbuz1w3uGzHdBl!cB=#nuYRi^{`d#6*uu}&i=-$=no*&i5x2jz|y@WO@ zsJK}EmE|_<%W49j`DxO-e+6HgOZ&a)oS?@wPRmwIZuC7KBXI~OXA%HA3b3*)h^~Yc zJq=|40Byt&mO=(P=AqNI2w_ioPJD*Z=IjC~i-B%7>HFhwxR@5%FOPH_hgfJ-G3uI(q^gP!{ z9yI0joz0EY+FwQUp}_~9I}m*jtx}!c zt!5`1YIGiSOnz5W^dQs{$YYUC0sJeUYj%m0rgpa~aaOI2qCvh!G2`x@Kt8_JS0uNp zPcvxuo=l!xixV=s4n{f1sJtb0;DiX?AlJ1$M(M}hmMK!&Kg*W-oDXWB$`Z#UN28%p z`0@Q~n$j(zytD);62>s&`qL6Viqd7%zp~*POF(P@{ny#sC_a^-rHJ8A9>p17clH$q4LcT>k(%`Hio2D|rLUAi9m)GH(Q*)Yk2=vW_t{bEu8f5E?qQVWP>AG@9>{{VHtubO_?E6zLt;ucG5%NvOp!4iof-N{l;3Xg8}+a{ns(2YO zwMbb6Sx;3ayOq?fus?jAJ!{H*f2zhjMEhJa`AeJ{a@a|n{{Z%l<-VUf!*IzQh*g)b zAJU-k&Z5yYu!hUYfC)V+h3)#qr_NPD7$gHs@O{|0d54mufH}uXg%qBJN^+Hxdml`A zDi(*s7U<42g*ZJ2)R7jLk(Lf1R@6O#i==wze0LayvrK=sf zJ@a}%=l=j5Gy(E^K3|e>TCQ5*H3*|e%Cjdwh^!HNmdlL$=C$;KB)_(7Vx$a^Kvo#L8sJ~TUj{m#WG?FWBsB0 z>M(mySR8ZJhx4Egl0))U84o>q_p4GLlj~GmU2jwl$p?r}y< zB_~P%a5)&I&;I~goBn>Z?EBIKw(wy807P$jE3BLSS*};XgZ%)X_RV!uf2!|a9hg7% zsd}FF8~9Nwn&y0Ia@N{D<-sMu=DJdAkn!se?1;VP6{ZDW5f4zV?M_d~;dKdo!xu-Nb}-s5cX=Zy9htsnZfBC@TNrO8v&WE#^( z+Y!xo(f$$1U*apsRNtzeK3a-6nM*6M8RI0=FLxWP4CfqTt9;q#HOEn2OzNX9RGDaD zUv6`Xvu@d(9+g_k+2(R^K&=?8ytc_XthpV|ziz#qixMy}ADCoTD~U!3rMwlSA zR7OUbV++x`*F`-U!!~u6DYnuv#z3pf(yH2z+^5p50qu&xn=OY9xb0F7MMgg=k!cK& z3gP@--|;q4=#||lt_#KA@){$bxGAl~_AqFoilRc40(w$aq{4;h1~N@1>}gIM?DdyWHeWe&Je*0!emw?FmFRN}jTlG3V`9VtbmnCvRWy9J9iA&{Pep~W|H;@U-F zX5HJGf7p{8lTz+)T5jS8Q%OY*?2GIQIy+?5iyKu-=uY5p)fp$&r?Nlkk$=5INLOb$ z@mub~JzmMIwt(-$@K!SXC?US`q56C9ILG3Nkk5 zKE3M}tVO%XVy%yuQE(&xM2oogryJFkLP~^%`>Z;OYQkk;8S|5jo|P=n3u)RQQTF33 zy(s{ucpX?7S#mHkwJnsE&|P_^;Twz%%6ipVm3ZT*sDx_LmFO`^q}7-wXLGmF^=l{% z*PD3=5=Vs|^?>30w+SRIlgH0k%>htIG=Mk&^X*D7OJbaxHPQ)E4Zk66+lCst9}Gxh zl4&O@yMP~fR}bb$y-B4LNKaGvQk*%Jf-dimerwFZxQ<8JmudIvms*C}}d4069 zh>-b>_%%+~cMB?oo=^Me)_%)P%@toG-I8e56b#^eqrFp}{L4C8Km&QK7jQfb*N*=H zX$?Nclwi(ezi;ipL$@W8Qoe&Dk{i^?(QoN-M#BUbE#=B9K76EuISr5n2F_o;3R@Q ziLCzsa(?QR=N)ukXEsXJtP zsVDkYwa&S;qcAK1Bk5fBr+zLjqmT`y;{ftC<_kg)%;61Y|dG040WfJ!GSRHqR8h#HzXZLB(Lt;>}vu zbP$Cj860&r(^>e|A0i=hq+FH@$qElOD#IqXx`tDU#L4PV=O2Ycz8J9AJWQ7H%+DJ| zxzF(&b`;C65NQ_;zwCEVN;)t@S+eR=CB%2u@;nR|_i_QWnsV52X+2C&9OzcsE~2(p z<;*gvIFMnN9<>*NA%JPOTMD$EXI}X2RrTp_H7l38k))l~8J$k|o%|-tKT7WkzaBTa@D@>(Y zE^Gnv^AkyI?Zr>q_Y`~VRHLfF@_IQ{$7LQt3z|-er+Xaln7zusR-LBf^$XxMsp7b$ z^#T&(pk<{ZquSgnPyJmb?jENv`I+O@pE_aqQX{!OMn7}`ADZFFfsSoQb6@s{G*rS` zd_8sRax^vw3i9a^3-(G|)j6DhN8-2m8CDZ{-QD~Wzf|ejksHG=wx{8xi|fCbb-NyH zfd^1x*{^7f(e62SAL5^$?aU0~-+dLS>J1T&ilisjrcg{E}n{^iXU-JmvPC9?p+Rp zql^VwYEa`3(aPYscKeK~`D|TW6(-TGv4FqMiGmv#0;+154feL9qv0M@FY?*#NE#uI zZ>1EPf7wRw;B|uN&;FuFBH3{|Bl|XoC43k>@cLzXiLJvdH3MGpy$>;{H#c!Uk&b!8 zP4$)1x%CXvkJMi|CyUEHg!aB};x;>BOOO7OJVuV$vp=s5hy&E;Nk zmb^g?*B40)aB9uTo%WW#T#+W%vmLC2a!OK&S&&qijwX@2PCw(T<_9<$Il_7_^~u6C z1Mpr>Q&FFMotz_InQpVY>>4zp@J1>pc&byGWMRlx*DH#L3)P{FqX`a8YpCNcS=-|% zWmrslghq{tAJpS+qL=zm2-1Am5hTq-P<$lY_IFX-1^_HN4qBO`uA^-^#Hdeh}bl(dB z_4r#!q#3&um<{N8zZ$YD=7afC4!Z9cFpqoH*2jv3o%w;ue@Nsd{&@}G(kX8ax)Sny z*+)-y_eo|#Z~+t83qb_mgv-nN@K{aCxCss@yv#7>o}kA2R}pv-qeRS zHszT6)_bz}vWfNO%Qnp$f;u(tu0~mvndO<@6vySBb#a0)XQWRcc5`bs#jgT;#QRpb zg8GVG>*63jBa#$;!uqe4YZHH_r7Mz_Yp@N9@ASOVD+?^)_*@_Q%!9yW5vTF!p_FUP zSyP(4&&3^Trf2>QEo#EM-@6`ufQ%gLnMQpThw+QEqCG!C)B(sZ_6d7h8EgHdLz-=i zppthIHl#gvz1=d&_sFuvg+jIxe;5o!4@SzALWjy`)k4_~dgQiD3YVjUtu>8Hbn{1x z_q>^P5vl?@D?bP=Yht^tloOomDJrU)YN`om1^1!R+gzO$h#}#c9_>^%tFaKgJ zS9GE78~oyyux&8EuSs-Dv$-`*;BOq7$#;0NC~Oh_6?CZZ%jB%(&5DiNz0OZB8{?w= z&WZM}BdWj?l{~yv=x@!*=!_R!dka4tcP5&a3pw9+uP!w+c;~7Q*RYD8pI4U2d$NAD zG2a*3NWdh0G&(ei5nLtduWT@ZQJs?l|WKyg)E{0io{6(>%yRI>!XV82fN$jRPtIsNKo#3yZ?x8eUn%zjFPW%dB zrb-vR>Ri|{;*Kf0S!1`hEt@eWE_PD(2!L+gZpmGW4bV^ClisFN))L>*B*~B!N1vXf z-9vW9kZ(>3LseloFHqxf3&<7DsW{PfQ@bZ2Su5HWI z&)NCjLprO|eCC{M8`Cz4FyqrdPI2!Pw=|qz@?%#RUPI)Ad!#UB5xCdhf@IfHkV%;dW{vqgVly*KxMeNq6w zczXk^Eenw~ZMZU-{R^VQds8?$qhZb;amU(!in)}B_Y-kT#^hS8nK@%mmM*{R`om7bkh|und_xO*d7pM;Pt)S4NulGpSG#-qBNcw>$B)inz;W=j50X@%s zf(C|SY>7_~s+s-T0p@>ecu8q`nfasp1wCQMT2HqEZ%WQ?uvd;_gS4gPiIaJ)F~Udg zVl?;8TGjc?asI$b99}QaSa)I-5+Nz_!~M1A9y=k769;ri24ei!CMcJ5LvKr&u&t;* zF>x2N$KOy0sapMv-&j`=Q+OoBySiTP$Kx*{I$E+|pGJ{>MbAaddG@Kl29-bdwn28o zs|ic4vicLYmY#2u>k)IQZAo^m-@dmHZ86q$5@H#D`#c&G^Xs}I2Q4N(jOdTLG5q{s zvV1b*Y1Li_IUQMnt*MIC-2nY9iYUqZ$2{dGr*Ph%@Xk1;m5j9$;{{1g#Jky2oKV`Z=WqrH?`&FIH%4d`YT&%a%r^+=9E2)sg+>f)9nk2s+==o4A+T_c{Gt-(CALzTT;&@r*yF zzUkRz;VeOcGu^8_LJ=>B>ks$N^^CQ6|GXd~+LP&4 znjUowU9!hJwxgM+k%;|(ahSYuDt%x>HMAj3iNmX}-6G%xk&5TTFJf^5)VKJ22ls$3C^SyI~BG*I6l46jZjJeXH~1Wbs8q zM6esRf*c{7$!zN#ZLz1p11KW0_OAQA^a=c@VOb8~+jI5pYbDd~M!jamO zNl@AzfBw)+l#x8a*ko!|i_if51`%u8SoJ2q>^*`W7RoArN8hQkd%OA>@~HG0q#ZW% z5m!*L@*QpuM8s=p4F_MpZ@YGnS#NcS38$sh^i5HfoUTrMRZhT|3#$o*U({go%KZSY z&t#1wpy-zz_pq0?3+_1@T$jGIMQ=qso<{VSR;<#R(G5kh0?yf~@oa7+7Wy>s)!bKdLj zykagxrT-LpLN|*sTAG%?@bjW(X6P~L7Bf=CY^CqnYCI|_&RLm?IkxGGvkJB`(IfFZ zLPm^%A?eB2_q8wk<}Fua<(W?Hq;CNA%7pw8LJjqlW|{}Hiw8=w2oCx74dKnQr5)JH zjn+)P(M^9R&og~%{FLzhc!Lk?3hh!h*8~{}1D#VDDWBW~jDE&W zQzCZ6Z-?qIWY?*@d0NvarF$^*^6+UtElYia!cQYRd|1gZEa)xBo6&n_!et2*Y%l!h z7rIMZMCuxT!MnI4B~;(=AX;*mzXN-d(}y=Qn=;xmP}1_$;TXG9*d+-j80b6L={SlO zjeG@LCStCU?K1r37=E}F z5^Oo)O^g5f@XDYvR1NkqqhLhqF1O@yq9GAMw*){(^+dx9~SE)~Swu8x5f@H@w=WXik;Ejk%O@_7^HE zUp3+dw}>Bnzf)!2Gm1_|tt@8&TCU zjegO$h|l{Rkh3qGdl;3)W34_%XTBfxBg(LuXvjJ{(Gq&Ra@?ICrkxS*Z5-#J?s6(; z?l8RMMrmq4JW|^yh}!|;8`Az9phuumz~RM*RFu z8huw9K~XoslWzs^An&{Uy7CKaY2H|z3fU6`rU&F7;5-`R5f!%Zg9jZR8w2!jVSBUo zkTfBJH7mn8kMbD&4v``OL$L6sVDKo_+PaI#f4y(Sq`_M1pp4 zBjQ&hBucjaPc2;@4}=63vhAbf_p#fm}2_zL;<&$kHTP?9mb(l;NLD^5kQz+>{W)`PaRng0hp>4$U+nGcy}$<2pepWCuW+HI&|W+^c(= z&HUn)(4jXvzUxQSX>1HA@=x_C;jrUl2}jJnqO9EzWEA$(Fu|DDQHcN3Xi!)|#D+yquV_#RLkDxt}?NpE%bEVbj7YyY;N{ zFxakEI|G9kOm*1XY6CQp-ubk3cPR68NP#e{Gr_mSnrntX_Wp}@GEW`4NCimp3!eNE z+FgxfwS)JD*QD_&WaV>*+BMO(D45ZWmLEC3rIh|DlC+_heTb4=TZGuXw=Xb+U?dN*uN@NUnRI$yoBdPnqu!;y5^HYLO0{q@v8Lm6X+K_&Ep z>Waq3OpRTle^$L{imlEIj#^5Mp>zYT{u#a@6rKj(s*#qc5iNl-#k`Da9;XgecG9h% z{<=@!-?hs6?5`K9c|+2&K!B3VF3}zh|BSf|9w)0>JM8l7F6A#Zp*-6e7oiAF?sme{ ze@(bjS+TWbwgHKMl9nsWtb6Lxx1?dlGJ94@u$3%@PX-v8-nha)5*0J{XX=|$k0}^& zys2%Jz4L65DN~PyMvVDp8mi)BM?Br!`Zv$S%qOAP?OB=onB|>&1NiHlEn^I79+HdK zo7GFwjneo6wB+eJk_Nn`E0YW$4TjD*5-?5sK(8I$)o)rw>mKf^p`1W=>|HQ$W8o7i zo#h;)7Bpl8+O7lGhEQ_C%o}2)TI?XgEF`FiKo$f(RM7;J8F@cKcY(NpC@btA@jaBB z8%&T>?o@xplPdDbyRqjkgyYo87Zi|a=IMPXsu!2&Z0$&Rw$Ln(BiS-qpmB9aZ=G2j zvkWm)+L};Klnt^_xQWW$%6n585Am?bP?`83nnW#1}qdCdtW4q95l|^0YJjL_ z&$_xw>IYgJCcbb{SvYqLyZ=%-t47yoW_tT+?$=QJ_v9Uh@x$X(cn!UD!`W(mmI<7+ z4s3bgyhmVI#~y#g zH<>=h+ZarO8w*H!JOeonCtBq%oDNp-e!GZO4LcKG&MuLrW2|^-RoibsPpe*A=za;( z;FF>Ls5Z_GwCgyYYg=C*00y65-=o((MfcKRfl(2tI+bY@8P1ZyZC%)53m=Rxk)R8G z9yaadY`GIpox*(I#;)iIz{AR$Abch zO%^TYRiLxz6n1#@1ENI^yLP=)8XRqyxDf<%KTvA-#LaOyAa;_+!!HwG8o+AK!`J?T z^gT;EPqK_JD<0f|NX57Y5+1bA=kP!~jfol0-0@`2Gex+}6QEIt3IC`K4i^Bsts#eU z&fGrYO~1kEPN=7;uo+PiC>HvmuR%M4r<8DdbQD>do%yGmE%!Ihd=AM1XLclP+Vh{)5DkKs2 z7GwR*vwLB(q^R>Rh}Ou26TUR0047R!GKa0vTz=A+K@z>1-I}Z&&B~Z3e}QcA{^WEv z@S(PB6~I`U>p3a!dFSwx1^Jx$x>xD=Qz+S}5{ofefpz9?Y5t#0<%P$)?S$pxCJgbH zlYTJq{UMEaW?{EXJ-`4!p3`!%76?S?%5mqZjP?q{M8&u9daV)uQy~I)PXi{^g)=0? zvx}W^s~wSvSq`~NfJvfo{MB1T@CQl;)>&EGKS2{^OI(eI*mx>a0NuVlzpQCD!zu@+ zOC1LAkr2ptjz48%G>0@f`!7$ZE~rc+^cxvaXwxTUn&R3EG~2e2eF&?EHDs^9cCO9n zBLilawyIDn55z9zQxb-Ql6tBuc-&r3v?mTnrlCb$B`|aZn!!mQ6%5(gsjjpHnzZ1m zgq|-%7QG5MJTakEZvcHf1@xttX|DF+Khc+MQ=lFn^ur$ApQGC=!E)cuNW z)j!d0^D9#n&&vgnao_K|=O#w;bEg?ynaY;zX}|sqz=C-2q9x-Q~viNRJMCL6}$*_mnHAwfdYO!NF){92-dxumY0$W2F>aK zXB!I%ty00Yxmu5*-=lSwL+)p(0Cepj($~2<$eY~UV68{!JS2!6ofkrlGcV&;lR8Q!I z9>q!*6AUKUr(K+tVibP*P~|vfeU|q8qw!qzsttGI_=~iAmI`0B&0(Ta%R>PpRh+)n z;dZ?_+PJb0=_m#r(Y39m!AuY_l7BQ|YcsHe$9SOy{*GlOqTexMQaQ&Mpjj{vpa8FU;~<`P+LIfR5Yl z401FHzy3424$v|ofDa;$dEis;>Yu37^`vW(Fki}DzoE?$g1;8J{|W#l3`Dddy5s1p zXS)GFWR5hG2s(a#rtUBI5-839+SK8TiOhXkD?>^h2cq%=^AFaTZ)#)>6rW#ysr9U3 zB3u!NJ-gv`gjJpRrr^z;8s_E5OZwW?MvE$_&x$5EGvlauQh2%&=B3F%sR4c!c;G!FC|ru(bcd zhyLS77aiWurjMtuJ4h=wJ6dgEW&l4^IfU9*Uj0x=uJUe2Ao98B=MWaSHE!)xw+rM( zc#D`Jy!T1Uw@9_a`wa)z2K1uut&hDhp5XY^V)%Yfc4sq_lGAA;D{_5ad@=FeNq|1aBm~0GV%58>CCwmcSAgH9vVmn;GUo7k0l<)$ zUDhYM+?Ng9=lyPezw7+fE}+pp)({oisY}CA7T42^oz~aU71)>{?)qq*HKMh?Z%>yw z123DIavM)VQAed7j;SM}`>$NBdq}*vVCW#r-c1dL?7~o=S<8 zSsJgCE@mui{tD%wIcjxMNyW@Q}@+ zbNVfr1R`vge&W(lJOHj0V66fF8KK1pS}ys*?|#YOX{r1be54uAoeb9@GX8tsG~bTZq2Wzz(*FKjWjX> z$wJ)~xCzO0LV;ER0KS6MNL%){CLwSE)FCf~)QCNo5E#?~l_O}($t61W0WEYVX2ysAsyt=@hpxg*qw{w@2n?p*&l*edLMc-g|D)mqzQvqR^D zg(aJ~aBl47bODu5kB{EH_?lQxHPOzTx0^Z5<7{t!@=ZmP;KTL*{Ax;&dT?zGK)D3A ztwIs?b&$&|L@y#DU<1pEdTRpM6wC_h%HIvoin=f`zXjXmbO!=W0Mp|KW|dKDp`3%NU`oV@83IcRe0>h{o$TAV zD#Tw9jQf%lRxeBjpco7U%VRm`0a6_^EE6z|_U$j|0=$6L@Mya$#ddJ4d{EF}_Hg`Z zjy837X^gmKZMJVax?eE%U@za@3sbP)=6Xx4$K)!AGfzj_IsTySo(akpUpM)9Ial3p zc(5owb80l3yhQ>PURxICF)yolRn?D34qS#0!ses+~DqWJ`chbRVqNZ6!^j_xV0F$8VS)Ik3@|NI6iH}hrt;o+-f5*L)B z0vlz8d8-9sV87f(0S<pAs01?i}4|PDa*$HZswpC?Cklw89 z1W@R>77;s;i?a%Oh*Z}-Q~``XZIM;97LmIm^jAKZ%=O>%0ZOt;L4wqEmZP=*?R1NC zZ;m-$6y)C2RbJVe&;G$?)*4pUzpwyP09O*3sT0+N;#P2+{onLmt9_9x16+aaELL;B zPOH@82V#0qZmP$q`wSQF+-&5obfC17@VbXVB`5B(WHYLQTWaHgn*j=fcFu=DuN?>) z!PfIx^+=H8*5oI)>|0_b=AQ_2nMp!Vb8m|>tRAcTux13;PUhasa0+h>a&*w{y~2EE zI%iwJk{lIUBNNQqE-2U3%kBbBi_XZSF7BsbP_2%(EJa=-E7C$D8tK9fk`$_)HUhma zLdIs2gZ@R2c3I7#6o3cxsYEW9#41`l!(@a|2Vgt|rvq-yJ>jJVurRFdBHLF#cE;vz zh_rvsc*fZlTFsXw>nAk}&w{L=xxkJn%CC6Vq-j8dQyh!v%OzE7XF6HIq}8sUfeDCv zKvU%9$7Lo#N=G!aeIb!zl@ARdhhk}n+O}R@E9s94Z72;mpNUe_GO70H1y;6vCgua% z-UfAep9R_v>*!+fQia+NnI~9VdVjz=wCjaM|LcBviri=_Q;+r4n6vSXXsg22hHa^8 z=GRgHpSy9ZBavm(reno8vMWo=|K^bdy|rk|VcF_ZDtkP`DJO8h_Mh;24N zhYQtJT4TY4zWxi&PH)c7F%+K+pG6*+A≧?>z&?oC_;+3XHfbimhhAi7C=5ED7+* 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 DZi}VJ literal 0 HcmV?d00001 diff --git a/docs/assets/images/primo-cover.png.bkp b/docs/assets/images/primo-coover.png similarity index 100% rename from docs/assets/images/primo-cover.png.bkp rename to docs/assets/images/primo-coover.png diff --git a/docs/index.md b/docs/index.md index 10c64f94..daef2395 100644 --- a/docs/index.md +++ b/docs/index.md @@ -2,7 +2,7 @@ Benvenuto! Questo sito è dedicato a **PRIMO**, un braccio robotico a 6 assi open‑source progettato per farti scoprire il mondo della robotica industriale. Qui troverai tutte le risorse necessarie per imparare i concetti fondamentali della robotica e applicarli concretamente attraverso l’interazione con un robot reale. -![image](./assets/images/primo-cover.png) +![image](./assets/images/DSC_6715.png) --- diff --git a/site/assets/images/DSC_6715.png b/site/assets/images/DSC_6715.png new file mode 100644 index 0000000000000000000000000000000000000000..d8a49f1a67910ad46c7ad80476d1dec0b6f0410a GIT binary patch literal 51331 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≧?>z&?oC_;+3XHfbimhhAi7C=5ED7+* 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 DZi}VJ literal 0 HcmV?d00001 diff --git a/site/assets/images/primo-cover.png.bkp b/site/assets/images/primo-coover.png similarity index 100% rename from site/assets/images/primo-cover.png.bkp rename to site/assets/images/primo-coover.png diff --git a/site/index.html b/site/index.html index c903b53c..9054c203 100644 --- a/site/index.html +++ b/site/index.html @@ -76,7 +76,7 @@
- + Vai al contenuto @@ -814,7 +814,7 @@ -

Benvenuto in PRIMO: il tuo primo passo nella robotica

+

Benvenuto in PRIMO COVER: il tuo primo passo nella robotica

Benvenuto! Questo sito è dedicato a PRIMO, un braccio robotico a 6 assi open‑source progettato per farti scoprire il mondo della robotica industriale. Qui troverai tutte le risorse necessarie per imparare i concetti fondamentali della robotica e applicarli concretamente attraverso l’interazione con un robot reale.

image


diff --git a/site/search/search_index.json b/site/search/search_index.json index b7617a5e..1d0f9249 100644 --- a/site/search/search_index.json +++ b/site/search/search_index.json @@ -1 +1 @@ -{"config":{"lang":["it"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"],"fields":{"title":{"boost":1000.0},"text":{"boost":1.0},"tags":{"boost":1000000.0}}},"docs":[{"location":"","title":"Benvenuto in PRIMO: il tuo primo passo nella robotica","text":"

Benvenuto! Questo sito \u00e8 dedicato a PRIMO, un braccio robotico a 6 assi open\u2011source progettato per farti scoprire il mondo della robotica industriale. Qui troverai tutte le risorse necessarie per imparare i concetti fondamentali della robotica e applicarli concretamente attraverso l\u2019interazione con un robot reale.

"},{"location":"#che-cose-primo","title":"Che cos\u2019\u00e8 PRIMO","text":"

PRIMO \u00e8 un manipolatore articolato progettato per la didattica. \u00c8 stampabile in 3D, programmabile, completamente open\u2011source, e nasce con l'obiettivo di rendere accessibile l'apprendimento della robotica in contesti scolastici e formativi.

\u00c8 pensato per aiutarti a: - Comprendere come funziona un robot industriale - Imparare i principi di base del controllo del movimento - Mettere in pratica concetti teorici con un sistema fisico reale

"},{"location":"#cosa-imparerai-attraverso-questo-sito","title":"Cosa imparerai attraverso questo sito","text":"
  1. Cos\u2019\u00e8 un robot e come si classificano i diversi tipi di manipolatori
  2. Concetti chiave come gradi di libert\u00e0, cinematica diretta e inversa
  3. Struttura di un robot articolato e come ogni parte contribuisce al movimento
  4. Principi di controllo e programmazione base
  5. Esercizi pratici, simulazioni e movimenti reali
  6. Approfondimenti su tematiche moderne della robotica
"},{"location":"#perche-e-importante-studiare-la-robotica-oggi","title":"Perch\u00e9 \u00e8 importante studiare la robotica oggi","text":"

La robotica \u00e8 ovunque: dalle fabbriche ai magazzini automatizzati, dai robot chirurgici ai bracci meccanici nei laboratori. Comprendere come funziona un robot ti permette di: - Sviluppare competenze trasversali tra meccanica, elettronica e programmazione - Affrontare problemi reali con approccio ingegneristico - Prepararti alle professioni del futuro, dove l'automazione sar\u00e0 sempre pi\u00f9 centrale

Studiare robotica non significa solo imparare a costruire un robot, ma soprattutto a pensare in modo sistemico, logico e creativo.

"},{"location":"#come-usare-questo-sito-passo-dopo-passo","title":"Come usare questo sito passo dopo passo","text":"
  1. Parti dalla teoria: esplora i concetti fondamentali della robotica
  2. Scopri PRIMO: analizza come \u00e8 costruito e quali sono le sue funzionalit\u00e0
  3. Prova a programmare: inizia con esempi guidati
  4. Sperimenta: esegui esercizi pratici per applicare quanto appreso
  5. Approfondisci: se sei curioso, troverai spunti per esplorare tematiche pi\u00f9 avanzate
  6. Condividi e contribuisci: PRIMO \u00e8 un progetto aperto, nato per crescere con la comunit\u00e0

Ti auguriamo buon apprendimento e buon divertimento con PRIMO! Comincia dal primo capitolo: \"Cos\u2019\u00e8 la robotica\".

"},{"location":"approfondimenti/","title":"Approfondimenti Tecnici su PRIMO","text":""},{"location":"approfondimenti/#introduzione-al-controllo-predittivo-mpc","title":"Introduzione al Controllo Predittivo (MPC)","text":"

Il controllo predittivo basato su modello (Model Predictive Control, MPC) \u00e8 una tecnica avanzata di controllo che utilizza un modello matematico del sistema per prevedere il comportamento futuro e ottimizzare le azioni di controllo in tempo reale. A differenza dei controlli tradizionali, MPC calcola una sequenza ottimale di comandi considerando vincoli fisici e obiettivi prestazionali, aggiornando continuamente la strategia ad ogni passo temporale.

Questa metodologia \u00e8 particolarmente utile in robotica per gestire sistemi complessi con pi\u00f9 variabili, limiti operativi e necessit\u00e0 di precisione elevata.

"},{"location":"approfondimenti/#cose-ros2-e-perche-sara-usato-su-primo","title":"Cos\u2019\u00e8 ROS2 e perch\u00e9 sar\u00e0 usato su PRIMO","text":"

ROS2 (Robot Operating System 2) \u00e8 un framework open-source per lo sviluppo di software robotico modulare, scalabile e distribuito. Offre strumenti e librerie per la comunicazione tra componenti, gestione dei dati, simulazione, e integrazione di sensori e attuatori.

Su PRIMO, ROS2 sar\u00e0 adottato per:

  • Facilitare l\u2019integrazione di sensori e attuatori avanzati
  • Abilitare il controllo in retroazione (closed-loop) con feedback in tempo reale
  • Supportare lo sviluppo di funzionalit\u00e0 complesse come pianificazione, percezione e interfacce utente
  • Consentire una maggiore modularit\u00e0 e interoperabilit\u00e0 con altri sistemi robotici
"},{"location":"approfondimenti/#cenni-sulla-realta-aumentata-applicata-alla-robotica","title":"Cenni sulla Realt\u00e0 Aumentata Applicata alla Robotica","text":"

La realt\u00e0 aumentata (AR) consiste nell\u2019integrare elementi digitali (grafica, dati, interfacce) direttamente nel campo visivo reale dell\u2019utente. In robotica, l\u2019AR pu\u00f2 essere utilizzata per:

  • Visualizzare in tempo reale lo stato del robot e i suoi parametri
  • Guidare l\u2019operatore durante la calibrazione o la manutenzione
  • Offrire interfacce intuitive per la programmazione e il controllo
  • Sovrapporre traiettorie, aree di lavoro e modelli virtuali per migliorare la comprensione spaziale

L\u2019applicazione di AR su PRIMO punta a rendere pi\u00f9 immediata e coinvolgente l\u2019esperienza educativa e operativa.

Questo documento fa parte della documentazione tecnica di PRIMO e contiene approfondimenti sulle tecnologie future e avanzate.

"},{"location":"componenti_primo/","title":"Componenti principali di PRIMO","text":"

PRIMO \u00e8 un braccio robotico articolato progettato per introdurre alla robotica industriale in modo pratico e accessibile. Ogni componente che lo costituisce ha un ruolo funzionale ben preciso, pensato per simulare il comportamento di veri robot industriali.

"},{"location":"componenti_primo/#struttura-generale","title":"Struttura generale","text":"

Il robot \u00e8 composto da sei assi rotazionali, ognuno dei quali permette un movimento controllato. Questi assi sono realizzati attraverso una combinazione di:

  • Motori passo-passo
  • Giunti meccanici
  • Supporti e snodi
  • Elementi strutturali stampati in 3D

Ogni asse introduce un grado di libert\u00e0 (DoF), permettendo movimenti indipendenti che, combinati, danno vita a una cinematica articolata.

"},{"location":"componenti_primo/#motori-passo-passo","title":"Motori passo-passo","text":"

I motori utilizzati sono chiamati NEMA 17. Sono motori in grado di ruotare di piccoli passi precisi (es. 1.8\u00b0 per passo), rendendoli ideali per la robotica educativa. Non utilizzano sensori di posizione (open-loop), ma possono essere controllati con alta precisione tramite appositi driver.

"},{"location":"componenti_primo/#come-contribuiscono","title":"Come contribuiscono","text":"

Ogni motore \u00e8 responsabile della rotazione di un segmento del braccio robotico. La combinazione di pi\u00f9 rotazioni consente al braccio di orientarsi nello spazio.

"},{"location":"componenti_primo/#giunti-rotazionali","title":"Giunti rotazionali","text":"

I giunti permettono il movimento relativo tra due parti del braccio. Sono il cuore della struttura articolata e simulano le articolazioni di un braccio umano (es. spalla, gomito, polso).

"},{"location":"componenti_primo/#come-contribuiscono_1","title":"Come contribuiscono","text":"

Senza i giunti, le rotazioni dei motori non avrebbero alcun effetto: \u00e8 grazie ai giunti che i segmenti del braccio possono muoversi in modo coordinato.

"},{"location":"componenti_primo/#supporti-e-snodi","title":"Supporti e snodi","text":"

Gli snodi sono elementi meccanici che collegano tra loro motori, giunti e bracci. Possono contenere cuscinetti per rendere fluido il movimento e garantire stabilit\u00e0.

"},{"location":"componenti_primo/#controller-e-driver","title":"Controller e driver","text":"

Il controllo dei motori avviene tramite una scheda centrale, a cui i motori sono collegati. In PRIMO, i driver sono in open-loop, ovvero senza retroazione: il sistema invia comandi ai motori ma non verifica se il movimento \u00e8 stato realmente eseguito.

"},{"location":"componenti_primo/#che-cosa-permette-questa-configurazione","title":"Che cosa permette questa configurazione?","text":"
  • Riduzione dei costi
  • Maggiore semplicit\u00e0 didattica
  • Possibilit\u00e0 di esplorare limiti e potenzialit\u00e0 del controllo senza feedback
"},{"location":"componenti_primo/#in-sintesi","title":"In sintesi","text":"

Ogni componente di PRIMO \u00e8 stato progettato per simulare i concetti fondamentali della robotica industriale:

Componente Funzione Motore passo-passo Genera il movimento rotazionale Giunto Trasmette e permette la rotazione Supporto/snodo Collega e guida i movimenti Controller Invia comandi ai motori (open-loop)

Lo scopo non \u00e8 solo vedere PRIMO muoversi, ma capire come e perch\u00e9 ogni parte contribuisce al movimento complessivo del robot.

"},{"location":"controllo_robot/","title":"Controllo del Robot PRIMO","text":""},{"location":"controllo_robot/#differenza-tra-controllo-open-loop-e-closed-loop","title":"Differenza tra controllo Open-Loop e Closed-Loop","text":"

Il controllo open-loop \u00e8 un metodo in cui il sistema esegue comandi senza ricevere alcun feedback sulla posizione o lo stato reale degli attuatori. Il controllo si basa esclusivamente sull\u2019invio di istruzioni, presupponendo che l\u2019azione venga eseguita correttamente. Questo tipo di controllo \u00e8 semplice e meno costoso, ma pu\u00f2 essere soggetto a errori non rilevati come perdite di passi o scostamenti di posizione.

Il controllo closed-loop utilizza un sistema di retroazione che misura continuamente la posizione o lo stato effettivo dell\u2019attuatore tramite sensori. Il sistema confronta il valore misurato con il valore desiderato e apporta correzioni per minimizzare gli errori, garantendo una maggiore precisione e affidabilit\u00e0 del movimento.

"},{"location":"controllo_robot/#perche-primo-e-open-loop","title":"Perch\u00e9 PRIMO \u00e8 Open-Loop","text":"

PRIMO utilizza un controllo open-loop perch\u00e9 impiega motori passo-passo senza sensori di retroazione. Questa scelta permette di mantenere il progetto semplice, economico e facilmente accessibile a chi si avvicina alla robotica educativa. La semplicit\u00e0 hardware e software facilita l\u2019apprendimento dei principi base del controllo dei robot senza la complessit\u00e0 aggiuntiva del feedback.

Inoltre, per applicazioni didattiche con carichi leggeri e velocit\u00e0 moderate, il controllo open-loop \u00e8 sufficiente per ottenere movimenti precisi e affidabili.

"},{"location":"controllo_robot/#come-avviene-il-movimento-dei-motori-passo-passo","title":"Come Avviene il Movimento dei Motori Passo-Passo","text":"

I motori passo-passo sono motori elettrici che si muovono a scatti discreti chiamati \u201cpassi\u201d. Ogni impulso elettrico ricevuto fa ruotare l\u2019albero del motore di un angolo fisso. La posizione \u00e8 quindi controllata contando il numero di impulsi inviati al motore.

Il movimento complessivo del motore \u00e8 ottenuto sommando questi passi, permettendo un controllo accurato della posizione senza necessit\u00e0 di sensori esterni.

"},{"location":"controllo_robot/#come-primo-riceve-ed-esegue-i-comandi-di-movimento","title":"Come PRIMO Riceve ed Esegue i Comandi di Movimento","text":"

Il sistema di controllo interpreta le istruzioni di movimento e le traduce in impulsi elettrici inviati ai motori passo-passo. Questi impulsi indicano quanti passi ciascun motore deve compiere e con quale velocit\u00e0.

L\u2019esecuzione avviene in open-loop: si presume che il motore compia esattamente il numero di passi comandati senza una verifica attiva della posizione raggiunta. Questo metodo \u00e8 efficace in condizioni controllate e permette una programmazione semplice e diretta del movimento del robot.

Questo documento fa parte della documentazione tecnica del braccio robotico educativo PRIMO.

"},{"location":"cos_e_la_robotica/","title":"Cos\u2019\u00e8 la robotica?","text":"

La robotica \u00e8 una disciplina che unisce meccanica, elettronica e informatica per progettare, costruire e controllare macchine capaci di compiere azioni in modo autonomo o semi-autonomo. Ma cosa si intende esattamente per robot? E come si inserisce nella pi\u00f9 ampia categoria dell\u2019automazione?

"},{"location":"cos_e_la_robotica/#cose-un-robot-industriale","title":"Cos'\u00e8 un robot industriale","text":"

Un robot industriale \u00e8 una macchina programmabile, progettata per eseguire movimenti e compiti ripetitivi con precisione, velocit\u00e0 e affidabilit\u00e0. I robot industriali vengono spesso utilizzati per: - Spostare oggetti (pick & place) - Saldare componenti - Assemblare parti - Verniciare superfici - Lavorare materiali

La definizione ufficiale secondo ISO 8373 \u00e8:

\"Manipolatore multifunzionale, riprogrammabile, controllato automaticamente, con tre o pi\u00f9 assi, che pu\u00f2 essere fisso o mobile per l\u2019uso in applicazioni di automazione industriale.\"

"},{"location":"cos_e_la_robotica/#automazione-robotica","title":"Automazione \u2260 Robotica","text":"

Molti pensano che automazione e robotica siano sinonimi. Non \u00e8 cos\u00ec!

Automazione Robotica Sistema che esegue una sequenza fissa di operazioni Sistema programmabile e riconfigurabile Spesso rigido e specifico per un compito Flessibile e adattabile a diversi compiti Esempio: una macchina per imbottigliare Esempio: un braccio robotico che confeziona prodotti diversi

In breve, l'automazione esegue, la robotica decide come eseguire.

"},{"location":"cos_e_la_robotica/#dove-si-usano-i-robot-oggi","title":"Dove si usano i robot oggi","text":"

I robot non sono solo nelle fabbriche! Ecco alcuni settori dove i robot sono sempre pi\u00f9 presenti:

  • Industria automobilistica: per saldare, assemblare, verniciare
  • Elettronica: per il montaggio di circuiti stampati
  • Logistica: per la movimentazione automatica nei magazzini
  • Sanit\u00e0: con robot per chirurgia assistita o riabilitazione
  • Agricoltura: per la raccolta automatizzata o l\u2019analisi del suolo
  • Servizi: come camerieri robot, assistenti o pulitori automatici
"},{"location":"cos_e_la_robotica/#cose-un-manipolatore-articolato","title":"Cos'\u00e8 un manipolatore articolato","text":"

Un manipolatore articolato \u00e8 una tipologia di robot composta da pi\u00f9 segmenti (bracci) collegati da giunti rotanti, simile a un braccio umano.

Ogni giunto fornisce un grado di libert\u00e0 (DOF, dall\u2019inglese Degree of Freedom), ovvero la possibilit\u00e0 di ruotare o muoversi in una certa direzione. Un robot con 6 DOF pu\u00f2: 1. Spostarsi avanti/indietro (X) 2. Spostarsi a sinistra/destra (Y) 3. Spostarsi in alto/basso (Z) 4. Ruotare intorno all\u2019asse X (roll) 5. Ruotare intorno all\u2019asse Y (pitch) 6. Ruotare intorno all\u2019asse Z (yaw)

Questo lo rende capace di raggiungere qualsiasi punto nello spazio con qualunque orientamento, proprio come farebbe un braccio umano per afferrare un oggetto.

Nella prossima sezione scoprirai com\u2019\u00e8 fatto un robot come PRIMO, e quali sono i suoi assi e componenti principali!

"},{"location":"programmazione/","title":"Programmazione Base del Robot PRIMO","text":""},{"location":"programmazione/#cose-il-g-code","title":"Cos'\u00e8 il G-code","text":"

Il G-code \u00e8 un linguaggio di programmazione standard utilizzato per controllare macchine CNC, stampanti 3D e robot industriali. Consiste in una serie di comandi testuali che indicano movimenti, velocit\u00e0, posizioni e altre azioni da eseguire. Ogni comando in G-code specifica istruzioni precise come spostare un asse, cambiare velocit\u00e0 o attivare/disattivare un utensile.

Utilizzando il G-code \u00e8 possibile definire traiettorie e sequenze di movimento per il robot in modo semplice e flessibile.

"},{"location":"programmazione/#come-si-controlla-manualmente-primo","title":"Come si controlla manualmente PRIMO","text":"

Il controllo manuale di PRIMO permette di spostare singolarmente gli assi del robot per operazioni di prova, calibrazione o posizionamento preciso. Questo controllo diretto viene effettuato inviando comandi che indicano lo spostamento di un singolo asse di una certa quantit\u00e0 o angolo.

Attraverso un'interfaccia di controllo, \u00e8 possibile scegliere quale asse muovere e definire il numero di passi o la distanza da percorrere, controllando cos\u00ec manualmente la posizione del robot.

"},{"location":"programmazione/#come-si-possono-dare-comandi-da-una-console-o-interfaccia-web","title":"Come si possono dare comandi da una console o interfaccia web","text":"

Il robot PRIMO pu\u00f2 ricevere comandi da una console di controllo o da un\u2019interfaccia web dedicata. Questi strumenti consentono di inviare comandi testuali (come quelli in G-code) direttamente al sistema di controllo, visualizzare lo stato del robot e monitorare l'esecuzione dei movimenti.

La console e l\u2019interfaccia web permettono anche di eseguire macro, caricare file di programma e inviare istruzioni di movimento in tempo reale, facilitando cos\u00ec l\u2019interazione con il robot.

"},{"location":"programmazione/#esempi-di-g-code-semplici-per-muovere-gli-assi","title":"Esempi di G-code semplici per muovere gli assi","text":"

Ecco alcuni esempi base di comandi per muovere gli assi del robot:

  • Spostamento rotativo su un asse (esempio: asse B):

G1 B10 F1000

Questo comando sposta l'asse B a 10 gradi con una velocit\u00e0 di 1000 gradi/minuto.

  • Spostamento contemporaneo di pi\u00f9 assi (esempio: X e Y):

G1 X20 Y15 F800

Sposta gli assi X e Y rispettivamente a 20 e 15 gradi con velocit\u00e0 800.

  • Ritorno alla posizione zero (home):

G28

Comando per riportare tutti gli assi alla posizione di origine.

  • Spostamento relativo (rispetto alla posizione corrente):

G91 G1 X5 Y-3 F500 G90

Qui il robot si sposta di +5 sull'asse X e -3 sull'asse Y rispetto alla posizione attuale. G91 abilita il modo di spostamento relativo, mentre G90 lo disabilita tornando al modo assoluto.

Questa guida fa parte della documentazione tecnica del braccio robotico educativo PRIMO.

"},{"location":"programmazione_avanzata/","title":"Programmazione Avanzata del Robot PRIMO","text":""},{"location":"programmazione_avanzata/#cose-robodk","title":"Cos\u2019\u00e8 RoboDK","text":"

RoboDK \u00e8 un software di simulazione e programmazione offline per robot industriali. Permette di creare, simulare e ottimizzare percorsi di movimento in un ambiente virtuale prima di eseguirli sul robot reale. RoboDK supporta un'ampia variet\u00e0 di robot e consente di generare codici di controllo personalizzati tramite post-processor, facilitando l\u2019integrazione con sistemi hardware diversi.

"},{"location":"programmazione_avanzata/#come-si-importa-un-modello-primo","title":"Come si importa un modello PRIMO","text":"

Per lavorare con PRIMO in RoboDK, \u00e8 necessario importare il modello 3D del braccio robotico. Questo modello include la struttura meccanica e i riferimenti cinematici degli assi.

L\u2019importazione avviene tipicamente attraverso un file CAD o un file di definizione robot compatibile con RoboDK (ad esempio file .stp, .igs o un modello RoboDK .rdk). Il modello viene caricato nell\u2019ambiente di simulazione, permettendo di visualizzare e manipolare il robot in 3D.

"},{"location":"programmazione_avanzata/#come-si-simula-un-movimento-e-si-esporta-il-codice","title":"Come si simula un movimento e si esporta il codice","text":"

Una volta importato il modello PRIMO, si possono definire traiettorie e movimenti per il robot all\u2019interno di RoboDK. Attraverso l\u2019interfaccia grafica o utilizzando script, \u00e8 possibile:

  • Creare percorsi con punti intermedi
  • Definire velocit\u00e0 e accelerazioni
  • Simulare l\u2019esecuzione della traiettoria per verificarne la correttezza e assenza di collisioni

Terminata la simulazione, RoboDK consente di esportare il codice di controllo specifico per PRIMO, adattato al suo firmware e hardware tramite un post-processor personalizzato. Questo codice \u00e8 pronto per essere caricato e eseguito sul robot reale.

"},{"location":"programmazione_avanzata/#come-funziona-il-post-processor-personalizzato-per-primo","title":"Come funziona il post-processor personalizzato per PRIMO","text":"

Il post-processor \u00e8 un componente software che traduce i movimenti e le istruzioni generati in RoboDK in un linguaggio di controllo comprensibile dal robot PRIMO.

Nel caso di PRIMO, il post-processor personalizzato converte le traiettorie in comandi compatibili con il controllo open-loop basato su motori passo-passo e invia istruzioni in forma di comandi passo-passo o G-code adattati al firmware usato.

Questo permette di garantire che il codice esportato sia ottimizzato per il funzionamento di PRIMO, rispettando i limiti meccanici, i parametri dei motori e la modalit\u00e0 di controllo open-loop.

Questo documento fa parte della documentazione tecnica avanzata del braccio robotico educativo PRIMO.

"},{"location":"struttura_robotica/","title":"Struttura Robotica","text":""},{"location":"struttura_robotica/#cosa-sono-gli-assi-e-i-gradi-di-liberta","title":"Cosa sono gli assi e i gradi di libert\u00e0","text":"

Un robot si muove nello spazio grazie a una serie di assi, cio\u00e8 snodi o giunti che gli permettono di ruotare o traslare. Ogni asse aggiunge un grado di libert\u00e0 (DoF, Degree of Freedom), cio\u00e8 una direzione possibile di movimento.

Un corpo nello spazio pu\u00f2 avere fino a 6 gradi di libert\u00e0:

  • 3 di traslazione: avanti/indietro, sinistra/destra, su/gi\u00f9.
  • 3 di rotazione: rollio, beccheggio, imbardata.

Un robot con 6 assi pu\u00f2 quindi raggiungere qualsiasi posizione e orientamento nello spazio tridimensionale, proprio come il braccio di un essere umano.

"},{"location":"struttura_robotica/#cinematica-diretta-e-cinematica-inversa","title":"Cinematica diretta e cinematica inversa","text":"

La cinematica studia il movimento dei corpi, senza preoccuparsi delle forze.

  • Cinematica diretta: si conoscono gli angoli dei giunti \u2192 si calcola dove si trova l\u2019estremit\u00e0 del braccio (end-effector).
  • Cinematica inversa: si conosce la posizione desiderata dell\u2019estremit\u00e0 \u2192 si calcolano gli angoli da dare ai giunti.

La cinematica inversa \u00e8 particolarmente importante: ci permette di dire al robot \"Vai l\u00ec\" e il robot calcola come muoversi.

"},{"location":"struttura_robotica/#che-struttura-ha-primo","title":"Che struttura ha PRIMO","text":"

PRIMO \u00e8 un braccio robotico a 6 assi, ovvero un manipolatore articolato che ricorda il braccio umano. \u00c8 composto da:

  1. Base \u2013 ruota il braccio orizzontalmente
  2. Spalla \u2013 alza e abbassa il braccio
  3. Gomito \u2013 estende o ritrae il braccio
  4. Polso 1 \u2013 piega verso l'alto o il basso
  5. Polso 2 \u2013 ruota lateralmente
  6. Polso 3 \u2013 ruota sull'asse dell'end-effector

Questa struttura \u00e8 molto diffusa nell'industria, perch\u00e9 permette di raggiungere molti punti nello spazio con grande flessibilit\u00e0.

"},{"location":"struttura_robotica/#cinematica-a-catena-aperta-visiva","title":"Cinematica a catena aperta (visiva)","text":"

PRIMO ha una struttura a catena aperta: ogni giunto \u00e8 collegato al successivo in sequenza, come i segmenti di un braccio umano.

"}]} \ No newline at end of file +{"config":{"lang":["it"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"],"fields":{"title":{"boost":1000.0},"text":{"boost":1.0},"tags":{"boost":1000000.0}}},"docs":[{"location":"","title":"Benvenuto in PRIMO COVER: il tuo primo passo nella robotica","text":"

Benvenuto! Questo sito \u00e8 dedicato a PRIMO, un braccio robotico a 6 assi open\u2011source progettato per farti scoprire il mondo della robotica industriale. Qui troverai tutte le risorse necessarie per imparare i concetti fondamentali della robotica e applicarli concretamente attraverso l\u2019interazione con un robot reale.

"},{"location":"#che-cose-primo","title":"Che cos\u2019\u00e8 PRIMO","text":"

PRIMO \u00e8 un manipolatore articolato progettato per la didattica. \u00c8 stampabile in 3D, programmabile, completamente open\u2011source, e nasce con l'obiettivo di rendere accessibile l'apprendimento della robotica in contesti scolastici e formativi.

\u00c8 pensato per aiutarti a: - Comprendere come funziona un robot industriale - Imparare i principi di base del controllo del movimento - Mettere in pratica concetti teorici con un sistema fisico reale

"},{"location":"#cosa-imparerai-attraverso-questo-sito","title":"Cosa imparerai attraverso questo sito","text":"
  1. Cos\u2019\u00e8 un robot e come si classificano i diversi tipi di manipolatori
  2. Concetti chiave come gradi di libert\u00e0, cinematica diretta e inversa
  3. Struttura di un robot articolato e come ogni parte contribuisce al movimento
  4. Principi di controllo e programmazione base
  5. Esercizi pratici, simulazioni e movimenti reali
  6. Approfondimenti su tematiche moderne della robotica
"},{"location":"#perche-e-importante-studiare-la-robotica-oggi","title":"Perch\u00e9 \u00e8 importante studiare la robotica oggi","text":"

La robotica \u00e8 ovunque: dalle fabbriche ai magazzini automatizzati, dai robot chirurgici ai bracci meccanici nei laboratori. Comprendere come funziona un robot ti permette di: - Sviluppare competenze trasversali tra meccanica, elettronica e programmazione - Affrontare problemi reali con approccio ingegneristico - Prepararti alle professioni del futuro, dove l'automazione sar\u00e0 sempre pi\u00f9 centrale

Studiare robotica non significa solo imparare a costruire un robot, ma soprattutto a pensare in modo sistemico, logico e creativo.

"},{"location":"#come-usare-questo-sito-passo-dopo-passo","title":"Come usare questo sito passo dopo passo","text":"
  1. Parti dalla teoria: esplora i concetti fondamentali della robotica
  2. Scopri PRIMO: analizza come \u00e8 costruito e quali sono le sue funzionalit\u00e0
  3. Prova a programmare: inizia con esempi guidati
  4. Sperimenta: esegui esercizi pratici per applicare quanto appreso
  5. Approfondisci: se sei curioso, troverai spunti per esplorare tematiche pi\u00f9 avanzate
  6. Condividi e contribuisci: PRIMO \u00e8 un progetto aperto, nato per crescere con la comunit\u00e0

Ti auguriamo buon apprendimento e buon divertimento con PRIMO! Comincia dal primo capitolo: \"Cos\u2019\u00e8 la robotica\".

"},{"location":"approfondimenti/","title":"Approfondimenti Tecnici su PRIMO","text":""},{"location":"approfondimenti/#introduzione-al-controllo-predittivo-mpc","title":"Introduzione al Controllo Predittivo (MPC)","text":"

Il controllo predittivo basato su modello (Model Predictive Control, MPC) \u00e8 una tecnica avanzata di controllo che utilizza un modello matematico del sistema per prevedere il comportamento futuro e ottimizzare le azioni di controllo in tempo reale. A differenza dei controlli tradizionali, MPC calcola una sequenza ottimale di comandi considerando vincoli fisici e obiettivi prestazionali, aggiornando continuamente la strategia ad ogni passo temporale.

Questa metodologia \u00e8 particolarmente utile in robotica per gestire sistemi complessi con pi\u00f9 variabili, limiti operativi e necessit\u00e0 di precisione elevata.

"},{"location":"approfondimenti/#cose-ros2-e-perche-sara-usato-su-primo","title":"Cos\u2019\u00e8 ROS2 e perch\u00e9 sar\u00e0 usato su PRIMO","text":"

ROS2 (Robot Operating System 2) \u00e8 un framework open-source per lo sviluppo di software robotico modulare, scalabile e distribuito. Offre strumenti e librerie per la comunicazione tra componenti, gestione dei dati, simulazione, e integrazione di sensori e attuatori.

Su PRIMO, ROS2 sar\u00e0 adottato per:

  • Facilitare l\u2019integrazione di sensori e attuatori avanzati
  • Abilitare il controllo in retroazione (closed-loop) con feedback in tempo reale
  • Supportare lo sviluppo di funzionalit\u00e0 complesse come pianificazione, percezione e interfacce utente
  • Consentire una maggiore modularit\u00e0 e interoperabilit\u00e0 con altri sistemi robotici
"},{"location":"approfondimenti/#cenni-sulla-realta-aumentata-applicata-alla-robotica","title":"Cenni sulla Realt\u00e0 Aumentata Applicata alla Robotica","text":"

La realt\u00e0 aumentata (AR) consiste nell\u2019integrare elementi digitali (grafica, dati, interfacce) direttamente nel campo visivo reale dell\u2019utente. In robotica, l\u2019AR pu\u00f2 essere utilizzata per:

  • Visualizzare in tempo reale lo stato del robot e i suoi parametri
  • Guidare l\u2019operatore durante la calibrazione o la manutenzione
  • Offrire interfacce intuitive per la programmazione e il controllo
  • Sovrapporre traiettorie, aree di lavoro e modelli virtuali per migliorare la comprensione spaziale

L\u2019applicazione di AR su PRIMO punta a rendere pi\u00f9 immediata e coinvolgente l\u2019esperienza educativa e operativa.

Questo documento fa parte della documentazione tecnica di PRIMO e contiene approfondimenti sulle tecnologie future e avanzate.

"},{"location":"componenti_primo/","title":"Componenti principali di PRIMO","text":"

PRIMO \u00e8 un braccio robotico articolato progettato per introdurre alla robotica industriale in modo pratico e accessibile. Ogni componente che lo costituisce ha un ruolo funzionale ben preciso, pensato per simulare il comportamento di veri robot industriali.

"},{"location":"componenti_primo/#struttura-generale","title":"Struttura generale","text":"

Il robot \u00e8 composto da sei assi rotazionali, ognuno dei quali permette un movimento controllato. Questi assi sono realizzati attraverso una combinazione di:

  • Motori passo-passo
  • Giunti meccanici
  • Supporti e snodi
  • Elementi strutturali stampati in 3D

Ogni asse introduce un grado di libert\u00e0 (DoF), permettendo movimenti indipendenti che, combinati, danno vita a una cinematica articolata.

"},{"location":"componenti_primo/#motori-passo-passo","title":"Motori passo-passo","text":"

I motori utilizzati sono chiamati NEMA 17. Sono motori in grado di ruotare di piccoli passi precisi (es. 1.8\u00b0 per passo), rendendoli ideali per la robotica educativa. Non utilizzano sensori di posizione (open-loop), ma possono essere controllati con alta precisione tramite appositi driver.

"},{"location":"componenti_primo/#come-contribuiscono","title":"Come contribuiscono","text":"

Ogni motore \u00e8 responsabile della rotazione di un segmento del braccio robotico. La combinazione di pi\u00f9 rotazioni consente al braccio di orientarsi nello spazio.

"},{"location":"componenti_primo/#giunti-rotazionali","title":"Giunti rotazionali","text":"

I giunti permettono il movimento relativo tra due parti del braccio. Sono il cuore della struttura articolata e simulano le articolazioni di un braccio umano (es. spalla, gomito, polso).

"},{"location":"componenti_primo/#come-contribuiscono_1","title":"Come contribuiscono","text":"

Senza i giunti, le rotazioni dei motori non avrebbero alcun effetto: \u00e8 grazie ai giunti che i segmenti del braccio possono muoversi in modo coordinato.

"},{"location":"componenti_primo/#supporti-e-snodi","title":"Supporti e snodi","text":"

Gli snodi sono elementi meccanici che collegano tra loro motori, giunti e bracci. Possono contenere cuscinetti per rendere fluido il movimento e garantire stabilit\u00e0.

"},{"location":"componenti_primo/#controller-e-driver","title":"Controller e driver","text":"

Il controllo dei motori avviene tramite una scheda centrale, a cui i motori sono collegati. In PRIMO, i driver sono in open-loop, ovvero senza retroazione: il sistema invia comandi ai motori ma non verifica se il movimento \u00e8 stato realmente eseguito.

"},{"location":"componenti_primo/#che-cosa-permette-questa-configurazione","title":"Che cosa permette questa configurazione?","text":"
  • Riduzione dei costi
  • Maggiore semplicit\u00e0 didattica
  • Possibilit\u00e0 di esplorare limiti e potenzialit\u00e0 del controllo senza feedback
"},{"location":"componenti_primo/#in-sintesi","title":"In sintesi","text":"

Ogni componente di PRIMO \u00e8 stato progettato per simulare i concetti fondamentali della robotica industriale:

Componente Funzione Motore passo-passo Genera il movimento rotazionale Giunto Trasmette e permette la rotazione Supporto/snodo Collega e guida i movimenti Controller Invia comandi ai motori (open-loop)

Lo scopo non \u00e8 solo vedere PRIMO muoversi, ma capire come e perch\u00e9 ogni parte contribuisce al movimento complessivo del robot.

"},{"location":"controllo_robot/","title":"Controllo del Robot PRIMO","text":""},{"location":"controllo_robot/#differenza-tra-controllo-open-loop-e-closed-loop","title":"Differenza tra controllo Open-Loop e Closed-Loop","text":"

Il controllo open-loop \u00e8 un metodo in cui il sistema esegue comandi senza ricevere alcun feedback sulla posizione o lo stato reale degli attuatori. Il controllo si basa esclusivamente sull\u2019invio di istruzioni, presupponendo che l\u2019azione venga eseguita correttamente. Questo tipo di controllo \u00e8 semplice e meno costoso, ma pu\u00f2 essere soggetto a errori non rilevati come perdite di passi o scostamenti di posizione.

Il controllo closed-loop utilizza un sistema di retroazione che misura continuamente la posizione o lo stato effettivo dell\u2019attuatore tramite sensori. Il sistema confronta il valore misurato con il valore desiderato e apporta correzioni per minimizzare gli errori, garantendo una maggiore precisione e affidabilit\u00e0 del movimento.

"},{"location":"controllo_robot/#perche-primo-e-open-loop","title":"Perch\u00e9 PRIMO \u00e8 Open-Loop","text":"

PRIMO utilizza un controllo open-loop perch\u00e9 impiega motori passo-passo senza sensori di retroazione. Questa scelta permette di mantenere il progetto semplice, economico e facilmente accessibile a chi si avvicina alla robotica educativa. La semplicit\u00e0 hardware e software facilita l\u2019apprendimento dei principi base del controllo dei robot senza la complessit\u00e0 aggiuntiva del feedback.

Inoltre, per applicazioni didattiche con carichi leggeri e velocit\u00e0 moderate, il controllo open-loop \u00e8 sufficiente per ottenere movimenti precisi e affidabili.

"},{"location":"controllo_robot/#come-avviene-il-movimento-dei-motori-passo-passo","title":"Come Avviene il Movimento dei Motori Passo-Passo","text":"

I motori passo-passo sono motori elettrici che si muovono a scatti discreti chiamati \u201cpassi\u201d. Ogni impulso elettrico ricevuto fa ruotare l\u2019albero del motore di un angolo fisso. La posizione \u00e8 quindi controllata contando il numero di impulsi inviati al motore.

Il movimento complessivo del motore \u00e8 ottenuto sommando questi passi, permettendo un controllo accurato della posizione senza necessit\u00e0 di sensori esterni.

"},{"location":"controllo_robot/#come-primo-riceve-ed-esegue-i-comandi-di-movimento","title":"Come PRIMO Riceve ed Esegue i Comandi di Movimento","text":"

Il sistema di controllo interpreta le istruzioni di movimento e le traduce in impulsi elettrici inviati ai motori passo-passo. Questi impulsi indicano quanti passi ciascun motore deve compiere e con quale velocit\u00e0.

L\u2019esecuzione avviene in open-loop: si presume che il motore compia esattamente il numero di passi comandati senza una verifica attiva della posizione raggiunta. Questo metodo \u00e8 efficace in condizioni controllate e permette una programmazione semplice e diretta del movimento del robot.

Questo documento fa parte della documentazione tecnica del braccio robotico educativo PRIMO.

"},{"location":"cos_e_la_robotica/","title":"Cos\u2019\u00e8 la robotica?","text":"

La robotica \u00e8 una disciplina che unisce meccanica, elettronica e informatica per progettare, costruire e controllare macchine capaci di compiere azioni in modo autonomo o semi-autonomo. Ma cosa si intende esattamente per robot? E come si inserisce nella pi\u00f9 ampia categoria dell\u2019automazione?

"},{"location":"cos_e_la_robotica/#cose-un-robot-industriale","title":"Cos'\u00e8 un robot industriale","text":"

Un robot industriale \u00e8 una macchina programmabile, progettata per eseguire movimenti e compiti ripetitivi con precisione, velocit\u00e0 e affidabilit\u00e0. I robot industriali vengono spesso utilizzati per: - Spostare oggetti (pick & place) - Saldare componenti - Assemblare parti - Verniciare superfici - Lavorare materiali

La definizione ufficiale secondo ISO 8373 \u00e8:

\"Manipolatore multifunzionale, riprogrammabile, controllato automaticamente, con tre o pi\u00f9 assi, che pu\u00f2 essere fisso o mobile per l\u2019uso in applicazioni di automazione industriale.\"

"},{"location":"cos_e_la_robotica/#automazione-robotica","title":"Automazione \u2260 Robotica","text":"

Molti pensano che automazione e robotica siano sinonimi. Non \u00e8 cos\u00ec!

Automazione Robotica Sistema che esegue una sequenza fissa di operazioni Sistema programmabile e riconfigurabile Spesso rigido e specifico per un compito Flessibile e adattabile a diversi compiti Esempio: una macchina per imbottigliare Esempio: un braccio robotico che confeziona prodotti diversi

In breve, l'automazione esegue, la robotica decide come eseguire.

"},{"location":"cos_e_la_robotica/#dove-si-usano-i-robot-oggi","title":"Dove si usano i robot oggi","text":"

I robot non sono solo nelle fabbriche! Ecco alcuni settori dove i robot sono sempre pi\u00f9 presenti:

  • Industria automobilistica: per saldare, assemblare, verniciare
  • Elettronica: per il montaggio di circuiti stampati
  • Logistica: per la movimentazione automatica nei magazzini
  • Sanit\u00e0: con robot per chirurgia assistita o riabilitazione
  • Agricoltura: per la raccolta automatizzata o l\u2019analisi del suolo
  • Servizi: come camerieri robot, assistenti o pulitori automatici
"},{"location":"cos_e_la_robotica/#cose-un-manipolatore-articolato","title":"Cos'\u00e8 un manipolatore articolato","text":"

Un manipolatore articolato \u00e8 una tipologia di robot composta da pi\u00f9 segmenti (bracci) collegati da giunti rotanti, simile a un braccio umano.

Ogni giunto fornisce un grado di libert\u00e0 (DOF, dall\u2019inglese Degree of Freedom), ovvero la possibilit\u00e0 di ruotare o muoversi in una certa direzione. Un robot con 6 DOF pu\u00f2: 1. Spostarsi avanti/indietro (X) 2. Spostarsi a sinistra/destra (Y) 3. Spostarsi in alto/basso (Z) 4. Ruotare intorno all\u2019asse X (roll) 5. Ruotare intorno all\u2019asse Y (pitch) 6. Ruotare intorno all\u2019asse Z (yaw)

Questo lo rende capace di raggiungere qualsiasi punto nello spazio con qualunque orientamento, proprio come farebbe un braccio umano per afferrare un oggetto.

Nella prossima sezione scoprirai com\u2019\u00e8 fatto un robot come PRIMO, e quali sono i suoi assi e componenti principali!

"},{"location":"programmazione/","title":"Programmazione Base del Robot PRIMO","text":""},{"location":"programmazione/#cose-il-g-code","title":"Cos'\u00e8 il G-code","text":"

Il G-code \u00e8 un linguaggio di programmazione standard utilizzato per controllare macchine CNC, stampanti 3D e robot industriali. Consiste in una serie di comandi testuali che indicano movimenti, velocit\u00e0, posizioni e altre azioni da eseguire. Ogni comando in G-code specifica istruzioni precise come spostare un asse, cambiare velocit\u00e0 o attivare/disattivare un utensile.

Utilizzando il G-code \u00e8 possibile definire traiettorie e sequenze di movimento per il robot in modo semplice e flessibile.

"},{"location":"programmazione/#come-si-controlla-manualmente-primo","title":"Come si controlla manualmente PRIMO","text":"

Il controllo manuale di PRIMO permette di spostare singolarmente gli assi del robot per operazioni di prova, calibrazione o posizionamento preciso. Questo controllo diretto viene effettuato inviando comandi che indicano lo spostamento di un singolo asse di una certa quantit\u00e0 o angolo.

Attraverso un'interfaccia di controllo, \u00e8 possibile scegliere quale asse muovere e definire il numero di passi o la distanza da percorrere, controllando cos\u00ec manualmente la posizione del robot.

"},{"location":"programmazione/#come-si-possono-dare-comandi-da-una-console-o-interfaccia-web","title":"Come si possono dare comandi da una console o interfaccia web","text":"

Il robot PRIMO pu\u00f2 ricevere comandi da una console di controllo o da un\u2019interfaccia web dedicata. Questi strumenti consentono di inviare comandi testuali (come quelli in G-code) direttamente al sistema di controllo, visualizzare lo stato del robot e monitorare l'esecuzione dei movimenti.

La console e l\u2019interfaccia web permettono anche di eseguire macro, caricare file di programma e inviare istruzioni di movimento in tempo reale, facilitando cos\u00ec l\u2019interazione con il robot.

"},{"location":"programmazione/#esempi-di-g-code-semplici-per-muovere-gli-assi","title":"Esempi di G-code semplici per muovere gli assi","text":"

Ecco alcuni esempi base di comandi per muovere gli assi del robot:

  • Spostamento rotativo su un asse (esempio: asse B):

G1 B10 F1000

Questo comando sposta l'asse B a 10 gradi con una velocit\u00e0 di 1000 gradi/minuto.

  • Spostamento contemporaneo di pi\u00f9 assi (esempio: X e Y):

G1 X20 Y15 F800

Sposta gli assi X e Y rispettivamente a 20 e 15 gradi con velocit\u00e0 800.

  • Ritorno alla posizione zero (home):

G28

Comando per riportare tutti gli assi alla posizione di origine.

  • Spostamento relativo (rispetto alla posizione corrente):

G91 G1 X5 Y-3 F500 G90

Qui il robot si sposta di +5 sull'asse X e -3 sull'asse Y rispetto alla posizione attuale. G91 abilita il modo di spostamento relativo, mentre G90 lo disabilita tornando al modo assoluto.

Questa guida fa parte della documentazione tecnica del braccio robotico educativo PRIMO.

"},{"location":"programmazione_avanzata/","title":"Programmazione Avanzata del Robot PRIMO","text":""},{"location":"programmazione_avanzata/#cose-robodk","title":"Cos\u2019\u00e8 RoboDK","text":"

RoboDK \u00e8 un software di simulazione e programmazione offline per robot industriali. Permette di creare, simulare e ottimizzare percorsi di movimento in un ambiente virtuale prima di eseguirli sul robot reale. RoboDK supporta un'ampia variet\u00e0 di robot e consente di generare codici di controllo personalizzati tramite post-processor, facilitando l\u2019integrazione con sistemi hardware diversi.

"},{"location":"programmazione_avanzata/#come-si-importa-un-modello-primo","title":"Come si importa un modello PRIMO","text":"

Per lavorare con PRIMO in RoboDK, \u00e8 necessario importare il modello 3D del braccio robotico. Questo modello include la struttura meccanica e i riferimenti cinematici degli assi.

L\u2019importazione avviene tipicamente attraverso un file CAD o un file di definizione robot compatibile con RoboDK (ad esempio file .stp, .igs o un modello RoboDK .rdk). Il modello viene caricato nell\u2019ambiente di simulazione, permettendo di visualizzare e manipolare il robot in 3D.

"},{"location":"programmazione_avanzata/#come-si-simula-un-movimento-e-si-esporta-il-codice","title":"Come si simula un movimento e si esporta il codice","text":"

Una volta importato il modello PRIMO, si possono definire traiettorie e movimenti per il robot all\u2019interno di RoboDK. Attraverso l\u2019interfaccia grafica o utilizzando script, \u00e8 possibile:

  • Creare percorsi con punti intermedi
  • Definire velocit\u00e0 e accelerazioni
  • Simulare l\u2019esecuzione della traiettoria per verificarne la correttezza e assenza di collisioni

Terminata la simulazione, RoboDK consente di esportare il codice di controllo specifico per PRIMO, adattato al suo firmware e hardware tramite un post-processor personalizzato. Questo codice \u00e8 pronto per essere caricato e eseguito sul robot reale.

"},{"location":"programmazione_avanzata/#come-funziona-il-post-processor-personalizzato-per-primo","title":"Come funziona il post-processor personalizzato per PRIMO","text":"

Il post-processor \u00e8 un componente software che traduce i movimenti e le istruzioni generati in RoboDK in un linguaggio di controllo comprensibile dal robot PRIMO.

Nel caso di PRIMO, il post-processor personalizzato converte le traiettorie in comandi compatibili con il controllo open-loop basato su motori passo-passo e invia istruzioni in forma di comandi passo-passo o G-code adattati al firmware usato.

Questo permette di garantire che il codice esportato sia ottimizzato per il funzionamento di PRIMO, rispettando i limiti meccanici, i parametri dei motori e la modalit\u00e0 di controllo open-loop.

Questo documento fa parte della documentazione tecnica avanzata del braccio robotico educativo PRIMO.

"},{"location":"struttura_robotica/","title":"Struttura Robotica","text":""},{"location":"struttura_robotica/#cosa-sono-gli-assi-e-i-gradi-di-liberta","title":"Cosa sono gli assi e i gradi di libert\u00e0","text":"

Un robot si muove nello spazio grazie a una serie di assi, cio\u00e8 snodi o giunti che gli permettono di ruotare o traslare. Ogni asse aggiunge un grado di libert\u00e0 (DoF, Degree of Freedom), cio\u00e8 una direzione possibile di movimento.

Un corpo nello spazio pu\u00f2 avere fino a 6 gradi di libert\u00e0:

  • 3 di traslazione: avanti/indietro, sinistra/destra, su/gi\u00f9.
  • 3 di rotazione: rollio, beccheggio, imbardata.

Un robot con 6 assi pu\u00f2 quindi raggiungere qualsiasi posizione e orientamento nello spazio tridimensionale, proprio come il braccio di un essere umano.

"},{"location":"struttura_robotica/#cinematica-diretta-e-cinematica-inversa","title":"Cinematica diretta e cinematica inversa","text":"

La cinematica studia il movimento dei corpi, senza preoccuparsi delle forze.

  • Cinematica diretta: si conoscono gli angoli dei giunti \u2192 si calcola dove si trova l\u2019estremit\u00e0 del braccio (end-effector).
  • Cinematica inversa: si conosce la posizione desiderata dell\u2019estremit\u00e0 \u2192 si calcolano gli angoli da dare ai giunti.

La cinematica inversa \u00e8 particolarmente importante: ci permette di dire al robot \"Vai l\u00ec\" e il robot calcola come muoversi.

"},{"location":"struttura_robotica/#che-struttura-ha-primo","title":"Che struttura ha PRIMO","text":"

PRIMO \u00e8 un braccio robotico a 6 assi, ovvero un manipolatore articolato che ricorda il braccio umano. \u00c8 composto da:

  1. Base \u2013 ruota il braccio orizzontalmente
  2. Spalla \u2013 alza e abbassa il braccio
  3. Gomito \u2013 estende o ritrae il braccio
  4. Polso 1 \u2013 piega verso l'alto o il basso
  5. Polso 2 \u2013 ruota lateralmente
  6. Polso 3 \u2013 ruota sull'asse dell'end-effector

Questa struttura \u00e8 molto diffusa nell'industria, perch\u00e9 permette di raggiungere molti punti nello spazio con grande flessibilit\u00e0.

"},{"location":"struttura_robotica/#cinematica-a-catena-aperta-visiva","title":"Cinematica a catena aperta (visiva)","text":"

PRIMO ha una struttura a catena aperta: ogni giunto \u00e8 collegato al successivo in sequenza, come i segmenti di un braccio umano.

"}]} \ No newline at end of file