From 9514985ce2bf0bdd6778f1292deeed8f4719fb0b Mon Sep 17 00:00:00 2001 From: vanejessi Date: Sun, 15 Dec 2024 16:34:58 +0100 Subject: [PATCH 1/7] Rama con version humble de websocket camera --- compose_cfg/user_humble_cpu.yaml | 1 + database/exercises/db.sql | 2 + .../img/color_filter_newmanager_teaser.png | Bin 0 -> 274364 bytes .../entry_point/exercise.py | 13 + .../entry_point/ros2_humble/exercise.py | 13 + .../launch/ros1_noetic/gazebo.launch | 24 ++ .../launch/ros1_noetic/launch.py | 134 +++++++ .../launch/ros1_noetic/mavros.launch | 13 + .../launch/ros1_noetic/px4.launch | 20 + .../launch/ros1_noetic/rescue_people.launch | 15 + .../launch/ros1_noetic/unified_launchs.launch | 45 +++ .../launch/ros2_humble/world.json | 9 + .../python_template/ros1_noetic/console.py | 20 + .../python_template/ros1_noetic/exercise.py | 365 ++++++++++++++++++ .../python_template/ros1_noetic/gui.py | 251 ++++++++++++ .../python_template/ros1_noetic/hal.py | 82 ++++ .../ros1_noetic/interfaces/__init__.py | 0 .../ros1_noetic/interfaces/camera.py | 89 +++++ .../ros1_noetic/interfaces/motors.py | 123 ++++++ .../ros1_noetic/interfaces/pose3d.py | 176 +++++++++ .../ros1_noetic/interfaces/threadPublisher.py | 46 +++ .../ros1_noetic/interfaces/threadStoppable.py | 36 ++ .../python_template/ros2_humble/GUI.py | 110 ++++++ .../python_template/ros2_humble/HAL.py | 28 ++ .../python_template/ros2_humble/console.py | 19 + .../ros2_humble/gui_exercise.py | 199 ++++++++++ .../python_template/ros2_humble/image.png | Bin 0 -> 62912 bytes .../react-components/ColorFilterRR.js | 14 + .../react-components/SpecificColorFilter.js | 67 ++++ .../react-components/css/ColorFilterRR.css | 28 ++ .../helpers/showImagesColorFilter.js | 86 +++++ .../color_filter_newmanager/exercise.html | 33 ++ .../src/components/visualizers/Camera.js | 25 ++ 33 files changed, 2086 insertions(+) create mode 100644 exercises/static/exercises/assets/img/color_filter_newmanager_teaser.png create mode 100644 exercises/static/exercises/color_filter_newmanager/entry_point/exercise.py create mode 100644 exercises/static/exercises/color_filter_newmanager/entry_point/ros2_humble/exercise.py create mode 100644 exercises/static/exercises/color_filter_newmanager/launch/ros1_noetic/gazebo.launch create mode 100644 exercises/static/exercises/color_filter_newmanager/launch/ros1_noetic/launch.py create mode 100644 exercises/static/exercises/color_filter_newmanager/launch/ros1_noetic/mavros.launch create mode 100644 exercises/static/exercises/color_filter_newmanager/launch/ros1_noetic/px4.launch create mode 100644 exercises/static/exercises/color_filter_newmanager/launch/ros1_noetic/rescue_people.launch create mode 100644 exercises/static/exercises/color_filter_newmanager/launch/ros1_noetic/unified_launchs.launch create mode 100644 exercises/static/exercises/color_filter_newmanager/launch/ros2_humble/world.json create mode 100644 exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/console.py create mode 100644 exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/exercise.py create mode 100644 exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/gui.py create mode 100644 exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/hal.py create mode 100644 exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/interfaces/__init__.py create mode 100644 exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/interfaces/camera.py create mode 100644 exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/interfaces/motors.py create mode 100644 exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/interfaces/pose3d.py create mode 100644 exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/interfaces/threadPublisher.py create mode 100644 exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/interfaces/threadStoppable.py create mode 100644 exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/GUI.py create mode 100644 exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/HAL.py create mode 100644 exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/console.py create mode 100644 exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/gui_exercise.py create mode 100644 exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/image.png create mode 100644 exercises/static/exercises/color_filter_newmanager/react-components/ColorFilterRR.js create mode 100644 exercises/static/exercises/color_filter_newmanager/react-components/SpecificColorFilter.js create mode 100644 exercises/static/exercises/color_filter_newmanager/react-components/css/ColorFilterRR.css create mode 100644 exercises/static/exercises/color_filter_newmanager/react-components/helpers/showImagesColorFilter.js create mode 100644 exercises/templates/exercises/color_filter_newmanager/exercise.html create mode 100644 react_frontend/src/components/visualizers/Camera.js diff --git a/compose_cfg/user_humble_cpu.yaml b/compose_cfg/user_humble_cpu.yaml index bae8cbccd..b71e0622d 100644 --- a/compose_cfg/user_humble_cpu.yaml +++ b/compose_cfg/user_humble_cpu.yaml @@ -24,6 +24,7 @@ services: - "7164:7164" - "7163:7163" - "6080:6080" + - "8765:8765" - "1108:1108" tty: true stdin_open: true diff --git a/database/exercises/db.sql b/database/exercises/db.sql index dd8d6b194..817f77aea 100644 --- a/database/exercises/db.sql +++ b/database/exercises/db.sql @@ -95,6 +95,7 @@ COPY public.exercises (id, exercise_id, name, description, tags, status, templat 9 3d_reconstruction 3D Reconstruction 3D Reconstruction exercise using React and RAM {"tags": ["ROS2","COMPUTER VISION"]} ACTIVE RoboticsAcademy/exercises/static/exercises/3d_reconstruction/python_template/ 10 amazon_warehouse Amazon Warehouse Control an amazon-like robot to organize a warehouse {"tags": "ROS2"} ACTIVE RoboticsAcademy/exercises/static/exercises/amazon_warehouse/python_template/ 11 montecarlo_laser_loc Montecarlo Laser Loc Calculate the position of the robot based on the {"tags": "ROS2"} ACTIVE RoboticsAcademy/exercises/static/exercises/montecarlo_laser_loc/python_template/ +12 color_filter_newmanager Color Filter Color Filter exercise using React and RAM {"tags": "ROS2"} ACTIVE RoboticsAcademy/exercises/static/exercises/color_filter_newmanager/python_template/ \. @@ -129,6 +130,7 @@ COPY public.exercises_universes (id, exercise_id, universe_id) FROM stdin; 24 1 23 25 1 24 26 1 25 +27 12 3 \. diff --git a/exercises/static/exercises/assets/img/color_filter_newmanager_teaser.png b/exercises/static/exercises/assets/img/color_filter_newmanager_teaser.png new file mode 100644 index 0000000000000000000000000000000000000000..852220fbf5d18cba7a5808a4dbbd52ebedcf20a6 GIT binary patch literal 274364 zcmV)qK$^daP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 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

T`(jL8FzO@D(IV9_ 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

LrIH@D)(?WFA@I0jw6QT? zCp)I{6GB==pByBsF&vBGQ}^?Y*Fp760*R_T(h*Tdk>WYs5cxIgDxuQmj2o8WE6mc^ z>iS2DPM#E1%Ji3SC$11AW)=H-))g>Hz!mC=r37zRMKotKA*VKP~a59W=AmW^f%B`LCyjfWyb#jHd} z^Q&wUvmurk=7&@=&J3-*XrzU0ezd(=wgzNq846ZZVp(mA)Xj5fjGutkzI0^$z{^g_ zqL~!&Gp^XaRpt}unFHh%Y^?=!u~?lu3ft>ms_b%4BnbLn^M^u{dQID4znU-9dcU)J zCax`YrR7oeH^`p$LqQ~q{dY|gOjcv<&%up%thnWs`%y|Uq;gD~CkV9eA~3PM)dylG zC^|ZtqBC0IcWgdJn|d~jd_QMlo>{4;_0t>#tQjw(g2a5(46vq6rBzf@Yg~|FNkbJR zRYW|nVe7EGC@F7J>H_wW*eOj?KnRBWie11TLM;%6Udj=fkUr&#k3|4^+1&4HZxGTv+ZwkDl_@omCJNCq z3MOM=JC@coc_&Zjbx>mD>JIU9?#{Y1lT$K5gGYosju5E`B6%YiAtmrJkQ#I8Jm+?> z0fd+8DbI+>!Jzp0yB)@&>Ppou_b3A!Hg1$<#=Jh5K;haEwi3I|zNS{k8;k|Su;}JoN01?R2KYBWL(nwP zu*fh?|Mc&?yF~Mp4h2YBq-)tMk~L!-!pOPEU$*C&v zJtsOHCC;GtumVYVFwiD6nnLy-y73c2z5$2FO4^6~Y)B|~o0F~gZOgU^2U>hALm9&^ zyrWu;Vda8UxQS)CpRT9{GIxp9EqKG{)XQK=TwS4vSvK6dkKXk+9`GFhQm3KWvnV6YOi7@wDS|K5zu3$uV3Z2HFQ{X1eJ`?Hh=@;Nkg@_GJh|V83zeQo zXJ6ghvO!Q6pWqW|B+GgN$o#bzC<+;u?2LsC!c`4BTGbQ!JclfMcd3YA92zyrrrE^( zx|U76WX=7Vr$~&P!f=LGj%`MWFi@h(=ETOjkbLoq+C5rW&IYv$brqca+P96hiq&`#4#%5b`}A{U z-srrNt#y*Xb^^PUjZFPxh}Uhw@|ak7pl2+2_&g3H7(M{HpG#^s0BT`qX?j*LMcxeT zvQI3Q#L_$jia(b3MNkvQLGgo2QABC`5H4Ct-TB+{*j;`4@Yo z%_RJeW3hTpE(F;hQP$SZodR^|m~{p5j~B0}9;G_LaPKb!h%3=|*R0Fe*}GTz?OMXh zZmwQ*GYO!RN&n$y%;m(Q7nDS5r*)!765MhhLCEAW*_AiiPdrd)SL7lP5+cJB1+fZO zox;JZR|f`j99k)@afEim9b1f@9O#Ll0gaW+ckNhq1EiIR6rl(ryJblJrvI2L=0(<- zaO!{mgv8l-*n9l?my1%}o0k%x&7X96rq`8meb;U}%W^_C8|0ojj7n#^CRrsOZlX`o zu(G>zb3{n6YH8tK+w2knjBRI)o8??jO=Jaa>8w`;0Zu=0w$^$dr(N(HepK!t01L5K zII}b-eo?5eeY8Hev->MrVhWn9AJ?X&_6sp7#JqS>EMO)WwQRwI#H52qTI zzBqU}BuE)2mRhs1_P1Fcc~WT3mE2d19f*Ja;$0~3!gAnkN})VkY!lO)S|7Ek(cg%l9^ghLaI^1(l@rMP(bsRL}}TEtW62?>a%uqLd# zAJ!C2;7^UK%}IZ`zJ|i`+BcQW9&I#0*Yw=I#`xTQ^S!^%bluGF-BNO9Y#6IeqU9g3 zwiuB5>*1(KhG}4|jjl=8{S6-=gX>jSH+$dxr`=>{NFts)q*QDc^@I7zLwNTR>sJE^ ztNHz`*<4~mF|6f+EnRckVz*DI;;+#2N;BJ4nGIL578!ge7e2;NZqB?bEwLGcb-CM8 zX~o0~R@2nl&LP^J%HpxxI!;sAB*XB?q$=^?7O|hL5(bwQwbPd3`*1Q=>8+r63&KD8 z6$!N7dh3G`#qI?mX-7$J$T8dg1V^9rvaScnhi_5}z^0|KZ6h9T50w6KIp(|}u@gMINgMO^zs-gb<3v|k)mygwVB!2Z z=}35qBi5YdhW%X_v?4pBqGFj95n_^RNe!3MHkcUYiPU;@ zFQviI3&r=GU)fMzNvL;wv$rQNTv8+wcFyhiBzQmKhbEZ|P0S_9#BNg8DOk!z&FX4lP;LoY2yxUSEfAi(sSJfTeLIx#{or$ z-F4DTTKXpcaJNU`5(E!xk`Ib(ZsZONmUSu9L-sLh(^uskS`PuY16BLQZpflkTmn)_ zDw;o1uqrsz<;s{+D^600Kj1s6TY?4|cHN!QTQasz$L!rWwTPY~0@nHzTx_Wt+MEfM zn8PII>ixto2S}-YUdzVl`h2nEe6ETMyj@)TTqUh6JdSkfaxZyO$wt)=ighNg=`lsD z$5ydTz;(__9fZP3l=-utlzxTA%u|Dcyu)n3_$uP7W8%;aiIU8-o?aQ=&E%3TV=0f; z7l8)e?#`EA7RBncfi-n42kZUV!>LpyVHWZ}M&u`hMwMcfro9>|HwbI!4}x;QrGdL$ zrmwl;NWxgz=_zNo8NBJG?w8N^K7gy6MH*zc5;XLh_2jkNe}>r|OUooIDsVIqy+Fv7 z_A7nQWG{G*i#)u!8a}3*QY8+tZSGPQX5ybHCMaBbT1ZRElIN(!e*9f8&qbiyxc1MO*!l zJ+Fku8b})ERLYmZ_Lr^3LVhZhfW#Ce6sqOSRFY7^AciNLy0Hbyg{RrjMRmT{afH;c zB1d_Pdb|FG@1gXEL?sI&C7kbtkmPo4Nb@NpRDODSw1<5?BUoFD)mn6UT^uP~OdcJS zHQ?aYTZEmY-)%)(lP+)}Nz`0x57)5OpKVt%YKj2$0ZycqtMN{mrc>KWU1SJfbKKUe z=6f_0kI^0D=tmbcEJG1^_$=JkCVXx@cX^;}AN-(lTB&0Hfe2WTnIvvSkkG?Rz+n*0 zS9lf%)K8>hs$))4-+hlN+yS>)4?wv7!Pj!x5hjK?q+TYu!n$%Ypw!(oOy?1vQAUG@ zvc0;50z1uHwDt^P2u`b8`Q4@RBeIq2Q7^hdd1_G#A4c2`rz4TQW7nwZk(97X2~|Zh z?h#j=YW^ANIW^BW8L3T+$l0w$WgJMNga!Tiq1ViLk^;TuS>2HKz^9CVZWhDT;Bsv+ zfz)w%siyNbX!HGKBJeuK^GsZLcsSID$q?^wYsvcjLlbfl=by2tAw)I0by@gm>7M*d z*3X}c$LR!MiYJO0MD$Bhn?EspZDA_Lk~>zir>NdxZ-b>8?PyXtA)%tca3~OBsjc}- zm2$X=+zG>2LD?IFMQCNXoRvW^%v7p6AjTEK+R3CsmNlLv>ZL;)U=ZA5BEPWc=OINI zi{ue^l`4|`Wt<|yZ)Iab8s{FDh61Oe)baSp=nM!btidE>k$}V(sF)MhLveo_w92#_ z&ZK4lXq}_5DLmmEd^-Gwz8|c)l9`;L3WxApS4|M%0wPrtP+G}#&{$igtImU z#5EoAc5uhKgZ+%GTu`WB; z_ikR0sTYzz8KyanUJhX!+gKcnau*pRYGPI*5vOg5WU5K_22(P6%zD$f>oBizd9n{t zo4=EF-w5Mxkh~^*$@%{Kos8vF&PmEaTV^q&(}?#?*8gSGgI^Ou=*SwwmHE2BB6f^ zPRk2xRuEqLb_(^WQ1!j?`E=LNj+=7Bji;;1olbvz%JWU{>5EtQg~QczKi8Y3?Y6 z(8hu`M2&OnFi-3YeHky^M_Yz2OmcLPjsp{ejHM@>LGE>2GoU5n?yBe{XeR^>git^|3yNiMfFlzcCjdTV0 zuEI=omyUs@Sa!G3F&PR!qfQ>#5iMFL43fV;_@q{GkoBAc?GDs?TXagPp&pyo!RL6) zYa%)+Qf$tiD~*9nYCh(aDfLcdGMtvhy~=C+ObMfdaXTcxDDcVBp=;A8a215@X|o5r zieKhntSJBdR`jJnHvdsqE}Fj+zY}-yGXSKVoGf;z-LSkXHz$G^5sTniGPA<+M$q?n zR8*sj>ic$xO_L;NR){6KPjR@z^@_~9z57wg?`{iHWL%MVIxh;1bSmQfHSEIJ!4fnRZ7Puce z+Gs@DRUK$w-BDubvsJ&vD^S_p1J#hqJ?tp8%#>&vfKjKD)xeM0g2+NFr z`4LBIWX6PsbC14Ecd?>k@>(_tmJ$Tq&aytU%_O5GxkqIYMEHe5PmN*??aqyq8Z5`r zV~xcID*d^n7+k@jMvjOG!YLa{k_=;fWB}8Snl9#6>I;>V5}zIlsnF8095>!?ww2r+ z*Nt1PvsgBQG!2XJmm;qR?;kA|B-0sj37SfIk@b?!&hHTKp$4Mpk*yrsiEn_pcWs(e zQ22!e1?i&p9E0YY&mg=3Zt;!LHad%9*nIhj*hU;yZIx`5Af~oyQ^->JW?5Oz3Lyl@ z(jwW4kdwLc@Zu~;A^!dBt{y6uIB5Mytri^K03UZ9Tb;# z+?q8jMV(%P4 z(#XfYic>G8(Kr(7RsL1Y#6@@TnM59cG3{iHIYDcT zl>SyDge2Q_59Z_-{dMs~-Zah3iK*3Of$!Bqqkn@Hh8rO3|3QodS~;A&&08Z6yLq!$ z@cKmbT9ExUx0A6toD@Ea`c~=9BV>+bF8_nMHoznhouz_XQB8&o+~z z+?8?hr+fDF+ zWN$<%aezQY%$;!aKk1OE7 z^Phs5a;mIBqwUL$^hL|slm7fYfP0Zm!se*(_)wR zZmWAtS8K-c8#*iIt1s^8u{cN8BTk&c;;Tr&=7yNBiq@(U=1nK_?b za?W*M)HUIHB739I^Zaq#0ByWdNe!in?Mz7Y_wZVU!4`}#*4GV$68wYa=F>yQ=xPh{ zxGf?zQ+ik+LwV8ssM)3L-Rt7T1()n#wZaG#krI6R$+a1IYbLIv;d%R6u}vIM=%D*7 z?o*o3D*x0xN@m>^1C;m7=}YMe7x%jUiei2v>!EDoxTY?mRjb}H(5{Slv}*KkduMA# z=sDki|G04q^Ix|x4o?9Gx93_cFXYIevF0*2B(Bk zxV2(0(B1A*|EysZCUdW_iu|_U^XRiFohGp!s^ zXCX2y17B4Dg2e^7j-U_r`F|JxH{Lv(0XX(r@BiN8|Me*G(l!GB{~A0w#UcLve~p2S zeAZV)*=_$D>c1D?;L}X^w91LO=f7jGg=&FvbOq1*pxpm{RGa<7D}A+e9oO9;n}?zQ z-QkOT*)WFB+1B=Ei3d7#bZl%aMBrn0VPV1Mq3M4sbNlV^>e~Cc18|@HJZaqUFwyfd z0XR8t``=KKl|652-)Am9&p^Fm!!Z$~hP99F>(A}WjTX>M{N|6P8i6Z`khue}knC9{Q zddnC3D-^f27cPj+b$NI4Ihlk$wWvyt+fmw@WpcL16&HxU#s`~@4^B$BgkZ$7DzDS6 zQ#{x4OL)1rw$P}nk}(A-wf2KZx5hFf!qwN~*F(<_+K-Qsz4r;VU44k;`IQyW$qmxi z0D+eP(mQcHMJeW@MJK|beA0G-n?l5-GM_LTn+126cqTrqrK#Cb21G2>>+_t2K~>jj z@J^VltBfgQ90XZ;n2?paDr42j=bB}{VCaE!$Wrr^cnbY25=usv5*IHM+Yoo-f3!&KKpO#{ngW_UlP;OU9 z92~R*u@mx7SI}jPiKWcmNHMMs9t)rApRNg1jNSd5S#NnOo8Pn=Euh42f43VEIes?q z%c|_XZtzEc-nmDrd+0o|2Zn~0$LI%2ZyO%=QE_ zVP?DTO%UtoqU!PT@oil?BNOquz8gSE*jRuXF(G zel?}sfNgZWUk_`}~p`l%_w?8LM_!AtuC1ARDBMyLs@m~P}0cyHl zkH8LJ&UYP7&p`6Po^x%Wpv>#t+S-~y-OId$fQEkp*Kr1i4gdGYy>3s&&XpH{0V|^W z+VE|I_}wK;%4c;7$)kh|A@{e?4+AXvu(3nd_?YVR4)5gl>QtK$tFaE*G7qJ91MW^P zLsy$T&cUcFDxGM#tHdp{9I5)dVR#p!O)U>euN4=`@!Eg_41i_Gl=CqXcc3yV2igA8 z2@SWvUm_scAtz7zDS?Kblrcc)^5$(oaQIf5hFMeIJO~@H96g_ByFbAAB(3^npO^J+f4S2qYKgQ!$9z#@nZh_ z6H5y1N^eG?z0Ci>o!$UC#U#4Sfi|98SD(7lrqd>{zv5Euo7w|5oS9PxSjC`*d5>BZ z7k3A5pCq{rnQgN!r1jCV9zXBq^<8Qi^U9~+y01+nmv(=q#9MV~USIL4XJsW-Eeui1 z7yff`J*E0}93LNQ+iu(}8B$0645c~jQ=xIuDB(NrZTiQC%j@4afb=vnGNo{KD+ujd zIG2L?SVy269c!ST3>r^&hODI)XIlNPcCC`*oQ-aT&axR1`BM39jCy z=-|QQN22rE!>AMQv8U(p7dHRnt3F5MN*YL_qW4RP&kOO_fX~a}2(EaLUss^%cMaDu z;Oi3b^-v-J6nOGHSn>H>0qwl@x_%GKc?s+Je*XTNn?oG~d~N|gfyaOzAo1V#3GrtE z@M;bxKmS+D_Y>f2a^_=l#SkOBW9IlC+509y;59+u)eG?K)$JDP*SqfbxzDHE_o;x_r?r2Fz}L(Ee}AJnu6toMw`%fhQ}3^bMGc$?Up<*-jT{xmsW-E`s6Gei)|7%DKjSkZaJ#6gA89 zc@C9#Z&#<_3|mD30}~BHwHrtoTkd?B)$Hd>$wy;d*rzI{SJVBC1xAv*gQ_u=1->+N zR0jNsdFP(qBxNb{zZUkS1Ud|4?I2AXllC~T@75&OEy?|VP1_CcdR$Xew2EJa7S~FpbqW%AFZs|j@sQb@?IJj``7Bbml zP*73jww8u9l1RXrlr0pRZ9j)dD@kf|tJ7oOi%N}c-N#C^^K)`(T{ACdObKFB(&_WB z47~ag5t;*rhBs)hH>|)#aQuioZo9Ui-MjK2gyJ0P92pv;{Q{=e1g^Y2`NHK;&DMG! zQY*}TVSbrp(*G9OAsQ9?eItb%{CHNGSw883YDzwFC46cObntNLP9{*G!VycU(I``r zzS{_?lwq*f4iOxI1nZx)e<2Ip2YF3W4LOZSJ8C~4$|bvo?Dt#%3KYj3X84{L1U?st zzh6ec!##I{u(N%>UV;0m#Y%M?kWIMV@pRskUu~)SyuCVt)>}Hb#^Gcu`(a-C`D*Ju!{^?Hh=_>)&JVA_Z^_*0`|ID4S@U@FnsiP!53gam3G=CLo^vu#UYM5@Z7GZE{SQoP zIOU;z@kAQkyl2))(Z#X^_0Nf}S4F#3Cd}u*&Z_L$%cNSITP+>-06rHA3@4gnFiYo? zH=WX^^am_LYBZIafKoN^*#a2!u(xSgvd*L(qU(4C0x=ldMSq6rGd%N%l}Zw^RS!MT zUx_@!tU?6qiXbH-E&UsH0!fiL(yB07v2er}pp$}&m5E-Zy!mQ7p!_PmiUD7*7j^x} zk1d)Xt!-?+?|EuaRF}grWg;NpP8o}tkcFd_Ibo&{5=({YVzFVuaBM|up8UF#93^Xr zNI09DvoToq+6cy9Y6i$ zX`K8qU-K4!{RSz@BoN?qyU|;{O2ptM6hqk#BcMY@ijH<%_M^9Zy}Sff45J4z+h@os zMvkQ+Cui1Rpdf{yew*#cj-3=wMvCDTpPruHcHNJfGQNLUkQ0AYk^)v!Z%Z?DIUY}E zq3UsRak*W!9RtBiTS>ON)Ve#>>l?bd_R6o634uCYm%8o`<_6%ze#uO~PJk-_^3Msc zT}L(mUr)eQ14P3j89P5ntp1YQY_&h`MKE|5FuYdiLO?cwtd^`p{-xoZS*WOM+-x*`n?W~D%UavCG?Q;J_-(^) zcr_{4VnVgHQ^ExRSfV*`WoTO7GHYJAG#3k3 z9Z0%IJb_G3iO^ADkRH+hV(bf$KeR5z^%d_4jMYr&-~_>$G&P+S+*FRva%hh3Ro;a5 zj9T}zlQr@mH4cv2{Qi(v*bW6)HA}F>OgoYV_7UTT9w;~-MmqB*v(wI&R`a?p-pYEy=+_>nR zo7Sym6fNdfqB} z9<_R$?vJKEi3RxiyB&^YdFfN=wcG9XhdudYB6sB|euQRToh?;h^ZDCkJ9&D3M0E$& ztdRb1X9D7=)G6b4T|miQlx`<*aZP1#^f=|l`G)TwBraEx_X-A&7QV+z~V*f!ZVOd~7X9ta9XOb*N$Siz6mM-*2!#HHRjYr7ZLs-A0KC z^^6k`g5Zuv>-0J?T4^}Xg<}>31IdLpNfZm0STRfK4DzT+TXQUzdx&suF`w30%fPx! z0Fih~L$w4@#WJatGRpqiJymV!!t?3#BFYg7H-f?u-B=QL{)@^=d>YoL1qrfRyI}>~ zIoF)K)~%W$MA(=aP*2~jnKGu18#GpwoP_cB6wKX_6~*5}hq_;fz*IQ!Q7%Bc z)A@?`x>P1#%B(ql+VX|f*k*A_H(BRf6n)j&DYWC>1mFjYqSV@Z_2eV&{lg? zt@6NT;XrQ?BU7evzOb$ zE)896mQZ_Et6+Su52Vj~JLtRZYG_yhIbRah)-$~CrK@Lw4U*C8J!QT-s6+97Eb48PT5J}-Y#;o3x%oPrUmq&L}kjQr|WGCHJ z#$I_j0frQOMNy2z!*jnD_+e4YinmexD`8_LD|yy?($&(m`cw3&6aYgUNAZbE<% z*5~tTt0Q8F^ab>)d(F}s(A}k3)jfH>+2!#Jw0gF!TmA#Id>K>S+k$q~hb%d-lf)l= z#Ju;DEC6=irie$GZvNXaIpC>}K4^iLzPj7C9x?8D=Z?=H-IpLB4E}zvsOf%->OQD( zmr*&wsgV7MRsEs-1 zPV_UB^E41pHva{DmdeVN^M-`|OZUs-&rnM}Bd#Px9k;_Ipxx@dho19N1$e9S z`KUu-xTUi zv_$6L&JZuF5|N70Mj$>SureA1foLdIa&V^Hg;|HHcG}n>eL)JjkPE%sq)Z#O_0%Tj zL|&$Fyh2kXLmCnR0}pdcF~x@X3wH(LjyEHp-Mao5hw(eD`Z35h7uLh_DNt2tzcu( zP&!*<6vin|y6wI-ds)>FM>`f%P(plJ{lwMC*p&Oo@>ggUG_y9mO&)kS;~?bUL1lE0 zs}ik4T??D&+xfH24CVCTIDigZVQ3XZfOQo#rB0u4|PpQpTT+Eh}^s(Rn z(8624jXX;r8=heVwJ!c@8?kU3Z7Y>z(`>e#e$Xc#BbsBV0Qqyk!_S1Xla#$y%M1%j z3d1k}q=n(p<q2kV$-q(}v~DnZb$}vgE(+sAkp>zc5q|RLwSlbnPD!4j#ASw31bBg!Zm+L1KHHPRrawq)dcNMi-+%^Y&i6e~O8o7y=DO{$TeAv?L!CRe zAc4-nFC*0zr@V_1H)9*}Q-+?8yYE+l@8h12lV3s(+`Z(RofM?3KJy*-*BR}Uz~CNp zXMa#ZRqaNXjrCC_XQ_gd|I{Sa(f`+5utM-mJ$n)U+m)4MkoJ38(7_MH7B?<&v|zFV zZ)(qJG9b>>dRq~+743{vzLj$bMoHa3DiH1mq@o0;$oh4aO5@@)&W?yhtp_?91V>+n zPTvruZ(NZ-gpMJO=F^U2Nn$##NHq_TaBb(Frfxs7g%SrE_ricf_BOgbi^fh zLEx_#TJaR$^>tGTOtMR1Y4{VY*OP9UemA0+mPmiYWgc@OB7+YI++jZhV}!d9i4SMk zUEj6^E9H3Q?Hy|mXJ>n#F778@$9!SCRv4v}w{Bhf6fZyoghkQ1#6=n$Nj6UrOc_l+ z+W5F>WFs<)0i-pYUs7g+Z!whk*xFPeNo5i1@p6VUoD}u*HK51od>OmvWoXUv>HE{? z8vsNEHuNbI*WX{)KF2%&Hy}WKJFf}J^(`#tpTD?%T+#hrEa7KcM+K8#diDIG96o(V zUuO7QDX)knU7E1VmE0>!Dk^ zzr(vee$HA9i*?Su?`vPNw{S@ykA~%%gWI^3B|+ru!Odys*h7=IGDOfi)cWS#Z=~~F z=ryZ!gcfsmy5V>m0RoQA2kDhtQ5B{gz$!wE`Mn?naTZyBZ6-1S!55AD3Y^>l@Wq~Pbg5t+*2P*cyRR%>v>;y28 za*{^uBJ6u{m(1_(?(W{Mx41Zu19Y2*WGO+1w)OmipA}!D1hhPeMUE-=_iQiR4i~dm zTD?LlQY^lq%tKv5sX&bl=s!0O!aA1enLo)y3v!p-o3-#|e$g6OJNtFtjhG~poi)8eWvH^^rmlh;(rLFR;PVPvLA^!0a+ZOxHlnX1fA+rPw8a` z4-UA4UYbovaCN22!`IgtO7;Tj|(wZaza3i53X`j%>Awt^$b#wqar6>EQTg!j)&M37}5+jd?diD z#dM^p#57gi8iSFQUu8zVgb`Gg(i?3_N1crL(T4K40~?brUYNr3@9@^lv**yfidc#8 zd)%j;*8$Bc<8w8Y;1QevS`xe-|-2bu0VDZHBjf+~@6S;lsb@QM8qxKM}E_5eA`CVsYCth%vxvPKOPxE%T`?cC+ychla|%Z zmx}<_^miYOPijQwSTM-)6&Ng|Is}FIbeJ)KA+0{o&HAlpE5=TU8NoB35Zy2qf%)1U zGZa&L)%)#>S<@@?-GW7~I=)6q&==u#GX+?sSr~O2$ha8Rig?VDvVgMM*8z#m^)-9m@jpcgr);!AOEnEqh3BtD zyWqBHWUY!RwWgKI$w@i2tO@IK1r8l8nP?MM`xf*cyz>3*r>aP!rMude(uy79!t15N zO(UkJQFyl;;SswfU2)&*KAre0@<;X`__Paly_&S^_Q#=W;sSGgy7b2}cb_}*uPfYf zl`%ErP7=JTLJ(!sJexYhtOB@=np0*{t>O^06c~zSpLIIwGOBEgEwZdl#E7 z0@wocsRuJL{$b<6lE4#2-_z&Bl8&5W9k zBFQK>eoXj?gK>ONJBj=cgLpCgu{P9~O#$7dS(z%4o{_nk*wE5&OI0aurz+oc!Md=C<4X)Ax| z6k1RGSST2VV*QN&>q8-TIBihoT+S$;;;Ed|kKX4T`)&(DLRJ$&0+*;?QZgk@g%b8H zoLUL3xrs+UdNqfr2Tgm08BUXT*Z#+X$*)maS&4bM_3{dLxt|42K7|?##kew_)})j$ za8*)DautRR>f_22JUQ32lA62ERpuPXq+6-jSt0X$>pG#-@nsPH0@$rIw+&mWkKgs! z`6(t%Xm!w=P3tsEal|zreX_~L9=CWxRCPx)CW(NErANV1nzCc`Iixo*(nv*jS)y zk%bDYz-pln8HV#QHbTrNBTU6TCLPpMsp|6IUR|Dk%WD+o3=P*r(r8-7i3xZf#zy{5 zvnAE_3gI8!@V<-GY;SUj-1N5Ym)gh(y3bHiQOWl`EWhp86aH9h^bC*{FB+oP8n171 z%sKAETjQIi-m+XBz0wu%s1Oje`uv7mCZj~IwnbmIx3hHQ@B8q(&YOu#jjNolODdd# z9+zJiMIQk_Ws2yJ<&(U?hl3s0dzMu6GTZfA!}&Lr5qOzy?Y)ui zF4}voW45Tj^=8gU2kdd8m!5j_ z$g!ilmkRSWs&VMnzj-*v6iUWjd>cdp58fG*ME>e6ayA)h%v$TZUoz(<3mR%)1M1Yc zr{(QKZUZUozDMeAkcQr@W;J5`XkD)`|G>V~C>OFntyONjH4a0XAwhj7H?q!_aF&3? z3kZsx^e)m~vRp#EP7TEq917Lr8s=zEY`XOz6u`-)a9e(LrcOqmf zq#gvdU8O{lFb>_7!P^RTws3VTMN&|wXJil`AT5l#%jn3tZXK#a`4<|`Yg zx3{kk%GsXM57z{ANCuGWd)%OX$S~?C--{(RA4EJFsmpb55#8W%Zk@V4*h5G?;6pNC z)gx?w$-Bs?S<1)E67etTAo^+Y6jXFSws$i@g6>&gcYv#hu`0w7XnfxqotIf4UIY{& zKyex6oOnv;zTgeKu@1W74Z7r&LECuin_}sP-!OB~?b*v}{-aya=~A=Z7eIOg92&lz zFXj0U<$#)8d&@lkMw$Ri9A7R(Uxvt^Hjv)lS>UUm7QQ?$yh%8~dt`I`A;7Js<_Hk1 zA7(UEgrBdbMIXM23gk~12R&Z{_v!PO*9*}%=EZ-PGv5bzkGrSl?>uyxLt!VGHT4Sr z8-umhtfEqO*@?CcP4UZCVI^RV`rcTH+yvf*{FM}>>&yoIc-J(oFpp8Y+6G~+Olc4_ zbl@f4tyb4;)6MOA>bs0Wl4-m@K0n+{W144W`8npu{guq?&#A+i?=s__pVt|2N2XwL zEP}0~f;&67sOC^k3Cz>x4ANs}WOgB9Ojhg9`PdM~XCn?<%s={z5;jWA#N9jc1lTs{ zg)g>J04q@S+4{pSKP^=jLt$*{0u61NvXqv3^h(Zc!Dp6j8{3p#zQnfm(7dDsI=O;mVbNi%Bu%~+ZLP%zY$yr{>c|Hj8yT$FY>RC9V2tGD)p5MnKRJH9 zm>C+xtq7~f3SO3ty^<@NzH`Qrjmxh?<*o+*2^I1zZGk^e9w=@@40 zlAD_=4A6MMf+&%EB%ubQTGsF&{C7QO_1*wT4?0=m1_3^Xw~Exh{(Sn@ROJW}djm#^ z*M~Pjc<<~f_suiWc@|I`4RE*lch|S_FB{&cNf%irVva5JG*xJA#&YuSO}bFgBk zGMPQHOp_pWNpTErSlS`0!4@N2eci(;t*g&v;kTZxW>Oo)n&{`cjUE0H8Z}s(asE9R zBME;xHhDQHU2@$`2mvtDaxRizZ&QRYo~;)-i|OYnQcZj>+tSQS&J!{Q+d5sOpw zuQ|4q95tG@GVu2cgTiah_Ac-Jd2)VL{kn5MG_-v`-B)v_ zDTUJv!$I{^os~psUZCqw-DhNpJRiL6nU=I7QD=HmlKp$|??P5E{P0zH@4_Fw|< znztnM!!GJexgli*;hyP-_i@1d6(?8Xx2p}nP8;M;VL|6_7ve>lI*`Pf5P3WX$Ndi6j*)hZ$ogQ-AjN z@9Zcj^wy;GDbLgT&>dAzR~6@h&AY@wjI9@718i7 zlndpf(Ty}YO)7A6KPW`NdNStP-VyhOtvX4wmI+(9)P);`IL}eO<6bT^Kv%pG+*JOE zj@ePyhEnxWpezw4y%A5w1x~GRVc3AQH=-C^tem~IpIf7n_ zjy3$@W_x1F)l5@f*^xF09T)R`M1k_BD&11Gzv!iKS4)@Q3Tp#OuANX#NB_(5u~czdoyoK3@Ugnbo*UD1X9y z<(wSPzD;MHEY3nc4HI1qn*L|!`e+^#17lnmd))%?I{D56?aLSc4LEWFLC@0CQeaGW z>6_(_*8mx?9Nt|UQmLpeiSv-%mu=OQspdL5m=J@TMTY(^)8z^dTDb}Lp`Q$Y{+nfM zWDqX*Am!z~n3batSiGSYE*re=TJkYnnK15q<_1v zIneq&yS^HW2nY!aHmi4NE{3XV&Qud2X(9gXQ5_I3^D7iglyr4c`ZK@ANrb(w<00mU z!~VHokg1l%4O7s!#Z#B;YI5k?e&YgB7!`Y=3!C9F`FW&XkDrCy(@7aX*Zh) zNlIJ#Mlx@TU?rLF2kckGBlvQBmGrTO{@-9e$RG;^bsPa<>SHeXSIqvDzugVsfUhuM z7y*xG`!x@_O>kPVT)%a9Ldx2*C$18^e8Z8(yw;(`k;F;uLsvkm>}S4SWP=krRzIfi z(g{xs?64~LeQO_!J&^$>bj;Sn^PkCrW7Bum4;JfQfQ9FBQK)1_C^mqa@^pvT&waqR zn~2JltLR3pSvSXp%2So4ie7>=N?t|@8#}y)im<=r2mT9s9YIh>xBAmL=JO;busZr0 z02Z%zQ(pqF(moo&oNL460UGYz6#4TMfIv(MG@Akc$I;qNODicES!Csw{y+T>bFKSC z{nk2KfEDh{e|dTBCTqgqs(lp@{7Ev-Ip1LF;_SYCL8tuX z3SXgjJj1Ee(0R&!bCg@rl5yi8IUSc)WBtkLA9HoN7eVe3^OL#eC@%)h{`|4mpPZB z)YFzN%(u~Jl1t)1siBYsQ{M#KWSt&#o*8*4@19Xk@N2C$f~gVVz{fZn&bv1!Kbu!a zMpXhu^3j&$Of3>^Ok`}XJ}OaU#E3)9Gbclki||9(K4NArYT0(fSAG8}*MV72nragU zF3KPRM_vRVhxbsBwbk)Vyi3`Ug$`otLcf)Ue5=$#TbG5}HaT&QaF`?07{%@Lm+5H_ z{@k4}l+t9n0a3uBdaPkPoyi6w<07x{#9|dau;%JwdG2@%?K_}92E0=TA2?H)E442l zc(&`NM+h2mGEReOpjS-gFla?3&TtVfiJwpU~FK5qw@fptWmAk!C#uQXO%>xnYv%xOj(#lfCs4_7{>o_Pztkw zAGnGCnOyWG!O4G{XGYz&NJvz)ySce}InDd1ijR<4@rUAKPoZR#K<>Cc53x7!JEDMS zO)eVv1n@-b|Ni~^1E>ptF!6E;6u)KitynEZG&iLi?JCF64vcU8oqY=xtOaZxI@{kx zqRr5x3KA7&AnaV>+75alt~r)avH>uj)Hujei!gFr^LGD&s#2fWoJ??cMOAuor02() z&9l1G&sD}cMivPzEysO-FJIcDmdxU0^@AJcEi54zx8qh+f&y61?W70<-6#q+SNbkK zX;TMhnJxJ6kl_zPSYdJ`r5aQoS@<%q5^y8vnclwmsG0jR$MEn2b_$@P$Lj18)ZqCK zyvYJ2lD1oPe*J^i)KrBFM=^i7(F_q`aM@u;r$TvY7H`pJqSOqtqToPCA{vCmX7ALk&wf}ssTxkGez%$l zUusc5=!|U)p;fQPnY`Pj(Q~v_8PEj9fP)vP8rd2HWxpR_7a><31?R~_%x5}>P3jsK zx?tnZ%YpXkX3;uj{Cr3cAZ(UTDlV6l0-tBfHQqX&?u!H`A%KF>O_z#6=$xvn160Aa zPC!TuI;RWzN9Ux{aI11c^kqm(i{=v(2n{jp!uv`4L&I#^AHB!s+5nb`OQ8FC8OrE> z+G${3zY&H7MO!g1u(2di(h2iPeh1G^U8F5dvwRjpRs1A7;f#Xm8WL>reTuJ-8XWmb zgk^%+m9__8Q$e8Qa<>puy=h}-=ke3wyX*N**_DxwcFhOnv9qk~T%1CeU*F`?JWLE+ zeyI|`<*`85MFvcc$YapwtU`yA`*as7o18APYT!KaFiaEJ#BJ4vej(HC6UK7}^M!|K zwwo1c+GrSe6X23$>GZtwqfoRR6etK6z~0Vh`1%W2GW;G641x8=YK{)yhr_C22;28J z1KAiT#cUITbcR(kC+G$1ycB(uj|VF+&1?qBcul8lTbCRluuzUq8|$8kqQzlQkQk|h z!GD>ANE=|GqL`ZDdbyG_I+hKbz#2MwvcT=fY>wsOzi6clXvt=U!<`ghtBJ04aZmS?7tJC ru)MpV-VJ)3t@w{yDMf+U(0CmZ(+X^*mb9!a8 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 OtEfQ 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

    9}u@=3k5d2M_+CT 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 + ); +} + + +SpecificColorFilter.propTypes = { + circuit: PropTypes.string, +}; + +/*setTimeout(function(){ + console.log("START LAUNCHER"); + //startStreaming(); + UseCamera(); + //declare_webrtcframe(); +}, 15000);*/ + +export default SpecificColorFilter diff --git a/exercises/static/exercises/color_filter_newmanager/react-components/css/ColorFilterRR.css b/exercises/static/exercises/color_filter_newmanager/react-components/css/ColorFilterRR.css new file mode 100644 index 000000000..3bdee7925 --- /dev/null +++ b/exercises/static/exercises/color_filter_newmanager/react-components/css/ColorFilterRR.css @@ -0,0 +1,28 @@ +* { + box-sizing: border-box; +} + +body, html { + width: 100%; height: 100%; +} + +#exercise-container { + position: absolute; + top: 0; left: 0; bottom: 0; right: 0; + overflow: hidden; + display: flex; + flex-direction: column; +} + +#exercise-container #content { + width: 100%; + height: 100%; + overflow: hidden; +} + +#exercise-container #content #content-exercise { + display: flex; + flex-direction: column; + width: 100%; + height: 100%; +} \ No newline at end of file diff --git a/exercises/static/exercises/color_filter_newmanager/react-components/helpers/showImagesColorFilter.js b/exercises/static/exercises/color_filter_newmanager/react-components/helpers/showImagesColorFilter.js new file mode 100644 index 000000000..64f09c734 --- /dev/null +++ b/exercises/static/exercises/color_filter_newmanager/react-components/helpers/showImagesColorFilter.js @@ -0,0 +1,86 @@ + +// To decode the image string we will receive from server +function decode_utf8(s){ + return decodeURIComponent(escape(s)) +} + +let image = new Image(); +let image_camera = new Image(); +// The stream & capture +//var stream = document.getElementById('stream'); +// The video stream +//var cameraStream = null; + +export function drawImage (data){ + var canvas = document.getElementById("gui_canvas"), + context = canvas.getContext('2d') + + // For image object + image.onload = function(){ + update_image(); + } + + // Request Animation Frame to remove the flickers + function update_image(){ + window.requestAnimationFrame(update_image); + context.drawImage(image, 0, 0); + } + + // Parse the Image Data + var image_data = JSON.parse(data.image), + source = decode_utf8(image_data.image), + shape = image_data.shape; + + if(source != ""){ + image.src = "data:image/jpeg;base64," + source; + canvas.width = shape[1]; + canvas.height = shape[0]; + } +} + + +// Start Streaming +/*export function startStreaming() { + +console.log("startStreaming"); + var mediaSupport = 'mediaDevices' in navigator; + + if( mediaSupport && null == cameraStream ) { + + window.navigator.mediaDevices.getUserMedia({video: true}) + .then(function(mediaStream) { + + cameraStream = mediaStream; + videoRef.current.srcObject = mediaStream; + videoRef.current.play(); + console.log("stream play"); + + }) + .catch(function(err) { + + console.log("Unable to access camera: " + err); + //stopStreaming(); + }); + } + else { + + alert('Your browser does not support media devices.'); + + return; + } + //requestAnimationFrame(showImageOutput); + +}*/ + +/*function stopStreaming() { + + if(null != cameraStream) { + + var track = cameraStream.getTracks()[0]; + + track.stop(); + stream.load(); + + cameraStream = null; + } +}*/ diff --git a/exercises/templates/exercises/color_filter_newmanager/exercise.html b/exercises/templates/exercises/color_filter_newmanager/exercise.html new file mode 100644 index 000000000..e8f9e6b5f --- /dev/null +++ b/exercises/templates/exercises/color_filter_newmanager/exercise.html @@ -0,0 +1,33 @@ +{% extends "react_frontend/exercise_base.html" %} +{% load react_component %} + +{% block exercise_header %} +{% endblock %} + +{% block react-content %} + {% react_component exercise/color_filter_newmanager/ColorFilterRR %} + + {% react_component components/wrappers/MaterialBox id="exercise-container" %} + {% react_component components/layout_components/MainAppBar exerciseName="Color Filter" url="https://jderobot.github.io/RoboticsAcademy/exercises/ComputerVision/color_filter"%} + {% react_component components/visualizers/WorldIndicator %} {% end_react_component %} + {% end_react_component %} + {% react_component components/wrappers/MaterialBox id="content" %} + {% react_component components/wrappers/MaterialBox id="content-exercise" %} + {% react_component components/layout_components/ExerciseControl %}{% end_react_component %} + {% react_component components/wrappers/FlexContainer row %} + {% react_component components/wrappers/FlexContainer console %} + {% react_component components/editors/EditorRobot %}{% end_react_component %} + {% react_component components/visualizers/ConsoleViewer%}{% end_react_component %} + {% end_react_component%} + {% react_component components/wrappers/FlexContainer%} + {% react_component components/visualizers/Camera%}{% end_react_component %} + {% react_component exercise/color_filter_newmanager/SpecificColorFilter %} {% end_react_component %} + {% end_react_component %} + {% end_react_component %} + {% end_react_component %} + {% react_component components/message_system/Loading %}{% end_react_component %} + {% react_component components/message_system/Alert %}{% end_react_component %} +{% end_react_component %} +{% end_react_component %} + {% end_react_component %} +{% endblock %} diff --git a/react_frontend/src/components/visualizers/Camera.js b/react_frontend/src/components/visualizers/Camera.js new file mode 100644 index 000000000..0d7a58847 --- /dev/null +++ b/react_frontend/src/components/visualizers/Camera.js @@ -0,0 +1,25 @@ +import React, { useEffect, useRef } from 'react'; +var ws_manager; +function Camera() { + const videoRef = useRef(null); + ws_manager = new WebSocket("ws://" + "127.0.0.1" + ":8765/"); + useEffect(() => { + if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { + navigator.mediaDevices.getUserMedia({ video: true }) + .then(stream => { + if (videoRef.current) { + videoRef.current.srcObject = stream; + } + }) + .catch(err => console.log(err)); + } + }, []); + + return ( +
    + +
    + ); +} + +export default Camera; From fa9e7e3d822c32fb9680e8da336a77e0cd86bd4e Mon Sep 17 00:00:00 2001 From: vanejessi Date: Tue, 17 Dec 2024 22:02:33 +0100 Subject: [PATCH 2/7] Rama con version humble de websocket camera actualizada con lo ultimo --- .../python_template/ros2_humble/GUI.py | 177 ++++++++++-------- .../python_template/ros2_humble/HAL.py | 13 -- .../python_template/ros2_humble/image.png | Bin 62912 -> 0 bytes .../src/components/visualizers/Camera.js | 16 +- 4 files changed, 111 insertions(+), 95 deletions(-) delete mode 100644 exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/image.png diff --git a/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/GUI.py b/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/GUI.py index 783c04c97..6be4d88a5 100644 --- a/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/GUI.py +++ b/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/GUI.py @@ -3,101 +3,118 @@ import base64 import threading import time -import websocket + +from gui_interfaces.general.measuring_threading_gui import MeasuringThreadingGUI from src.manager.ram_logging.log_manager import LogManager from console import start_console import numpy as np -class ThreadingGUI: +# Graphical User Interface Class + +class GUI(MeasuringThreadingGUI): - def __init__(self, host="ws://127.0.0.1:2303", freq=30.0): + def __init__(self, host="ws://127.0.0.1:2303"): + super().__init__(host) # Execution control vars - self.out_period = 1.0 / freq - self.image = None - self.image_lock = threading.Lock() - self.ack = True - self.ack_lock = threading.Lock() - self.running = True + self.image_to_be_shown = None + self.image_to_be_shown_updated = False + self.image_show_lock = threading.Lock() + #self.ack = True + #self.ack_lock = threading.Lock() + #self.running = True self.host = host - self.msg = {"image": ""} - - # Initialize and start the WebSocket client thread - threading.Thread(target=self.run_websocket, daemon=True).start() - - # Initialize and start the image sending thread (GUI out thread) - threading.Thread( - target=self.gui_out_thread, name="gui_out_thread", daemon=True - ).start() - - # Init websocket client - def run_websocket(self): - self.client = websocket.WebSocketApp(self.host, on_message=self.gui_in_thread) - self.client.run_forever(ping_timeout=None, ping_interval=0) + self.payload = {"image": ""} + self.frame_rgb = None + self.start() + # Process incoming messages to the GUI def gui_in_thread(self, ws, message): - - # In this case, messages can be either acks or key strokes + # In this case, incoming msgs can only be acks if "ack" in message: with self.ack_lock: self.ack = True - else: - LogManager.logger.error("Unsupported msg") - - # Process outcoming messages from the GUI - def gui_out_thread(self): - while self.running: - start_time = time.time() - - # Check if a new image should be sent - with self.ack_lock: - with self.image_lock: - if self.ack: - if np.any(self.image): - self.send_image() - self.ack = False - - # Maintain desired frequency - elapsed = time.time() - start_time - sleep_time = max(0, self.out_period - elapsed) - time.sleep(sleep_time) - - # Prepares and send image to the websocket server - def send_image(self): - - if np.any(self.image): - _, encoded_image = cv2.imencode(".JPEG", self.image) - b64 = base64.b64encode(encoded_image).decode("utf-8") - shape = self.image.shape - else: - b64 = None - shape = 0 - - payload= { - "image": b64, - "shape": shape, - } - - self.msg["image"] = json.dumps(payload) - message = json.dumps(self.msg) - try: - if self.client: - self.client.send(message) - except Exception as e: - LogManager.logger.info(f"Error sending message: {e}") - - # Functions to set the next image to be sent - def setImage(self, image): - with self.image_lock: - self.image = image - - + self.ack_frontend = True + elif "pick" in message: + print ("pick") + message_array=np.fromstring(message, dtype=int, sep=',') + message_array.resize(240,320,3) + frame_int64 = message_array + frame_bgr = np.uint8(frame_int64) + self.frame_rgb = cv2.cvtColor(frame_bgr ,cv2.COLOR_BGR2RGB) + + # Prepares and sends a map to the websocket server + def update_gui(self): + + payload = self.payloadImage() + self.payload["image"] = json.dumps(payload) + + message = json.dumps(self.payload) + self.send_to_client(message) + + # Function to prepare image payload + # Encodes the image as a JSON string and sends through the WS + def payloadImage(self): + with self.image_show_lock: + image_to_be_shown_updated = self.image_to_be_shown_updated + image_to_be_shown = self.image_to_be_shown + + image = image_to_be_shown + payload = {'image': '', 'shape': ''} + + if not image_to_be_shown_updated: + return payload + + shape = image.shape + + frame = cv2.imencode('.JPEG', image)[1] + encoded_image = base64.b64encode(frame) + + payload['image'] = encoded_image.decode('utf-8') + payload['shape'] = shape + + with self.image_show_lock: + self.image_to_be_shown_updated = False + + return payload + + # Function for student to call + def showImage(self, image): + with self.image_show_lock: + self.image_to_be_shown = image + self.image_to_be_shown_updated = True + + + def getImage(self): + # TEMPORAL PARA PROBAR EL ENVIO DE IMAGENES + self.frame_rgb = np.ones((240, 320, 3), dtype="uint8") * 0 # Blanco + + # Establecer el texto a mostrar + texto = "Hola" + + # Definir la fuente, tamaño, color y grosor del texto + fuente = cv2.FONT_HERSHEY_SIMPLEX + tamaño_fuente = 1 + color = (255, 0, 0) # Negro + grosor = 2 + + # Obtener el tamaño del texto para centrarlo + (tamaño_texto, _) = cv2.getTextSize(texto, fuente, tamaño_fuente, grosor) + ancho_texto, alto_texto = tamaño_texto + + # Calcular las coordenadas para centrar el texto + pos_x = (self.frame_rgb.shape[1] - ancho_texto) // 2 + pos_y = (self.frame_rgb.shape[0] + alto_texto) // 2 + + # Poner el texto sobre la imagen + cv2.putText(self.frame_rgb, texto, (pos_x, pos_y), fuente, tamaño_fuente, color, grosor) + return self.frame_rgb + host = "ws://127.0.0.1:2303" -gui = ThreadingGUI(host) - +gui = GUI(host) # Redirect the console start_console() @@ -105,6 +122,8 @@ def setImage(self, image): # Expose the user functions def showImage(image): - gui.setImage(image) + gui.showImage(image) +def getImage(): + return gui.getImage() diff --git a/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/HAL.py b/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/HAL.py index 20acd0161..baa47e6df 100644 --- a/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/HAL.py +++ b/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/HAL.py @@ -1,6 +1,4 @@ -import numpy as np import rclpy -import cv2 from jderobot_drones.drone_wrapper import DroneWrapper from jderobot_drones.image_sub import ImageSubscriberNode @@ -12,17 +10,6 @@ rclpy.init() -IMG_WIDTH = 320 -IMG_HEIGHT = 240 - - -# Get Image from ROS Driver Camera -def get_image(): - #image = self.cam.get_frontal_image() - image = cv2.imread('/RoboticsAcademy/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/image.png', cv2.IMREAD_COLOR) - image = cv2.resize(image, (320, 240)) - image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) - return image_rgb diff --git a/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/image.png b/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/image.png deleted file mode 100644 index b95b8b8410041003739b05216e10a3469ff8e295..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62912 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 d`gimnTjuf!W=-+(RPNhn0 { if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { navigator.mediaDevices.getUserMedia({ video: true }) .then(stream => { + // Establecer el stream y asignarlo al video + //setStream(stream); if (videoRef.current) { videoRef.current.srcObject = stream; + try { + window.RoboticsExerciseComponents.commsManager.send("gui", `pick${videoRef.current.srcObject}`) + } catch (error) + { + } } }) .catch(err => console.log(err)); } }, []); + + return (
    From 74208f6a68d71886a4be6780b57b458e62c60f53 Mon Sep 17 00:00:00 2001 From: vanejessi Date: Sat, 28 Dec 2024 12:11:03 +0100 Subject: [PATCH 3/7] =?UTF-8?q?Se=20env=C3=ADa=20la=20imagen=20cada=202=20?= =?UTF-8?q?segundos=20desde=20el=20browser=20al=20componente=20GUI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CODE_OF_CONDUCT.md | 132 ------------------ .../python_template/ros2_humble/GUI.py | 50 +++---- .../react-components/SpecificColorFilter.js | 6 - .../helpers/showImagesColorFilter.js | 49 ------- exercises/templates/exercise_base.html | 2 + .../color_filter_newmanager/exercise.html | 1 + .../src/components/visualizers/Camera.js | 76 +++++++--- 7 files changed, 84 insertions(+), 232 deletions(-) delete mode 100644 CODE_OF_CONDUCT.md diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md deleted file mode 100644 index c5310e488..000000000 --- a/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,132 +0,0 @@ - - -# Code of Conduct - - - -## Our Pledge - -We as members, contributors, and leaders pledge to make participation in our -community a harassment-free experience for everyone, regardless of age, body -size, visible or invisible disability, ethnicity, sex characteristics, gender -identity and expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, religion, or sexual identity -and orientation. - -We pledge to act and interact in ways that contribute to an open, welcoming, -diverse, inclusive, and healthy community. - -## Our Standards - -Examples of behavior that contributes to a positive environment for our -community include: - -* Demonstrating empathy and kindness toward other people -* Being respectful of differing opinions, viewpoints, and experiences -* Giving and gracefully accepting constructive feedback -* Accepting responsibility and apologizing to those affected by our mistakes, - and learning from the experience -* Focusing on what is best not just for us as individuals, but for the - overall community - -Examples of unacceptable behavior include: - -* The use of sexualized language or imagery, and sexual attention or - advances of any kind -* Trolling, insulting or derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or email - address, without their explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Enforcement Responsibilities - -Community leaders are responsible for clarifying and enforcing our standards of -acceptable behavior and will take appropriate and fair corrective action in -response to any behavior that they deem inappropriate, threatening, offensive, -or harmful. - -Community leaders have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions that are -not aligned to this Code of Conduct, and will communicate reasons for moderation -decisions when appropriate. - -## Scope - -This Code of Conduct applies within all community spaces, and also applies when -an individual is officially representing the community in public spaces. -Examples of representing our community include using an official e-mail address, -posting via an official social media account, or acting as an appointed -representative at an online or offline event. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported to the community leaders. - -All complaints will be reviewed and investigated promptly and fairly. - -All community leaders are obligated to respect the privacy and security of the -reporter of any incident. - -## Enforcement Guidelines - -Community leaders will follow these Community Impact Guidelines in determining -the consequences for any action they deem in violation of this Code of Conduct: - -### 1. Correction - -**Community Impact**: Use of inappropriate language or other behavior deemed -unprofessional or unwelcome in the community. - -**Consequence**: A private, written warning from community leaders, providing -clarity around the nature of the violation and an explanation of why the -behavior was inappropriate. A public apology may be requested. - -### 2. Warning - -**Community Impact**: A violation through a single incident or series -of actions. - -**Consequence**: A warning with consequences for continued behavior. No -interaction with the people involved, including unsolicited interaction with -those enforcing the Code of Conduct, for a specified period of time. This -includes avoiding interactions in community spaces as well as external channels -like social media. Violating these terms may lead to a temporary or -permanent ban. - -### 3. Temporary Ban - -**Community Impact**: A serious violation of community standards, including -sustained inappropriate behavior. - -**Consequence**: A temporary ban from any sort of interaction or public -communication with the community for a specified period of time. No public or -private interaction with the people involved, including unsolicited interaction -with those enforcing the Code of Conduct, is allowed during this period. -Violating these terms may lead to a permanent ban. - -### 4. Permanent Ban - -**Community Impact**: Demonstrating a pattern of violation of community -standards, including sustained inappropriate behavior, harassment of an -individual, or aggression toward or disparagement of classes of individuals. - -**Consequence**: A permanent ban from any sort of public interaction within -the community. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], -version 2.0, available at -https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. - -Community Impact Guidelines were inspired by [Mozilla's code of conduct -enforcement ladder](https://github.com/mozilla/diversity). - -[homepage]: https://www.contributor-covenant.org - -For answers to common questions about this code of conduct, see the FAQ at -https://www.contributor-covenant.org/faq. Translations are available at -https://www.contributor-covenant.org/translations. diff --git a/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/GUI.py b/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/GUI.py index 6be4d88a5..68bfa6a67 100644 --- a/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/GUI.py +++ b/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/GUI.py @@ -39,12 +39,22 @@ def gui_in_thread(self, ws, message): self.ack = True self.ack_frontend = True elif "pick" in message: - print ("pick") - message_array=np.fromstring(message, dtype=int, sep=',') - message_array.resize(240,320,3) - frame_int64 = message_array - frame_bgr = np.uint8(frame_int64) - self.frame_rgb = cv2.cvtColor(frame_bgr ,cv2.COLOR_BGR2RGB) + base64_buffer = message[4:] + + if base64_buffer.startswith('data:image/jpeg;base64,'): + base64_buffer = base64_buffer[len('data:image/jpeg;base64,'):] + + # Decodificar la cadena base64 a bytes + image_data = base64.b64decode(base64_buffer) + + # Convertir los bytes a un array de numpy + nparr = np.frombuffer(image_data, np.uint8) + + # Decodificar la imagen (convertirla a formato OpenCV) + img = cv2.imdecode(nparr, cv2.IMREAD_COLOR) + + self.frame_rgb = img + # Prepares and sends a map to the websocket server def update_gui(self): @@ -89,29 +99,13 @@ def showImage(self, image): def getImage(self): - # TEMPORAL PARA PROBAR EL ENVIO DE IMAGENES - self.frame_rgb = np.ones((240, 320, 3), dtype="uint8") * 0 # Blanco - - # Establecer el texto a mostrar - texto = "Hola" - - # Definir la fuente, tamaño, color y grosor del texto - fuente = cv2.FONT_HERSHEY_SIMPLEX - tamaño_fuente = 1 - color = (255, 0, 0) # Negro - grosor = 2 - - # Obtener el tamaño del texto para centrarlo - (tamaño_texto, _) = cv2.getTextSize(texto, fuente, tamaño_fuente, grosor) - ancho_texto, alto_texto = tamaño_texto - - # Calcular las coordenadas para centrar el texto - pos_x = (self.frame_rgb.shape[1] - ancho_texto) // 2 - pos_y = (self.frame_rgb.shape[0] + alto_texto) // 2 + if (self.frame_rgb is None): + # TEMPORAL PARA PROBAR EL ENVIO DE IMAGENES + frame_rgb = np.ones((240, 320, 3), dtype="uint8") * 255 # Blanco - # Poner el texto sobre la imagen - cv2.putText(self.frame_rgb, texto, (pos_x, pos_y), fuente, tamaño_fuente, color, grosor) - return self.frame_rgb + return frame_rgb + else: + return self.frame_rgb host = "ws://127.0.0.1:2303" gui = GUI(host) diff --git a/exercises/static/exercises/color_filter_newmanager/react-components/SpecificColorFilter.js b/exercises/static/exercises/color_filter_newmanager/react-components/SpecificColorFilter.js index 2fd2999da..61e048d5d 100644 --- a/exercises/static/exercises/color_filter_newmanager/react-components/SpecificColorFilter.js +++ b/exercises/static/exercises/color_filter_newmanager/react-components/SpecificColorFilter.js @@ -21,12 +21,6 @@ function SpecificColorFilter(props) { // Send the ACK of the msg window.RoboticsExerciseComponents.commsManager.send("gui", "ack"); }; - - /*return () => { - - // Start Streaming - startStreaming() - };*/ window.RoboticsExerciseComponents.commsManager.subscribe( [window.RoboticsExerciseComponents.commsManager.events.UPDATE], diff --git a/exercises/static/exercises/color_filter_newmanager/react-components/helpers/showImagesColorFilter.js b/exercises/static/exercises/color_filter_newmanager/react-components/helpers/showImagesColorFilter.js index 64f09c734..d677b431a 100644 --- a/exercises/static/exercises/color_filter_newmanager/react-components/helpers/showImagesColorFilter.js +++ b/exercises/static/exercises/color_filter_newmanager/react-components/helpers/showImagesColorFilter.js @@ -6,10 +6,6 @@ function decode_utf8(s){ let image = new Image(); let image_camera = new Image(); -// The stream & capture -//var stream = document.getElementById('stream'); -// The video stream -//var cameraStream = null; export function drawImage (data){ var canvas = document.getElementById("gui_canvas"), @@ -39,48 +35,3 @@ export function drawImage (data){ } -// Start Streaming -/*export function startStreaming() { - -console.log("startStreaming"); - var mediaSupport = 'mediaDevices' in navigator; - - if( mediaSupport && null == cameraStream ) { - - window.navigator.mediaDevices.getUserMedia({video: true}) - .then(function(mediaStream) { - - cameraStream = mediaStream; - videoRef.current.srcObject = mediaStream; - videoRef.current.play(); - console.log("stream play"); - - }) - .catch(function(err) { - - console.log("Unable to access camera: " + err); - //stopStreaming(); - }); - } - else { - - alert('Your browser does not support media devices.'); - - return; - } - //requestAnimationFrame(showImageOutput); - -}*/ - -/*function stopStreaming() { - - if(null != cameraStream) { - - var track = cameraStream.getTracks()[0]; - - track.stop(); - stream.load(); - - cameraStream = null; - } -}*/ diff --git a/exercises/templates/exercise_base.html b/exercises/templates/exercise_base.html index 40b0e9ef0..b2a8996d2 100644 --- a/exercises/templates/exercise_base.html +++ b/exercises/templates/exercise_base.html @@ -5,6 +5,7 @@ + @@ -612,5 +613,6 @@ {% endif %} {% include "info_modal.html" %} {% include "load_modal.html" %} + diff --git a/exercises/templates/exercises/color_filter_newmanager/exercise.html b/exercises/templates/exercises/color_filter_newmanager/exercise.html index e8f9e6b5f..d52067d22 100644 --- a/exercises/templates/exercises/color_filter_newmanager/exercise.html +++ b/exercises/templates/exercises/color_filter_newmanager/exercise.html @@ -2,6 +2,7 @@ {% load react_component %} {% block exercise_header %} + {% endblock %} {% block react-content %} diff --git a/react_frontend/src/components/visualizers/Camera.js b/react_frontend/src/components/visualizers/Camera.js index e58337de9..3d6b06c80 100644 --- a/react_frontend/src/components/visualizers/Camera.js +++ b/react_frontend/src/components/visualizers/Camera.js @@ -1,30 +1,72 @@ import React, { useEffect, useRef, useState} from 'react'; + function Camera() { const videoRef = useRef(null); - const [stream] = useState(null); - + const streamRef = useRef(null); // Usamos useRef para manejar el stream + const [stream, setStream] = useState(null); + // Obtener el stream de la cámara useEffect(() => { - if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { - navigator.mediaDevices.getUserMedia({ video: true }) - .then(stream => { - // Establecer el stream y asignarlo al video - //setStream(stream); - if (videoRef.current) { - videoRef.current.srcObject = stream; - try { - window.RoboticsExerciseComponents.commsManager.send("gui", `pick${videoRef.current.srcObject}`) - } catch (error) - { + const startCamera = () => { + if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { + navigator.mediaDevices.getUserMedia({ video: true }) + .then(stream => { + // Establecer el stream y asignarlo al video + setStream(stream); + if (videoRef.current) { + videoRef.current.srcObject = stream; + streamRef.current = stream; // Guardamos el stream en la referencia + } + }) + .catch(err => console.log(err)); } - } - }) - .catch(err => console.log(err)); + }; + + startCamera(); + + // Limpiar el stream cuando el componente se desmonte + return () => { + if (streamRef,current) { + streamRef.getTracks().forEach(track => track.stop()); + } + }; + }, []); + + // Función para capturar un fotograma del video y convertirlo en una matriz CV_8UC4 + const captureFrame = () => { + const video = videoRef.current; + const canvas = document.createElement('canvas'); + const ctx = canvas.getContext('2d'); + + if (video && canvas && ctx) { + // Establecer el tamaño del canvas igual al tamaño del video + canvas.width = 320; + canvas.height = 240; + + // Dibujar el frame del video en el canvas + ctx.drawImage(video, 0, 0, canvas.width, canvas.height); + + // Obtener los datos de la imagen (array de píxeles RGBA) + const imageDataURL = canvas.toDataURL('image/jpeg'); + // Codificamos en base64 + // Enviar la matriz por WebSocket + window.RoboticsExerciseComponents.commsManager.send("gui", `pick${imageDataURL}`); + + } + }; + + // Llamar a captureFrame cada 100 ms para enviar imágenes de la cámara + useEffect(() => { + const interval = setInterval(() => { + captureFrame(); + }, 2000); // 10 fotogramas por segundo (100 ms) + + return () => clearInterval(interval); }, []); - + return (
    From ab0a0c1b64af2d02c850a5c3b1d6285841ef3ac3 Mon Sep 17 00:00:00 2001 From: vanejessi Date: Sat, 11 Jan 2025 17:02:10 +0100 Subject: [PATCH 4/7] Limpieza codigo --- .../python_template/ros2_humble/GUI.py | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/GUI.py b/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/GUI.py index 68bfa6a67..277d0c2df 100644 --- a/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/GUI.py +++ b/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/GUI.py @@ -21,10 +21,6 @@ def __init__(self, host="ws://127.0.0.1:2303"): self.image_to_be_shown = None self.image_to_be_shown_updated = False self.image_show_lock = threading.Lock() - #self.ack = True - #self.ack_lock = threading.Lock() - #self.running = True - self.host = host self.payload = {"image": ""} self.frame_rgb = None @@ -33,12 +29,8 @@ def __init__(self, host="ws://127.0.0.1:2303"): # Process incoming messages to the GUI def gui_in_thread(self, ws, message): - # In this case, incoming msgs can only be acks - if "ack" in message: - with self.ack_lock: - self.ack = True - self.ack_frontend = True - elif "pick" in message: + # In this case + if "pick" in message: base64_buffer = message[4:] if base64_buffer.startswith('data:image/jpeg;base64,'): From 3b5a9cfc1e514a348058f429f05dc3f3a87d6e79 Mon Sep 17 00:00:00 2001 From: vanejessi Date: Sun, 12 Jan 2025 17:58:26 +0100 Subject: [PATCH 5/7] =?UTF-8?q?a=C3=B1adido=20envio=20de=20ack=20y=20recep?= =?UTF-8?q?cion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../python_template/ros2_humble/GUI.py | 1 + .../react-components/SpecificColorFilter.js | 2 +- .../src/components/visualizers/Camera.js | 25 ++++++++++++++++++- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/GUI.py b/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/GUI.py index 277d0c2df..25944c42d 100644 --- a/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/GUI.py +++ b/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/GUI.py @@ -46,6 +46,7 @@ def gui_in_thread(self, ws, message): img = cv2.imdecode(nparr, cv2.IMREAD_COLOR) self.frame_rgb = img + self.send_to_client("ack") # Prepares and sends a map to the websocket server diff --git a/exercises/static/exercises/color_filter_newmanager/react-components/SpecificColorFilter.js b/exercises/static/exercises/color_filter_newmanager/react-components/SpecificColorFilter.js index 61e048d5d..cd9ba960e 100644 --- a/exercises/static/exercises/color_filter_newmanager/react-components/SpecificColorFilter.js +++ b/exercises/static/exercises/color_filter_newmanager/react-components/SpecificColorFilter.js @@ -12,7 +12,7 @@ function SpecificColorFilter(props) { // Start Streaming //startStreaming() const callback = (message) => { - console.log(message); + //console.log(message); if (message.data.update.image) { drawImage(message.data.update); diff --git a/react_frontend/src/components/visualizers/Camera.js b/react_frontend/src/components/visualizers/Camera.js index 3d6b06c80..f0e3d3805 100644 --- a/react_frontend/src/components/visualizers/Camera.js +++ b/react_frontend/src/components/visualizers/Camera.js @@ -52,7 +52,6 @@ function Camera() { // Enviar la matriz por WebSocket window.RoboticsExerciseComponents.commsManager.send("gui", `pick${imageDataURL}`); - } }; @@ -66,6 +65,30 @@ function Camera() { }, []); + + React.useEffect(() => { + // Callback para recibir el 'ACK' + const ackCallback = (ackMessage) => { + console.log("ACK recibido:", ackMessage); + // Aquí puedes manejar lo que ocurre cuando recibes el ACK + // Por ejemplo, podrías actualizar el estado o mostrar un mensaje + }; + + // Suscribirse al evento 'ACK' para recibir la confirmación de respuesta + window.RoboticsExerciseComponents.commsManager.subscribe( + ["ack"], // Aquí se asume que el "ack" es un evento que se dispara con la respuesta + ackCallback + ); + + // Limpiar las suscripciones cuando el componente se desmonte + return () => { + // Desuscribirse también del evento de "ACK" + window.RoboticsExerciseComponents.commsManager.unsubscribe( + ["ack"], + ackCallback + ); + }; + }, []); return (
    From 93ee12f183cec13bf64065604433d0ce566caa78 Mon Sep 17 00:00:00 2001 From: vanejessi Date: Sun, 12 Jan 2025 18:51:46 +0100 Subject: [PATCH 6/7] cambio ack --- .../python_template/ros2_humble/GUI.py | 3 ++- .../color_filter_newmanager/exercise.html | 1 - .../src/components/visualizers/Camera.js | 21 ++++++++++++------- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/GUI.py b/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/GUI.py index 25944c42d..dcf6691ed 100644 --- a/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/GUI.py +++ b/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/GUI.py @@ -46,7 +46,8 @@ def gui_in_thread(self, ws, message): img = cv2.imdecode(nparr, cv2.IMREAD_COLOR) self.frame_rgb = img - self.send_to_client("ack") + ack_message = {'ack_img': 'ack'} + self.send_to_client(json.dumps(ack_message)) # Prepares and sends a map to the websocket server diff --git a/exercises/templates/exercises/color_filter_newmanager/exercise.html b/exercises/templates/exercises/color_filter_newmanager/exercise.html index d52067d22..e8f9e6b5f 100644 --- a/exercises/templates/exercises/color_filter_newmanager/exercise.html +++ b/exercises/templates/exercises/color_filter_newmanager/exercise.html @@ -2,7 +2,6 @@ {% load react_component %} {% block exercise_header %} - {% endblock %} {% block react-content %} diff --git a/react_frontend/src/components/visualizers/Camera.js b/react_frontend/src/components/visualizers/Camera.js index f0e3d3805..18b8ef719 100644 --- a/react_frontend/src/components/visualizers/Camera.js +++ b/react_frontend/src/components/visualizers/Camera.js @@ -68,25 +68,32 @@ function Camera() { React.useEffect(() => { // Callback para recibir el 'ACK' - const ackCallback = (ackMessage) => { - console.log("ACK recibido:", ackMessage); + const callback = (message) => { + console.log("ACK recibido:", message); + const update = message.data.update; + if (update.ack_img) + { + console.log("ACK recibido 1:", message); + } // Aquí puedes manejar lo que ocurre cuando recibes el ACK // Por ejemplo, podrías actualizar el estado o mostrar un mensaje }; // Suscribirse al evento 'ACK' para recibir la confirmación de respuesta window.RoboticsExerciseComponents.commsManager.subscribe( - ["ack"], // Aquí se asume que el "ack" es un evento que se dispara con la respuesta - ackCallback + [window.RoboticsExerciseComponents.commsManager.events.UPDATE], // Aquí se asume que el "ack" es un evento que se dispara con la respuesta + callback ); - + console.log("Suscripción a 'ack' completada"); // Limpiar las suscripciones cuando el componente se desmonte return () => { + console.log("Desuscribiendo de 'ack' events"); // Desuscribirse también del evento de "ACK" window.RoboticsExerciseComponents.commsManager.unsubscribe( - ["ack"], - ackCallback + [window.RoboticsExerciseComponents.commsManager.events.UPDATE], + callback ); + console.log("Desuscripción de 'ack' completada"); }; }, []); From ee52b20b4add3b090cec069624eafc326741e163 Mon Sep 17 00:00:00 2001 From: code_zerro Date: Mon, 13 Jan 2025 17:05:00 +0600 Subject: [PATCH 7/7] update camera framerate --- .../react-components/SpecificColorFilter.js | 85 +++++----- react_frontend/package.json | 3 +- .../src/components/visualizers/Camera.js | 153 ++++++++++-------- scripts/yarn.lock | 4 + 4 files changed, 140 insertions(+), 105 deletions(-) create mode 100644 scripts/yarn.lock diff --git a/exercises/static/exercises/color_filter_newmanager/react-components/SpecificColorFilter.js b/exercises/static/exercises/color_filter_newmanager/react-components/SpecificColorFilter.js index cd9ba960e..8be47e7e9 100644 --- a/exercises/static/exercises/color_filter_newmanager/react-components/SpecificColorFilter.js +++ b/exercises/static/exercises/color_filter_newmanager/react-components/SpecificColorFilter.js @@ -1,54 +1,61 @@ import * as React from "react"; import PropTypes from "prop-types"; -import {drawImage, startStreaming} from "./helpers/showImagesColorFilter"; +import { drawImage, startStreaming } from "./helpers/showImagesColorFilter"; // The stream & capture //var stream = document.getElementById('stream'); +function decode_utf8(s) { + return decodeURIComponent(escape(s)); +} +function SpecificColorFilter(props) { + const [image, setImage] = React.useState(null); + const [imageData, setImageData] = React.useState(""); + React.useEffect(() => { + console.log("TestShowScreen subscribing to ['update'] events"); + // Start Streaming + //startStreaming() + const callback = (message) => { + // console.log(message); + if (message.data.update.image) { + // drawImage(message.data.update); -function SpecificColorFilter(props) { - const [image, setImage] = React.useState(null) - React.useEffect(() => { - console.log("TestShowScreen subscribing to ['update'] events"); - // Start Streaming - //startStreaming() - const callback = (message) => { - //console.log(message); - - if (message.data.update.image) { - drawImage(message.data.update); - } - - // Send the ACK of the msg - window.RoboticsExerciseComponents.commsManager.send("gui", "ack"); - }; - - window.RoboticsExerciseComponents.commsManager.subscribe( - [window.RoboticsExerciseComponents.commsManager.events.UPDATE], - callback - ); + let image_data = JSON.parse(message.data.update.image); + let source = decode_utf8(image_data.image); - return () => { - console.log("TestShowScreen unsubscribing from ['state-changed'] events"); - window.RoboticsExerciseComponents.commsManager.unsubscribe( - [window.RoboticsExerciseComponents.commsManager.events.UPDATE], - callback - ); - }; - }, []); + if (source.length > 0) + setImageData(`data:image/jpeg;base64,${source}`); + } + // Send the ACK of the msg + window.RoboticsExerciseComponents.commsManager.send("gui", "ack"); + }; + window.RoboticsExerciseComponents.commsManager.subscribe( + [window.RoboticsExerciseComponents.commsManager.events.UPDATE], + callback + ); - return ( -
    - -
    - ); -} + return () => { + console.log( + "TestShowScreen unsubscribing from ['state-changed'] events" + ); + window.RoboticsExerciseComponents.commsManager.unsubscribe( + [window.RoboticsExerciseComponents.commsManager.events.UPDATE], + callback + ); + }; + }, []); + return ( +
    + {/* */} + {imageData && } +
    + ); +} SpecificColorFilter.propTypes = { - circuit: PropTypes.string, + circuit: PropTypes.string, }; /*setTimeout(function(){ @@ -58,4 +65,4 @@ SpecificColorFilter.propTypes = { //declare_webrtcframe(); }, 15000);*/ -export default SpecificColorFilter +export default SpecificColorFilter; diff --git a/react_frontend/package.json b/react_frontend/package.json index 7186bb74a..2d9966664 100644 --- a/react_frontend/package.json +++ b/react_frontend/package.json @@ -62,5 +62,6 @@ "styled-components": "^5.3.6", "three": "^0.144.0", "uuid": "^9.0.0" - } + }, + "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e" } diff --git a/react_frontend/src/components/visualizers/Camera.js b/react_frontend/src/components/visualizers/Camera.js index 18b8ef719..615194ad9 100644 --- a/react_frontend/src/components/visualizers/Camera.js +++ b/react_frontend/src/components/visualizers/Camera.js @@ -1,104 +1,127 @@ -import React, { useEffect, useRef, useState} from 'react'; - +import React, { useEffect, useRef, useState } from "react"; function Camera() { + const commsManager = window.RoboticsExerciseComponents.commsManager; const videoRef = useRef(null); - const streamRef = useRef(null); // Usamos useRef para manejar el stream + const streamRef = useRef(null); // Usamos useRef para manejar el stream const [stream, setStream] = useState(null); + const [readyCamera, setReadyCamera] = useState(false); + const [pauseCamera, setPauseCamera] = useState(false); + // Obtener el stream de la cámara useEffect(() => { + if (!readyCamera) return; + const startCamera = () => { - if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { - navigator.mediaDevices.getUserMedia({ video: true }) - .then(stream => { - // Establecer el stream y asignarlo al video - setStream(stream); - if (videoRef.current) { - videoRef.current.srcObject = stream; - streamRef.current = stream; // Guardamos el stream en la referencia - } - }) - .catch(err => console.log(err)); - } + const frameRate = 20; + const constraints = { + video: { + frameRate: { ideal: frameRate, min: frameRate, max: frameRate }, + }, + audio: false, + }; + if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { + navigator.mediaDevices + .getUserMedia({ video: true, audio: false }) + .then((stream) => { + // Establecer el stream y asignarlo al video + setStream(stream); + if (videoRef.current) { + videoRef.current.srcObject = stream; + streamRef.current = stream; // Guardamos el stream en la referencia + } + }) + .catch((err) => console.log(err)); + } }; startCamera(); - - // Limpiar el stream cuando el componente se desmonte + + // Limpiar el stream cuando el componente se desmonte return () => { - if (streamRef,current) { - streamRef.getTracks().forEach(track => track.stop()); + if ((streamRef, current)) { + streamRef.getTracks().forEach((track) => track.stop()); } }; - }, []); + }, [readyCamera]); // Función para capturar un fotograma del video y convertirlo en una matriz CV_8UC4 const captureFrame = () => { const video = videoRef.current; - const canvas = document.createElement('canvas'); - const ctx = canvas.getContext('2d'); + const canvas = document.createElement("canvas"); + const ctx = canvas.getContext("2d"); if (video && canvas && ctx) { // Establecer el tamaño del canvas igual al tamaño del video canvas.width = 320; canvas.height = 240; - + // Dibujar el frame del video en el canvas ctx.drawImage(video, 0, 0, canvas.width, canvas.height); // Obtener los datos de la imagen (array de píxeles RGBA) - const imageDataURL = canvas.toDataURL('image/jpeg'); + const imageDataURL = canvas.toDataURL("image/jpeg"); // Codificamos en base64 // Enviar la matriz por WebSocket - window.RoboticsExerciseComponents.commsManager.send("gui", `pick${imageDataURL}`); - + window.RoboticsExerciseComponents.commsManager.send( + "gui", + `pick${imageDataURL}` + ); } }; // Llamar a captureFrame cada 100 ms para enviar imágenes de la cámara useEffect(() => { - const interval = setInterval(() => { - captureFrame(); - }, 2000); // 10 fotogramas por segundo (100 ms) + if (readyCamera && !pauseCamera) { + const interval = setInterval(() => { + captureFrame(); + }, 0); + return () => { + clearInterval(interval); + }; + } + }, [readyCamera, pauseCamera]); - return () => clearInterval(interval); + useEffect(() => { + const callback = (message) => { + if ( + message.data.state === "visualization_ready" || + message.data.state === "application_running" + ) { + setReadyCamera(true); + setPauseCamera(false); + } else if (message.data.state === "paused") { + setPauseCamera(true); + } + }; + commsManager.subscribe([commsManager.events.STATE_CHANGED], callback); + + return () => { + commsManager.unsubscribe([commsManager.events.STATE_CHANGED], callback); + }; }, []); - - - - React.useEffect(() => { - // Callback para recibir el 'ACK' - const callback = (message) => { - console.log("ACK recibido:", message); - const update = message.data.update; - if (update.ack_img) - { - console.log("ACK recibido 1:", message); - } - // Aquí puedes manejar lo que ocurre cuando recibes el ACK - // Por ejemplo, podrías actualizar el estado o mostrar un mensaje - }; - - // Suscribirse al evento 'ACK' para recibir la confirmación de respuesta - window.RoboticsExerciseComponents.commsManager.subscribe( - [window.RoboticsExerciseComponents.commsManager.events.UPDATE], // Aquí se asume que el "ack" es un evento que se dispara con la respuesta - callback - ); - console.log("Suscripción a 'ack' completada"); - // Limpiar las suscripciones cuando el componente se desmonte - return () => { - console.log("Desuscribiendo de 'ack' events"); - // Desuscribirse también del evento de "ACK" - window.RoboticsExerciseComponents.commsManager.unsubscribe( - [window.RoboticsExerciseComponents.commsManager.events.UPDATE], - callback - ); - console.log("Desuscripción de 'ack' completada"); - }; - }, []); - + + // ack (you can get response from update_gui() in GUI.py) + useEffect(() => { + const callback = (message) => { + console.log("message ", message); + }; + window.RoboticsExerciseComponents.commsManager.subscribe( + [window.RoboticsExerciseComponents.commsManager.events.UPDATE], + callback + ); + + return () => { + console.log("TestShowScreen unsubscribing from ['state-changed'] events"); + window.RoboticsExerciseComponents.commsManager.unsubscribe( + [window.RoboticsExerciseComponents.commsManager.events.UPDATE], + callback + ); + }; + }, []); + return ( -
    +
    ); diff --git a/scripts/yarn.lock b/scripts/yarn.lock new file mode 100644 index 000000000..fb57ccd13 --- /dev/null +++ b/scripts/yarn.lock @@ -0,0 +1,4 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + +

    -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 + + + + + + + + + + + + + + + + + + + + + + + diff --git a/exercises/static/exercises/color_filter_newmanager/launch/ros1_noetic/launch.py b/exercises/static/exercises/color_filter_newmanager/launch/ros1_noetic/launch.py new file mode 100644 index 000000000..0f0b852f1 --- /dev/null +++ b/exercises/static/exercises/color_filter_newmanager/launch/ros1_noetic/launch.py @@ -0,0 +1,134 @@ +#!/usr/bin/env python3 + +import stat +import rospy +import os +from subprocess import Popen, PIPE + + +# If DRI_NAME is not set by user, use card0 +DRI_PATH = os.path.join("/dev/dri", os.environ.get("DRI_NAME", "card0")) +EXERCISE = "rescue_people_newmanager" +TIMEOUT = 30 +MAX_ATTEMPT = 2 + + +# Check if acceleration can be enabled +def check_device(device_path): + try: + return stat.S_ISCHR(os.lstat(device_path)[stat.ST_MODE]) + except: + return False + + +# Spawn new process +def spawn_process(args, insert_vglrun=False): + if insert_vglrun: + args.insert(0, "vglrun") + process = Popen(args, stdout=PIPE, bufsize=1, universal_newlines=True) + return process + + +class Test(): + def gazebo(self): + rospy.logwarn("[GAZEBO] Launching") + try: + rospy.wait_for_service("/gazebo/get_model_properties", TIMEOUT) + return True + except rospy.ROSException: + return False + + def px4(self): + rospy.logwarn("[PX4-SITL] Launching") + start_time = rospy.get_time() + args = ["./PX4-Autopilot/build/px4_sitl_default/bin/px4-commander", + "--instance", "0", "check"] + while rospy.get_time() - start_time < TIMEOUT: + process = spawn_process(args, insert_vglrun=False) + with process.stdout: + for line in iter(process.stdout.readline, ''): + if ("Prearm check: OK" in line): + return True + rospy.sleep(2) + return False + + def mavros(self, ns=""): + rospy.logwarn("[MAVROS] Launching") + try: + rospy.wait_for_service(ns + "/mavros/cmd/arming", TIMEOUT) + return True + except rospy.ROSException: + return False + + +class Launch(): + def __init__(self): + self.test = Test() + self.acceleration_enabled = check_device(DRI_PATH) + + # Start roscore + args = ["/opt/ros/noetic/bin/roscore"] + spawn_process(args, insert_vglrun=False) + + rospy.init_node("launch", anonymous=True) + + def start(self): + ######## LAUNCH GAZEBO ######## + args = ["/opt/ros/noetic/bin/roslaunch", + "/RoboticsAcademy/exercises/static/exercises/" + + EXERCISE + "/launch/ros1_noetic/gazebo.launch", + "--wait", + "--log" + ] + + attempt = 1 + while True: + spawn_process(args, insert_vglrun=self.acceleration_enabled) + if self.test.gazebo() == True: + break + if attempt == MAX_ATTEMPT: + rospy.logerr("[GAZEBO] Launch Failed") + return + attempt = attempt + 1 + + ######## LAUNCH PX4 ######## + args = ["/opt/ros/noetic/bin/roslaunch", + "/RoboticsAcademy/exercises/static/exercises/" + + EXERCISE + "/launch/ros1_noetic/px4.launch", + "--log" + ] + + attempt = 1 + while True: + spawn_process(args, insert_vglrun=self.acceleration_enabled) + if self.test.px4() == True: + break + if attempt == MAX_ATTEMPT: + rospy.logerr("[PX4] Launch Failed") + return + attempt = attempt + 1 + + ######## LAUNCH MAVROS ######## + args = ["/opt/ros/noetic/bin/roslaunch", + "/RoboticsAcademy/exercises/static/exercises/" + + EXERCISE + "/launch/ros1_noetic/mavros.launch", + "--log" + ] + + attempt = 1 + while True: + spawn_process(args, insert_vglrun=self.acceleration_enabled) + if self.test.mavros() == True: + break + if attempt == MAX_ATTEMPT: + rospy.logerr("[MAVROS] Launch Failed") + return + attempt = attempt + 1 + + +if __name__ == "__main__": + launch = Launch() + launch.start() + + with open("/drones_launch.log", "w") as f: + f.write("success") diff --git a/exercises/static/exercises/color_filter_newmanager/launch/ros1_noetic/mavros.launch b/exercises/static/exercises/color_filter_newmanager/launch/ros1_noetic/mavros.launch new file mode 100644 index 000000000..b899c0ec1 --- /dev/null +++ b/exercises/static/exercises/color_filter_newmanager/launch/ros1_noetic/mavros.launch @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/exercises/static/exercises/color_filter_newmanager/launch/ros1_noetic/px4.launch b/exercises/static/exercises/color_filter_newmanager/launch/ros1_noetic/px4.launch new file mode 100644 index 000000000..bb3f656b5 --- /dev/null +++ b/exercises/static/exercises/color_filter_newmanager/launch/ros1_noetic/px4.launch @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/exercises/static/exercises/color_filter_newmanager/launch/ros1_noetic/rescue_people.launch b/exercises/static/exercises/color_filter_newmanager/launch/ros1_noetic/rescue_people.launch new file mode 100644 index 000000000..2a43e7841 --- /dev/null +++ b/exercises/static/exercises/color_filter_newmanager/launch/ros1_noetic/rescue_people.launch @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/exercises/static/exercises/color_filter_newmanager/launch/ros1_noetic/unified_launchs.launch b/exercises/static/exercises/color_filter_newmanager/launch/ros1_noetic/unified_launchs.launch new file mode 100644 index 000000000..97d270ccf --- /dev/null +++ b/exercises/static/exercises/color_filter_newmanager/launch/ros1_noetic/unified_launchs.launch @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/exercises/static/exercises/color_filter_newmanager/launch/ros2_humble/world.json b/exercises/static/exercises/color_filter_newmanager/launch/ros2_humble/world.json new file mode 100644 index 000000000..40ecb612f --- /dev/null +++ b/exercises/static/exercises/color_filter_newmanager/launch/ros2_humble/world.json @@ -0,0 +1,9 @@ +{ + "world": "rescue_people", + "drones": [ + { + "model": "iris_dual_cam", + "pose": [ 0.0, 0.0, 1.45, 0.0] + } + ] +} \ No newline at end of file diff --git a/exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/console.py b/exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/console.py new file mode 100644 index 000000000..7b72a0913 --- /dev/null +++ b/exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/console.py @@ -0,0 +1,20 @@ +# Functions to start and close console +import os +import sys + + +def start_console(): + # Get all the file descriptors and choose the latest one + fds = os.listdir("/dev/pts/") + fds.sort() + console_fd = fds[-2] + + sys.stderr = open('/dev/pts/' + console_fd, 'w') + sys.stdout = open('/dev/pts/' + console_fd, 'w') + sys.stdin = open('/dev/pts/' + console_fd, 'w') + + +def close_console(): + sys.stderr.close() + sys.stdout.close() + sys.stdin.close() diff --git a/exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/exercise.py b/exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/exercise.py new file mode 100644 index 000000000..98edbe8da --- /dev/null +++ b/exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/exercise.py @@ -0,0 +1,365 @@ +#!/usr/bin/env python + +from __future__ import print_function + +from websocket_server import WebsocketServer +import time +import threading +import subprocess +import sys +from datetime import datetime +import re +import json +import importlib + +import os + +import rospy +from std_srvs.srv import Empty + +from gui import GUI, ThreadGUI +from hal import HAL +from console import start_console, close_console + + +class Template: + # Initialize class variables + # self.ideal_cycle to run an execution for at least 1 second + # self.process for the current running process + def __init__(self): + self.measure_thread = None + self.thread = None + self.reload = False + self.stop_brain = True + self.user_code = "" + + # Time variables + self.ideal_cycle = 80 + self.measured_cycle = 80 + self.iteration_counter = 0 + self.real_time_factor = 0 + self.frequency_message = {'brain': '', 'gui': '', 'rtf': ''} + + self.server = None + self.client = None + self.host = sys.argv[1] + + # Initialize the GUI, HAL and Console behind the scenes + self.hal = HAL() + self.gui = GUI(self.host) + + # Function to parse the code + # A few assumptions: + # 1. The user always passes sequential and iterative codes + # 2. Only a single infinite loop + def parse_code(self, source_code): + sequential_code, iterative_code = self.seperate_seq_iter(source_code) + return iterative_code, sequential_code + + # Function to separate the iterative and sequential code + def seperate_seq_iter(self, source_code): + if source_code == "": + return "", "" + + # Search for an instance of while True + infinite_loop = re.search(r'[^ ]while\s*\(\s*True\s*\)\s*:|[^ ]while\s*True\s*:|[^ ]while\s*1\s*:|[^ ]while\s*\(\s*1\s*\)\s*:', source_code) + + # Separate the content inside while True and the other + # (Separating the sequential and iterative part!) + try: + start_index = infinite_loop.start() + iterative_code = source_code[start_index:] + sequential_code = source_code[:start_index] + + # Remove while True: syntax from the code + # And remove the the 4 spaces indentation before each command + iterative_code = re.sub(r'[^ ]while\s*\(\s*True\s*\)\s*:|[^ ]while\s*True\s*:|[^ ]while\s*1\s*:|[^ ]while\s*\(\s*1\s*\)\s*:', '', iterative_code) + # Add newlines to match line on bug report + extra_lines = sequential_code.count('\n') + while (extra_lines >= 0): + iterative_code = '\n' + iterative_code + extra_lines -= 1 + iterative_code = re.sub(r'^[ ]{4}', '', iterative_code, flags=re.M) + + except: + sequential_code = source_code + iterative_code = "" + + return sequential_code, iterative_code + + # The process function + def process_code(self, source_code): + # Redirect the information to console + start_console() + + iterative_code, sequential_code = self.parse_code(source_code) + + # print(sequential_code) + # print(iterative_code) + + # The Python exec function + # Run the sequential part + gui_module, hal_module = self.generate_modules() + reference_environment = {"GUI": gui_module, "HAL": hal_module} + self.stop_brain = False + while (self.stop_brain == True): + if (self.reload == True): + return + time.sleep(0.1) + exec(sequential_code, reference_environment) + time.sleep(1) + + # Run the iterative part inside template + # and keep the check for flag + while self.reload == False: + while (self.stop_brain == True): + if (self.reload == True): + return + time.sleep(0.1) + + start_time = datetime.now() + + # Execute the iterative portion + exec(iterative_code, reference_environment) + + # Template specifics to run! + finish_time = datetime.now() + dt = finish_time - start_time + ms = (dt.days * 24 * 60 * 60 + dt.seconds) * 1000 + dt.microseconds / 1000.0 + + # Keep updating the iteration counter + if (iterative_code == ""): + self.iteration_counter = 0 + else: + self.iteration_counter = self.iteration_counter + 1 + + # The code should be run for atleast the target time step + # If it's less put to sleep + if (ms < self.ideal_cycle): + time.sleep((self.ideal_cycle - ms) / 1000.0) + + close_console() + print("Current Thread Joined!") + + # Function to generate the modules for use in ACE Editor + def generate_modules(self): + # Define HAL module + hal_module = importlib.util.module_from_spec(importlib.machinery.ModuleSpec("HAL", None)) + hal_module.HAL = importlib.util.module_from_spec(importlib.machinery.ModuleSpec("HAL", None)) + # hal_module.drone = imp.new_module("drone") + # motors# hal_module.HAL.motors = imp.new_module("motors") + + # Add HAL functions + hal_module.HAL.get_frontal_image = self.hal.get_frontal_image + hal_module.HAL.get_ventral_image = self.hal.get_ventral_image + hal_module.HAL.get_position = self.hal.get_position + hal_module.HAL.get_velocity = self.hal.get_velocity + hal_module.HAL.get_yaw_rate = self.hal.get_yaw_rate + hal_module.HAL.get_orientation = self.hal.get_orientation + hal_module.HAL.get_roll = self.hal.get_roll + hal_module.HAL.get_pitch = self.hal.get_pitch + hal_module.HAL.get_yaw = self.hal.get_yaw + hal_module.HAL.get_landed_state = self.hal.get_landed_state + hal_module.HAL.set_cmd_pos = self.hal.set_cmd_pos + hal_module.HAL.set_cmd_vel = self.hal.set_cmd_vel + hal_module.HAL.set_cmd_mix = self.hal.set_cmd_mix + hal_module.HAL.takeoff = self.hal.takeoff + hal_module.HAL.land = self.hal.land + + # Define GUI module + gui_module = importlib.util.module_from_spec(importlib.machinery.ModuleSpec("GUI", None)) + gui_module.GUI = importlib.util.module_from_spec(importlib.machinery.ModuleSpec("GUI", None)) + + # Add GUI functions + gui_module.GUI.showImage = self.gui.showImage + gui_module.GUI.showLeftImage = self.gui.showLeftImage + + # Adding modules to system + # Protip: The names should be different from + # other modules, otherwise some errors + sys.modules["HAL"] = hal_module + sys.modules["GUI"] = gui_module + + return gui_module, hal_module + + # Function to measure the frequency of iterations + def measure_frequency(self): + previous_time = datetime.now() + # An infinite loop + while True: + # Sleep for 2 seconds + time.sleep(2) + + # Measure the current time and subtract from the previous time to get real time interval + current_time = datetime.now() + dt = current_time - previous_time + ms = (dt.days * 24 * 60 * 60 + dt.seconds) * 1000 + dt.microseconds / 1000.0 + previous_time = current_time + + # Get the time period + try: + # Division by zero + self.measured_cycle = ms / self.iteration_counter + except: + self.measured_cycle = 0 + + # Reset the counter + self.iteration_counter = 0 + + # Send to client + self.send_frequency_message() + + # Function to generate and send frequency messages + def send_frequency_message(self): + # This function generates and sends frequency measures of the brain and gui + brain_frequency = 0; gui_frequency = 0 + try: + brain_frequency = round(1000 / self.measured_cycle, 1) + except ZeroDivisionError: + brain_frequency = 0 + + try: + gui_frequency = round(1000 / self.thread_gui.measured_cycle, 1) + except ZeroDivisionError: + gui_frequency = 0 + + self.frequency_message["brain"] = brain_frequency + self.frequency_message["gui"] = gui_frequency + self.frequency_message["rtf"] = self.real_time_factor + + message = "#freq" + json.dumps(self.frequency_message) + self.server.send_message(self.client, message) + + def send_ping_message(self): + self.server.send_message(self.client, "#ping") + + # Function to notify the front end that the code was received and sent to execution + def send_code_message(self): + self.server.send_message(self.client, "#exec") + + # Function to track the real time factor from Gazebo statistics + # https://stackoverflow.com/a/17698359 + # (For reference, Python3 solution specified in the same answer) + def track_stats(self): + args = ["gz", "stats", "-p"] + # Prints gz statistics. "-p": Output comma-separated values containing- + # real-time factor (percent), simtime (sec), realtime (sec), paused (T or F) + stats_process = subprocess.Popen(args, stdout=subprocess.PIPE, bufsize=1, universal_newlines=True) + # bufsize=1 enables line-bufferred mode (the input buffer is flushed + # automatically on newlines if you would write to process.stdin ) + with stats_process.stdout: + for line in iter(stats_process.stdout.readline, ''): + stats_list = [x.strip() for x in line.split(',')] + self.real_time_factor = stats_list[0] + + # Function to maintain thread execution + def execute_thread(self, source_code): + # Keep checking until the thread is alive + # The thread will die when the coming iteration reads the flag + if self.thread is not None: + while self.thread.is_alive(): + time.sleep(0.2) + + # Turn the flag down, the iteration has successfully stopped! + self.reload = False + # New thread execution + self.thread = threading.Thread(target=self.process_code, args=[source_code]) + self.thread.start() + self.send_code_message() + print("New Thread Started!") + + # Function to read and set frequency from incoming message + def read_frequency_message(self, message): + frequency_message = json.loads(message) + + # Set brain frequency + frequency = float(frequency_message["brain"]) + self.ideal_cycle = 1000.0 / frequency + + # Set gui frequency + frequency = float(frequency_message["gui"]) + self.thread_gui.ideal_cycle = 1000.0 / frequency + + return + + # The websocket function + # Gets called when there is an incoming message from the client + def handle(self, client, server, message): + if message[:5] == "#freq": + frequency_message = message[5:] + self.read_frequency_message(frequency_message) + time.sleep(1) + return + + elif(message[:5] == "#ping"): + time.sleep(1) + self.send_ping_message() + return + elif (message[:5] == "#code"): + try: + # Once received turn the reload flag up and send it to execute_thread function + self.user_code = message[6:] + # print(repr(code)) + self.reload = True + self.execute_thread(self.user_code) + except: + pass + + elif (message[:5] == "#rest"): + try: + self.reload = True + self.stop_brain = True + self.execute_thread(self.user_code) + except: + pass + + elif (message[:5] == "#stop"): + self.stop_brain = True + + + # Function that gets called when the server is connected + def connected(self, client, server): + self.client = client + # Start the GUI update thread + self.thread_gui = ThreadGUI(self.gui) + self.thread_gui.start() + + # Start the real time factor tracker thread + self.stats_thread = threading.Thread(target=self.track_stats) + self.stats_thread.start() + + # Start measure frequency + self.measure_thread = threading.Thread(target=self.measure_frequency) + self.measure_thread.start() + + print(client, 'connected') + + # Function that gets called when the connected closes + def handle_close(self, client, server): + print(client, 'closed') + + def run_server(self): + self.server = WebsocketServer(port=1905, host=self.host) + self.server.set_fn_new_client(self.connected) + self.server.set_fn_client_left(self.handle_close) + self.server.set_fn_message_received(self.handle) + + home_dir = os.path.expanduser('~') + + logged = False + while not logged: + try: + f = open(f"{home_dir}/ws_code.log", "w") + f.write("websocket_code=ready") + f.close() + logged = True + except: + time.sleep(0.1) + + self.server.run_forever() + + +# Execute! +if __name__ == "__main__": + server = Template() + server.run_server() \ No newline at end of file diff --git a/exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/gui.py b/exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/gui.py new file mode 100644 index 000000000..df4309c3f --- /dev/null +++ b/exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/gui.py @@ -0,0 +1,251 @@ +import json +import cv2 +import base64 +import threading +import time +from datetime import datetime +from websocket_server import WebsocketServer +import os + + +# Graphical User Interface Class +class GUI: + # Initialization function + # The actual initialization + def __init__(self, host): + t = threading.Thread(target=self.run_server) + + self.payload = {'image': ''} + self.left_payload = {'image_left': ''} + self.server = None + self.client = None + + self.host = host + + # Image variables + self.image_to_be_shown = None + self.image_to_be_shown_updated = False + self.image_show_lock = threading.Lock() + + self.left_image_to_be_shown = None + self.left_image_to_be_shown_updated = False + self.left_image_show_lock = threading.Lock() + + self.acknowledge = False + self.acknowledge_lock = threading.Lock() + + # Take the console object to set the same websocket and client + t.start() + + # Explicit initialization function + # Class method, so user can call it without instantiation + @classmethod + def initGUI(cls, host): + # self.payload = {'image': '', 'shape': []} + new_instance = cls(host) + return new_instance + + # Function to prepare image payload + # Encodes the image as a JSON string and sends through the WS + def payloadImage(self): + self.image_show_lock.acquire() + image_to_be_shown_updated = self.image_to_be_shown_updated + image_to_be_shown = self.image_to_be_shown + self.image_show_lock.release() + + image = image_to_be_shown + payload = {'image': '', 'shape': ''} + + if not image_to_be_shown_updated: + return payload + + shape = image.shape + frame = cv2.imencode('.JPEG', image)[1] + encoded_image = base64.b64encode(frame) + + payload['image'] = encoded_image.decode('utf-8') + payload['shape'] = shape + + self.image_show_lock.acquire() + self.image_to_be_shown_updated = False + self.image_show_lock.release() + + return payload + + # Function to prepare image payload + # Encodes the image as a JSON string and sends through the WS + def payloadLeftImage(self): + self.left_image_show_lock.acquire() + left_image_to_be_shown_updated = self.left_image_to_be_shown_updated + left_image_to_be_shown = self.left_image_to_be_shown + self.left_image_show_lock.release() + + image = left_image_to_be_shown + payload = {'image_left': '', 'shape': ''} + + if not left_image_to_be_shown_updated: + return payload + + shape = image.shape + frame = cv2.imencode('.JPEG', image)[1] + encoded_image = base64.b64encode(frame) + + payload['image_left'] = encoded_image.decode('utf-8') + payload['shape'] = shape + + self.left_image_show_lock.acquire() + self.left_image_to_be_shown_updated = False + self.left_image_show_lock.release() + + return payload + + # Function for student to call + def showImage(self, image): + self.image_show_lock.acquire() + self.image_to_be_shown = image + self.image_to_be_shown_updated = True + self.image_show_lock.release() + + # Function for student to call + def showLeftImage(self, image): + self.left_image_show_lock.acquire() + self.left_image_to_be_shown = image + self.left_image_to_be_shown_updated = True + self.left_image_show_lock.release() + + # Function to get the client + # Called when a new client is received + def get_client(self, client, server): + self.client = client + + # Function to get value of Acknowledge + def get_acknowledge(self): + self.acknowledge_lock.acquire() + acknowledge = self.acknowledge + self.acknowledge_lock.release() + + return acknowledge + + # Function to get value of Acknowledge + def set_acknowledge(self, value): + self.acknowledge_lock.acquire() + self.acknowledge = value + self.acknowledge_lock.release() + + # Update the gui + def update_gui(self): + # Payload Image Message + payload = self.payloadImage() + self.payload["image"] = json.dumps(payload) + + message = "#gui" + json.dumps(self.payload) + self.server.send_message(self.client, message) + + # Payload Left Image Message + left_payload = self.payloadLeftImage() + self.left_payload["image_left"] = json.dumps(left_payload) + + message = "#gui" + json.dumps(self.left_payload) + self.server.send_message(self.client, message) + + # Function to read the message from websocket + # Gets called when there is an incoming message from the client + def get_message(self, client, server, message): + # Acknowledge Message for GUI Thread + if message[:4] == "#ack": + self.set_acknowledge(True) + + # Activate the server + def run_server(self): + self.server = WebsocketServer(port=2303, host=self.host) + self.server.set_fn_new_client(self.get_client) + self.server.set_fn_message_received(self.get_message) + + home_dir = os.path.expanduser('~') + + logged = False + while not logged: + try: + f = open(f"{home_dir}/ws_gui.log", "w") + f.write("websocket_gui=ready") + f.close() + logged = True + except: + time.sleep(0.1) + + self.server.run_forever() + + # Function to reset + def reset_gui(self): + pass + + +# This class decouples the user thread +# and the GUI update thread +class ThreadGUI: + def __init__(self, gui): + self.gui = gui + + # Time variables + self.ideal_cycle = 80 + self.measured_cycle = 80 + self.iteration_counter = 0 + + # Function to start the execution of threads + def start(self): + self.measure_thread = threading.Thread(target=self.measure_thread) + self.thread = threading.Thread(target=self.run) + + self.measure_thread.start() + self.thread.start() + + print("GUI Thread Started!") + + # The measuring thread to measure frequency + def measure_thread(self): + while self.gui.client is None: + pass + + previous_time = datetime.now() + while True: + # Sleep for 2 seconds + time.sleep(2) + + # Measure the current time and subtract from previous time to get real time interval + current_time = datetime.now() + dt = current_time - previous_time + ms = (dt.days * 24 * 60 * 60 + dt.seconds) * 1000 + dt.microseconds / 1000.0 + previous_time = current_time + + # Get the time period + try: + # Division by zero + self.measured_cycle = ms / self.iteration_counter + except: + self.measured_cycle = 0 + + # Reset the counter + self.iteration_counter = 0 + + # The main thread of execution + def run(self): + while self.gui.client is None: + pass + + while True: + start_time = datetime.now() + self.gui.update_gui() + acknowledge_message = self.gui.get_acknowledge() + + while not acknowledge_message: + acknowledge_message = self.gui.get_acknowledge() + + self.gui.set_acknowledge(False) + + finish_time = datetime.now() + self.iteration_counter = self.iteration_counter + 1 + + dt = finish_time - start_time + ms = (dt.days * 24 * 60 * 60 + dt.seconds) * 1000 + dt.microseconds / 1000.0 + if ms < self.ideal_cycle: + time.sleep((self.ideal_cycle-ms) / 1000.0) diff --git a/exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/hal.py b/exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/hal.py new file mode 100644 index 000000000..25635a119 --- /dev/null +++ b/exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/hal.py @@ -0,0 +1,82 @@ +import numpy as np +import rospy +import cv2 + +from drone_wrapper import DroneWrapper + + +# Hardware Abstraction Layer +class HAL: + IMG_WIDTH = 320 + IMG_HEIGHT = 240 + + def __init__(self): + rospy.init_node("HAL") + + self.image = None + self.drone = DroneWrapper(name="rqt") + + # Explicit initialization functions + # Class method, so user can call it without instantiation + @classmethod + def initRobot(cls): + new_instance = cls() + return new_instance + + # Get Image from ROS Driver Camera + def get_frontal_image(self): + image = self.drone.get_frontal_image() + image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) + return image_rgb + + def get_ventral_image(self): + image = self.drone.get_ventral_image() + image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) + return image_rgb + + def get_position(self): + pos = self.drone.get_position() + return pos + + def get_velocity(self): + vel = self.drone.get_velocity() + return vel + + def get_yaw_rate(self): + yaw_rate = self.drone.get_yaw_rate() + return yaw_rate + + def get_orientation(self): + orientation = self.drone.get_orientation() + return orientation + + def get_roll(self): + roll = self.drone.get_roll() + return roll + + def get_pitch(self): + pitch = self.drone.get_pitch() + return pitch + + def get_yaw(self): + yaw = self.drone.get_yaw() + return yaw + + def get_landed_state(self): + state = self.drone.get_landed_state() + return state + + def set_cmd_pos(self, x, y, z, az): + self.drone.set_cmd_pos(x, y, z, az) + + def set_cmd_vel(self, vx, vy, vz, az): + self.drone.set_cmd_vel(vx, vy, vz, az) + + def set_cmd_mix(self, vx, vy, z, az): + self.drone.set_cmd_mix(vx, vy, z, az) + + def takeoff(self, h=3): + self.drone.takeoff(h) + + def land(self): + self.drone.land() diff --git a/exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/interfaces/__init__.py b/exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/interfaces/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/interfaces/camera.py b/exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/interfaces/camera.py new file mode 100644 index 000000000..5a021a13e --- /dev/null +++ b/exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/interfaces/camera.py @@ -0,0 +1,89 @@ +import rospy +from sensor_msgs.msg import Image as ImageROS +import threading +from math import pi as PI +import cv2 +from cv_bridge import CvBridge, CvBridgeError + + +MAXRANGE = 8 # max length received from imageD +MINRANGE = 0 + + +def imageMsg2Image(img, bridge): + + image = Image() + + image.width = img.width + image.height = img.height + image.format = "BGR8" + image.timeStamp = img.header.stamp.secs + (img.header.stamp.nsecs * 1e-9) + cv_image = 0 + if img.encoding[-2:] == "C1": + gray_img_buff = bridge.imgmsg_to_cv2(img, img.encoding) + cv_image = depthToRGB8(gray_img_buff, img.encoding) + else: + cv_image = bridge.imgmsg_to_cv2(img, "bgr8") + image.data = cv_image + return image + + +import numpy as np + + +class Image: + + def __init__(self): + + self.height = 3 # Image height [pixels] + self.width = 3 # Image width [pixels] + self.timeStamp = 0 # Time stamp [s] */ + self.format = "" # Image format string (RGB8, BGR,...) + self.data = np.zeros((self.height, self.width, 3), np.uint8) # The image data itself + self.data.shape = self.height, self.width, 3 + + def __str__(self): + s = "Image: {\n height: " + str(self.height) + "\n width: " + str(self.width) + s = s + "\n format: " + self.format + "\n timeStamp: " + str(self.timeStamp) + s = s + "\n data: " + str(self.data) + "\n}" + return s + + +class ListenerCamera: + + def __init__(self, topic): + + self.topic = topic + self.data = Image() + self.sub = None + self.lock = threading.Lock() + + self.bridge = CvBridge() + self.start() + + def __callback(self, img): + + image = imageMsg2Image(img, self.bridge) + + self.lock.acquire() + self.data = image + self.lock.release() + + def stop(self): + + self.sub.unregister() + + def start(self): + self.sub = rospy.Subscriber(self.topic, ImageROS, self.__callback) + + def getImage(self): + + self.lock.acquire() + image = self.data + self.lock.release() + + return image + + def hasproxy(self): + + return hasattr(self, "sub") and self.sub diff --git a/exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/interfaces/motors.py b/exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/interfaces/motors.py new file mode 100644 index 000000000..70dca8a46 --- /dev/null +++ b/exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/interfaces/motors.py @@ -0,0 +1,123 @@ +import rospy +from geometry_msgs.msg import Twist +import threading +from math import pi as PI +from .threadPublisher import ThreadPublisher + + + +def cmdvel2Twist(vel): + + tw = Twist() + tw.linear.x = vel.vx + tw.linear.y = vel.vy + tw.linear.z = vel.vz + tw.angular.x = vel.ax + tw.angular.y = vel.ay + tw.angular.z = vel.az + + return tw + + +class CMDVel (): + + def __init__(self): + + self.vx = 0 # vel in x[m/s] (use this for V in wheeled robots) + self.vy = 0 # vel in y[m/s] + self.vz = 0 # vel in z[m/s] + self.ax = 0 # angular vel in X axis [rad/s] + self.ay = 0 # angular vel in X axis [rad/s] + self.az = 0 # angular vel in Z axis [rad/s] (use this for W in wheeled robots) + self.timeStamp = 0 # Time stamp [s] + + + def __str__(self): + s = "CMDVel: {\n vx: " + str(self.vx) + "\n vy: " + str(self.vy) + s = s + "\n vz: " + str(self.vz) + "\n ax: " + str(self.ax) + s = s + "\n ay: " + str(self.ay) + "\n az: " + str(self.az) + s = s + "\n timeStamp: " + str(self.timeStamp) + "\n}" + return s + +class PublisherMotors: + + def __init__(self, topic, maxV, maxW): + + self.maxW = maxW + self.maxV = maxV + + self.topic = topic + self.data = CMDVel() + self.pub = rospy.Publisher(self.topic, Twist, queue_size=1) + + self.lock = threading.Lock() + + self.kill_event = threading.Event() + self.thread = ThreadPublisher(self, self.kill_event) + + self.thread.daemon = True + self.start() + + def publish (self): + + self.lock.acquire() + tw = cmdvel2Twist(self.data) + self.lock.release() + self.pub.publish(tw) + + def stop(self): + + self.kill_event.set() + self.pub.unregister() + + def start (self): + + self.kill_event.clear() + self.thread.start() + + + + def getMaxW(self): + return self.maxW + + def getMaxV(self): + return self.maxV + + + def sendVelocities(self, vel): + + self.lock.acquire() + self.data = vel + self.lock.release() + + def sendV(self, v): + + self.sendVX(v) + + def sendL(self, l): + + self.sendVY(l) + + def sendW(self, w): + + self.sendAZ(w) + + def sendVX(self, vx): + + self.lock.acquire() + self.data.vx = vx + self.lock.release() + + def sendVY(self, vy): + + self.lock.acquire() + self.data.vy = vy + self.lock.release() + + def sendAZ(self, az): + + self.lock.acquire() + self.data.az = az + self.lock.release() + + diff --git a/exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/interfaces/pose3d.py b/exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/interfaces/pose3d.py new file mode 100644 index 000000000..fd0bfc37a --- /dev/null +++ b/exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/interfaces/pose3d.py @@ -0,0 +1,176 @@ +import rospy +import threading +from math import asin, atan2, pi +from nav_msgs.msg import Odometry + +def quat2Yaw(qw, qx, qy, qz): + ''' + Translates from Quaternion to Yaw. + + @param qw,qx,qy,qz: Quaternion values + + @type qw,qx,qy,qz: float + + @return Yaw value translated from Quaternion + + ''' + rotateZa0=2.0*(qx*qy + qw*qz) + rotateZa1=qw*qw + qx*qx - qy*qy - qz*qz + rotateZ=0.0 + if(rotateZa0 != 0.0 and rotateZa1 != 0.0): + rotateZ=atan2(rotateZa0,rotateZa1) + return rotateZ + +def quat2Pitch(qw, qx, qy, qz): + ''' + Translates from Quaternion to Pitch. + + @param qw,qx,qy,qz: Quaternion values + + @type qw,qx,qy,qz: float + + @return Pitch value translated from Quaternion + + ''' + + rotateYa0=-2.0*(qx*qz - qw*qy) + rotateY=0.0 + if(rotateYa0 >= 1.0): + rotateY = pi/2.0 + elif(rotateYa0 <= -1.0): + rotateY = -pi/2.0 + else: + rotateY = asin(rotateYa0) + + return rotateY + +def quat2Roll (qw, qx, qy, qz): + ''' + Translates from Quaternion to Roll. + + @param qw,qx,qy,qz: Quaternion values + + @type qw,qx,qy,qz: float + + @return Roll value translated from Quaternion + + ''' + rotateXa0=2.0*(qy*qz + qw*qx) + rotateXa1=qw*qw - qx*qx - qy*qy + qz*qz + rotateX=0.0 + + if(rotateXa0 != 0.0 and rotateXa1 != 0.0): + rotateX=atan2(rotateXa0, rotateXa1) + return rotateX + + +def odometry2Pose3D(odom): + ''' + Translates from ROS Odometry to JderobotTypes Pose3d. + + @param odom: ROS Odometry to translate + + @type odom: Odometry + + @return a Pose3d translated from odom + + ''' + pose = Pose3d() + ori = odom.pose.pose.orientation + + pose.x = odom.pose.pose.position.x + pose.y = odom.pose.pose.position.y + pose.z = odom.pose.pose.position.z + #pose.h = odom.pose.pose.position.h + pose.yaw = quat2Yaw(ori.w, ori.x, ori.y, ori.z) + pose.pitch = quat2Pitch(ori.w, ori.x, ori.y, ori.z) + pose.roll = quat2Roll(ori.w, ori.x, ori.y, ori.z) + pose.q = [ori.w, ori.x, ori.y, ori.z] + pose.timeStamp = odom.header.stamp.secs + (odom.header.stamp.nsecs *1e-9) + + return pose + +class Pose3d (): + + def __init__(self): + + self.x = 0 # X coord [meters] + self.y = 0 # Y coord [meters] + self.z = 0 # Z coord [meters] + self.h = 1 # H param + self.yaw = 0 #Yaw angle[rads] + self.pitch = 0 # Pitch angle[rads] + self.roll = 0 # Roll angle[rads] + self.q = [0,0,0,0] # Quaternion + self.timeStamp = 0 # Time stamp [s] + + + def __str__(self): + s = "Pose3D: {\n x: " + str(self.x) + "\n Y: " + str(self.y) + s = s + "\n Z: " + str(self.z) + "\n H: " + str(self.h) + s = s + "\n Yaw: " + str(self.yaw) + "\n Pitch: " + str(self.pitch) + "\n Roll: " + str(self.roll) + s = s + "\n quaternion: " + str(self.q) + "\n timeStamp: " + str(self.timeStamp) + "\n}" + return s + + +class ListenerPose3d: + ''' + ROS Pose3D Subscriber. Pose3D Client to Receive pose3d from ROS nodes. + ''' + def __init__(self, topic): + ''' + ListenerPose3d Constructor. + + @param topic: ROS topic to subscribe + + @type topic: String + + ''' + self.topic = topic + self.data = Pose3d() + self.sub = None + self.lock = threading.Lock() + self.start() + + def __callback (self, odom): + ''' + Callback function to receive and save Pose3d. + + @param odom: ROS Odometry received + + @type odom: Odometry + + ''' + pose = odometry2Pose3D(odom) + + self.lock.acquire() + self.data = pose + self.lock.release() + + def stop(self): + ''' + Stops (Unregisters) the client. + + ''' + self.sub.unregister() + + def start (self): + ''' + Starts (Subscribes) the client. + + ''' + self.sub = rospy.Subscriber(self.topic, Odometry, self.__callback) + + def getPose3d(self): + ''' + Returns last Pose3d. + + @return last JdeRobotTypes Pose3d saved + + ''' + self.lock.acquire() + pose = self.data + self.lock.release() + + return pose + diff --git a/exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/interfaces/threadPublisher.py b/exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/interfaces/threadPublisher.py new file mode 100644 index 000000000..69aa0ad48 --- /dev/null +++ b/exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/interfaces/threadPublisher.py @@ -0,0 +1,46 @@ +# +# Copyright (C) 1997-2016 JDE Developers Team +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# Authors : +# Alberto Martin Florido +# Aitor Martinez Fernandez +# +import threading +import time +from datetime import datetime + +time_cycle = 80 + + +class ThreadPublisher(threading.Thread): + + def __init__(self, pub, kill_event): + self.pub = pub + self.kill_event = kill_event + threading.Thread.__init__(self, args=kill_event) + + def run(self): + while (not self.kill_event.is_set()): + start_time = datetime.now() + + self.pub.publish() + + finish_Time = datetime.now() + + dt = finish_Time - start_time + ms = (dt.days * 24 * 60 * 60 + dt.seconds) * 1000 + dt.microseconds / 1000.0 + #print (ms) + if (ms < time_cycle): + time.sleep((time_cycle - ms) / 1000.0) \ No newline at end of file diff --git a/exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/interfaces/threadStoppable.py b/exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/interfaces/threadStoppable.py new file mode 100644 index 000000000..b631d180f --- /dev/null +++ b/exercises/static/exercises/color_filter_newmanager/python_template/ros1_noetic/interfaces/threadStoppable.py @@ -0,0 +1,36 @@ +import threading +import time +from datetime import datetime + +time_cycle = 80 + + +class StoppableThread(threading.Thread): + """Thread class with a stop() method. The thread itself has to check + regularly for the stopped() condition.""" + + def __init__(self, target, kill_event=threading.Event(), *args, **kwargs): + super(StoppableThread, self).__init__(*args, **kwargs) + self._target = target + self._target_args = kwargs["args"] + self._kill_event = kill_event + + def run(self): + while not self.stopped(): + start_time = datetime.now() + + self._target(*self._target_args) + + finish_time = datetime.now() + + dt = finish_time - start_time + ms = (dt.days * 24 * 60 * 60 + dt.seconds) * 1000 + dt.microseconds / 1000.0 + # print (ms) + if ms < time_cycle: + time.sleep((time_cycle - ms) / 1000.0) + + def stop(self): + self._kill_event.set() + + def stopped(self): + return self._kill_event.is_set() diff --git a/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/GUI.py b/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/GUI.py new file mode 100644 index 000000000..783c04c97 --- /dev/null +++ b/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/GUI.py @@ -0,0 +1,110 @@ +import json +import cv2 +import base64 +import threading +import time +import websocket +from src.manager.ram_logging.log_manager import LogManager +from console import start_console +import numpy as np + + +class ThreadingGUI: + + def __init__(self, host="ws://127.0.0.1:2303", freq=30.0): + + # Execution control vars + self.out_period = 1.0 / freq + self.image = None + self.image_lock = threading.Lock() + self.ack = True + self.ack_lock = threading.Lock() + self.running = True + + self.host = host + self.msg = {"image": ""} + + # Initialize and start the WebSocket client thread + threading.Thread(target=self.run_websocket, daemon=True).start() + + # Initialize and start the image sending thread (GUI out thread) + threading.Thread( + target=self.gui_out_thread, name="gui_out_thread", daemon=True + ).start() + + # Init websocket client + def run_websocket(self): + self.client = websocket.WebSocketApp(self.host, on_message=self.gui_in_thread) + self.client.run_forever(ping_timeout=None, ping_interval=0) + + # Process incoming messages to the GUI + def gui_in_thread(self, ws, message): + + # In this case, messages can be either acks or key strokes + if "ack" in message: + with self.ack_lock: + self.ack = True + else: + LogManager.logger.error("Unsupported msg") + + # Process outcoming messages from the GUI + def gui_out_thread(self): + while self.running: + start_time = time.time() + + # Check if a new image should be sent + with self.ack_lock: + with self.image_lock: + if self.ack: + if np.any(self.image): + self.send_image() + self.ack = False + + # Maintain desired frequency + elapsed = time.time() - start_time + sleep_time = max(0, self.out_period - elapsed) + time.sleep(sleep_time) + + # Prepares and send image to the websocket server + def send_image(self): + + if np.any(self.image): + _, encoded_image = cv2.imencode(".JPEG", self.image) + b64 = base64.b64encode(encoded_image).decode("utf-8") + shape = self.image.shape + else: + b64 = None + shape = 0 + + payload= { + "image": b64, + "shape": shape, + } + + self.msg["image"] = json.dumps(payload) + message = json.dumps(self.msg) + try: + if self.client: + self.client.send(message) + except Exception as e: + LogManager.logger.info(f"Error sending message: {e}") + + # Functions to set the next image to be sent + def setImage(self, image): + with self.image_lock: + self.image = image + + +host = "ws://127.0.0.1:2303" +gui = ThreadingGUI(host) + + +# Redirect the console +start_console() + + +# Expose the user functions +def showImage(image): + gui.setImage(image) + + diff --git a/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/HAL.py b/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/HAL.py new file mode 100644 index 000000000..20acd0161 --- /dev/null +++ b/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/HAL.py @@ -0,0 +1,28 @@ +import numpy as np +import rclpy +import cv2 + +from jderobot_drones.drone_wrapper import DroneWrapper +from jderobot_drones.image_sub import ImageSubscriberNode + +### HAL INIT ### + +print("HAL initializing", flush=True) +if not rclpy.ok(): + rclpy.init() + + +IMG_WIDTH = 320 +IMG_HEIGHT = 240 + + +# Get Image from ROS Driver Camera +def get_image(): + #image = self.cam.get_frontal_image() + image = cv2.imread('/RoboticsAcademy/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/image.png', cv2.IMREAD_COLOR) + image = cv2.resize(image, (320, 240)) + image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) + return image_rgb + + + diff --git a/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/console.py b/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/console.py new file mode 100644 index 000000000..3c88c9d71 --- /dev/null +++ b/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/console.py @@ -0,0 +1,19 @@ +# Functions to start and close console +import os +import sys + + +def start_console(): + # Get all the file descriptors and choose the latest one + fds = os.listdir("/dev/pts/") + console_fd = str(max(map(int, fds[:-1]))) + + sys.stderr = open('/dev/pts/' + console_fd, 'w') + sys.stdout = open('/dev/pts/' + console_fd, 'w') + sys.stdin = open('/dev/pts/' + console_fd, 'w') + + +def close_console(): + sys.stderr.close() + sys.stdout.close() + sys.stdin.close() diff --git a/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/gui_exercise.py b/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/gui_exercise.py new file mode 100644 index 000000000..d0e7dec73 --- /dev/null +++ b/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/gui_exercise.py @@ -0,0 +1,199 @@ +import json +import cv2 +import base64 +import threading +import time +from datetime import datetime +import websocket +import subprocess + + +# Graphical User Interface Class +class GUI: + # Initialization function + # The actual initialization + def __init__(self, host): + + self.payload = {"image": ""} + self.server = None + self.client = None + + self.host = host + + # Image variables + self.image_to_be_shown = None + self.image_to_be_shown_updated = False + self.image_show_lock = threading.Lock() + + self.acknowledge = False + self.acknowledge_lock = threading.Lock() + + self.client_thread = threading.Thread(target=self.run_websocket) + self.client_thread.start() + + def run_websocket(self): + while True: + self.client = websocket.WebSocketApp( + "ws://127.0.0.1:2303", + on_message=self.on_message, + ) + self.client.run_forever(ping_timeout=None, ping_interval=0) + + # Explicit initialization function + # Class method, so user can call it without instantiation + @classmethod + def initGUI(cls, host): + # self.payload = {'image': '', 'shape': []} + new_instance = cls(host) + return new_instance + + # Function to prepare image payload + # Encodes the image as a JSON string and sends through the WS + def payloadImage(self): + self.image_show_lock.acquire() + image_to_be_shown_updated = self.image_to_be_shown_updated + image_to_be_shown = self.image_to_be_shown + self.image_show_lock.release() + + image = image_to_be_shown + payload = {"image": "", "shape": ""} + + if not image_to_be_shown_updated: + return payload + + shape = image.shape + frame = cv2.imencode(".JPEG", image)[1] + encoded_image = base64.b64encode(frame) + + payload["image"] = encoded_image.decode("utf-8") + payload["shape"] = shape + + self.image_show_lock.acquire() + self.image_to_be_shown_updated = False + self.image_show_lock.release() + + return payload + + # Function for student to call + def showImage(self, image): + self.image_show_lock.acquire() + self.image_to_be_shown = image + self.image_to_be_shown_updated = True + self.image_show_lock.release() + + # Function to get the client + # Called when a new client is received + def get_client(self, client, server): + self.client = client + + # Function to get value of Acknowledge + def get_acknowledge(self): + self.acknowledge_lock.acquire() + acknowledge = self.acknowledge + self.acknowledge_lock.release() + + return acknowledge + + # Function to get value of Acknowledge + def set_acknowledge(self, value): + self.acknowledge_lock.acquire() + self.acknowledge = value + self.acknowledge_lock.release() + + # Update the gui + def update_gui(self): + # Payload Image Message + payload = self.payloadImage() + self.payload["image"] = json.dumps(payload) + + message = json.dumps(self.payload) + if self.client: + try: + self.client.send(message) + except Exception as e: + print(f"Error sending message: {e}") + + + def on_message(self, ws, message): + """Handles incoming messages from the websocket client.""" + if message.startswith("#ack"): + self.set_acknowledge(True) + + # Function to reset + def reset_gui(self): + pass + + +class ThreadGUI: + """Class to manage GUI updates and frequency measurements in separate threads.""" + + def __init__(self, gui): + """Initializes the ThreadGUI with a reference to the GUI instance.""" + self.gui = gui + self.ideal_cycle = 80 + self.real_time_factor = 0 + self.frequency_message = {"brain": "", "gui": "", "rtf": ""} + self.iteration_counter = 0 + self.running = True + + def start(self): + """Starts the GUI, frequency measurement, and real-time factor threads.""" + self.frequency_thread = threading.Thread(target=self.measure_and_send_frequency) + self.gui_thread = threading.Thread(target=self.run) + self.rtf_thread = threading.Thread(target=self.get_real_time_factor) + self.frequency_thread.start() + self.gui_thread.start() + self.rtf_thread.start() + print("GUI Thread Started!") + + def get_real_time_factor(self): + """Continuously calculates the real-time factor.""" + while True: + time.sleep(2) + args = ["gz", "stats", "-p"] + stats_process = subprocess.Popen(args, stdout=subprocess.PIPE) + with stats_process.stdout: + for line in iter(stats_process.stdout.readline, b""): + stats_list = [x.strip() for x in line.split(b",")] + self.real_time_factor = stats_list[0].decode("utf-8") + + def measure_and_send_frequency(self): + """Measures and sends the frequency of GUI updates and brain cycles.""" + previous_time = datetime.now() + while self.running: + time.sleep(2) + current_time = datetime.now() + dt = current_time - previous_time + ms = (dt.days * 24 * 60 * 60 + dt.seconds) * 1000 + dt.microseconds / 1000.0 + previous_time = current_time + measured_cycle = ( + ms / self.iteration_counter if self.iteration_counter > 0 else 0 + ) + self.iteration_counter = 0 + brain_frequency = ( + round(1000 / measured_cycle, 1) if measured_cycle != 0 else 0 + ) + gui_frequency = round(1000 / self.ideal_cycle, 1) + self.frequency_message = { + "brain": brain_frequency, + "gui": gui_frequency, + "rtf": self.real_time_factor, + } + message = json.dumps(self.frequency_message) + if self.gui.client: + try: + self.gui.client.send(message) + except Exception as e: + print(f"Error sending frequency message: {e}") + + def run(self): + """Main loop to update the GUI at regular intervals.""" + while self.running: + start_time = datetime.now() + self.gui.update_gui() + self.iteration_counter += 1 + finish_time = datetime.now() + dt = finish_time - start_time + ms = (dt.days * 24 * 60 * 60 + dt.seconds) * 1000 + dt.microseconds / 1000.0 + sleep_time = max(0, (50 - ms) / 1000.0) + time.sleep(sleep_time) diff --git a/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/image.png b/exercises/static/exercises/color_filter_newmanager/python_template/ros2_humble/image.png new file mode 100644 index 0000000000000000000000000000000000000000..b95b8b8410041003739b05216e10a3469ff8e295 GIT binary patch literal 62912 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 d`gimnTjuf!W=-+(RPNhn0 { + return ( + + {props.children} + + ); +}; + +export default ColorFilterRR; diff --git a/exercises/static/exercises/color_filter_newmanager/react-components/SpecificColorFilter.js b/exercises/static/exercises/color_filter_newmanager/react-components/SpecificColorFilter.js new file mode 100644 index 000000000..2fd2999da --- /dev/null +++ b/exercises/static/exercises/color_filter_newmanager/react-components/SpecificColorFilter.js @@ -0,0 +1,67 @@ +import * as React from "react"; +import PropTypes from "prop-types"; +import {drawImage, startStreaming} from "./helpers/showImagesColorFilter"; +// The stream & capture +//var stream = document.getElementById('stream'); + + +function SpecificColorFilter(props) { + const [image, setImage] = React.useState(null) + React.useEffect(() => { + console.log("TestShowScreen subscribing to ['update'] events"); + // Start Streaming + //startStreaming() + const callback = (message) => { + console.log(message); + + if (message.data.update.image) { + drawImage(message.data.update); + } + + // Send the ACK of the msg + window.RoboticsExerciseComponents.commsManager.send("gui", "ack"); + }; + + /*return () => { + + // Start Streaming + startStreaming() + };*/ + + window.RoboticsExerciseComponents.commsManager.subscribe( + [window.RoboticsExerciseComponents.commsManager.events.UPDATE], + callback + ); + + return () => { + console.log("TestShowScreen unsubscribing from ['state-changed'] events"); + window.RoboticsExerciseComponents.commsManager.unsubscribe( + [window.RoboticsExerciseComponents.commsManager.events.UPDATE], + callback + ); + }; + }, []); + + + + return ( +