From b65a9ef08c1d0f44b0886f635e55adfbe07773a6 Mon Sep 17 00:00:00 2001 From: Amal Nanavati Date: Sun, 5 May 2024 19:31:42 -0700 Subject: [PATCH] Added staging configuration customization (#136) * Added staging configuration customization * [WIP] fixes from in-person testing * Added another food pic * Remove unnecessary comment * Remove unnecessary comments * Update comments * Removed unnecessary and expensive log * Ignore build folder when formatting * Fixes from in-person testing * Renamed settingsPageAtFace to settingsPageAtMouth --- .../data/above_plate_5_depth.png | Bin 0 -> 49308 bytes .../data/above_plate_5_rgb.jpg | Bin 0 -> 108091 bytes feedingwebapp/package.json | 2 +- feedingwebapp/src/Pages/Constants.js | 9 +- feedingwebapp/src/Pages/GlobalState.jsx | 26 +-- .../Pages/Home/MealStates/BiteSelection.jsx | 2 +- .../Pages/Home/MealStates/DetectingFace.jsx | 22 +-- .../MealStates/DetectingFaceSubcomponent.jsx | 48 ++--- feedingwebapp/src/Pages/Home/VideoFeed.jsx | 135 ++++++++----- .../src/Pages/Settings/BiteTransfer.jsx | 30 +-- .../Pages/Settings/CustomizeConfiguration.jsx | 187 ++++++++++++++---- feedingwebapp/src/Pages/Settings/Main.jsx | 8 +- feedingwebapp/src/Pages/Settings/Settings.jsx | 67 ++++++- .../src/Pages/Settings/SettingsPageParent.jsx | 43 ++-- feedingwebapp/src/buttons/HoldButton.jsx | 64 +++--- feedingwebapp/src/robot/VideoStream.jsx | 4 +- 16 files changed, 425 insertions(+), 222 deletions(-) create mode 100644 feeding_web_app_ros2_test/data/above_plate_5_depth.png create mode 100644 feeding_web_app_ros2_test/data/above_plate_5_rgb.jpg diff --git a/feeding_web_app_ros2_test/data/above_plate_5_depth.png b/feeding_web_app_ros2_test/data/above_plate_5_depth.png new file mode 100644 index 0000000000000000000000000000000000000000..1f4d8b31b70b6304f3623d4a8fca22c40bdae038 GIT binary patch literal 49308 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%0Ao;-*o=^H3O7KI zJmmjba&KeEYfM*R#NFim#ed$i^2^SP#DTsh{AMl&zmia*0#K;<|_9ey63sbh2BdVocNA$a z70UrWJO1}RLJ%~F-*IdV!Ep!)?fgfZwAr0DKodlC4%fNZJ^*a_Z(H|a{=`0~bz2Jx z8@W>TUbd6QjnRV`O^-;0Z`XvcZ33LH%#u+q%$Ju%BcHQFtmyx7zzAOg z9s*~cI^`L{l1Wa3l$erp?L)vlJcpSzq(VUxPtijvgm)kgu+|I5P`=(5Tb5Op6=@J_ zKZ^#5m&hI%X{h-31Z+s)h;%g~0PY_G>jdk@h2T+L`nWx1ZkUtZT#aZ(u?UF($UPt| zoi7Q5byG%-u)Z;d$cCR>0|CL{k@yn%WBBr6zca;S^Ei%coE6_e64q-J7yDJv?X^7f zJypnQxXKea3C(Omi2jV(kqko2*S!%8oLvhVy{Tmd?0^VxWsgn=?&>o`7R4Z3M>JDAH&0FgBQ_THQq{?;JF zXa`a}02JsZF2Eg^$dKtDy65Z)*)lOeNg)6YtVWrs&wT`5q@+S{J6GK$+61hVN=B_n z1>xre_+SSR1Dtc-+&Y&snR(v0W4S8)#gB(hfoPdfT6}^&?;B?4A@L;=YOEu0sQ)kR zly^Kjg+l@L0Sjrt1=<|kfRKGiR*8vK8WN^F1N1Hy^G1;0$T9tTk>*e*(}q&u z4{T%?N(83Yg(Ao3qtd`EGzw1$s~3LL=UpKmzfP$gEA;fJOFHM}kJV#TRU#vkb)rUx z1nd=1rPJF9oj0P+=vaWA!YYU$V;^5LgKGvk#Kj0QC;O;}a(j>usy#%yK-zSFg0=xL zOXricgt}>rIUPntKy10b@Gqe43yIHKaIuGO&*4oLTTRu1!p&mM(yu$yZmu?k7ytPN zKXGVXSnsX5FH1Jre|75jiy`Ab81)SKsQc;Gn+M_s(w}$!s!#WaKTJ$-cKW}z{cey) zJhhThJGA!cg_d47i5%TRm!s&^qe{LrpGwsp>m9a+!hlf#pEmJYSZi-%$kHbsrhkKL z<8N7iu>*4%)Hwhb`{vZ-qxx_YZ#Bp;r=y|_)WtDFg4%d3##q*4Dq)?)V&duEwyX3wYUhG}ZHj?mF2~HYgMN@6H|@^cR&Zymn3tsX%(-*EirXO<8F&4)}fo7g}ya*+8YR|4)??B@% zm~I``%h;OPk4}ZVG}6`-N)=?IlOQvJ)AjUS#*gnw>qAOBl!Br=} z;N|dVn~J6A=Fs%6c{TvM*de682y&~}B|EXyI`w>IbJPxuRP2p$97AIo^DhF7wv6~W zY#j-`hPgyEL9ilI7>%seS9zn=7bn1skfZKxy3E9;y|`QG3!NB~Jij>~CUu@{>3zSf zJ*p+XF6WPZzN=gC#s}8qOOB8yFCRC#nokZz-+Gl!jOxE61*1~-4y7>y2oQ~JoDLg- zs)}(D0ODBZu|C*=8Yh_d;rZ^h&R!h5x91!UG2VhciZiT@F$4CAVU?-+v&lVy@yk-9 zBGg!9dB@U=Gb~JgxjNtq4Zz;y$))Y(k>)~E^v6q|IWdJ`IT7ypm~B0x6)?Y@)_K?v z>NU2|HkeYd54t#khFA;60C~P_7$Zd2N<)WoJf{{DOsoyte8Ilbbxbn2(cD{{QPx!4 z(Yv>-eF6gyN=;q#lye+SVutG9j#BsTi;%6_JR9DNF+gn1Tc&FEbC}9os%`etr?44O zJD4ZUKi{GbGfX$wY8dDnD!$VR8qnu(-5>#mh2Nv;Cj=b~%4WeZLv*92=bWIlX(0@P zKzj}cCQuEcFsj(dd3B3m{vO0yssO2L#Y z%ugd>Q^Oc+fF#uHQ zx_JUe09W`?wAS?sH))E{{6yJhOo?bquqY=|TXG=g9L0o7gK5z)t?xU%O;kS1qY)1L z#Md${(3tiGdm09E#6Sn;$Nao(r2sz~!3AXNnX#7utH~$NLHO<#KkBL1YIl+iqUnkw zxFRj`3^EBsdd0#MWg)ykQ6eUcLsM?lw6g>Dd0V%M-*>_}_jM?f=AR&;huEA)++#)cf)IPKg89SDMNKj-JElUku z(EoEh!b1&|AJ)IU*L;LKt7mJoem}bD#sSzK&_>We%BN%>dU59B~KL7$jU@3nuR%rp~kj2xf(fU2!rV7<7fFCkd z7@HV{W@6Tc&*1hm0Klrlx+3#zOH}HxEp#nx67tq(NwO6kh^zBGp~lt=H6d%qj&aNd zNz&N?W?9UMbj^L8`m>TYfsk(H;doeiuXV_TDb)+ZBfJ)GFQe5zFxQ08iBIwk3V597 z3BHZQc~ye^s>mYcj>MU5#YqLiAk)qXmqL}QTYiET4l(f{S^8N!^AW%q%?IMGF-vkkXnRoreX^w zDA01>ZJjVsCNniafMW9Uth?So-Z48!5T zfHVwbTqIUS7z*gwE0re$;NcH9L+MGNP52*`3)7~aB|4?qkaD-6Q02u)x(60X4F zpenlImcnl3}h5AOj>;H!g2FWit;65Yy+cJehy2u!h)7! zo)CY3U|3%bc#n3&8VpSAO!Bu5>n=@c0p^td=W6`QCg2?|oI3C3 zFw@UwiD8G>0h|D)0F=cB1W8TF;ufGyvKZcndt9?M;LwY@luSg}wLKh$2l>M2J@kJY z+jFh&0v6tO;T33xR;Js33&|ZOIn&>M~3$6o} zeCL~b62Y@k%w-G8+O1Se+~Ozid-(31Km>+S{U|s2{T3Jl*QMZ_7R+HX9024qS%&H< z9niunHTaL9I1!zpuG8u*P06#W!sMo8 zI7M)9`G7xH296{SjB0@~YM1^K2?y8`;fOC$h)7qykb-@W>0KxjX;1E`5HWhF)o@Nvj$}3Dqu>; zG%w+%3ngpauVN%Rd`32WS}cwb&Z^W1yA7b5QnyvtQKbffBL}JW2~xv9SxF_!M*$JW z6j1Jpet-El2NY2*z7W9wGJ&c3CfqG%jEJQkm=`>P%#G+TWrj3oTLn}EE#wZgRE1*? z9;RG#Z>Vuv55mDcF)VUz6T+5zfeYg0H&*{hY36quNy8myqL>f`WoLt2TRd2q_^IuB z=mI0`2+|>A*N(;30tIjnjSs|Yx+Zd_Ox>ED5^_-JL>2}S)6ljHAvAv6r3aZld?s9G zYw$86pwklrQ39kOuFD>MzeOu&Cy zZ)mxI0(F8#)7>Wiws7fq-fR!0pm*r>6KWporx!ureO6Rck$C7W9}bW zS8E68@J5J*f(1os`w(npOmu`uWfHsyzm=S+Pk~!dpkXg&b3w9g9cMEraCaO0Y(A}L zR|hw$Qy?u9m9=C1*w|YBpMB<+sQ@9cBbwO-IKuRn1Hal7 zdX4T7K}Hng!N#iGaEI-pQUxMBwS(VMNBIVVI(T9Vyj9uV$ucxK!&Jg*pPt2 z$zj7RH|H&e6abk~v5;on&+1*3>S29V)nOa66sB_k9H%1YJe~uQQJ(N!nySIY6K15e zOg;q+P;!?X!WCSi;&62)RGOsl*vI5Wbr0By30v;i9`hi z?8KT4jVM(FGoDB7zS|DWYT=w4V4q|~TVcDwjdwid?_x}H0aN=?I0&(3d?>y2+0bbf(ja99vda5i>D}O;I7g4`|+c@ z2KMFE9&l!o4`W5{yG^;YBP5mIZzvS^yr6I=UntBK^0_^~YUmI8?C_Hh@DktB>A!Q^ zxqEx%r$0zI{@2y@jvH+M{#So){6Wl{@2YsWMOS|E1J|P7!IbBzXL)KJ*&j%Fl38N%+K8aI2v!X#Q-lX2MmnraWu7E z5b+eu3V);|49*9!!nJXi37;8!V3W2Lr`+(1<}cPk0PzBK4cHZvC}n?i84H|(j#LDF z6Tx)ESnm^z=(ngIU|Q#D2Qci>$8{Bdx8k(PcVHvUgySL;zn33iIyqEv+yw?m*VJ%@ zrMQExkQDGX6-2OdA}o;!3MJ2C;&r$yunyU?n?05pzE<1p=T-dhV;ZCf&10_7{hbve z9Vvi);xrz_F;FZk#C5P~6LCG{IYNsxAIDB;vQ+F?^}@Rva7@&LdUj2?sO3nsVx00| zK1@z1GtxC%s-Bv^7+~6G7El+4>vOcNe?fc&$qCC~f~tZ;uJAg{7pbLtzC|cbr6jLy4tKvy>!)Tl=Xb%}D|D16aFxTUz-P zmHR0AfRpHokQiY*_<<~#>yjI$gB@?g)fL!>ejTv98oZm{d?SF03ko6t{J0}(!q|`1 zW!Z%z+%1C0aIe;l;KN+`nBH$%BZ%%>D3L;OxZ=ngo!>V9G7$}wcdI;blV>X?xVg#)=XAxia3{2~7DDIeWsa}YJU8iRnF@+qjF>k2&Vpapa@yCwE($K!0 zX~^_O)U~Anx+;h=2k3^|P3K}JzV#7gMY#AGI!BJ zAqE6WmT6!V1J}W6z#hQHo`o1v9Xd)m7^M+`vRO?2S0kI+hT1`U2PdVAkxfrGtjgAV zDPy4mT#3Z{Cm9oh@4S#3p|oa(qKcF@dY?!>IvI=yn7qwd%0s5^YawK>qOlXOAB)ZF~G zk>ZOE{j?=&E6AMGHJ$VP|KFzC0Ey-e`gNOVTXdt3Kre;u$=;53sG ziAvN4obnI@P=A5P!R~S}j~ORW+cVW+KP8fs$t%5Rt6jQ)SE8UQRNfH%aLbA;>^3o4 za3S2PG2IHS88)pOn!E@iWhI{kCPll0y~w%OGlQ~TtVI!>G7!`c@c&71-3KW*Ahye{ zJ?2o&lx|p1krI$Zj2`9$W^CK<+4sfWnnG9c4wQoS)oGCnq~jG2m{x$xty_7y;$4BS z9d-3^B)ZWBIEktO2|bC+k5(ukDiJ}T@$vfLD1bgC0CWox+Mo=Dxt;Z;9jdA-A{Gd% z?8cxJqliB;A#=yrC}pX*kA&hjHi;{;0DtwWopk>VrR5*05vxAzxGAc)NKfjf=tFIPWblr&9@{^Ucrk#E_J}B;_CWBR-z5* z=quSH(9*pjyzb849P_wPppbQbe>E0HKuw^L`A_QhA&8Nn$Xc>oZNQB2CT0yzkU0I?`8pdxt3Pku1|ss z)*V@z$XlNLZC`91(+4%U&`iR-QCw-#iwwgPU?(GBq+p-|Sl@hP)FIL)?GJg2hUy)j z2uNGV-oNPQX}5df`DncNkoo_d>U{cNZ|r|uRn`>3llpg0(;wg`|#dY zyo0Tzqa)v7xBTF%$x99~R;Y5Uw(jXY+LMAR>1)9Xh1C>>RHb)!fV7|#PH$U5OO3(| z$RuqFv}wQ@Z)xZ;y$KV`%kzK`yrSaQbK@738i!?J^Sk5gf5C+)Wq)WtHWG> z83r8kmLEh7sd1Btk_0Lt;){6qfqc`>ik}09=^^aL7nO6rU@s^#+O!4UNNK@9RP$U&*y3x0LjKMc+Ioe>o&x7klbz%PK!Gkxmenk?Fi(*1?e~nYLIuw1$MdbsE zFb>ibajNUGknQLM$idpuwZKm0lFM3|lRXFir+`I8oA9&6YUlX|y2*z4J*Hu`2kJsd zZ_q55)vEA{1fnO0Z7=|jVK$QYn%jh_oDj3aXNqHb0^-YV7YE>tz1@(~)%Z-~q9LX1 zPZf_7@FD=@c8u0ROmuljwrOYIZcd8-gEA#MTNiZ+*LlsqT%iM=1JH4W9xHmd%%G%* zfJ5OKwLKkOPDJpbmnSjDgVN}>J+Kas!HugZ3V8Ld>Kav;u8VFeV89LU&uNQ|#Er#$ z7V!eV4`&IN!zfvk9K|>D#cEu&<>}X1(s2=}0g59>$Iu=4``x>q za9b--He(WS*xCAijC=!9Ic%Yt-XcV=n}GhHgr0p?6v#6_KkXz=1q^Wb7e3qvF-Xb$ z7MrQ43$y7TN2#1{gOf|`fk~4q!knnO${r-ddnml3p7eRIZfJV?E~1L%CQ#Wb872(H zecW4xWMEgwrq?z?ubH72RZt70%DWd=XFUjhE(cYjWjR{w<+=V4h-;@|Es&y zdErddkQnV_P!SK>4?^P(^T&_79N4R0i0P0`n{T>%jOHyDH9cNsSpj=@5M_athuLPR z1dnThv}76kzEv#!4z-uc zhu8;D9vb>={)=ZBVtSVqq7lMSJT7IXo4>fSI+pjM@97VT$s3{h6F>wSQm1SjwntN> zqr~G_g%aRL9d#C@v58O=ypTfyXVQE2l}6*G+!!%{R?t{&MO*Q|1Irr4@6gqKvRKN5 zf=r#*ML6Wie2^ufcuyFv7rU(ndf_ck3Str{rJ$AqI6<7EJBsOe(*WCp3%-RrHF&cR znJF1ZwvU6v85L5{ds%FRYlS=7cTWt;KzL5(9dV>kXil&AYvDFK#o z0%;XcDHmd(zbeZwDE-mO%hB2F^^zPv9+BX?P>H5vU3VM)l`kNF?9Fd*mG3N+o{5YP zz(z=-4M&eHD&~%OsTB91d*LicEK!z}g~aIJsd1GbJ7%0)=0qWU@^wo$EDR-McHzA`V+_zM-7n zvwFATnUK8?3Yfr0&&W~ZQR%WXT?1^hjE1NJUeZC< zNu@GaA*%6s9}UaSVPwRz$tj2r;tof;2rqa|U;3*tCDWMV3DbOn8>{?sL*LW%mH$F& zhaKqbP`sE;B4A-gO`w4qJm@d@FXh^BbiAv;-hNZW({~{R3L%h0+?@ai^g#g<-|wQG z(2l?dtjZ1pE65-4GVL54`Yk;j7l04|Dgaj5*)Y}I+ot!I?Vmk>_kgs20$VtNl%dvb z2qsEk0Sb(;LtGbGFL0jf8aBvtk+xtSi|qiazz(SXj_L>uBB+us4F*tDL^?f0e2_>2 z-q$zlT3y^1R?{T@pY>a{WxgkvDVq^fBLTez~WZeP@srqA%IHdG=IOVRg`vH@)> zd{G*P3H8o}>lD-wcOKKB7DcNRA>KikEW~R!|AM{-MjHN3=v;%F%dB--X^OI3mLqIU~p4{wB)hxM>-(;`~W zSh?v+2YkMKH!5Y6+*P2mO8p7SSy*eq4rM(hX54F0e!ywVS<(rVr-UlW7fB@bVKKi; z;_(IVt6o7RQLOx?tbE(I4?etFc7Msq=JI=A&j0(HhJWDkKiwJj8@vAfuNlsMyXQBC z|Nf6(?Y!f3&|qKqM)9Nf171D;$?rrm#}XfzcS-sxuS6g>Z>vg6{PH)S{kzTIpa0E! zZ@u$m(dGX1)1?dBetz}N1Kj4`vG~EAa}a96R*A0vN^nr+!;gGtj_I6Y#sco^k8tJY zLwKKY`gzq*j{0x;>Z8d`|2qHL&?H_%r4*bUp;|;t?K-k3-COsK%bcj7a)hV9>v8Vb z-3@V?BmhZO&L!m{;GAb~A17clMZWO``RW_QFq;lopNHsBQY5ofqIfJZ<2v4W2wpTnVwNv8{M^ zF-%&RPfKIce_#FSm~LPB`xvE*+((kQT`iTXHQv`N@C>dfFD%T@&8H1E58}9_LaI%z z!?0|U$D^l+2s{UwVEAI<8ch5(v>;E~3IL4iq`D$DDyvX~T=l_sUYT0LXid3+GnQ5# zi#BM_q`HOtE@|H0DZUsFx?(&NL8z9*FhoybvXg2Wf0QtSPfJ*g4KC(+Q#D>6r-!5T=Kxw72H>Ukr^i z06M!$K-vlJ4-)ax*LZ{Qo?#z^wl>}87UxQ?{aJCrCsrh&ShyW75`#*?sbf$wX}jePNqS84EE6v+x7J6jfK)H zLN#`=M|NsfK3uYtr-Nsplc%!Pii+!#sEm>95xBZhUZZir%4iqK6`>q7;xHhhgnVRC zB~uh1Ka4pZ>^8{L7i_&K8oPti74xDq#xdpzG;1$hll#eWS^o4l_ioYN7JYJ@V7Bqx zV_xLVd~2oeNkR|P4tLT?D(NfglY31~`~;7%c$O1+ZV5(kG%!p=2!5bSursz5`DP*! zzO|1Iw<(>IyT_1}AKqSBv%uuklpuue{1)f+MdRcgH>k%X2B#LfcO(M!eo+s!mLC)B9JJVrNyKhOQgu%b9@aAmtPb`9*Ac= zS$*-HM{52wZxBh4vI8pi_Z7D^MIGN1V(u#d?_tdhbOI1?gCs-|pMtTH<3Q7<@ zmB;%+IC#uC2n*oaA4z~Ow#19Jh#zEoTq_DCZeVF`@;|r8y))(p^24C=@ez3zTsy2E z>^#65^nwpPgK=EoM80ItVY@OMhUGbYSD&K5d~tW?+Z8Kd;7kl2UK8&1c)?=ff)Xj* zf;B71DIHBY_(PDJNR|P8AV!R?Rm0r-2>4oV8p%*+Obllw@c^6`RU&nEB9u(8|D zf^noqVS3?sAH8oDM-ge&9&(D126kx@eRsPNsI8xaA|B75CZCvPv9!aN-f|vB;qrC^SMRh`s?a=`tQ#ew0CY5rvelZ zTJG&yz`ka8l#Ma{vAZWzPa4s+3YlesScNYJUv#SHwrlT?cm|VM=>yb|Hl!Y~-v1~s zM0J*8I^J`Jh>8_L95FA6V{BswG8%Y9uJ(3Zn*ImYfLZRoSN%l1<>%q#<_N$rk4vdIkE!Yb{ zC&W2oW}(@kvT&41lzv83R{WxYvZ|-w#htR6l{AYMiZSYucOurzD z``*&1rq?>O-=O1f2uCwRRNkhVWSg=MYY4sjm5R01Mnh$irCtP)2-SvH^*9U?Vy)On zxh8=!ya@6I;zh^IB+BxS2dA_!m$8LXbCI>aeZvC0oAt{Dh3Ri|Gd`S{3qE>!dMJ!D z(gvi1T*w9`5kA~m=wuSr!NYR`J)xgTH3LYKOHZ~bavTbIDnIE%`Vds4E<9d<8n%_- z>683i0AgDH@q3QeNZH(5(ZCLq;Uz}n-&+|y?U?QP($Mj~&8Tztv!NDPa}^+21xsn` zky~ViRU6{90H32Ii$GsVwvxGLN^4V0Ka?j`2TTbUAcTx0+7S`9l3u;TFGNZeBNawNcaEN}XC@7`AyfW74f3JW7ePc4z#_Dh!=P1W zgjQm4B=<3}W<0CnmTkNpfi)EJUJ7$M}4Rn+UA4J_gnMfV5IeF{o!|l zw4%A?Q;yE_-&IeKzMFbQsq&fJbxsa?40V2QC4?yg%Ks?pC7lwQ8oCBI?4m?ONv}xa zVBk_n9cUJwQ)L&v)eEO)`u)eNzb^nPjYSBGr-GVt>QGA`p|%+coNEn?#-DtA@iL=p zVvbuDF`43CGE+z+Y^s_mZAJD@;Qt&b7^%&EfMxi3f;rucTjuGoFM*Zaw&B4Q(49>k zY*rq}zE&;<+0#J10qM$btL%Jg|6_B(M z%Z?Ii*MAO_Q=Iq|loRJN4F?T}-g6|8L=+_eI!sCdK=B&yKA7I8zqgAlP9Z$6xRr_H zp-%1^(16cJUYbgE33@o2lgT9${VJm4szo1C>`2N`3s0 zls-YPz}2s>ycG|1>AWDl!U_O|!z)t%dAhR}wOv^himrACUwn-dcJzlUfeZJ`-3CFV zD^5E33t$bLN|ka_U`VjrDW|bH9CrpH?T;f`D_fWoD~3*WAL^a&yEAufhHovDIF8bypZOJv zv%uj0BahH*I(+rXu?+9}&vYUs0yUt|l?9GZu9@CnNw0W+#t|_jLaz=@E!Rrds%v)N z8BZ)LjG|@Cs?hQq?_#aLeC+?SduC{6Z> zKN2kggzLryuKr%fe_!nm$c?$C6d>K?zOz7&gVUG?4;Kl^3a^p(>z51h5vg-Bv+-49 zgOTmbtKLoSXcY+35M5E@Vyc8ihD;bp^k^}k30#3ah(6R+VqRR3%FM$l9YXTNuH$uy z0R4{Z3*Ps7*;z}+OM{LL;iQ+guW-~@>&-!h|F2x%nQf=0dthH`T0Yo;W~vQP*VMLY zRtWTf17xT^juU8AsLPU-`eMC@>ZMss0Zb=Htz`zc+wlj zL3ME_cLh5`Wq@TWYMUo%340K{u_qqPxO{%mXk<0-JEQhscA^r}-Een+DZOS14*-B8 ze8^Bp$iV+mnwHA!?<;Q+o->0MM%dbbc#`pAy7jT>*I(qtwep_{d=G1{QK=*RerFMB z25CEKJL9=-lHtRg(4J==*^%jU>a#{4jXLjm%zmS7m4y2D6?70Xn(Q@rW($i{XaY-A z*A+_RAQWy$OB7M`PAE4VB-&t_^$K%Z`*bbhNku<3WsLU30F+8Wk;~+FKkk_>5H2H0Cmu5LC4p&3?1$XH#;s zo-^JNgGW!&_g`zyL5`EY8oeh%*o_EO0&OC(q{qR5U4x|8M^Q<^9}s5Jo08`s?r^lG zw0ABIjazxoaTyZ?ujzhhGS|buFAUuwj(ZE=O1j_{at@>BxGCVs=y^GN{><3<&*sDP zBS%nZu9kazZC@6E0c!X@o^XgZb8JyZVt|X1|s3ON_}X1 z=5-9M>bv2fdyX%1>&S6TJKf%Drx(`oly?D;CL?p^ah>Ld(e8PX*=3V;)$e)Rxdr#s zgw9%`k_ugR`yVF9q!8Ldyb7r>H}GMo{I*Jg*1_H#Hw<1F0SoEG1~993Wob45K5I9Tr@RdP4`JF zH(|Go`3&QYeU+p2udD9Osl0m8sr|AjtlwasP3e&cALG12<_jw)>38nkB4?PBqYepT z2>Uy|;ZXEcm_rr5mohcdP6moJAUDk~LWOe#_T)tbHZ_Ezs7`%I~lpt~MczNSi_0WinPsX(2aM zpjWMtq*s*FQuB|aYaGqPyk-!x=LF>^(OYEvon37a`R}=Pv%WKz${viixhMRQ7z-7IY?diaOWFT(mOBA+q?^|^(4We4H6 ze^dwP1d#LD6{&s%n~9UT9_;`W;h}UyKIxoM0&#RS>;0KU;-EU>pxvSF^uhpXYjlyq z(O6egWAlA|3Y%2RDq?fmRBrFQxly!2R-|}j+R)ra?YhqQ#d2c@j>v4qkVDww;kt?E zW-n-{jE0C6~risBka-ONM6IUOg(nSw|;G&Uub-Cw3en2so`IG zdKI$gm(4Ev{Ng?3%csbG-gfykOayklf+zpS+G`NmCh+uMXYd7K{Y)?{?9>tdd8Aaz z>>k81!_E?zd}1VNECFW0EnK6m2kwO63lB~~7i(>3^;WqMOeS|uY06Mf1xyEtq5siV_=WD)oL;Ml-xm_B6%om^I#pv{Z8C2#Rn3`OKfCHPpz&?w8|LxQs8*n@f8S3V$vlE!2N@>r z)I=yl$*v#&t0`zKG)2WjP=QT#ePe>@auH?(!*hMEh8X`^n+q8Q5&4^19lENKt*?x{ zX1!l2WJa>ajy6O-ap{;f(dKt1+J+NUKbepCB=rwym1K(&Pkc)59f6L@jQ=^BdOZF3 zyU~c_5AuWu;HE5YZQ4I+>y4h;%V*5I2nl666n_?zyCXIg9 zQFY(-W9QAUZ_2c(lkQQQ=6NSH)`o13edHyBey29i^?P$Ak0ynbW5_{RfYT-@T4W{QYmVld_g%F|^8k@MXz4AHm%Q z8RdQ4hf4dd+aw1*(07wvp2eJ2>tPONF}u8EqItpUDG5&=^p`#D=pO$qB%)ipVsGP? z@{d^zhRc zCat_L^unrrstMV}SX$59p1L`9knhdYqq_!iw8oiTdnpr+R*v6xbK)PQwRvn9x;JVq zP^Z1X3dufMOxqyNRi9s;U#By-ZTg8SL4(S9ETW+d`71HIxKN_)n|d>8OA}&IGwJBW zUuqyO^um&CHMi|Jzioihf3CsIED$6wmCVS zqm`^!{?SW@-SU+6<71)cww&`JD(k4b{i7X=AJNTqg3~M^$V{3RRG*M->RI!Bz_Ig7 z;M_q$;9ke_mApr)>=vz8JiU6JC*6qdbicZ|P&NMai;kMyfy$ZU{H;5Gg5%66?3KGI z2ER(SdkLi}#wf>h@$+oT;W}8+*)hqh+UJ~8tX2%nAm9qcZ0fxHOJF*;T1UO#OXiyG zICD^-yE!(yMY|4aHzq#fr;U8SYkbR>3u*KH8RhWVI6Pph$=k2HcFQ^9u(Ioz+vw7r zWD`jsy2;`tbdHCF8w+|S`*^waib+Ek^XoRM30mdFGM03wH#zbvEa}OC$@(-u9EYg& zYPaJnp6V;Su$O-~o+f2f2_K5@zO#77U)mcn~10W7M12tW-%HQy7&?GysOLGcp-ErmcWo+9{8Xk(V&|%bo#8J|WElrcBus>!kG5v)EyfC39ay3XqB=PmUt6Q|oeMlm5?8|E|EZG*iR2h+O ztC|(mIn99U1H-f&J%bZ&;vllwqk~pF{tGfkt8*Yw$riL>) zy99Gt%*NVs{epInuSQdtmOXXulvIYG`#q`f&B6mfX2qSz8!9X4z zDAWCvp`7HEg2cJ7s{OsBvW!Ei+H@4+GpPHneqj*D!;ppho@H_wqdXw(Xu_kt6gOc^ zbB-!yG@XjQ<`IGbSWQ9PBZ5RsEF}J`f}2fDFani-RgzY~oZY)6b5rNH+phmDx;xQ! zZE`UpcnL%KRibUXbpi94I(sEgRZDxE>F*`ehNuhiwplZsUL9q9dA^};ezvIMVB_%^ zXkqK?r6z>fpC7Z{BT+a1^q8e@?X12`n@Ue6N-Wui62VZXZ7&?4&@AK~yjALfWnqH5 z#U4SMW22>?kZhs7DNN1POn5T)W#06`B83g}8>_!aBgEvh)Yu=rQjjTbK_-8&WZ@4a zjO-SHuD4rQ=;m1ey>{1$8Y#TYQ6)bpj>+O69?bi27LdHW4hTa=Ro zhTheI=~;&3Pa>|&{4{bpB%-$n<>B~6rdBD#7CTWEMHDA*Lxp%Qdak8N{y=)_M^bT+ z=|qDi(hjOm5^Z~dI0%}7^%oJWSEbzsD9bc1BJpzyG$!nj=?b$(e^_7bxHtMH@&k&& z8|CsAWomtGxnlAq+28*9o?w~iIUjyV_tV(H|L*-pp6Qz$)?Nw?5a%q$7_FVH_1%l? z72N&E*W=Lqq$eCd<$j07=X56xJ}7LScQDA9R&zXbvQ7^sKp2fLJ$FfV%eifvx>juY z1$E+N?fy)g>o#z06rD7-nILkDQ+x5Coh8TnwpzhG=LiYckcaJ zqo+N8T>B&PdC{D#qwmQSWpPwhwQ_yUa>eUU3zoP)V!4P6f7T!dL2bOAw<;kgHJ5eH z$E&*7qkYeSy>p^IjkOmv0QH5ZinT2T$7v~dZ6z9Y;=4119tNz?SKmjV1>(eBj|NMC0+e<~BWXM*) zjJ7M)a1+|)*!dbWn(BnztKHJI<$+EG8f+(vO2Dfv%PXbW!%vzWy0Tlh`^HGi;>cx2 z#&c2;F*A-ct?`JLwgM&)U?tDjOGf0OpURd91&|4N)XS~iLpHHX44bzBDcY2ohdRz~ zLChm_d*RHLiL+j7IdVZjY^>fzz*W<@p4E!F9o>ag?J;fxS@f3 z&+a@F^)K|1^B>vL?}4{-%sEN(?p~ixADRNd}U`d_rAo=@)7O$=W@Fz~uBu@TTp4kTzMZ z5_!erbOl29tuKkKFag1B36ZrX5+G~3929LwDtzq#%VcXz5MVIu)&b#7w3T1+Br%wC z2|vgt<;Oa;P!mom^gFO-y0F@0Zr7yVh})@8x!^c1SVw*ZTi*j%K=>y3`&uFKWH+?` zNVTDQ-x{#bv`IDv0RgiJ!f&*J^?R#XNl#Gv1$P5oHP@G;vg79y(oYhn)efn}pZ@af zLw`ubqzlTk3o=Jvvy}Oa(7tm%=T=6Ea0&9l1HG#g+nA`5JAgH(LPm1` znE$cow;@Ey2_G*tD@ruayEcN*ENo3SaWnxaEZxJL&00z*bXskiI%yD8Y2bdFW4pvS zG((n?MXCyE9tJ3FiPIV?8u6z;9D17ZxTAFRP4)Y}eJ_401tp@>;S0FBM`N0Y9_k6N z7eET8oZPbKyW2MC0mQsPLxSsp2`Su4eHYLqYJCFWQb(PwUyypoaJ*$fW)w`xC zu4%ntP`gFzlXfX17^RXWv`GVt7LOO*qm5l<48 z;Vcdu+n#};L)h9%av_#LXo7^)aGbug8 z_XtVM>4_6k%_M#V#|@2v`~fWuYB$&~@)bz8rDMml&j)H%>!eXC#+lQMXE9Y$Y<)LB zN2+)AM?T$zw4pCOexBPljOuyxl(4|%YL&NWqnzZldtgO;$|ep9$^jC(CI!hI$Fv(= zg3xjB=-EsyP)5cy!-4V0E2RZU_2=#OJ$?rsJX{=cw({DkKk6v&{_5K|R3d`}b3=rH zGUueK)Y&D0(jqGrlW$z_I40TXBEk0I=V|gHfCnvFb#P7i212jUX8G;+zSL51>in`9 z-ATz21GCZoj-lK8hIC?q|0t36uXrIGba*-K)~Px2fHh?_UCPhPv<{#AS%%gNn-mr> zgE?-gTAx%d?)8)I&r*v{bZ`*g`*oAaGoq8LvnI!ePB`RHB*3StffqtE7HC|PY)fe5 zg&|`VKRrLn&Fhu)a`WZqNjyo+Udb!hM~q#=HW5?_CW&mR6#F-79q$)apHc9d3kSA$ z3}d5x`?M8d#^BAd*hMy>T2GPC-e#a1P#*g{8YKfrH*2d53PR$!`^A^uy9;>_&#JWZWI?A3BB&qsOxypyV>M^)+Ad=-pfh;9sS< zNzfz=Mu);THO6I={+)vsUdECm;|9aym;aP%+wJ(RLz38L3we8Q8@MVmerD*y@ehwa zShq}$o#3iBE~VC^_NIUI0*CAOa=V}5M4^Qp-;IaT9*TH-J~@E3*N!wo+OL4vsoHCB zjI4^K-vJPGx(eMU(PZ-5j$wr>+y3ZSADMJ&+pa$;yZT`W5Y@KY5L7F9O0Gt&uV4ze zf_?U{X$tzu9(|-gntvw%xR=cIa-?51x42%RmPdK{4jyeIqsIo zx6+$;7TY5u$2FpP`-8};fhg`Q89H-3WOq|e{8bd@l~d;AsLBr94)jJ| z0TxoV(hE>QKB6Bg&{*2dSr(Z*vuSeT`n=TSp%2z0`A1I(w^y9SM5qR1HsDI24T*>@ zU-P-gnAyIgyTL+Od~YCNs*05~DoJ(dj@qYSuaj#>DxMorA0)y#mNWe7ztm~k+)CgY z_)Ncm8@L^N40O`!ERx1GU7wNNK|dIP*WA+Njh(4jfG#w{^eZ#+32%37kD z76#F`*YkV@Tzxchxz_Ry4<1Gv(dNX%7SA1;+v9q#_ifBG%*{wHMqq5f>=L7w>$^E` zjpUg$9v97GL`?=SZQOz~W)C{V@8+qNl8(5oww#+9=!$kpZQiJ3Y}?2W>-r0RDfY4nM80wV-#hd1x&s&Csqp$J8Bx;bvw+7NppGKswevkn2kI-x6oXjue94%_Gn+B3!RE4@R2_ew3VWXHHRrjQHpD?8 z3`0<1PO?nZB*z0O4MI{Lst=7pXWP}tDzH!V>aC|W zyfBtiGqV#GkLlfZ=>-_n0z>5wlsCwXUNhX>sKmw`S4NpkFi;LvOBvZHNjkAAxw`c2 z9Gk*FK981fn!n4=Il7yus7Ft3$w9YTtLN>8Ha%y+G2}1DDzzMQZ2Gjp*p;-Y*lc~R zHC6~EC(1IFPeq!%?%K4#-8u71=!fRE$!|TKk5M8~iza{I72zfrZqbvAw^aA3H(9Re z(?C_Bhk=87RksvMm%@;+O5}Wp?sx~m(v`z zonzCcc1DArR$wNhmP8P3l-IZ+A-Cmo7Dh;Db_jD|jwULvp@I^vRW%sRe-|`%C77Q3 zAht!@3iD6!Fg5D%2i`2$Jf^UTTHki7ZLPY1*CMxbP*J%V+-iL{+zHS7Mfl>Z98F%@ z)NN3#L1MOSr`Sj6vr+h7fll6Pw+s`bX_KLh4~o3Z1lR)lWy4B+pNM9MJW3p2^;47M zMnpMyBodk(IwCk#pAhX(-lArm*}DM|NBRgMOBrWon-(y;_@2Xmdo|D8&c~gp>a_3r zj>H5b>9jFUO|M)D^mg_2N@=LglebSdZL}O`V(@!W1CfK7j&dD^?WEpT`-tf*;-oxI$%>f_I2 z!L_O|zP`r*Mszs?;MXXMZucvTW%zbJC!f;m(c}TP_u9p1q2(fVk_=H=ih{D4w%`5b z=$3f0K7?aeBnuP;L#N5FSf(Ma0Rr65?@n~+R@1HeIR!*0`6Gcbq>3JCe=Ip3NGyF# zaa=6$Qu`J=p;mp=#VSf55c^Y=OPP-ZPh$|4q>oj<<~XhnJD!g57dEz-_ETtx%wmsJ zEh@+UB2)R>(Q5_C>1BoTsA9qmmAB-(mthi%Sqy=Z(9s0+XSMr#`Knfq;{UT2;ZM3~ zLiiDM^kMi8z~mA5@^dA^8TnqWK9-fOpXXlYfq(J`P1U}LY7P?v7L!*dl0u*OC*LmM zWQKCNDLU8M{l0wFWDEtm?>ecYT+>ODx~1CdYHt{ZzyBAoMus zT)8MDv04{3+C;kjx|f}SsyRWVQ6*Cj0`F)xywSvBG(hESsTTa)IEqT!{;Nl@L*H(A z%c07%8WV|WKo_9+85Ao2DBzBmB^W8@O!S_^d$#J$90{bB69-$8al+jOo+@%a)%&Eo z-9;uch=dX>wmHv*23L~b(1$QL!-9`wIPTd!BF3?qJM-(i=o{pQ7&Laa5^kwj4TV04 zZbWvqF6Tt6Hqmm&Se7!?M6>BmjtypXKywVe2tY=ll#}4S=8)tiTq_qh9mJ4^7~Cbu zTTL7gk;RzhD~}FwulJ^nFCESQl)WoJC4+7|wr;R1)B8X70(hWyPuGC~Jn6YJ3$|2Q*AUz}qLuSY)N(S~%d zSATfd*Y)Yc7Olc}M=oi%-kRWEjr>&iIpEKmxKajQ<>i)&ks~T=s#YoHClTKEK%v}I z(kbpu-vAE%!)Zeyu84_Oi8)}v{pr6lHvn1Xp7k{d~=2lxrO>s?jb(u7U z2X|XVJaccf#Pm>jc@Nh~2r|#srsN|XmA~yyY5JUHJMi4&vl(e15Z;@VVzNO;+($Li z<;LjePdz@LH*uJ+SlxZ2x6S4{E;vzf#Rq7`(;MD|2BI)k1=qMN>jC!O0hbh?U&W4m zWDG_rJ2y8Ppq))nCW6Tj;}*hixG68b;_8dgO=Ii$w`aD5(;{)H^ZM|&znD=hF+{+c zcL{n&J0v%tKo2Bn1hV%?$Q%#b)W}@%S4ZH{Z7-CPxyPry&-bQbuL-~4N=K3yl=nUa z62~za}#ONv}?Z2ux4*unKeQUi4y=PoQF9qx2A*-MknYt$T z5&p{tZHLS?mrs5lPV0z!zoMw?Na!M5OCVK2*SngK%31y+4VtqUh9FpTFGZ?0EiAA( z;9Zn#{h!H-ApzBW>l>@jC{oFkZt1AT+{*=H5pFi0K5UcMJ-sbpSnk2Uw@LJ){&)yk z7a%mK8{ai1_9w(A|S3ma{w?FyWx&8gO zyj2Q+=iHuP+r$)pH}Xw>&d|e+quM%El%q}{7uK#+lsH^S01?B5zyfj=jY5;CwYsmf z?W(dU!{GQEzo{LgzolPK>5-&K{K@h;cY`}yeso9toPx}n&VO&)^`7Q1WS%LXpsnvS z6>{qPGIaHZ1wOcjNkfr~PW0zv>0}+Tb3Ue65{IK);%>S2XHL-;qyC?_#p_0y21TuE zKQ_Jme9DQhS;;v*os8upB&CJRf229gXZ_Mpd;8Qwlg8;`xnH7pQ;uG2;L$OM*Fy1Q zkcuq(O+9uTxGnj@eLua^X_L+>75B;2xP)J7zAy9G%ALeRMKHT4TcUY&%#x_G zk@88H~) z@0;72aq;ejJEbKRQIb|$TYbzsneBCfe;=E4?z7xk_O?#+LOoUSviw}j<4@1(ePsAs zR?pR5EuP=@SlqF_@(snlvR<^L-pA6Quj53~sj6sSOM~T~URg!mDP3M#VKa0n0`p@Fx`ZxT)sk!s$p30&56so|I8Xi1 zZ?vsk@c)+}m2~X(&V8%=OGaxNL@if!cGetNH5lM|;SSjjx1}XYvL(}h!<9#e((X-5 zwcpry_AZ?}{9zzcI_~{nt11sWcKm#k-5=TOz$nX%3v4P1%?Vv}ZjKd4OvO$Uvs~#9 z!`CO>y^aI{3S<@lEZgTW9Vm$S$Ek9FPe zcGSN;|Ac*S{(F&a9q%0~rj(UdyUkm^*!b?3lI*w~5Bj=yKQ5WtV)dbar^~8A`<0%) z?48w{YHp1miyPnM>6?*qw>f=d>R||x(OUC!*_MUj;u*n3n&y{9MH=cmA0K~a)PG<$ zQ)RF(O;tCxKeF>auT9h6w}c(RvpsdEo~qyXLjQ8ngx_F!W-1pD1-l zdhSWi1zi|z^;y*^h-%Bed{KN`y33q%S>LjqzK+_R-!3+PZPfpDHC;LH5`(cr?XlZ- z#2N(^O_hC0EGlcJh6gW%OS#kv7p_O!;fbX^2&D@Z_v-a(c_>i4;4D! zf1G+!sXnY{*>+fl-%z)7s_~*AP7i;Nj0H4TkA+?J@D&ki98z|yy0m1pRSF?eWaZL& z=h(37hierM^L1B)$95)tn2H>~UEB83>YlBtrGfTGYXc;V*my^6XV2=vcTqb0`Z4P- z=lDf|>a5a|daI~IM-XQbo)A8oarFJy;KtR>A6{h zOIFKU@ASuqCX96az;$Um%-*@rX`$zmWsOt=Nv$s?i9 z{?C$L8k$k(?FIwl?utNPR#mnQ)!^O_fwLyd$Oh{yMH*BOxy@gYcAUR+S+wg+&4MVw zRPI}i>KfIOL${3r6FfYZh}1}xF7)?3v9yNAqZpsMm+k*qA+%GlvF?a2|5hoGXqD&J zweOh9`X7mgy-g;{r;6&SnU^e-SS1N}Lfls}b}o#o`Ccw6Fle?hU9DPv&}{bdA%2lA zkU_thD%`cTP31TK8ZUhkuv`D1<}*Bxii}$==ldvKvT*UeK;IPb@^RdTIJ1?$YL+hi z176X!;=&bmuJmVoHtlwFuDL>x(sHE*7pz zl+WFus8`E*>dHmw{Lfl)gTH>&GS2M17^7;#%TjFX5_O&C;;u8MnSL9j7{*y}tL>*G zsvN`gzKfjqo8z-x?s+rI>V0&@{!uY)WV!j+FO(wNVQR^S)Q{HT0gfF3BI7M*4 z-FOK~TF8jSnP$cn-$agN+N!esU`k#7qXh5x-w`7a$kzOjvDJ^)7~H)4iDIF|+0w9I6_yTBzf_9Vwrl%mM{BUL*JDvTr5=tMjeN6Q ztB&vJ*OXGFKB;Ct7OeHag13sbsm5n&%Ptj1ZCSF;3hFvZi}h08GJJg}{(&71J_)v^ zQoc)0Sh_5>be1}+fxvjfo%76a>=YE7!b3gY^xmP<8}E}g^?{wzwYXrG36HIjzxa0X zrP3M;%XKWXELL&JAq`7ee>E3h5vkq?&+S-d!zHfiy10=|z8A9NRtv2@s<|`Ada-Bjig)yn6H3&Uy*DM3N@QAZ=``FbPN)|Kj)jupJ~k`x zaQx~9vSB$-->%21Km%2!`*WMk$*Nv649=sAUpLH_Z_YR|Z1zFhIYczX=-j4;D@n)P z+thO#_LuT~CYG+3I$M%p$1r8Hif>+SSsNF0TNvhzHM82rC(u#Yr96|($2iO%EeDRbVHh68}K`HT5V6CH&=QW;A=j6L~D&=ip2$%70a`Z14r*EV!r<*n9(91c_m zxFBWJfwslEHCHTdZZO;jpg^i8Ch71Wk1ZCZteUiz6kWfNapS?C=ey@oiKduq(n2f3 z$BN3iKg?y_xhq1J)b!0yeXYt)y+&Lb5r?qO&_8qMAz3armS8hR9`e+mskCvo>5j|2lF2K!{gYiPbz-j z$YJM~OZodz7_2tbAU>^@H=uN>x_Iwd-|$;hwB=2^C{u!eE*EKdhAcVk=HgC`&REdG+E3(8ULaJ@;*YGu~6Lns@4NedM{#@BEEt&E$M##Gekqv{_PNd zne)Q4LF$|*{Sr+TejkcD=a1XZ-*?>L5t8+;>p(=iZPl}-%a3lWv7L`)_FT#c@|uv$ zt!Y_>VDk3O74uHm00gli8n(##=4&z#5I1eD66>wLL5SI^%E)!w10^%#R+SM=zyHJf zhU6#vq0jp!*IFt{0P4dl#m^qI9}3biVmw~3yQ+~f17^jp_i-_)YO{@Kr&c}VQ8+W} z$2_>fV{WAjeb-BQ-n2~$ahLVh*yx*pqL(Ii^RfjX9W@`aWCtr(OOcb zNk<&fZ?q3??ebyAZCcoAR@G=bm%u)m!Jf&jTWYzI@w+&~nCmc9dRf67s+y0jF`u+W zt5|x0eRA34X7jPvZiZft^E;(H_pFyPaOw7JRkb`=V<97l0(;AB9p^WwyT`>l|K+C@ zr0OQvg8nh!dSu?mDFx{@w`Q)_Cv95jnSblVc7BE_+olv<(ZaL8qkq2KRN?>O$x9F) z+tc~%Q?j1uBEDI8_QqT}(|n+>f@OSgT=eFhz%pHa0}34B;9pS3B*ie3^-j2>E9HBk`-~}4(foqBy3sEs8(5nb`s<3Tw%>TEs)X;)mWp5vma$Do z-+_ql;`HR=LhOeSShwp-7kaKA+o-kXetxy@p7kNrlUy*tq!LicOqS^??>!!~i_ zV>g5>y+*X}t(N@Qe%XZ9 zTCfQlP$V#O<0ZP?O*IYVtx{rfdNmdoBtid|{3A@h)rVbQT64f)IaN`$RE zs9w?N6Nt^i7@Han$i_hfl-pu3l%DxyG4f)k3nGkl%)X;fu=QhKMV#68#3Wq^*1m*#OtQg$@KTZ~ zY<43q&>g(8H-Nw%b=@T@%Fu}=@%9liamH*gE{P=5PINu!TZ~tp4Jo5KEi|dRc1qS? zx3vM464+xi6g(`4mXym$q#kT&+3rwhiG>a#;qSm3#R(PnY}2jfIs<(7D8-p6Ubb?b zUtOb=sIVJ85W&O%+kfeE0WEw@n16|6DQPS)wP>BK5iRR$gMr+tIu6L81_2RK?Ml|y z+yXwq`GM7@6)v*A8tvMblS)wD%y!UcX9*U^>a~hm!rfwvkp>!)7D}4_qyd%`Wyev& zOG__o&@?%n!hFrmpKw7H`6=4$ApdQ{6@u`VnHxP(uvA@q)e z-2qV`O?zCTbi@WLH-Vd_?nRBMK~DD8j!j6e`E_P{ZmX!0rYFj*DcmV_*4Rl7CPpmX zZBEjwX-MCQT~{zw-uG4bXM>Dgws@h9KBHkjb-ROViLI*AFApciiGa zeSlk}Lg(eD*W&J$NLoc@+o%(U?-u>%*^#JXq; zwNno-dyTn;`Pgc$^qBl=Z)B;66k})2s3n#)KFB|?iYyF}mLbhy>NSg-m+O`)ZA1mQ zY@t$E9sjpz_p?uw(uHwU1V^saSu>|rRp8%?71Z$SrOWmDPHUxK`nv1@i-2EGB7B6- z0t|pOIyP3>cNW1O2o!*?zBZ^AP><0+q+)0~Sv*=3b{5U1DtqHu<8^6=Nv9a@(04kZ z+xlebvHW*Ef+gis0f5u>&h}79lt^0j+;m~oiOMuASt zdg~%DU_y>L2qGl2bXwom)Q@#+sC@k4#rE4LKyQ38LtHCiAp%Kk8y_-ME3xzUwbZ{o z6g0eB@!ii$EV<3q{ZSQD?jqwBu4_3@>MUHMic2J^>p0sQU_?wUqDmDy+^6-(C|LO=HWE|)iypda{h!@t%@rxk;E(_@0x3+ z@v!4Zk8#CeWy_VG7vkntL&Xlg@s^*WcZP(fZ9x6ADQ&>&zV|niVaZpqXeVJ%68a0t zkb)Rm)<40(ZT@u45wp1hNl{|MRVWiu#K*=rjv05Jp{_b>tjID3TCq3Msy-ZusAZgd z%3CTE88zpV{U{wHQ?K@F|A)S~WXrlCQ ztJ6R;yq?SgEP(pD0X9jfnrf?F&!72Q?y}KOH?uKEkQ=NtUU&Bg#kiUUi)HvyKnP#o zgnA#aa7(=rrGREjtp_o+De_}O+hfZVQ^lsrsx~=x9C7UwD|)niyhTY98K>!uDhL%o zA-E=;XLQ7T!D7Rr0^Qef%zunG%fhYJLci;Ybr~5hh&4tJ2F%!ttic3CC%{JkhD}mQ zB6WKaE3m9~4bm27#-PGmMvM@!Rj-XKLcf2Sv9(4RumCp^q;`X9I|?+I-g;7Syn&2t z_rPIMUK@+r^08yQ#_e?V@DA5b%S#r|;^@Xm#>*BW;}|qxY;}GSKa6yRsQsKL;^6}r zvJua+&~%x~dUs7NUV>!#jk;2p_@p{0avq8M%Hwrn-b=7)V=zdV+^p(@Kr*&W)?Wki z!sug*S~`Q_NFf0SB9au;5sOCEzF{x8!v-7OMuA_w!5)8~+RJ*>7 z!hi`Cgybr^K2+q+Z=*^RP@k@#w4mCyc*gGxdAwlTKRzT;j3Le18tF?$plbdlcYYVg zAPm0%Pf%B$UA^$EF)**B{vr|Q`X6y~nH=+V#8?<~*g%(-wVZ8yOq2o;8?CBJ{!ts^ zz|I2IIgi$a53m;D#|UJY06JpU@WTZrlWE@H7rA-dV*S?u2O-0b!SQRp7YC#54)DEs z$260SY{x@aFJvqd+r~8ksC-R3aL=_EfZ&56M!|=*Jr^ILSr`yvg1KA^AL)6==ydw9 zSrjBORn%SaVQBmR;w9rRd#nHTuYaxDV`gIif0Z~pe^@zcaQBY^yYOrO+OylrtkCqw GbN>hDD;ALe literal 0 HcmV?d00001 diff --git a/feeding_web_app_ros2_test/data/above_plate_5_rgb.jpg b/feeding_web_app_ros2_test/data/above_plate_5_rgb.jpg new file mode 100644 index 0000000000000000000000000000000000000000..592701a44dce38fec08feabccb3d81c9e597752d GIT binary patch literal 108091 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 - set(() => ({ - moveToMouthActionGoal: moveToMouthActionGoal - })), + set(() => { + console.log('setMoveToMouthActionGoal called with', moveToMouthActionGoal) + return { + moveToMouthActionGoal: moveToMouthActionGoal + } + }), setPaused: (paused) => set(() => { let retval = { paused: paused } @@ -276,9 +280,9 @@ export const useGlobalState = create( set(() => ({ biteAcquisitionCheckAutoContinueProbThreshUpper: biteAcquisitionCheckAutoContinueProbThreshUpper })), - setBiteTransferPageAtFace: (biteTransferPageAtFace) => + setSettingsPageAtMouth: (settingsPageAtMouth) => set(() => ({ - biteTransferPageAtFace: biteTransferPageAtFace + settingsPageAtMouth: settingsPageAtMouth })), setBiteSelectionZoom: (biteSelectionZoom) => set(() => ({ diff --git a/feedingwebapp/src/Pages/Home/MealStates/BiteSelection.jsx b/feedingwebapp/src/Pages/Home/MealStates/BiteSelection.jsx index 28ee027f..c9514305 100644 --- a/feedingwebapp/src/Pages/Home/MealStates/BiteSelection.jsx +++ b/feedingwebapp/src/Pages/Home/MealStates/BiteSelection.jsx @@ -243,7 +243,7 @@ const BiteSelection = (props) => { // Create a service request let request = createROSServiceRequest({ data: false }) // Call the service - service.callService(request, (response) => console.log('Got toggle face detection service response', response)) + service.callService(request, (response) => console.log('Got toggle table detection service response', response)) // Destroy the action client destroyActionClient(action) } diff --git a/feedingwebapp/src/Pages/Home/MealStates/DetectingFace.jsx b/feedingwebapp/src/Pages/Home/MealStates/DetectingFace.jsx index 2ee3d905..01267df3 100644 --- a/feedingwebapp/src/Pages/Home/MealStates/DetectingFace.jsx +++ b/feedingwebapp/src/Pages/Home/MealStates/DetectingFace.jsx @@ -26,7 +26,6 @@ const DetectingFace = (props) => { const prevMealState = useGlobalState((state) => state.prevMealState) const setInNonMovingState = useGlobalState((state) => state.setInNonMovingState) const setMealState = useGlobalState((state) => state.setMealState) - const setMoveToMouthActionGoal = useGlobalState((state) => state.setMoveToMouthActionGoal) const faceDetectionAutoContinue = useGlobalState((state) => state.faceDetectionAutoContinue) const setFaceDetectionAutoContinue = useGlobalState((state) => state.setFaceDetectionAutoContinue) // Get icon image for move to mouth @@ -105,20 +104,13 @@ const DetectingFace = (props) => { /** * Callback for when a face is detected within the correct range. */ - const faceDetectedCallback = useCallback( - (message) => { - console.log('Face detected callback') - setMouthDetected(true) - setMoveToMouthActionGoal({ - face_detection: message - }) - // If auto-continue is enabled, move to the mouth position - if (autoContinueIsEnabled()) { - moveToMouthCallback() - } - }, - [autoContinueIsEnabled, moveToMouthCallback, setMoveToMouthActionGoal] - ) + const faceDetectedCallback = useCallback(() => { + setMouthDetected(true) + // If auto-continue is enabled, move to the mouth position + if (autoContinueIsEnabled()) { + moveToMouthCallback() + } + }, [autoContinueIsEnabled, moveToMouthCallback]) /** Get the full page view * diff --git a/feedingwebapp/src/Pages/Home/MealStates/DetectingFaceSubcomponent.jsx b/feedingwebapp/src/Pages/Home/MealStates/DetectingFaceSubcomponent.jsx index fe832277..8af6052b 100644 --- a/feedingwebapp/src/Pages/Home/MealStates/DetectingFaceSubcomponent.jsx +++ b/feedingwebapp/src/Pages/Home/MealStates/DetectingFaceSubcomponent.jsx @@ -5,11 +5,11 @@ import { useMediaQuery } from 'react-responsive' import { View } from 'react-native' // Local Imports -import { useROS, createROSService, createROSServiceRequest, subscribeToROSTopic, unsubscribeFromROSTopic } from '../../../ros/ros_helpers' +import { useROS, subscribeToROSTopic, unsubscribeFromROSTopic } from '../../../ros/ros_helpers' import '../Home.css' -import { MEAL_STATE } from '../../GlobalState' -import { FACE_DETECTION_IMG_TOPIC, FACE_DETECTION_TOPIC, FACE_DETECTION_TOPIC_MSG, ROS_SERVICE_NAMES } from '../../Constants' +import { FACE_DETECTION_IMG_TOPIC, FACE_DETECTION_TOPIC, FACE_DETECTION_TOPIC_MSG } from '../../Constants' import VideoFeed from '../VideoFeed' +import { useGlobalState } from '../../GlobalState' /** * The DetectingFace component appears after the robot has moved to the staging @@ -17,6 +17,9 @@ import VideoFeed from '../VideoFeed' * moves on to `R_MovingToMouth` when a face is detected. */ const DetectingFaceSubcomponent = (props) => { + // Get the relevant global variables + const setMoveToMouthActionGoal = useGlobalState((state) => state.setMoveToMouthActionGoal) + // Keep track of whether a mouth has been detected or not const [mouthDetected, setMouthDetected] = useState(false) // Flag to check if the current orientation is portrait @@ -51,11 +54,14 @@ const DetectingFaceSubcomponent = (props) => { 0.5 if (distance > min_face_distance && distance < max_face_distance) { setMouthDetected(true) + setMoveToMouthActionGoal({ + face_detection: message + }) faceDetectedCallback() } } }, - [props.faceDetectedCallback, setMouthDetected] + [props.faceDetectedCallback, setMouthDetected, setMoveToMouthActionGoal] ) useEffect(() => { let topic = subscribeToROSTopic(ros.current, FACE_DETECTION_TOPIC, FACE_DETECTION_TOPIC_MSG, faceDetectionCallback) @@ -69,38 +75,6 @@ const DetectingFaceSubcomponent = (props) => { } }, [faceDetectionCallback]) - /** - * Create the ROS Service. This is created in local state to avoid re-creating - * it upon every re-render. - */ - let { serviceName, messageType } = ROS_SERVICE_NAMES[MEAL_STATE.R_DetectingFace] - let toggleFaceDetectionService = useRef(createROSService(ros.current, serviceName, messageType)) - - /** - * Toggles face detection on the first time this component is rendered, but - * not upon additional re-renders. See here for more details on how `useEffect` - * achieves this goal: https://stackoverflow.com/a/69264685 - */ - useEffect(() => { - // Create a service request - let request = createROSServiceRequest({ data: true }) - // Call the service - let service = toggleFaceDetectionService.current - service.callService(request, (response) => console.log('Got toggle face detection service response', response)) - - /** - * In practice, because the values passed in in the second argument of - * useEffect will not change on re-renders, this return statement will - * only be called when the component unmounts. - */ - return () => { - // Create a service request - let request = createROSServiceRequest({ data: false }) - // Call the service - service.callService(request, (response) => console.log('Got toggle face detection service response', response)) - } - }, [toggleFaceDetectionService]) - // Render the component return ( <> @@ -125,7 +99,7 @@ const DetectingFaceSubcomponent = (props) => { height: '100%' }} > - + ) diff --git a/feedingwebapp/src/Pages/Home/VideoFeed.jsx b/feedingwebapp/src/Pages/Home/VideoFeed.jsx index b7809ddf..1a87cba9 100644 --- a/feedingwebapp/src/Pages/Home/VideoFeed.jsx +++ b/feedingwebapp/src/Pages/Home/VideoFeed.jsx @@ -7,9 +7,11 @@ import PropTypes from 'prop-types' import { View } from 'react-native' // Local Imports -import { CAMERA_FEED_TOPIC, REALSENSE_WIDTH, REALSENSE_HEIGHT } from '../Constants' +import { CAMERA_FEED_TOPIC, REALSENSE_WIDTH, REALSENSE_HEIGHT, ROS_SERVICE_NAMES } from '../Constants' import { useWindowSize } from '../../helpers' import { WebRTCConnection } from '../../webrtc/webrtc_helpers' +import { createROSService, createROSServiceRequest, useROS } from '../../ros/ros_helpers' +import { MEAL_STATE } from '../GlobalState' /** * Takes in an imageWidth and imageHeight, and returns a width and height that @@ -94,12 +96,31 @@ const VideoFeed = (props) => { let textFontSize = isPortrait ? 2.5 : 3.0 let sizeSuffix = 'vh' + /** + * Connect to ROS, if not already connected. Put this in useRef to avoid + * re-connecting upon re-renders. + */ + const ros = useRef(useROS().ros) + + /** + * Create the ROS Service Clients to toggle face detection. + */ + let { serviceName, messageType } = ROS_SERVICE_NAMES[MEAL_STATE.R_DetectingFace] + let toggleFaceDetectionService = useRef(createROSService(ros.current, serviceName, messageType)) + /** * Create the peer connection */ useEffect(() => { + // Toggle on face detection if specified + let service = toggleFaceDetectionService.current + if (props.toggleFaceDetection) { + let request = createROSServiceRequest({ data: true }) + service.callService(request, (response) => console.log('VideoFeed got toggle face detection on service response', response)) + } + // Create the peer connection - console.log('Creating peer connection', props.webrtcURL, refreshCount) + console.log('Creating peer connection', props.webrtcURL, refreshCount, props.externalRefreshCount) const webRTCConnection = new WebRTCConnection({ url: props.webrtcURL + '/subscribe', topic: props.topic, @@ -115,56 +136,75 @@ const VideoFeed = (props) => { }) return () => { + // Close the peer connection webRTCConnection.close() + + // Toggle off face detection if specified + if (props.toggleFaceDetection) { + let request = createROSServiceRequest({ data: false }) + service.callService(request, (response) => console.log('VideoFeed got toggle face detection off service response', response)) + } } - }, [props.topic, props.webrtcURL, refreshCount, videoRef]) + }, [ + props.externalRefreshCount, + props.toggleFaceDetection, + props.topic, + props.webrtcURL, + refreshCount, + toggleFaceDetectionService, + videoRef + ]) // Callback to resize the image based on the parent width and height - const resizeImage = useCallback(() => { - console.log('Resizing image', parentRef.current) - if (!parentRef.current) { - return - } - // Get the width and height of the parent DOM element - let parentWidth = parentRef.current.clientWidth - let parentHeight = parentRef.current.clientHeight + const resizeImage = useCallback( + (delay_ms = 10) => { + if (!parentRef.current) { + return + } + // Get the width and height of the parent DOM element + let parentWidth = parentRef.current.clientWidth + let parentHeight = parentRef.current.clientHeight - // Calculate the width and height of the video feed - let { - width: childWidth, - height: childHeight, - scaleFactor: childScaleFactor - } = scaleWidthHeightToWindow( - parentWidth, - parentHeight, - REALSENSE_WIDTH, - REALSENSE_HEIGHT, - props.marginTop, - props.marginBottom, - props.marginLeft, - props.marginRight - ) + // Calculate the width and height of the video feed + let { + width: childWidth, + height: childHeight, + scaleFactor: childScaleFactor + } = scaleWidthHeightToWindow( + parentWidth, + parentHeight, + REALSENSE_WIDTH, + REALSENSE_HEIGHT, + props.marginTop, + props.marginBottom, + props.marginLeft, + props.marginRight + ) - // Set the width and height of the video feed - setImgWidth(childWidth * props.zoom) - setImgHeight(childHeight * props.zoom) - setScaleFactor(childScaleFactor * props.zoom) - }, [parentRef, props.marginTop, props.marginBottom, props.marginLeft, props.marginRight, props.zoom]) + // Set the width and height of the video feed + setImgWidth(childWidth * props.zoom) + setImgHeight(childHeight * props.zoom) + setScaleFactor(childScaleFactor * props.zoom) - /** When the resize event is triggered, the elements have not yet been laid out, - * and hence the parent width/height might not be accurate yet based on the - * specified flex layout. Hence, we wait until the next event cycle to resize - * the video feed. - */ - const resizeImageNextEventCycle = useCallback(() => { - setTimeout(resizeImage, 0) - }, [resizeImage]) - useWindowSize(resizeImageNextEventCycle) + // If the width or height is zero, schedule another resize event in the next + // event cycle. This is because initially the elements have not been laid out, + // and it might take a few event cycles to do so. + if (childWidth === 0.0 || childHeight === 0.0) { + setTimeout(resizeImage, delay_ms) + } + }, + [parentRef, props.marginTop, props.marginBottom, props.marginLeft, props.marginRight, props.zoom] + ) + + // Resize the element when the window is resized + useWindowSize(resizeImage) - // When the component is first mounted, resize the image + // When the component is first mounted and when the reload button is clicked, + // resize the image useEffect(() => { - resizeImageNextEventCycle() - }, [resizeImageNextEventCycle]) + console.log('Resizing image', refreshCount, props.externalRefreshCount) + resizeImage() + }, [props.externalRefreshCount, refreshCount, resizeImage]) // The callback for when the image is clicked. const imageClicked = useCallback( @@ -329,7 +369,7 @@ const VideoFeed = (props) => { fontSize: textFontSize.toString() + sizeSuffix, color: 'black' }} - onClick={() => setRefreshCount(refreshCount + 1)} + onClick={() => setRefreshCount((x) => x + 1)} > Reload Video @@ -344,8 +384,13 @@ VideoFeed.propTypes = { marginBottom: PropTypes.number, marginLeft: PropTypes.number, marginRight: PropTypes.number, + // A number that changes when some external entity wants this component to refresh. + externalRefreshCount: PropTypes.number, // The topic of the video feed topic: PropTypes.string.isRequired, + // Whether this component should toggle face detection on when it is mounted and + // the reload button is clicked, and toggle it off when it is unmounted + toggleFaceDetection: PropTypes.bool, /** * An optional callback function for when the user clicks on the video feed. * This function should take in two parameters, `x` and `y`, which are the @@ -368,7 +413,9 @@ VideoFeed.defaultProps = { marginBottom: 0, marginLeft: 0, marginRight: 0, + externalRefreshCount: 0, topic: CAMERA_FEED_TOPIC, + toggleFaceDetection: false, zoom: 1.0, zoomMin: 1.0, zoomMax: 2.0 diff --git a/feedingwebapp/src/Pages/Settings/BiteTransfer.jsx b/feedingwebapp/src/Pages/Settings/BiteTransfer.jsx index 861fdcbc..e0c3d249 100644 --- a/feedingwebapp/src/Pages/Settings/BiteTransfer.jsx +++ b/feedingwebapp/src/Pages/Settings/BiteTransfer.jsx @@ -22,19 +22,25 @@ const BiteTransfer = (props) => { const setSettingsState = useGlobalState((state) => state.setSettingsState) const globalMealState = useGlobalState((state) => state.mealState) const setPaused = useGlobalState((state) => state.setPaused) - const biteTransferPageAtFace = useGlobalState((state) => state.biteTransferPageAtFace) - const setBiteTransferPageAtFace = useGlobalState((state) => state.setBiteTransferPageAtFace) + const settingsPageAtMouth = useGlobalState((state) => state.settingsPageAtMouth) + const setSettingsPageAtMouth = useGlobalState((state) => state.setSettingsPageAtMouth) + const moveToMouthActionGoal = useGlobalState((state) => state.moveToMouthActionGoal) // Create relevant local state variables // Configure the parameters for SettingsPageParent const paramNames = useMemo(() => [DISTANCE_TO_MOUTH_PARAM], []) const [currentDistanceToMouth, setCurrentDistanceToMouth] = useState([null]) const [localCurrAndNextMealState, setLocalCurrAndNextMealState] = useState( - globalMealState === MEAL_STATE.U_BiteDone || globalMealState === MEAL_STATE.R_DetectingFace || biteTransferPageAtFace + globalMealState === MEAL_STATE.U_BiteDone || globalMealState === MEAL_STATE.R_DetectingFace || settingsPageAtMouth ? [MEAL_STATE.R_MovingFromMouth, null] : [MEAL_STATE.R_MovingToStagingConfiguration, null] ) - const actionInput = useMemo(() => ({}), []) + const actionInput = useMemo(() => { + if (localCurrAndNextMealState[0] === MEAL_STATE.R_MovingToMouth) { + return moveToMouthActionGoal + } + return {} + }, [localCurrAndNextMealState, moveToMouthActionGoal]) const doneButtonIsClicked = useRef(false) // Flag to check if the current orientation is portrait @@ -53,8 +59,8 @@ const BiteTransfer = (props) => { (newLocalCurrMealState, newLocalNextMealState = null) => { let oldLocalCurrMealState = localCurrAndNextMealState[0] // If the oldlocalCurrMealState was R_MovingToMouth, then the robot is at the mouth - setBiteTransferPageAtFace( - newLocalCurrMealState === null && (biteTransferPageAtFace || oldLocalCurrMealState === MEAL_STATE.R_MovingToMouth) + setSettingsPageAtMouth( + newLocalCurrMealState === null && (settingsPageAtMouth || oldLocalCurrMealState === MEAL_STATE.R_MovingToMouth) ) // Start in a moving state, not a paused state setPaused(false) @@ -69,10 +75,10 @@ const BiteTransfer = (props) => { } }, [ - biteTransferPageAtFace, + settingsPageAtMouth, localCurrAndNextMealState, setLocalCurrAndNextMealState, - setBiteTransferPageAtFace, + setSettingsPageAtMouth, doneButtonIsClicked, setPaused, setSettingsState @@ -97,10 +103,10 @@ const BiteTransfer = (props) => { useEffect(() => { doneButtonIsClicked.current = false // Since we start by moving to staging, this should be initialized to false - setBiteTransferPageAtFace(false) + setSettingsPageAtMouth(false) // Start in a moving state, not a paused state setPaused(false) - }, [setBiteTransferPageAtFace, setPaused, doneButtonIsClicked]) + }, [setSettingsPageAtMouth, setPaused, doneButtonIsClicked]) // Callback to move the robot to the mouth const moveToMouthButtonClicked = useCallback(() => { @@ -123,7 +129,7 @@ const BiteTransfer = (props) => { // To get to Settings, the globalMealState must be one of the NON_MOVING_STATES switch (globalMealState) { case MEAL_STATE.U_BiteDone: - if (biteTransferPageAtFace) { + if (settingsPageAtMouth) { localCurrMealState = null localNextMealState = null } else { @@ -148,7 +154,7 @@ const BiteTransfer = (props) => { break } setLocalCurrMealStateWrapper(localCurrMealState, localNextMealState) - }, [biteTransferPageAtFace, globalMealState, setLocalCurrMealStateWrapper, doneButtonIsClicked]) + }, [settingsPageAtMouth, globalMealState, setLocalCurrMealStateWrapper, doneButtonIsClicked]) // Callback for when the user changes the distance to mouth const onDistanceToMouthChange = useCallback( diff --git a/feedingwebapp/src/Pages/Settings/CustomizeConfiguration.jsx b/feedingwebapp/src/Pages/Settings/CustomizeConfiguration.jsx index 514e2567..34fe4415 100644 --- a/feedingwebapp/src/Pages/Settings/CustomizeConfiguration.jsx +++ b/feedingwebapp/src/Pages/Settings/CustomizeConfiguration.jsx @@ -10,8 +10,10 @@ import { useROS, createROSService, createROSServiceRequest } from '../../ros/ros import { CAMERA_FEED_TOPIC, getRobotMotionText, - GET_JOINT_STATE_SERVICE_NAME, - GET_JOINT_STATE_SERVICE_TYPE, + GET_ROBOT_STATE_SERVICE_NAME, + GET_ROBOT_STATE_SERVICE_TYPE, + ROBOT_BASE_LINK, + ROBOT_END_EFFECTOR, ROBOT_JOINTS } from '../Constants' import { useGlobalState, MEAL_STATE, SETTINGS_STATE } from '../GlobalState' @@ -21,6 +23,38 @@ import TeleopSubcomponent from '../Header/TeleopSubcomponent' import SettingsPageParent from './SettingsPageParent' import VideoFeed from '../Home/VideoFeed' +/** + * This function extracts the joint positions from the robot state service's response + * and returns it. + */ +export function getJointPositionsFromRobotStateResponse(response) { + return response.joint_state.position +} + +/** + * The function extracts the end effector position and quaternion in the robot's + * base link frame, from the robot state service's response. + */ +export function getEndEffectorPositionFromRobotStateResponse(response) { + if (response.poses.length === 0) { + return [] + } + let pose = response.poses[0].pose + return [pose.position.x, pose.position.y, pose.position.z] +} + +/** + * This function extracts the end effector orientation in the robot's base link frame, + * from the robot state service's response. + */ +export function getEndEffectorOrientationFromRobotStateResponse(response) { + if (response.poses.length === 0) { + return [] + } + let pose = response.poses[0].pose + return [pose.orientation.x, pose.orientation.y, pose.orientation.z, pose.orientation.w] +} + /** * The CustomizeConfiguration component allows users to configure the one of the * fixed configurations the robot uses. In its current form, the node can take in @@ -36,19 +70,27 @@ const CustomizeConfiguration = (props) => { const setSettingsState = useGlobalState((state) => state.setSettingsState) const globalMealState = useGlobalState((state) => state.mealState) const setPaused = useGlobalState((state) => state.setPaused) - const biteTransferPageAtFace = useGlobalState((state) => state.biteTransferPageAtFace) + const settingsPageAtMouth = useGlobalState((state) => state.settingsPageAtMouth) + const setSettingsPageAtMouth = useGlobalState((state) => state.setSettingsPageAtMouth) + const moveToMouthActionGoal = useGlobalState((state) => state.moveToMouthActionGoal) // Create relevant local state variables // Configure the parameters for SettingsPageParent const [currentConfigurationParams, setCurrentConfigurationParams] = useState(props.paramNames.map(() => null)) const [localCurrAndNextMealState, setLocalCurrAndNextMealState] = useState( - globalMealState === MEAL_STATE.U_BiteDone || biteTransferPageAtFace + globalMealState === MEAL_STATE.U_BiteDone || settingsPageAtMouth ? [MEAL_STATE.R_MovingFromMouth, props.startingMealState] : [props.startingMealState, null] ) - const actionInput = useMemo(() => ({}), []) + const actionInput = useMemo(() => { + if (localCurrAndNextMealState[0] === MEAL_STATE.R_MovingToMouth) { + return moveToMouthActionGoal + } + return {} + }, [localCurrAndNextMealState, moveToMouthActionGoal]) const doneButtonIsClicked = useRef(false) const [zoomLevel, setZoomLevel] = useState(1.0) + const [videoFeedRefreshCount, setVideoFeedrefreshCount] = useState(0) const [mountTeleopSubcomponent, setMountTeleopSubcomponent] = useState(false) const unmountTeleopSubcomponentCallback = useRef(() => {}) @@ -61,14 +103,38 @@ const CustomizeConfiguration = (props) => { let textFontSize = 3.5 let sizeSuffix = isPortrait ? 'vh' : 'vw' + /** + * Connect to ROS, if not already connected. Put this in useRef to avoid + * re-connecting upon re-renders. + */ + const ros = useRef(useROS().ros) + + /** + * Create the ROS Service Clients to get joint states + */ + let getRobotStateService = useRef(createROSService(ros.current, GET_ROBOT_STATE_SERVICE_NAME, GET_ROBOT_STATE_SERVICE_TYPE)) + // Update other state variables that are related to the local meal state const setLocalCurrMealStateWrapper = useCallback( (newLocalCurrMealState, newLocalNextMealState = null) => { - console.log('setLocalCurrMealStateWrapper evaluated') + console.log('setLocalCurrMealStateWrapper evaluated', newLocalCurrMealState, newLocalNextMealState) let oldLocalCurrMealState = localCurrAndNextMealState[0] - // Only mount the teleop subcomponent if the robot finished the prereq motion for this page - if (newLocalCurrMealState === null && oldLocalCurrMealState === props.startingMealState) { - setMountTeleopSubcomponent(true) + + if (newLocalCurrMealState === null) { + // If toggling face detection is enabled, refresh the video feed. This is + // because other elements/actions might have toggled face detection off. + if (props.toggleFaceDetection) { + setVideoFeedrefreshCount((x) => x + 1) + } + + // Only mount the teleop subcomponent if the robot finished the prereq motion for this page + // Treat MoveFromMouth and MoveToStaging as the same. + if ( + oldLocalCurrMealState === props.startingMealState || + (props.startingMealState === MEAL_STATE.R_MovingToStagingConfiguration && oldLocalCurrMealState === MEAL_STATE.R_MovingFromMouth) + ) { + setMountTeleopSubcomponent(true) + } } // Start in a moving state, not a paused state setPaused(false) @@ -80,15 +146,23 @@ const CustomizeConfiguration = (props) => { } else { setLocalCurrAndNextMealState([newLocalCurrMealState, newLocalNextMealState]) } + // If the oldlocalCurrMealState was R_MovingToMouth, then the robot is at the mouth + setSettingsPageAtMouth( + newLocalCurrMealState === null && (settingsPageAtMouth || oldLocalCurrMealState === MEAL_STATE.R_MovingToMouth) + ) }, [ doneButtonIsClicked, localCurrAndNextMealState, props.startingMealState, + props.toggleFaceDetection, setLocalCurrAndNextMealState, setMountTeleopSubcomponent, setPaused, - setSettingsState + settingsPageAtMouth, + setSettingsPageAtMouth, + setSettingsState, + setVideoFeedrefreshCount ] ) @@ -132,17 +206,6 @@ const CustomizeConfiguration = (props) => { } }, [localCurrAndNextMealState, setLocalCurrMealStateWrapper, actionInput]) - /** - * Connect to ROS, if not already connected. Put this in useRef to avoid - * re-connecting upon re-renders. - */ - const ros = useRef(useROS().ros) - - /** - * Create the ROS Service Clients to get/set parameters. - */ - let getJointStateService = useRef(createROSService(ros.current, GET_JOINT_STATE_SERVICE_NAME, GET_JOINT_STATE_SERVICE_TYPE)) - // Reset state the first time the page is rendered useEffect(() => { doneButtonIsClicked.current = false @@ -152,24 +215,43 @@ const CustomizeConfiguration = (props) => { // Get the current joint states and store them as the above plate param const storeJointStatesAsLocalParam = useCallback(() => { - console.log('storeJointStatesAsLocalParam called') - let service = getJointStateService.current - let request = createROSServiceRequest({ + let service = getRobotStateService.current + let request_object = { joint_names: ROBOT_JOINTS - }) + } + if (props.getEndEffectorPose) { + request_object.child_frames = [ROBOT_END_EFFECTOR] + request_object.parent_frames = [ROBOT_BASE_LINK] + } + let request = createROSServiceRequest(request_object) + console.log('storeJointStatesAsLocalParam called with request', request) service.callService(request, (response) => { console.log('Got joint state response', response) - setCurrentConfigurationParams(props.paramNames.map(() => response.joint_state.position)) + setCurrentConfigurationParams(props.paramNames.map((_, i) => props.getParamValues[i](response))) }) - }, [getJointStateService, props.paramNames, setCurrentConfigurationParams]) + }, [getRobotStateService, props.getEndEffectorPose, props.getParamValues, props.paramNames, setCurrentConfigurationParams]) - // Callback to move the robot to another configuration + // Callback to move the robot to another configuration. If the robot is at the user's face, + // first moves back from their mouth. const moveToButtonClicked = useCallback( (nextMealState) => { doneButtonIsClicked.current = false - unmountTeleopSubcomponentCallback.current = getSetLocalCurrMealStateWrapper(nextMealState) + let nextNextMealState = null + // If we are at the user's mouth, prepend MoveFromMouth to the motion. + if (settingsPageAtMouth) { + // MoveIt often fails to execute small trajectories, which are often planned + // when doing MovetoStaging immediately following MoveFromMouth. Thus, we + // leave the robot in the MoveFromMouth configuration. It is not technically + // the actual staging configuration, but it is the best we can do given + // the MoveIt limitation. + if (nextMealState !== MEAL_STATE.R_MovingToStagingConfiguration) { + nextNextMealState = nextMealState + } + nextMealState = MEAL_STATE.R_MovingFromMouth + } + unmountTeleopSubcomponentCallback.current = getSetLocalCurrMealStateWrapper(nextMealState, nextNextMealState) }, - [getSetLocalCurrMealStateWrapper, doneButtonIsClicked, unmountTeleopSubcomponentCallback] + [getSetLocalCurrMealStateWrapper, doneButtonIsClicked, settingsPageAtMouth, unmountTeleopSubcomponentCallback] ) // Callback to return to the main settings page @@ -218,7 +300,15 @@ const CustomizeConfiguration = (props) => { }} > - + @@ -251,14 +341,14 @@ const CustomizeConfiguration = (props) => { {props.otherButtonConfigs.map(({ name, mealState }) => ( - {/* - props.doneCallback()}> - Go To Menu Without Saving - - */} {}, modalChildren: <>, - resetToPresetSuccessCallback: () => {} + resetToPresetSuccessCallback: { + current: () => {} + } } export default SettingsPageParent diff --git a/feedingwebapp/src/buttons/HoldButton.jsx b/feedingwebapp/src/buttons/HoldButton.jsx index 0d6eccb7..48349087 100644 --- a/feedingwebapp/src/buttons/HoldButton.jsx +++ b/feedingwebapp/src/buttons/HoldButton.jsx @@ -29,34 +29,50 @@ function HoldButton(props) { const intervalRef = useRef(null) // Callback to stop the interval - const stopInterval = useCallback(() => { - if (intervalRef.current) { - clearInterval(intervalRef.current) - intervalRef.current = null - let cleanupCallback = props.cleanupCallback - cleanupCallback() - } - }, [props.cleanupCallback]) + const stopInterval = useCallback( + (event = null) => { + // Prevent further processing of the event. This is because sometimes touches + // also trigger clicks: https://web.dev/articles/mobile-touchandmouse + if (event) { + event.preventDefault() + } + if (intervalRef.current) { + clearInterval(intervalRef.current) + intervalRef.current = null + let cleanupCallback = props.cleanupCallback + cleanupCallback() + } + }, + [props.cleanupCallback] + ) // Callback to start the rate_hz interval - const startInterval = useCallback(() => { - // Stop the interval if it exists - stopInterval() - // Start a new interval - intervalRef.current = setInterval(() => { - let holdCallback = props.holdCallback - holdCallback() - }, 1000.0 / props.rate_hz) - }, [ - props.rate_hz, - props.holdCallback, - stopInterval - // setCounter - ]) + const startInterval = useCallback( + (event = null) => { + // Prevent further processing of the event. This is because sometimes touches + // also trigger clicks: https://web.dev/articles/mobile-touchandmouse + if (event) { + event.preventDefault() + } + // Stop the interval if it exists + stopInterval() + // Start a new interval + intervalRef.current = setInterval(() => { + let holdCallback = props.holdCallback + holdCallback() + }, 1000.0 / props.rate_hz) + }, + [props.rate_hz, props.holdCallback, stopInterval] + ) // Callback for when the touch moves const onTouchMove = useCallback( - (event) => { + (event = null) => { + // Prevent further processing of the event. This is because sometimes touches + // also trigger clicks: https://web.dev/articles/mobile-touchandmouse + if (event) { + event.preventDefault() + } let { top, left, bottom, right } = buttonRef.current.getBoundingClientRect() if ( event.touches === null || @@ -91,7 +107,7 @@ function HoldButton(props) { onTouchEnd={stopInterval} onTouchCancel={stopInterval} onTouchMove={onTouchMove} - onContextMenu={(e) => e.preventDefault()} + onContextMenu={(event) => event.preventDefault()} > {props.children} diff --git a/feedingwebapp/src/robot/VideoStream.jsx b/feedingwebapp/src/robot/VideoStream.jsx index 928271e1..d9c736d0 100644 --- a/feedingwebapp/src/robot/VideoStream.jsx +++ b/feedingwebapp/src/robot/VideoStream.jsx @@ -56,13 +56,13 @@ function VideoStream(props) { */ const imageCallback = useCallback( (message) => { - // console.log('Got image message', message) + // console.log('Got image message for topic', props.topic) if (img.src) { URL.revokeObjectURL(img.src) } img.src = URL.createObjectURL(dataURItoBlob('data:image/jpg;base64,' + message.data)) }, - [img] + [img /*, props.topic*/] ) // Subscribe to the image topic