From d580eea05819584f1b60e73070c93512ec528b14 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 20 Sep 2025 15:39:47 +0000 Subject: [PATCH 1/5] Initial plan From 7d56071b3b229d1bcd7220df40615914e4ecd29e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 20 Sep 2025 15:42:26 +0000 Subject: [PATCH 2/5] Initial analysis: Plan to split goal scene conditions for left and right goals Co-authored-by: tomoakiwakawaka <131442068+tomoakiwakawaka@users.noreply.github.com> --- __pycache__/goal.cpython-312.pyc | Bin 0 -> 1823 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 __pycache__/goal.cpython-312.pyc diff --git a/__pycache__/goal.cpython-312.pyc b/__pycache__/goal.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8565addba471cf6049dc04bdb5bb34639ccf16fe GIT binary patch literal 1823 zcmbVMZ%7+w7=Q0_iMhm_`JglaU7@bsh7lD_TE{O za-miCp+Z5|eK7ej(ta5hH&)o+4`VBX!q{NMMlfFUEgQ^lG93&Vxc8D=qI9gV7vA@I ze$SuZJXKVw8j?NWM>un&JdY z?dYMy6PTg0blrsa-p80{6(|))(BQ3D00vm9Ro{ zg2vnS6uz1x#Z~HACrYZ^pp-RSx%Iyy380#S_9r9O%O?3N8jwH*22R*9A}Xj>wWAN! zTJ(WxhZY~s8N(AzI1)^vPIW+2XaE4Ti2d`bL#-(yhf1r=1Q{cX$gJ9QDK|t2T!}-q zhVVR5@ZVw(7a<7{8B-iawL!+vs#3KWGe|g9XV6vk7#ggpM7WM{xeb3+s;)|;TXhE; zsvbjA&Cm+zPi*V@cZ3)2fkJkrv4jACc7x%mb0%(m83%E28Yo^P`&ocY1Q@~AIS@0A zfH{J#9lq9xq;W~%qLM5sq7>n#BtG0VAz!`bKJL(MVicDmuKa#@D87RSyK{)wP7L#3 z8DdGzGA-~>K$=;MKp{5UhV6xgFA9s_78chF3ttzN&kGB;fBpWW-#$$i=2r{z-xbd^ z>(EF^)~G12Olwq75+j&Ih9c&g3F*Qj%A71H8X1L}72(HlxEhU8crmQe1H8fyA$~^C zEQ(Zgn4?IHD4HuE#K$Eb!8am`fY5AIVLh5hLHtCB8|TB}O4C|>$#}eDMB@%Lo2*Dt zPPi&yLNgS`XQ#A!BQ7Ww$Hf)v_88XkAd5zOR5F5Mnmr;+@udt5s-E~!Ph4a4+T?0+ zHiI}QYL;T%v9gS7W?A7CL36=L&WI{KUSq<%tZ?Vfa+CUKWQ~NAvIjSG^2v4ZLie;Z zBXpzLNJK#0a}o-5561M7D4h@w_c$niAknyH(-lsh5O7XACZ_O~hw(je1LT|i>7GWzj;_xF_X3%h0@;pB884e-FKn?FH`t30 zOj&jy$>jYf(qpNywXUrH8|B9rlk}$d@^%xM(}NUvNYR5%)5AIfpDZ!NQb@myHA|F_ zKwd`r{Z)Jw_rM-j0n&fL18eV$1ZTs-E2slQ{T`Q{_`vK0@fgsLfoGrc5^i(`8~*__ CCD Date: Sat, 20 Sep 2025 15:47:20 +0000 Subject: [PATCH 3/5] Split goal conditions for left and right goals with team color detection Co-authored-by: tomoakiwakawaka <131442068+tomoakiwakawaka@users.noreply.github.com> --- __pycache__/goal.cpython-312.pyc | Bin 1823 -> 5635 bytes goal.py | 131 ++++++++++++++++++++++++++++--- 2 files changed, 120 insertions(+), 11 deletions(-) diff --git a/__pycache__/goal.cpython-312.pyc b/__pycache__/goal.cpython-312.pyc index 8565addba471cf6049dc04bdb5bb34639ccf16fe..cceb80a084df79376b8c06889d0e97c0053d9ecd 100644 GIT binary patch literal 5635 zcmc&%X>1$E6`oz*I!H<+B}$fT%G5<$w-d=xY{yY7H`4)qdV-sR3n!96wn74ZKeKwybI@S}*=$Ph^p zd(ew7AQV#Y3LXt2mN=v35w9qM$-OXleVIu!VAU>!j=~-xrBtgzYM!9TzG{RR1BdsL z3a_FRBk-j&X;~qSPrqhVxptH%(|fBj5>{GXlaWH8GrN`O%!^9oK_M+qKIEjJM(K=- zkdD_e8#qlyCa=p#E7&>F;pqDC?Dzi!+ZBoKaN{zJ!tp>M!pc{q= zs)HJbc3=<~SvDxiQ&*DXzedHV$??~cJicR$5)Q~l zO#P6b>8o!a<`|cotEF6=Yi$P~s4fr`trX4COuxrRJ6#;-a`$0a+X!F*|HT`3P(E=C0iCs8e%04@sg&yNU3UwX{{5giQtWF z^P;_SI{3z}D^Jbp-tCIn+a@|A6>~YZTlVUx<&7Qb-m(tXEbEch5!v^#&OwX-A5I~)Bf!fT^)d2!6jV9X1FgVJ87($WY_wpUOQRQV z|Kg{~@$X4y`F?Wj2gy^X@BHi>W}Z5CCpz)Rx2L2R_k>{_KyS8b$ZCNSiHWm&O4l zWpf&PqR;!^v?&UkT?U}_R_ zniAO-rUZ`W#%7r*_zI=>O9{Sv3UL`e>XpGDvrzBqm1#B)FI@&kA=TGfPs;1nUu(TW zUaz5)AuXi}=_qw5i_(O$dr&CnAu{DRYvnt6G6PxGvSP5k4}!ZqlYqCqSANM>WX+_> zFv(8q5Q)I-)0|K)^a#19=X1j(^BrCf^)R1HX(d+xcM~#%jG;U}r#E*+YKGzsyphl2 z401mwbMj-#3`L*^jZ?b5Jzz#yZeC{fN=s#}tcE?bcy5?rEPOU^bd$qmAE1L#^I5nB zzRss0p!KOZQ$_}_r?TaH$>%IGUp}D}IhaD`hujZ5r|Zi~yaIcF#$iQCr59W0y0S7i zWZ^BnrR#>FOUWk+74QYUo4z_jzN11upD(0xaoj>>1Et3lZyF>!b&@jPnhMScS`#^gwlZRyjoPPQVqOx#I8M5+)y>@w6 zCcu%Kcq?Uo(=wBOJOJTJ(DxP&J2|OP1$_Rih$`ewucFsi;SG>b2&mDe(UJELP@_tt zhFF6d>wh0L%+>!BWFhapp9Aqu1*MFMR& z;Wk7i=kj<(rP~h)jHZX?SkDM3i}Oo^ssQ8habn(nI@s-ZG1NXEBsk1KfD?7?!)`i& zGcrf9Xu_FMUn=~|Bx<5L#as&jW~X$2Eawk6=|LJ~t0=mAphwipuyRUYXjlPKieXwS zD8YO14GF@jHegw_pcUg|1ze1#f z>eT63eD#bA=5K>P`wGNAqv)2UaO&XX!KtH@N2kk$>b-Hxw??}b3#?N;lRZ=3N$>O{ zg5&9U!M@RF7K=+RRGqK7P;*{qT@3|>5sQ0s+%t}vFcXHJ;UmVdRhgd^Xv;oN6hGmHeYU@ee}0> zVeg@M+hJkLk$K|_i>3mh&=EIni9S1Ls!NzF7tC8?<}K02d2=m3YjNa2+*BPsGFv%c z+xbE3LT%?_#m?E@t5xxe=fYi!_7-7#N8G-D@<6yf^60I?qN$5^`2`z*ZtT0!b|<}E}y`#u`V`}ldzU8SV2T}bki(*b%)@j z1Z(xYmHuplZLy?GDDM{BCxmWBVEAQ(P7+U%(1eIRxUsjBe@3WuF9{!1P!j2jTO85e z+2;AWt`9mE>bg=YtBhAX`w*4Qe?yhE{6|$*7vH*1sMgGvt{=R1@VfJwQ+Tm2 z-su$rCt{r^R;z5|tov$>@RD0n8TE&MNoDs^D*FzB3`HqyFX+nzec4~`og|R4>@Fg7 z`8RU%77f{!L>?PG=taI8WF4 zgyQ28Ew0Orovn(GTU9_ih`kOCgX3LM9dP+57t25{ffyW`u6Sz6;x8d7Kb73Um)afh wh7EY>T?_>?amXs|wyYos;wIAFM5dc4`>t{$QE+!RkwX;REBQ7-q!Qe}14oje-v9sr literal 1823 zcmbVMZ%7+w7=Q0_iMhm_`JglaU7@bsh7lD_TE{O za-miCp+Z5|eK7ej(ta5hH&)o+4`VBX!q{NMMlfFUEgQ^lG93&Vxc8D=qI9gV7vA@I ze$SuZJXKVw8j?NWM>un&JdY z?dYMy6PTg0blrsa-p80{6(|))(BQ3D00vm9Ro{ zg2vnS6uz1x#Z~HACrYZ^pp-RSx%Iyy380#S_9r9O%O?3N8jwH*22R*9A}Xj>wWAN! zTJ(WxhZY~s8N(AzI1)^vPIW+2XaE4Ti2d`bL#-(yhf1r=1Q{cX$gJ9QDK|t2T!}-q zhVVR5@ZVw(7a<7{8B-iawL!+vs#3KWGe|g9XV6vk7#ggpM7WM{xeb3+s;)|;TXhE; zsvbjA&Cm+zPi*V@cZ3)2fkJkrv4jACc7x%mb0%(m83%E28Yo^P`&ocY1Q@~AIS@0A zfH{J#9lq9xq;W~%qLM5sq7>n#BtG0VAz!`bKJL(MVicDmuKa#@D87RSyK{)wP7L#3 z8DdGzGA-~>K$=;MKp{5UhV6xgFA9s_78chF3ttzN&kGB;fBpWW-#$$i=2r{z-xbd^ z>(EF^)~G12Olwq75+j&Ih9c&g3F*Qj%A71H8X1L}72(HlxEhU8crmQe1H8fyA$~^C zEQ(Zgn4?IHD4HuE#K$Eb!8am`fY5AIVLh5hLHtCB8|TB}O4C|>$#}eDMB@%Lo2*Dt zPPi&yLNgS`XQ#A!BQ7Ww$Hf)v_88XkAd5zOR5F5Mnmr;+@udt5s-E~!Ph4a4+T?0+ zHiI}QYL;T%v9gS7W?A7CL36=L&WI{KUSq<%tZ?Vfa+CUKWQ~NAvIjSG^2v4ZLie;Z zBXpzLNJK#0a}o-5561M7D4h@w_c$niAknyH(-lsh5O7XACZ_O~hw(je1LT|i>7GWzj;_xF_X3%h0@;pB884e-FKn?FH`t30 zOj&jy$>jYf(qpNywXUrH8|B9rlk}$d@^%xM(}NUvNYR5%)5AIfpDZ!NQb@myHA|F_ zKwd`r{Z)Jw_rM-j0n&fL18eV$1ZTs-E2slQ{T`Q{_`vK0@fgsLfoGrc5^i(`8~*__ CCD0) or 'left' (x<0) + """ + team_distances = {'yellow': [], 'blue': []} + + for color in ['yellow', 'blue']: + if color in robot_positions: + for robot_id, (x, y) in robot_positions[color].items(): + if goal_side == 'right': + # 右ゴールへの距離 + distance = abs(x - 6000) + else: + # 左ゴールへの距離 + distance = abs(x - (-6000)) + team_distances[color].append(distance) + + # 各チームの平均距離を計算 + avg_distances = {} + for color, distances in team_distances.items(): + if distances: + avg_distances[color] = sum(distances) / len(distances) + else: + avg_distances[color] = float('inf') + + # より近いチームを攻撃チームとして返す + if avg_distances['yellow'] < avg_distances['blue']: + return 'yellow' + else: + return 'blue' + +def calculate_ball_angle(ball_velocity_data): + """ + ボールの速度データから角度を計算 + """ + if len(ball_velocity_data) >= 2: + x1, y1, _, _ = ball_velocity_data[0] + x2, y2, _, _ = ball_velocity_data[1] + vx = x2 - x1 + vy = y2 - y1 + if vx != 0 or vy != 0: + angle = math.atan2(vy, vx) * 180 / math.pi # 度単位 + return angle, math.sqrt(vx**2 + vy**2) + return None, None def goal_scene(track_ball_position, track_robot_position, path, stop_event, debug=False): - robot_poji_goal_path = os.path.join(path, "robot_position_goal.csv") + # 左右ゴール用の別々のファイルパス + left_goal_path = os.path.join(path, "robot_position_left_goal.csv") + right_goal_path = os.path.join(path, "robot_position_right_goal.csv") robot_position_path = os.path.join(path, "robot_position.csv") - poji_goal_x=6000 - nega_goal_x=-6000 - poji_goal_y=600 - nega_goal_y=600 + + # ゴール座標の定義 + right_goal_x = 6000 # 右ゴール + left_goal_x = -6000 # 左ゴール + goal_y_max = 600 # ゴールのY座標上限 + goal_y_min = -600 # ゴールのY座標下限 + + # ボール速度追跡用 + ball_velocity_data = [] + if not os.path.isdir(path): os.mkdir(path) + while not stop_event.is_set(): try: balls_position = track_ball_position() robot_poji = track_robot_position() + if balls_position and robot_poji: ball_x, ball_y, state = balls_position[-1] - if ball_x > 6000: - if robot_poji and ((ball_x > poji_goal_x and (poji_goal_y > ball_y > nega_goal_y)) or (ball_x < nega_goal_x and (poji_goal_y > ball_y > nega_goal_y))): + + # ボール速度データを更新 + ball_velocity_data.append((ball_x, ball_y, state, len(ball_velocity_data))) + if len(ball_velocity_data) > 2: + ball_velocity_data.pop(0) + + # 右ゴールの判定 + if ball_x > right_goal_x and goal_y_min < ball_y < goal_y_max: + attacking_team = determine_attacking_team(robot_poji, 'right') + angle, speed = calculate_ball_angle(ball_velocity_data) + + if os.path.exists(robot_position_path): + df_robot_position = pd.read_csv(robot_position_path) + last_20_frames = df_robot_position.tail(120) + + # チーム情報と角度情報を追加 + goal_data = last_20_frames.copy() + goal_data['attacking_team'] = attacking_team + goal_data['goal_side'] = 'right' + goal_data['ball_angle'] = angle if angle is not None else 0 + goal_data['ball_speed'] = speed if speed is not None else 0 + goal_data['ball_x'] = ball_x + goal_data['ball_y'] = ball_y + + # ヘッダー付きで保存 + write_header = not os.path.exists(right_goal_path) or os.path.getsize(right_goal_path) == 0 + goal_data.to_csv(right_goal_path, mode='a', header=write_header, index=False) + + if debug: + print(f"右ゴールシーンを保存しました - 攻撃チーム: {attacking_team}, 角度: {angle}") + + # 左ゴールの判定 + elif ball_x < left_goal_x and goal_y_min < ball_y < goal_y_max: + attacking_team = determine_attacking_team(robot_poji, 'left') + angle, speed = calculate_ball_angle(ball_velocity_data) + + if os.path.exists(robot_position_path): df_robot_position = pd.read_csv(robot_position_path) last_20_frames = df_robot_position.tail(120) - df = pd.DataFrame(last_20_frames) - df.to_csv(robot_poji_goal_path, header=True, index=False) + + # チーム情報と角度情報を追加 + goal_data = last_20_frames.copy() + goal_data['attacking_team'] = attacking_team + goal_data['goal_side'] = 'left' + goal_data['ball_angle'] = angle if angle is not None else 0 + goal_data['ball_speed'] = speed if speed is not None else 0 + goal_data['ball_x'] = ball_x + goal_data['ball_y'] = ball_y + + # ヘッダー付きで保存 + write_header = not os.path.exists(left_goal_path) or os.path.getsize(left_goal_path) == 0 + goal_data.to_csv(left_goal_path, mode='a', header=write_header, index=False) + if debug: - print("ゴールシーンを保存しました") + print(f"左ゴールシーンを保存しました - 攻撃チーム: {attacking_team}, 角度: {angle}") + except KeyboardInterrupt: - break \ No newline at end of file + break + except Exception as e: + if debug: + print(f"Error in goal_scene: {e}") + continue \ No newline at end of file From 0b62256bd45c3a638a7549330c50a82f40849f14 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 20 Sep 2025 15:50:10 +0000 Subject: [PATCH 4/5] Fix goal_scene function signature and enable in main.py for full integration Co-authored-by: tomoakiwakawaka <131442068+tomoakiwakawaka@users.noreply.github.com> --- __pycache__/goal.cpython-312.pyc | Bin 5635 -> 5756 bytes __pycache__/main.cpython-312.pyc | Bin 0 -> 2630 bytes ...es_robocup_ssl_wrapper_pb2.cpython-312.pyc | Bin 0 -> 1532 bytes __pycache__/network.cpython-312.pyc | Bin 0 -> 3567 bytes goal.py | 10 +++++++--- main.py | 8 ++++---- 6 files changed, 11 insertions(+), 7 deletions(-) create mode 100644 __pycache__/main.cpython-312.pyc create mode 100644 __pycache__/messages_robocup_ssl_wrapper_pb2.cpython-312.pyc create mode 100644 __pycache__/network.cpython-312.pyc diff --git a/__pycache__/goal.cpython-312.pyc b/__pycache__/goal.cpython-312.pyc index cceb80a084df79376b8c06889d0e97c0053d9ecd..d6325bd6e6aa2b9cdf63a7217e4709d2c91bb6c7 100644 GIT binary patch delta 1759 zcmcIkO>7%Q7@b+Ky+4W9UVAr=|B@JJQnzVHXeEk>f)FV5(trdUQW=cn*@ifdZH+fg z0yB*e960olvIm4J?o{Rwl)?cCi6auE80Ao5sYoD!gv0?U91udlx0|e;AP^j2q@8*5 zzBk{@es5=A9shM)`!pO@5wssZyZzz|$?Mu6p13}CN)cZ}mqHsjAAGNHSHRNF<-kXQ zl;jEzn+#(Bp8W}6-*j@}5$8F{2#W-_gaZkeoEhmXFhZA+T_z`zK$lU7$W;>LeI&&D ziNwQ;h-;u4cBW(li_WZ^hrS`7-h5v{L?%i#v?B2ccClKOR}>z_NI)#Y5W`Gh0TyJT zR_O2qIz*ygL~OZ-g~nq{-xBD{EC&5L(@9?v*aAd(oEzL^TE+B)$2t~|GJ~0R!e^QG zhGK3WnYQpji1aT%ju6!$kDK^UjmW+ZBNk_>tKGuXWMO8Mg>_*WYDYt?-yMNhY5@#m zEoi6xL@Y+ae)Wds{prex;+!3^oI%%J)aE8sKgSpoO{-G?Y# zjd@`0$s=5vXIYSHM-paO7F-p2uFfNZc=l=*vi^90*6^= zmDD|OC+Ml^6kumRLZ2Dx1Xf9-qfx7DEnTsS4cN%CJ460_v9w|p%k`Q~>(#17i_N9Q zTB+Jmn|8fXw60hXc*M&~tcBIZj@Yc1mz|r@n&fRqryN5ci9HAkdft;Y?UHTLbIz>( zq&x)72sGy{eOz6H$ys=sA2^@u*Cw98iurB-9S&4lpn2!l4lDwl0f1wTE(Q<7q_w!G)f-`NNFXS$cqTNwt z&Is&I$!`BpbS@IO9SH)?OLWFPTBuQ~ky4XhfC+W~Rn-0YQP+Cv9_}Wh85gIZ`$e8! Xsgu>JHA5@To_V5gKXVCV(-Zswd8cW8 delta 1585 zcmcIkO=ufO6rS1DN~@n;?XI+vR+i(K{8_=Sl9&`@l7>*Xr@GClkPtBIjFMPNS7x+{ zZ88&6+CmRGILs{}G~^U;FU6Nq=)DjeQgR4UDS_T{ZVo9eByTLOq<{-Kv=4UPH{ZPX zX6Aj;{4@F0r1{V=QV8suhmS7LmTs9PeB{=l!)cAgzQ*U`Yq%Q!;oR@a)O77~>x+7g zUJZget*x|Zv-Z(yNc{`p6!AmNfPHNlHln}h-V;bOsIMuE25-VVSHdrtZyjodr71qhBkX! za|33$KQo!Jq0sBhgmIM_ME4->Je-YZxy5akX&Al4A;+@JVs@B~D3;m8U3@VXA&g*s zy%#YEAj#$&LR1#Eqx69%sX;nyqRZF~OkI{{)&*r%X+oE1oTa1(J{hPOe4vH7s0K4h zy5A?K61x3`{u$3hGSBh6Y#1(zy|`jQtv^C}^BrrHB{{)e<~Bwna^Ok75-+eqV@#aU z%k#X*99AU835X+UK&C`2_oc#e0VXM6vO7#3n0$}1c9<-z**nMrB*Grp_dr#uY(0l(5WC`4_MkX! z(YbObC!f0J!lHlW%EEH1y%a9Bf=<3m($-=t?6dSFl<1_|VQYDzeytva9gWl%uU-;= zTY+fXqt0=;#rrZyYlnVVr^m#7`?FXX81a`qneqWl!`HqoYR*mPL!5M6ewyp%=6Q{2Mvh BD>(oF diff --git a/__pycache__/main.cpython-312.pyc b/__pycache__/main.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..30697d1a15f7ce8711373e2e7bd7fcd1c27eac5f GIT binary patch literal 2630 zcmc&#OKcNI7@pmowbzfe6WdAbxN(eA1Wr^c_0$JSMG2uH5So@q%~EOW*h6sGhr7E5 z3{~p@5};NhqEg}3D-|5tTQ9A0shX-)<~Dxaeo#JOT8*p57-+bRNG@+7xag}SJAY^#cN zQKitx%E8vm+O{=c3ZT&*e6k0h=)v#k!Kb?O9)LTTX;?vf}Ofgrm0~*Sr{AnZ>G7gw%?Uyq$ z60@peXsRS3P1N(tN=8aEc33x54T(z`NfHaHo;UKUVuuY4>z@O8=ges&soA_yO4D|v zDb>^^)o5!YP3^O2nzFsiYDN-&A?3r16b{E zo-bs`p>t3z8ZS@VoG8kfydsLY7?+XJmhl)MHhM9EM^wM?ef`3>^@|tl7q8SWTz~lG z)%xnq`sxq$)f@HIuhMDTW1Q4bCYM*1ZMTAqGpcqQB(O2^Q{xg-tMRg6U20#(faq1XCuM zx(~+c!1KV(m!ZYKaAonDcvZa1C(2%nT9yf=_zjMFLLIGsMi&M~T_{4v8L~r^~a}(5|&oZD^M{ zwCmQV>)DOTif|U6I8PmL>Y!(dIYPfn%rW|XVy3A@B998VxPgw$RxsXm5MIFc)!={$ z2dcO!i2Xqm4pw2*g24`as0K$&I8ue9796O-xC!G`IMR8h0eLoVap4*lHMwY&8@9Me zjf&2Q646d&7-le)O2Sztq#k2GzQw!5Sf+Lb^cc1x31h_BET7Wp!3XQm;klktun zK{)ll;L4FzPiX&(MM4cNN@Y~35~tpZdP5wTacswwYDbp+d-Hzp&HEa^QB?)7_2s{} zPyUDj@R19_l6`RaNC4mkKtKaXK%yx$L`@Pnmdt@hOp`r4z;IkkcsR!Jpr!~w1X!t` z2^{vn8$Q%dFfX#HYQx@lL_5hW68~pWpXhrD5Q=ZG2>H^I%wDQzds6g`x#m=G?uOXY zc@awW*(kGzaS|oIv5*1_EZ2Yeo{t9CrU9U5kc^Y?$3Tx1oPuXVX^2TZ^D^86x zeb&UWtSTlA?9g_Pl=({;Etl`WKYRX5dSwke$*eLMI!g&@VS4ED4|z^21V=1Vy@8Vx zN+NKV5%aytw~2OMIVaKl76thY*npgl?)zNY%u>I9ajt zwWfnxY;nzuybDP*r|SBpvM~zdC>+3b@V7xA?1jxkmb=v=MgGnTGP$ibBq>i zCU%uVvAnQ+tF&@|*}ZU+598h5IL$XvvDs=A!lAU?c-16^ZrVO^g;)_Sz)OZlZs{A*(+4e1Gl< z8^}4@YO)(P_mt4Jx#Ba2>J{e_zZu^OVO^r7i;Pm#Z@b`k_8iDyXkt?t>nfR!lG#!w*W-sW5LSc_-~rPOXE)XJU3IFX zPHm~Vu6nhjUOfQd+MO5+e)w)|UD*S<^+XrsIw1E-dA;=St!;2)C%U)!>!Z$Nxb;}y z2F8vw+?B>V()i1V@1)ti)VcN9ZSnL@Zgx{VwJm0MrluKqFHRl|f`OlDhDH4qhJeXv literal 0 HcmV?d00001 diff --git a/__pycache__/network.cpython-312.pyc b/__pycache__/network.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1535abe1f5fb0eb1f2d5dca938a9a8f4fbb6f177 GIT binary patch literal 3567 zcmahLTTC0-^^QG$Vw;x(gaQF$AXbZ6o=FW!L@;bA&xLJQSe2&6GY}K};LaElgsXu> z3usqbQf&*7B5hV1b$6S7M5-!9ZBM$Q6&wfcEw2fHAQu8Q~ov8q&taSmM zGV23+Ru`aIeZaud0V8V&m{=ocoY4i$EX7i@x}ZgeI5el~*33Y4YL-VRP|HqI@9VO( zfQ_@wed{D2c2(u2)|{lWru+IVl|rDc?xX}~z7IDiLy^dD&y|(XLO6w6yUyau{Tolx zIfH8De@f7*#4>Epotib@L;)vj0eFfnV68W)K-qQ5V|zl3j4oSR+s=7kfxp&eYg=1~ zx6|9!?rjT~H6auxSCY{aa=j3dR)+x);+1Fr$i|#XB375ASbb6_9Qgv}jiR7xKyybi zIwk<3;nG@q7FVMh)C)$HJ7-a`+^o@}WNnT^Fb&uCGKZ{KI_EcymBN#fD>~KN6w=(e zD32tiN+$I}smjln&8%TXuQ^}7%s$G+B&|8!|Mx+KYB4u!Y*gl`Dz=i>2b0KS9DRb| zews9C_2@7;QMeSc1(TS``VM~Bl7pAwj0&L84@E zl!!6Cqf>y7k57!fKE@1=%f*A^3^16H{*lZ56O-Q?9QPRHg6YJ}42Ky$yv)gkk;J?Z z4h4CEnZ>b0Tz2prUIcECWiiL|vLQ>RBbZy@NygWb@uI8cN-V;);6yaa;g+QszS`1% zO~ApB(98yf;L8g*HIeYfugf;LZX(WP{ensVDS;n<2Y`qkmz0S^=`xo%mOfQ0jvf>g zzjI;p!kx1BYHrv3sx0O4Ngm%`LAU5Xpv~)Jt7GpDq?`?sv*F%is>vrc`5yM}(-#SE zaCLAax=&Xh*h*5iD#=#0!|d6b#eSl(d$W5hvBTZ_VXC1^YUtW4IG0!7C8_DsAD#R3 zz(GNwIP?t8heF3i4GR)*rT9fawzbKhr=;(L3>isk1Z!f}6PHC;72{EfTy z%I=(1J+Z3QPS#h?L2qi**r4<4Ro|DF?r}mRv6z4VB)SfN^+-5=1KbFgB~2R3h80uJ z$`pJfB~3puMa|iHiCRL}^iybw`i9t2Z~yb{F0e!Thcdv915TauqERg-3QfV8RJ|V4 zC?+*3>sU_d*2@(W95h6ZtL=+LBEcwI+jk`xo#j|xq5&f5@!f_IkY@ zt85JO4D>)uBugwCz4hWfsQ>J4bID^Q1+OzArAE^$d>+V zAucY2;aMmi;;v7}f|wnQ3LM6XxZpA40!0BY#NrIM$VCNAo>bYua?^=fOg^$?liKYI zzjhLt;&}3DOUj&#Y^m3%r9K;sa7-u$Dr58W%9BD4h|j|g;yK<3#VMjg`i!AHT~d`Q zsh3LX_e&bmRkiPp+#dPp+j~`An^laMQo^p3f?(TQLzq4>_eHqI$RH{KJ-%?={Ky+J42vLE|fgb;o+Q^|t-chANs;aZ1+Hh%TI139aoB8nWY=+ti6g@+5NqF$+}_uq$lLVR)9iAt-p7yDaD!@r*Ukd4S2 z+7Hb3T}SKR&21oPXn&z}!8NyEhd#XQ?sK3=4ohFN{!zKD@2vh&y#eTt&Kd}%xfJkE zbWZE4fC-Ot;9fwbX7#6ULFliE3>?OkF z^9Yk3f!zd)TcdXeQtnR4-MMG%67^}MUw5oJHWpKbwNhd2-NuxwQ*w1aSlCD3B|P)0 zdBb_rkw?rYxqQ1l!w&~iJ;PGZ@TXIIJ#Xv==5_-=P6g&9K(5C30t-?PXu?nF0;=d~ PB~6t)x7AVY%1!?Z?mp+F literal 0 HcmV?d00001 diff --git a/goal.py b/goal.py index d0bbbba..eacd44c 100644 --- a/goal.py +++ b/goal.py @@ -48,7 +48,7 @@ def calculate_ball_angle(ball_velocity_data): return angle, math.sqrt(vx**2 + vy**2) return None, None -def goal_scene(track_ball_position, track_robot_position, path, stop_event, debug=False): +def goal_scene(udp, receive_packet, receive_game_controller_signal, stop_event, path, debug, sock): # 左右ゴール用の別々のファイルパス left_goal_path = os.path.join(path, "robot_position_left_goal.csv") right_goal_path = os.path.join(path, "robot_position_right_goal.csv") @@ -68,8 +68,12 @@ def goal_scene(track_ball_position, track_robot_position, path, stop_event, debu while not stop_event.is_set(): try: - balls_position = track_ball_position() - robot_poji = track_robot_position() + # Import the tracking functions here to use them properly + from ball import track_ball_position + from robot import track_robot_position + + balls_position = track_ball_position(udp, receive_packet, receive_game_controller_signal, stop_event, debug, sock) + robot_poji = track_robot_position(udp, receive_packet, path) if balls_position and robot_poji: ball_x, ball_y, state = balls_position[-1] diff --git a/main.py b/main.py index a33c6b2..7d1da04 100644 --- a/main.py +++ b/main.py @@ -21,9 +21,8 @@ ) thread_ballvelocity = threading.Thread(target=ball_velocity, args=(udp, receive_packet,receive_game_controller_signal, stop_event, path, debug, sock)) thread_robot = threading.Thread(target=store_robot_position, args=(udp, receive_packet, path, stop_event, debug)) - # thread_goal = threading.Thread(target=goal_scene, args=(track_ball_position, track_robot_position, path, stop_event, debug)) + thread_goal = threading.Thread(target=goal_scene, args=(udp, receive_packet, receive_game_controller_signal, stop_event, path, debug, sock)) thread_possession= threading.Thread(target=store_possesion, args=(udp, receive_packet,receive_game_controller_signal, stop_event, path, debug, sock)) - # thread_goal.start() thread_pass = threading.Thread( target=count_passes, args=(udp, receive_packet, receive_game_controller_signal, stop_event, path, debug, sock) @@ -31,6 +30,7 @@ thread_ball.start() thread_robot.start() + thread_goal.start() thread_ballvelocity.start() thread_possession.start() thread_pass.start() @@ -38,7 +38,7 @@ try: thread_ball.join() thread_robot.join() - # thread_goal.join() + thread_goal.join() thread_ballvelocity.join() thread_possession.join() thread_pass.join() @@ -46,7 +46,7 @@ stop_event.set() thread_ball.join() thread_robot.join() - # thread_goal.join() + thread_goal.join() thread_ballvelocity.join() thread_pass.join() udp.close() From 55c7a6fe7a46f86e1d8e806ab9180a1446775837 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 20 Sep 2025 15:50:57 +0000 Subject: [PATCH 5/5] Add .gitignore and clean up pycache files Co-authored-by: tomoakiwakawaka <131442068+tomoakiwakawaka@users.noreply.github.com> --- .gitignore | 47 ++++++++++++++++++ __pycache__/goal.cpython-312.pyc | Bin 5756 -> 0 bytes __pycache__/main.cpython-312.pyc | Bin 2630 -> 0 bytes ..._robocup_ssl_detection_pb2.cpython-310.pyc | Bin 1470 -> 0 bytes ...s_robocup_ssl_geometry_pb2.cpython-310.pyc | Bin 3284 -> 0 bytes ...es_robocup_ssl_wrapper_pb2.cpython-310.pyc | Bin 1191 -> 0 bytes ...es_robocup_ssl_wrapper_pb2.cpython-312.pyc | Bin 1532 -> 0 bytes __pycache__/network.cpython-312.pyc | Bin 3567 -> 0 bytes 8 files changed, 47 insertions(+) create mode 100644 .gitignore delete mode 100644 __pycache__/goal.cpython-312.pyc delete mode 100644 __pycache__/main.cpython-312.pyc delete mode 100644 __pycache__/messages_robocup_ssl_detection_pb2.cpython-310.pyc delete mode 100644 __pycache__/messages_robocup_ssl_geometry_pb2.cpython-310.pyc delete mode 100644 __pycache__/messages_robocup_ssl_wrapper_pb2.cpython-310.pyc delete mode 100644 __pycache__/messages_robocup_ssl_wrapper_pb2.cpython-312.pyc delete mode 100644 __pycache__/network.cpython-312.pyc diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c0fcd0f --- /dev/null +++ b/.gitignore @@ -0,0 +1,47 @@ +# Python +__pycache__/ +*.py[cod] +*$py.class +*.so +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# Virtual environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# IDE +.vscode/ +.idea/ +*.swp +*.swo +*~ + +# Output files +out/ +*.csv +*.log + +# OS +.DS_Store +Thumbs.db \ No newline at end of file diff --git a/__pycache__/goal.cpython-312.pyc b/__pycache__/goal.cpython-312.pyc deleted file mode 100644 index d6325bd6e6aa2b9cdf63a7217e4709d2c91bb6c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5756 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 diff --git a/__pycache__/main.cpython-312.pyc b/__pycache__/main.cpython-312.pyc deleted file mode 100644 index 30697d1a15f7ce8711373e2e7bd7fcd1c27eac5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2630 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 CV2f%1 diff --git a/__pycache__/messages_robocup_ssl_wrapper_pb2.cpython-312.pyc b/__pycache__/messages_robocup_ssl_wrapper_pb2.cpython-312.pyc deleted file mode 100644 index fe4d9551cb44bec78443437c3879dab69aead40e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1532 zcmaJ>&2Q646d&7-le)O2Sztq#k2GzQw!5Sf+Lb^cc1x31h_BET7Wp!3XQm;klktun zK{)ll;L4FzPiX&(MM4cNN@Y~35~tpZdP5wTacswwYDbp+d-Hzp&HEa^QB?)7_2s{} zPyUDj@R19_l6`RaNC4mkKtKaXK%yx$L`@Pnmdt@hOp`r4z;IkkcsR!Jpr!~w1X!t` z2^{vn8$Q%dFfX#HYQx@lL_5hW68~pWpXhrD5Q=ZG2>H^I%wDQzds6g`x#m=G?uOXY zc@awW*(kGzaS|oIv5*1_EZ2Yeo{t9CrU9U5kc^Y?$3Tx1oPuXVX^2TZ^D^86x zeb&UWtSTlA?9g_Pl=({;Etl`WKYRX5dSwke$*eLMI!g&@VS4ED4|z^21V=1Vy@8Vx zN+NKV5%aytw~2OMIVaKl76thY*npgl?)zNY%u>I9ajt zwWfnxY;nzuybDP*r|SBpvM~zdC>+3b@V7xA?1jxkmb=v=MgGnTGP$ibBq>i zCU%uVvAnQ+tF&@|*}ZU+598h5IL$XvvDs=A!lAU?c-16^ZrVO^g;)_Sz)OZlZs{A*(+4e1Gl< z8^}4@YO)(P_mt4Jx#Ba2>J{e_zZu^OVO^r7i;Pm#Z@b`k_8iDyXkt?t>nfR!lG#!w*W-sW5LSc_-~rPOXE)XJU3IFX zPHm~Vu6nhjUOfQd+MO5+e)w)|UD*S<^+XrsIw1E-dA;=St!;2)C%U)!>!Z$Nxb;}y z2F8vw+?B>V()i1V@1)ti)VcN9ZSnL@Zgx{VwJm0MrluKqFHRl|f`OlDhDH4qhJeXv diff --git a/__pycache__/network.cpython-312.pyc b/__pycache__/network.cpython-312.pyc deleted file mode 100644 index 1535abe1f5fb0eb1f2d5dca938a9a8f4fbb6f177..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3567 zcmahLTTC0-^^QG$Vw;x(gaQF$AXbZ6o=FW!L@;bA&xLJQSe2&6GY}K};LaElgsXu> z3usqbQf&*7B5hV1b$6S7M5-!9ZBM$Q6&wfcEw2fHAQu8Q~ov8q&taSmM zGV23+Ru`aIeZaud0V8V&m{=ocoY4i$EX7i@x}ZgeI5el~*33Y4YL-VRP|HqI@9VO( zfQ_@wed{D2c2(u2)|{lWru+IVl|rDc?xX}~z7IDiLy^dD&y|(XLO6w6yUyau{Tolx zIfH8De@f7*#4>Epotib@L;)vj0eFfnV68W)K-qQ5V|zl3j4oSR+s=7kfxp&eYg=1~ zx6|9!?rjT~H6auxSCY{aa=j3dR)+x);+1Fr$i|#XB375ASbb6_9Qgv}jiR7xKyybi zIwk<3;nG@q7FVMh)C)$HJ7-a`+^o@}WNnT^Fb&uCGKZ{KI_EcymBN#fD>~KN6w=(e zD32tiN+$I}smjln&8%TXuQ^}7%s$G+B&|8!|Mx+KYB4u!Y*gl`Dz=i>2b0KS9DRb| zews9C_2@7;QMeSc1(TS``VM~Bl7pAwj0&L84@E zl!!6Cqf>y7k57!fKE@1=%f*A^3^16H{*lZ56O-Q?9QPRHg6YJ}42Ky$yv)gkk;J?Z z4h4CEnZ>b0Tz2prUIcECWiiL|vLQ>RBbZy@NygWb@uI8cN-V;);6yaa;g+QszS`1% zO~ApB(98yf;L8g*HIeYfugf;LZX(WP{ensVDS;n<2Y`qkmz0S^=`xo%mOfQ0jvf>g zzjI;p!kx1BYHrv3sx0O4Ngm%`LAU5Xpv~)Jt7GpDq?`?sv*F%is>vrc`5yM}(-#SE zaCLAax=&Xh*h*5iD#=#0!|d6b#eSl(d$W5hvBTZ_VXC1^YUtW4IG0!7C8_DsAD#R3 zz(GNwIP?t8heF3i4GR)*rT9fawzbKhr=;(L3>isk1Z!f}6PHC;72{EfTy z%I=(1J+Z3QPS#h?L2qi**r4<4Ro|DF?r}mRv6z4VB)SfN^+-5=1KbFgB~2R3h80uJ z$`pJfB~3puMa|iHiCRL}^iybw`i9t2Z~yb{F0e!Thcdv915TauqERg-3QfV8RJ|V4 zC?+*3>sU_d*2@(W95h6ZtL=+LBEcwI+jk`xo#j|xq5&f5@!f_IkY@ zt85JO4D>)uBugwCz4hWfsQ>J4bID^Q1+OzArAE^$d>+V zAucY2;aMmi;;v7}f|wnQ3LM6XxZpA40!0BY#NrIM$VCNAo>bYua?^=fOg^$?liKYI zzjhLt;&}3DOUj&#Y^m3%r9K;sa7-u$Dr58W%9BD4h|j|g;yK<3#VMjg`i!AHT~d`Q zsh3LX_e&bmRkiPp+#dPp+j~`An^laMQo^p3f?(TQLzq4>_eHqI$RH{KJ-%?={Ky+J42vLE|fgb;o+Q^|t-chANs;aZ1+Hh%TI139aoB8nWY=+ti6g@+5NqF$+}_uq$lLVR)9iAt-p7yDaD!@r*Ukd4S2 z+7Hb3T}SKR&21oPXn&z}!8NyEhd#XQ?sK3=4ohFN{!zKD@2vh&y#eTt&Kd}%xfJkE zbWZE4fC-Ot;9fwbX7#6ULFliE3>?OkF z^9Yk3f!zd)TcdXeQtnR4-MMG%67^}MUw5oJHWpKbwNhd2-NuxwQ*w1aSlCD3B|P)0 zdBb_rkw?rYxqQ1l!w&~iJ;PGZ@TXIIJ#Xv==5_-=P6g&9K(5C30t-?PXu?nF0;=d~ PB~6t)x7AVY%1!?Z?mp+F