==================================================================== 依頼91:下げ膳で卓に着いた台のふさぎを直し、120回を回し、比較動画の素材を撮る(ここで区切る) 2026-11-04 09:39〜12:20 作業場所 cs:77 → cs:78 build_id cs78_20261104_1011(画面なし・保留 0) ==================================================================== 結論 ・(イ) と (ウ) を入れた(cs:78。bus の回だけ働く)。serve の回は base73 と記録が一致、bus の同じ種の2回も一致 ・120 回(bus75):瞬間移動 0・1コマの跳び 0。全員が帰らなかった回は 4 回 → 1 回(④2台 種4)。 解けずに残った詰まりは 53 件 → 4 件(どれも ④2台 種4)。上限で戻った 14 回・卓で待つ下げ膳の台を動かす助け 166 回 ・④2台 種4 は、料理の往復の2台が向かい合って止まったもの(下げ膳の台ではない。依頼90 と同じ場所)。区切りに従い記録だけにした ・比較動画の素材を撮った(③2台 種7 の serve と bus。どちらも全員帰った)。通しのパネル付き動画も2本作った(どちらも 10.5 倍) ・止める線(瞬間移動・serve が base73 と違う・bus の同じ種の2回が違う)には当たっていない -------------------------------------------------------------------- 0. 始める前の確かめ(どれも依頼どおり) -------------------------------------------------------------------- Unity エディタ・night_runner・rec_runner:動いていない(Unity Hub だけ)/KIOXIA:マウント済み/unity_ledger_v1.lock:無し/ 保留 0/作業場所 cs:77 - head 台帳を archive/unity_ledger_v1_pre_bus91_20261104/ に退避(2804 行・md5 8beaf91f429e049ce10152bd5ebf6946) -------------------------------------------------------------------- 1. 入れたこと(cs:78。条件の mode が bus の回だけ働く) -------------------------------------------------------------------- (イ) 卓でスタッフを待っている下げ膳の台は、助けで動かしてよい ・30 秒動けなかった台の向かい合いの相手が、卓でスタッフを待っている下げ膳の台なら、その台を動かす (往復を終えて止まっている台と同じ扱い:止まっている方を動かす。動かす先の決め方も同じ=相手の道の先から 相手の半径+前のセンサー 0.6 m+自分の半径+robotYieldSeparationM 離れた、床をたどって届く所) ・押されたあとは道を引き直さず、押された所でスタッフを待ち続ける。載せ終えたら、そこから洗い場へ (スタッフはそのまま卓で載せる。押されている間は卓での待ちの続きなので止まりに数えない) ・人が 30 秒動けず、すぐ前に止まっている台があるときにどかす決まり(依頼84)にも、この台を入れた。 ただし、その台の片付けのスタッフのためにはどかさない ・助けのスタッフが 60 秒着けずに交代するとき、相手の台に動かす台を替える決まり(依頼84)にも、この台を入れた ・料理の受け渡し中の台(25 秒)は、今までどおり動かさない (ウ) 卓でスタッフを待つ時間の上限 120 秒(ServiceOps.BusWaitCapSec) ・台が卓に着いて(スタッフのそばで着いたとみた時も)から 120 秒たっても、スタッフが皿を載せ始めていなければ、 皿を載せずに待機場所へ戻る(洗い場には寄らない)。その卓はスタッフが人だけで下げる(返却口へ運ぶ・拭く。今までの人だけと同じ) ・スタッフがもう載せ始めていたら戻らない(皿を載せたまま放り出さないため) ・120 秒はサイトの params に無い(試算には上限が無い)ので、コードの定数にした。サイトの試算に入れるかは決めてほしいこと 2 記録(bus の回だけ。serve の回は今までと同じファイル・同じ列) ・bus_runs.csv のいちばん後ろに wait_capped(上限で戻ったら 1。end_why は「上限で戻った」) ・bus_summary.json に wait_cap_s(120)・bus_wait_cap_returns(上限で戻った回数)・bus_wait_rescue_calls(卓で待つ台を動かす助けを呼んだ回数) 試しの回(check-in の前。書き先を KIOXIA の night/20261104_try91/ に向ける一時の直しを入れた版で、台帳には書いていない): 依頼90 で止まった4回のうち ③2台 種2・④2台 種9・⑥2台 種4 は全員帰った。④2台 種4 は残った(下の 5 章)。 一時の直しは check-in の前に外した(HeadlessRun.cs は cs:77 と1字も違わないことを確かめ、保留から外した) -------------------------------------------------------------------- 2. 変えたファイル・版 -------------------------------------------------------------------- cs:78:Service/ServiceOps.cs・Robot/ServingRobotController.cs・People/StaffAgent.cs・Experiment/ExperimentRunner.cs 実行ファイル:Builds/headless build_id cs78_20261104_1011・unity_cs ServiceSim/cs:78・pending_changes 空・error CS 0 録画用:Builds/rec20_bus91(Builds/headless の写し) make_panel_video.py(status_videos/tools):ロボットの欄に「下げ膳」を出すようにした(下の 6 章。元は night/20261104_rec91/make_panel_video_orig.py) -------------------------------------------------------------------- 3. 確かめ(画面なし・cs:78) -------------------------------------------------------------------- ・serve:⑦ fam_p5・2台・種7(det91s)と base73(cs:76)の同じ回 contacts・dishes・give_ups・groups・nowarp_jams・passes・people_jams・requeues・rescues・robot_track・stops・timeline・yields は1行も違わない。 trips.csv は plan_ms_max の列だけ、summary.json・conditions.json は written_at だけ、run_info.json は build_id・night・parallel・ parallel_actual・run_label・speedup・unity_cs・wall_seconds・written_at と plan_ms_max_per_trip(道を引く実時間)だけ違う → 一致(依頼86・90 と同じ扱い) ・bus:③ fam_p1・2台・bus・種7 を2回(det91a・det91b)。上の13ファイル・bus_runs.csv・bus_summary.json・summary.json・conditions.json が一致。 違うのは run_info.json の run_label・speedup・wall_seconds・written_at・plan_ms_max_per_trip と trips.csv の plan_ms_max だけ → 一致 記録:night/20261104_det91s・det91a・det91b -------------------------------------------------------------------- 4. 120回(label bus75・同時4本・条件 120〜131 × 種0〜9) -------------------------------------------------------------------- 120 回とも completed(やり直し 0)。10:13〜10:56。実時間 平均 1.4 分・最長 3.8 分 見張り(1分ごと):瞬間移動 0・1コマの跳び 0 のまま終わった 記録:night/20261104_bus75_cs78/(queue_src.json・runner_log・runs.csv・judge.md・agg91.py・agg91_out.txt・run120.sh・watch91.py・watch_log.txt) 全体(同じ店・台数・種どうし) serve(base73・cs:76) bus74(cs:77) bus75(cs:78) 回の数 120 120 120 瞬間移動 0 0 0 1コマの跳び 0 0 0 解けずに残った詰まり(件) 1 53 4 同(回) 1 4 1 全員が帰ったあとに始まった詰まり(件) 0 0 1 全員が帰らなかった回 なし ③2台種2・④2台種4・④2台種9・⑥2台種4 ④2台種4 上限(120秒)で戻った回数 - - 14 卓で待つ下げ膳の台を動かす助け(呼んだ回数) - - 166 詰まり(回) 2215 2565 2544 詰まり(秒) 133086 1567741 326575 卓を強引に空けた 32 30 25 助け 2243 2674 2732 下げ膳の合計(bus75):片付け 8484・ロボットが運んだ 2582・人だけ 5902・ロボットが向かった 2608・載せる前に取りやめ 23(うち上限で戻った 14)・ スタッフのそばで卓に着いたとみた 1545(bus74:片付け 8316・運んだ 2496・人だけ 5820・向かった 2514・取りやめ 10・そばで着いた 1485) 店・台数ごと(種 0〜9 の中央値。分・km・割合。向き=serve→bus75 の増減、+は増える) 店 台数 項目 serve bus74 bus75(向き) 試算 serve→bus(向き) 合う? ③1台 入店待ち 3.47 3.47 3.47(=) 1.68→1.72(+) 逆 ③1台 料理の待ち 2.45 2.50 2.50(+) 1.97→2.03(+) 合う ③1台 turn 4.97 5.11 5.10(+) 2.27→2.27(-) 逆 ③1台 歩いた距離km 2.72 2.63 2.62(-) 1.88→1.86(-) 合う ③1台 下げ膳を運んだ割合 - 0.150 0.150 試算 0.165 (記録) ③2台 入店待ち 2.72 3.61 3.95(+) 1.13→2.22(+) 合う ③2台 料理の待ち 1.71 1.82 1.76(+) 0.96→1.08(+) 合う ③2台 turn 4.05 5.58 6.05(+) 2.14→2.00(-) 逆 ③2台 歩いた距離km 2.54 2.35 2.35(-) 1.61→1.45(-) 合う ③2台 下げ膳を運んだ割合 - 0.354 0.358 試算 0.442 (記録) ⑦1台 入店待ち 3.87 3.87 3.87(=) 1.58→1.53(-) 逆 ⑦1台 料理の待ち 2.51 2.51 2.51(+) 2.01→2.04(+) 合う ⑦1台 turn 6.47 6.59 6.59(+) 2.31→2.27(-) 逆 ⑦1台 歩いた距離km 2.74 2.63 2.62(-) 1.97→1.90(-) 合う ⑦1台 下げ膳を運んだ割合 - 0.145 0.145 試算 0.166 (記録) ⑦2台 入店待ち 3.87 5.07 4.65(+) 1.60→1.70(+) 合う ⑦2台 料理の待ち 1.52 1.83 1.86(+) 1.01→1.10(+) 合う ⑦2台 turn 4.49 6.79 8.06(+) 2.19→2.04(-) 逆 ⑦2台 歩いた距離km 2.55 2.37 2.36(-) 1.69→1.47(-) 合う ⑦2台 下げ膳を運んだ割合 - 0.386 0.364 試算 0.443 (記録) ④1台 入店待ち 11.02 11.38 11.39(+) 4.81→4.85(+) 合う ④1台 料理の待ち 1.79 1.95 1.91(+) 1.29→1.38(+) 合う ④1台 turn 19.72 19.41 19.66(-) 9.51→9.43(-) 合う ④1台 歩いた距離km 2.37 2.17 2.17(-) 1.75→1.64(-) 合う ④1台 下げ膳を運んだ割合 - 0.298 0.303 試算 0.274 (記録) ④2台 入店待ち 18.66 16.70 16.70(-) 5.57→3.86(-) 合う ④2台 料理の待ち 1.98 3.03 3.03(+) 0.47→0.57(+) 合う ④2台 turn 28.61 31.51 30.62(+) 9.88→8.57(-) 逆 ④2台 歩いた距離km 2.66 2.20 2.25(-) 1.75→1.37(-) 合う ④2台 下げ膳を運んだ割合 - 0.550 0.590 試算 0.710 (記録) ⑤1台 入店待ち 6.99 6.98 6.98(-) 3.16→3.38(+) 逆 ⑤1台 料理の待ち 2.63 2.69 2.68(+) 2.28→2.32(+) 合う ⑤1台 turn 10.21 10.83 10.30(+) 3.39→3.40(+) 合う ⑤1台 歩いた距離km 3.22 3.10 3.10(-) 2.59→2.52(-) 合う ⑤1台 下げ膳を運んだ割合 - 0.121 0.132 試算 0.145 (記録) ⑤2台 入店待ち 6.12 5.83 5.83(-) 2.37→2.78(+) 逆 ⑤2台 料理の待ち 1.71 2.06 2.06(+) 1.27→1.34(+) 合う ⑤2台 turn 10.45 9.86 9.84(-) 2.41→2.25(-) 合う ⑤2台 歩いた距離km 2.87 2.62 2.66(-) 2.12→1.91(-) 合う ⑤2台 下げ膳を運んだ割合 - 0.353 0.348 試算 0.392 (記録) ⑥1台 入店待ち 5.19 4.92 4.92(-) 3.68→4.01(+) 逆 ⑥1台 料理の待ち 2.03 2.09 2.09(+) 2.01→2.03(+) 合う ⑥1台 turn 11.73 11.40 11.40(-) 6.61→6.57(-) 合う ⑥1台 歩いた距離km 2.58 2.47 2.47(-) 2.18→2.09(-) 合う ⑥1台 下げ膳を運んだ割合 - 0.172 0.172 試算 0.164 (記録) ⑥2台 入店待ち 4.54 4.54 4.54(-) 2.11→1.77(-) 合う ⑥2台 料理の待ち 1.05 1.32 1.34(+) 0.82→0.92(+) 合う ⑥2台 turn 12.05 10.42 11.87(-) 5.27→4.74(-) 合う ⑥2台 歩いた距離km 2.37 2.14 2.14(-) 1.91→1.64(-) 合う ⑥2台 下げ膳を運んだ割合 - 0.400 0.393 試算 0.482 (記録) ②1台 入店待ち 1.60 1.62 1.62(+) 1.79→2.47(+) 合う ②1台 料理の待ち 1.02 1.13 1.13(+) 0.91→1.04(+) 合う ②1台 turn 3.49 3.01 3.01(-) 3.06→3.02(-) 合う ②1台 歩いた距離km 1.53 1.33 1.33(-) 1.16→1.09(-) 合う ②1台 下げ膳を運んだ割合 - 0.403 0.403 試算 0.399 (記録) ②2台 入店待ち 1.65 1.66 1.66(+) 1.30→2.12(+) 合う ②2台 料理の待ち 0.61 0.94 0.98(+) 0.40→0.48(+) 合う ②2台 turn 4.03 3.80 3.90(-) 2.80→2.66(-) 合う ②2台 歩いた距離km 1.55 1.21 1.19(-) 1.11→0.91(-) 合う ②2台 下げ膳を運んだ割合 - 0.690 0.704 試算 0.818 (記録) (turn=客が帰ってから卓が使えるまで。歩いた距離=スタッフ1人の歩いた距離) 向き:合う 38・逆 10(bus74 と同じ本数・同じ項目)。逆の 10 本は bus74 と同じ:turn 5 本(③1・2台・⑦1・2台・④2台。試算は bus で減るか 横ばい、Unity は増える。⑦2台は 6.79→8.06 とさらに増えた)・入店待ち 5 本(③⑦1台・⑤1・2台・⑥1台。差が小さいものが多い) ロボットが下げ膳を運んだ割合は ④1台・⑥1台を除き試算より低め(例 ③2台 0.358/試算 0.442、②2台 0.704/0.818) 夜の判定(judge.md)の「回の失敗」2 件:④2台 種4 の全員が帰っていない(5 章)と、②2台 種3 の「ロボットが1コマで 0.05 m 超え」2コマ (瞬間移動 0・1コマの跳び 0。依頼90 で書いたのと同じ、連れて戻す速さ 1.0 m/秒 × 0.05 秒がちょうど 0.05 m になるもの) -------------------------------------------------------------------- 5. 残った詰まりの中身と場所(記録だけ。直していない) -------------------------------------------------------------------- ・④2台 種4(全員帰らなかった。回の上限 720 分まで回った):料理の往復の2台が (3.51, 2.39)(7050 秒から)と (4.42, 2.34)(7112 秒から)で 向かい合って止まり、どちらも 1往復の打ち切りのまま回の終わりまで残った。近くでスタッフの呼び出し (5.09, 2.65)・料理 (5.11, 2.10) も 止まったまま。下げ膳の台は関わっていない(この回の最後の下げ膳は 6267 秒に終わっている)。依頼90 と同じ場所・同じ形。 serve(base73)の同じ回は全員が帰っている ・③2台 種7(全員は帰った。11701 秒):全員が帰ったのとほぼ同じ時刻(11700.9 秒)に2号機を卓22 への下げ膳に出したが、卓を強引に空けたので 取りやめになり、2号機は待機場所のそば (17.3〜17.75, 5.6〜5.7) で行ったり来たりしたまま、600 秒後の 1往復の打ち切り(12299 秒)で回が終わった (「全員が帰ったあとに始まった詰まり」の 1 件)。bus74 の同じ回では起きていない((イ)(ウ) で卓の動きが変わり、最後の下げ膳の時刻が変わった)。 録画した同じ回(6 章)は録画なしの回と数字が違い(下記)、こちらでは起きていない serve(base73)の同じ 120 回で残った詰まりは 1 件(⑤2台 種7・スタッフ片付け (5.68, 13.13)。base73b で書いたもの) -------------------------------------------------------------------- 6. 比較動画の素材 -------------------------------------------------------------------- 回し方:night/20261104_rec91/rec_runner.py(依頼90 の写し。説明を足しただけ)で --oblique --hide-paths --max-wall-min 80 --parallel 2 --no-retry --limit-min 120 --build Builds/rec20_bus91。カメラは依頼87 と同じ wide_l30・wide_r30(方位 ±30°・見下ろし 60°・画角 40°・3840×2160・ 0.5 秒ごと・30 コマ/秒・回の最初から終わりまで・カメラの行列も)。並び:night/20261104_rec91/queue.json(③ fam_p1・2台・種7 の serve と bus) ・serve:20261104_rec91_cs78_fam_p1_r2_s7_passon_sbret_ek_post_rescue completed・全員帰った・店の時刻 199.5 分・実時間 58.0 分・瞬間移動 0・1コマの跳び 0・解けずに残った詰まり 0 録画 wide_l30 799.9 秒(23996 コマ・店の時刻 0〜11997.5 秒)・wide_r30 も同じ長さ ・bus:20261104_rec91_cs78_fam_p1_r2_s7_passon_sbret_ek_post_rescue_bus completed・全員帰った・店の時刻 196.6 分・実時間 57.5 分・瞬間移動 0・1コマの跳び 0・解けずに残った詰まり 0 録画 wide_l30 788.3 秒(23649 コマ・店の時刻 0〜11824.0 秒)・wide_r30 も同じ長さ 録画なしの同じ回(det91a・bus75)は 205.0 分で 5 章の終わりの詰まりがあった。録画した回と録画なしの回で数字が違うのは 依頼87 で書いたのと同じ(動画の映像とパネルの数字は、同じ録画の回の timeline.csv なので合っている) 置き場所:/Volumes/KIOXIA/r2r2r-data/service_sim/unity/rec_compare_20261104/{serve|bus}/ (録画 mp4・frames.csv・camera.json の写し、timeline.csv・summary.json、bus は bus_summary.json・bus_runs.csv も) 通しのパネル付き動画:night/20261104_rec91/post91.py(依頼87 の panel87.py の「通し」と同じ作り方:wide_l30 を開店から終わりまで、 0.5 刻みで 75 秒にいちばん近く 60〜90 秒に入る速さ)で make_panel_video.py を呼んだ ・serve/panel/whole_wide_l30_panel.mp4 76.2 秒・10.5 倍・1920x1080・30fps 題「③ 標準ファミレス・ロボット2台・配膳だけ」 ・bus/panel/whole_wide_l30_panel.mp4  75.1 秒・10.5 倍・1920x1080・30fps 題「③ 標準ファミレス・ロボット2台・配膳+下げ膳」 ・どちらも真ん中のコマ whole_wide_l30_panel_mid.png と panel_log.txt ・2本とも同じ 10.5 倍なので、並べたときに店の時刻がそろう(長さの違いは、bus の方が 173 秒早く全員が帰ったため) パネルの「下げ膳」:今の make_panel_video.py はロボットの欄を「運んでいる/待機」の2つだけで出していたので、timeline.csv に robots_bussing の列がある回だけ、動いている台のうち下げ膳の台を「下げ膳」と出すようにした。bus の動画の 2時間13分(店の 7980 秒)の コマで「運んでいる」「下げ膳」と出ることを確かめた。serve の timeline.csv にはこの列が無いので、serve の絵は前と同じ make_panel_video.py の md5 eed8539039501415828a5ff39384c889 → 45a541e860222bb0426ea30c5bd976d8 差分: 46a47,48 > # 下げ膳にも使う回(timeline.csv に robots_bussing の列がある回)だけ、動いている台のうち下げ膳の台を「下げ膳」と出す(2026-11-04・依頼91) > bus = min(int(row.get("robots_bussing") or 0), rb) 51c53 < d.text((x0 + 68 + i * 150, y + 25), "運んでいる" if busy else "待機", font=F(24, True), fill=INK if busy else QUIET, anchor="mm") --- > d.text((x0 + 68 + i * 150, y + 25), ("下げ膳" if i >= rb - bus else "運んでいる") if busy else "待機", font=F(24, True), fill=INK if busy else QUIET, anchor="mm") 気づいたこと:パネルの題は 26 px の1行で、bus の題「③ 標準ファミレス・ロボット2台・配膳+下げ膳」はパネルの右端で「配膳+下」まで切れる (serve の題は右端ぎりぎりで収まる)。形は変えていない(決めてほしいこと 1) -------------------------------------------------------------------- 7. 台帳 -------------------------------------------------------------------- 2804 行 → 2929 行(追記 125 行だけ:確かめ 3・120 回・録画 2。どれも completed・unity_cs ServiceSim/cs:78) 先頭 2804 行の md5 は 8beaf91f429e049ce10152bd5ebf6946(退避と同じ)。終わったあとの md5 a0589b65d2aae361301c9033afe92994。鍵ファイルは残っていない 試しの回(night/20261104_try91/)は別の台帳(ヘッダだけ)に書かせ、本物の台帳には書いていない -------------------------------------------------------------------- 決めてほしいこと(どれも作業を止めるものではない。素材は撮り終えた) -------------------------------------------------------------------- 1. bus の動画の題がパネルで切れる(「…配膳+下」まで)。題を短くするか、パネルの題の字を小さくするか(パネルの形は変えていない)。 比較動画を作るときに題を付け直すなら、このままでもよい 2. 下げ膳の台が卓で待つ上限 120 秒は、サイトの params に無いのでコードの定数にした。サイトの試算(meta.bus)にも入れるか 3. 区切りに従い記録だけにしたもの:④2台 種4 の料理の往復どうしの向かい合い(全員帰らない)・③2台 種7 の終わりの2号機の行ったり来たり・ turn と入店待ちの向きが試算と逆の 10 本。いつ直すか 判定:合格