==================================================================== 待機場所へ戻るを切り替えで入れ、④で3つの作り(A・B・C)を種10個ずつ比べた 依頼:20261027_13_待機場所へ戻る_と④の比べ.md 2026-10-27 23:07 check-in:cs:33/build_id cs33_20261027_2307(保留 0) 夜:20261031(2026-10-27 23:11〜10-28 00:30)・揺れの確かめ 00:30〜00:43 ==================================================================== 結論 ・待機場所へ戻るを入れた(既定は切)。入の回では、往復を終えた台は自分の待機場所で待つ (テストの回では「往復おわり」のコマの 97% が自分の待機場所から 0.4 m 以内。今までは 1%)。 待機場所への道が引けなかったのは、B・C の 40 回で 0 回。 ・今まで下がらなかった理由:仕事のない台を待機場所へ下げる処理(GoStandby)はあったが、 ロボットの体は止まっている間(Idle/Done)は動かさない作りなので、効いていなかった。 ・④2台の中央値(A 切・切 → B 待機場所 入 → C 待機場所 入・案B 入) 30秒以上の止まり(1往復あたり) 1.092 → 0.806 → 1.427 往復の数 92 → 94 → 62 入店待ち(分) 24.74 → 24.79 → 21.35 瞬間移動 51 → 36 → 25 B は受け渡し口の前の「もう1台のロボット」が 278 → 110 回(種10個の合計)に減った。 C は案Bで受け渡し口で待った秒数が大きく(2台で回ごとの中央値 3,376 台秒)、往復が減り、 受け渡し口の前の「もう1台のロボット」は 444 回に増えた。 ・同じ版・同じ種・同時1本で3回回しても、数字はそろわなかった(往復 77〜84・止まり 88〜96)。 1回どうしの比べは、回ごとの揺れより小さい差を見分けられない。 ・台帳 368 → 445 行。先頭 368 行の md5 は退避と同じ。失敗した回・全員が帰らなかった回はない。 ==================================================================== 1. 始める前の確かめ(4つとも合格。22:50 ごろ) ==================================================================== 1. Unity エディタ:起動していない(Unity Hub だけ) 2. /Volumes/KIOXIA:マウントされている。unity_ledger_v1.lock:なし 3. 台帳の md5:f15eb7e9f26c110388003506683978f0(退避と同じ・どちらも 368 行) 4. ServiceSim の保留:0(cs:32 head) ==================================================================== 2. 入れたもの(cs:33) ==================================================================== 画面なしの実行ファイル:build_id cs33_20261027_2307 / unity_cs ServiceSim/cs:33 / pending_changes 空。 Build Finished, Result: Success・error CS 0。作ったあとも保留 0(cs:33 head)。 3・5・6 の回はすべてこの実行ファイルで回した(台帳の 77 行とも unity_cs ServiceSim/cs:33)。 変えたファイル(cs:33) Assets/ServiceSim/Robot/ServingRobotController.cs 戻りの行き先を待機場所に・待機場所から受け渡し口の前へ出る Assets/ServiceSim/Service/ServiceOps.cs 切り替え(standbyReturnEnabled)と回数 Assets/ServiceSim/Experiment/ExperimentRunner.cs 1回ごとの切り替え(Job.standbyReturn)・記録・ログ Assets/ServiceSim/Experiment/TripLogger.cs run_info.json と summary.json に standby_return Assets/ServiceSim/Experiment/HeadlessRun.cs -ssStandbyReturn on|off(既定 off)・フォルダ名に _sbret Assets/ServiceSim/Store/KitchenMonitor.cs モニターの表示 Assets/ServiceSim/Editor/ServiceSimSiteRun.cs メニュー「④ スタッフ2人・ロボット2台(待機場所へ戻る 入)」 tools/make_queue.py --standby-return on|off(既定 off) tools/night_runner.py queue の standby_return を -ssStandbyReturn で渡す・ --standby-return・_sbret・回ごとの名札(下の 2-4)・ 判定に --label-prefix を渡す tools/judge_night.py --label-prefix(2-3) 2-1. 切り替えの渡し方 画面なし -ssStandbyReturn on|off(既定 off) make_queue --standby-return on|off(既定 off)。queue の各回と頭に standby_return を書く night_runner queue の各回の standby_return を渡す(無ければ off)。--standby-return を付けると、 queue に無い回にはその値を使い、食い違う回があれば始めない(--rule-b と同じ形) 出力フォルダ名 …_s{種}[_passon][_ruleb][_sbret][_try{n}](入の回だけ _sbret。_ruleb の後ろ・_try の前。 C# と Python で同じ字) run_info.json "standby_return": {enabled, standby_points, source: "store layout RobotStandby"} summary.json "standby_return": {enabled, returns, fallbacks, departures}(切の回は 0) fallbacks=待機場所への道が引けず、受け渡し口の点で待った回数 台帳の列は増やしていない(59 列のまま)。runs.csv の列も変えていない 何も指定しないときの make_queue は今までどおり(③⑦の60回・すれ違い入・待機場所へ戻る 切・案B 切)。 プロジェクトの queue.json(③⑦の60回)は触っていない(md5 07f2acccf5b13abbf1a96148fbc70e9f のまま) 2-2. 待機場所へ戻る作りで決めたところ ・待機場所は店の形の RobotStandby(store.RobotStandbyPoints)。1台めは1つめ、2台めは2つめ (④は (12.4, 4.55)・(13.2, 4.55)。今までの置き始めと同じ割り当て)。params は見ない。 ・戻り:最後の卓から戻る区間の行き先を、受け渡し口の点ではなく自分の待機場所にする。 受け渡し口の点で一度止まってから動き直すのではなく、そのまま待機場所まで走る。 走り方・止まる決まり(前のセンサー・譲り合い・すれ違い・立ち往生)は今の戻りと同じ。 ・道が引けるか:戻りを始めるときに、地図の上で今いる所から待機場所まで道を引いてみる。 引けなければ今までどおり受け渡し口の点へ戻り、fallbacks に数える(この確かめは 「引き直し」「引けなかった」の回数には入れない)。 SiteRoutes の店では、もともとの戻りの線が使えればそれ、使えなければ道順の後ろに 待機場所を足し、通れる床に乗らなければ受け渡し口の点へ戻る。 ・出る:料理を積むとき、受け渡し口の点から arriveRadius(0.25 m)より離れていれば、 まず受け渡し口の点まで出て、着いたらそこから卓へ向かう(積む時間は今までどおり 0)。 この間は細い通路の譲り合いを見ない(卓への区間はまだ始まっていないため)。 ★ 往復の記録(距離・時間・止まり・動けなくなった)には、待機場所までの戻りと、 待機場所から受け渡し口の前へ出る分も入る。往復の数の数え方は変わらない。 ・打ち切り(maxTripSec)で置き直すときは今までどおり(受け渡し口の点→待機場所の順に空いた所)。 受け渡し口の点に置き直された台は、次の往復までそこで待つ(テストの回で、往復おわりのコマの 3%(案Bも入は 21%)が受け渡し口の点だった。打ち切りのあとと見ている)。 ・案Bの「受け渡し口は1台ずつ」は cs:32 のまま(往復していない台 Idle/Done は数えない)。 待機場所で止まっている台は Done なので数えない。決まりの中身は変えていない。 ・切の回では、足した処理はどれも通らない(行き先の決め方は前と同じ式になる)。 ・キッチンのモニター(入の回だけ変わる) 戻っている台 「1号機 戻る(待機場所へ)」 出ている台 「1号機 受け渡し口へ出る(配膳 卓05)」 入の回だけの行 「待機場所へ戻る 入(戻った N 回・道が引けず受け渡し口で待った N 回)」 画面で見る手順:ServiceSim_Family シーン → メニュー ServiceSim → Site Run → 「④ スタッフ2人・ロボット2台(待機場所へ戻る 入)」(ほかのメニューは切のまま) 2-3. 判定(judge_night.py)の直し --label-prefix {夜}_{ラベル}(カンマ区切りで複数可)を足した。名前が「{夜}_{ラベル}_cs{N}_」で 始まる回だけを拾う。night_runner はこれを必ず渡す。判定の決まりそのものは変えていない。 確かめ:20261027_p2ruleB を判定し直すと 4 回 → 3 回(p2ruleB_off が外れた。/tmp に出した)。 2-4. 回ごとの名札(6 のため) 同じ条件・同じ種を3回回すと、出力フォルダ名が同じになり、2回めからは「もう回した回」として 飛ばされる。そこで night_runner で、queue の回ごとに label を持てるようにした(無ければ --label)。 6 の名札は repeat1a・repeat1b・repeat1c・repeat4a・repeat4b・repeat4c にした (依頼の repeat1・repeat4 の後ろに a/b/c を付けた)。 2-5. 入れる前のテスト(台帳には書いていない) 台帳に行を足さずに入の動きを確かめるため、出力先だけを一時的に /Volumes/KIOXIA/r2r2r-data/service_sim/unity_scratch_20261027_sbret/ に向けた実行ファイル (保留あり・cs32 の上)で、④2台・種0 を2回(待機場所へ戻る 入/入+案B 入)回した。 出力先は回したあと元に戻し(cm undo)、保留 0 で check-in・作り直した。 テストの結果:どちらも completed・全員帰った・fallbacks 0。往復おわりのコマの位置は 入 自分の待機場所 1920 コマ(97%)・受け渡し口の点 56 入+案B 入 自分の待機場所 1495 コマ(79%)・受け渡し口の点 386 (参考)cs:31 の p2ruleB_off(切) 自分の待機場所 21・受け渡し口の点 1340・そのほか 579 このフォルダ(2回ぶんと、その中だけの台帳)は KIOXIA に残してある(決めてほしいこと 4)。 ==================================================================== 3. 切の1回(④・2台・種0・待機場所へ戻る 切・案B 切・ラベル sbcheck_off・cs:33) ==================================================================== 出力 20261027_sbcheck_off_cs33_fam_p2_r2_s0_passon(completed・2.6 分・同時 1 本) 記録 night/20261027_sbcheck_off/ sbcheck_off(cs:33) p2ruleB_off(cs:31) 往復の数 89 89 30秒以上の止まり 78 92 (1往復あたり) 0.876 1.034 入店待ち(分) 14.99 21.09 うち席は空いているのに 13.65 19.76 料理の待ち(分) 3.01 4.00 動けなくなった 54 73 瞬間移動 34 35 打ち切り 12 15 店の時間(分) 218.8 258.3 冷めた皿の割合 0.275 0.400 → 同じではない。どちらも同時1本。下の 6 の揺れ(同時1本の3回で入店待ち 18.41〜19.85、 止まり 88〜96)と比べると、sbcheck_off の止まり 78・入店待ち 14.99 はその幅の外。 同じ版・同じ種・同時1本でも回ごとにずれるので、切の処理が変わったかどうかはこの比べでは言えない。 (切の回で足した処理が通らないことはコードで確かめた) ==================================================================== 4. 夜 20261031(④ fam_p2・すれ違い入・同時 4 本・70 回・cs:33) ==================================================================== queue:make_queue の3つ(A/B --standby-return on/C --standby-return on --rule-b on)を、 種ごとに A→B→C の順に混ぜて1つにした(種0 の7回 → 種1 の7回 → …)。 ラベルはどれも p2(作りはフォルダ名の _sbret・_ruleb で分かれる)。 記録 night/20261031_p2/(runner_log.txt・runs.csv・queue.json・judge.md) 70 回とも completed・終了コード 0。全員帰った。やり直し(_try2)はなし。実時間 平均 4.4 分・最長 6.3 分。 判定(judge.md)は 70 回とも「基準なし」(④の基準データがないため)。 同時本数(起動したときの本数)は、並びの頭の3回(A 種0)だけ 1・2・3、ほかは 4。 書き方:種10個の中央値(最小〜最大)。単位は分。割合は 0〜1。試算は params の site_result。 入れた組の数は来客の数で決まるので、種が同じなら A・B・C で同じになる。 ロボット 0台(A だけ) A 試算 入店待ち 12.74(4.72〜30.05) 10.39 うち席は空いているのに待った 11.26(3.57〜22.89) 8.37 料理の待ち 1.28(1.17〜1.45) 0.88 会計待ち 1.87(1.41〜2.76) 4.20 入れた組の数 53.5(44〜70) 55.95 ロボットが運んだ皿の割合 0 0 往復・止まり・動けなくなった・瞬間移動・打ち切り・卓を空けた すべて 0 冷めた皿の割合 0.026(0.007〜0.040) 0.003 ロボット 1台 A 切・切 B 入・切 C 入・入 試算 入店待ち 14.67(4.18〜36.90) 14.40(5.47〜31.91) 11.42(4.50〜32.78) 2.93 うち席は空いているのに 12.53(2.86〜24.37) 12.80(4.21〜23.47) 9.80(3.12〜23.80) 2.01 料理の待ち 2.21(1.66〜3.71) 2.28(1.85〜3.79) 2.12(1.70〜2.90) 1.28 会計待ち 2.63(1.44〜3.97) 2.98(1.80〜4.11) 2.39(1.97〜3.77) 4.91 入れた組の数 53.5(44〜70) 53.5(44〜70) 53.5(44〜70) 54.30 ロボットが運んだ皿 0.832(0.753〜0.933) 0.843(0.787〜0.917) 0.858(0.811〜0.917) 0.956 往復の数 76(67〜100) 74(67〜96) 76(66〜103) 30秒以上の止まり 24(12〜43) 23(19〜36) 18(14〜35) (1往復あたり) 0.344(0.158〜0.583) 0.293(0.253〜0.507) 0.261(0.182〜0.436) 動けなくなった(60秒) 14(8〜34) 18(9〜27) 14(6〜27) 瞬間移動 20(9〜30) 26(17〜30) 21(13〜37) 打ち切り 0(0〜3) 1(0〜3) 0(0〜2) 卓を空けた 0(0〜0) 0(0〜0) 0(0〜0) 冷めた皿の割合 0.253(0.134〜0.385) 0.277(0.192〜0.324) 0.212(0.115〜0.342) 0.039 ロボット 2台 A 切・切 B 入・切 C 入・入 試算 入店待ち 24.74(13.73〜47.06) 24.79(12.91〜39.06) 21.35(8.79〜40.71) 3.46 うち席は空いているのに 21.51(12.41〜34.21) 21.84(11.18〜25.68) 18.81(7.53〜27.60) 1.99 料理の待ち 3.56(1.98〜6.07) 3.57(2.50〜3.88) 3.39(2.56〜6.74) 0.47 会計待ち 3.74(2.77〜8.55) 3.86(3.26〜7.39) 3.58(1.87〜6.31) 5.25 入れた組の数 53.5(44〜70) 53.5(44〜70) 53.5(44〜70) 55.30 ロボットが運んだ皿 0.862(0.767〜0.951) 0.877(0.845〜0.939) 0.660(0.299〜0.840) 1.000 往復の数 92(80〜122) 94(74〜126) 62(52〜92) 30秒以上の止まり 105(63〜156) 78(48〜104) 90(60〜159) (1往復あたり) 1.092(0.724〜1.733) 0.806(0.516〜1.118) 1.427(0.696〜3.058) 動けなくなった(60秒) 76(52〜127) 63(37〜91) 79(49〜147) 瞬間移動 51(28〜79) 36(18〜51) 25(14〜35) 打ち切り 15(7〜22) 10(3〜17) 16(7〜25) 卓を空けた 2(0〜3) 0(0〜2) 0(0〜1) 冷めた皿の割合 0.349(0.202〜0.569) 0.355(0.271〜0.450) 0.427(0.333〜0.644) 0 入店待ちの中央値は、2台でも1台でも A と B でほとんど同じ。C は少し短いが、最小〜最大の幅は どれも大きく重なっている。2台の C は往復が減り、スタッフが運んだ皿が増えた(ロボットの割合 0.660)。 ==================================================================== 5. 2台の 30 秒以上の止まり(理由ごと・場所ごと。種10個の合計) ==================================================================== 数え方は前回と同じ(stops.csv の duration_s が 30 秒以上。場所は x 9.8 以上=受け渡し口の前、 x 9.8 未満で y 2.9 未満=下の列、x 3.0 未満で y 2.9 以上=左の列、y 8.5 以上=上の列、残り=その他)。 この数え方で cs:31 の p2ruleB_off を数え直し、前回の報告と同じ 92 回になることを確かめた。 A B C 往復の数(10回の合計) 945 967 643 30秒以上の止まり 1059 759 999 理由ごと もう1台のロボット 527 354 583 人が立ち止まっていた 265 199 159 スタッフとすれ違った 156 96 200 お客さんとすれ違った 63 66 41 椅子・荷物・ベビーカー 40 28 6 分からない 8 16 10 場所ごと 受け渡し口の前 364 123 623 下の列 324 317 212 左の列 107 130 55 その他(真ん中の通路) 232 151 106 上の列 32 38 3 理由×場所(多いもの) もう1台のロボット・受け渡し口の前 278 / 110 / 444 スタッフとすれ違った・受け渡し口の前 40 / ― / 142(B は上位10に入らず) もう1台のロボット・下の列 112 / 102 / 85 人が立ち止まっていた・下の列 106 / 102 / 65 もう1台のロボット・その他 90 / 60 / 31 人が立ち止まっていた・その他 94 / 58 / 46 もう1台のロボット・左の列 34 / 67 / 22 スタッフとすれ違った・下の列 54 / 50 / 33 人が立ち止まっていた・受け渡し口の前 31 / ― / 34 B では受け渡し口の前の止まりが 364 → 123 に減った。C では受け渡し口の前が 623 に増え、 その多くが「もう1台のロボット」(444)と「スタッフとすれ違った」(142)。原因は調べていない。 気づいたこと(確かめていない):④の1つめの待機場所 (12.4, 4.55) は受け渡し口の点 (11.05, 4.45) から 約 1.35 m で、案Bの pass_clear_m 1.5 m の内側にある。待機場所へ出入りする台は、 受け渡し口の前にいる台として数えられる位置を通る。 ==================================================================== 6. 案Bで待った回数と秒数・待機場所へ戻れなかった回数(B・C) ==================================================================== 受け渡し口で待った 同じ卓で積まなかった 待機場所へ 戻れ 待機場所 (回・台×秒) (皿・皿×秒・うちスタッフ) 戻った なかった から出た B 1台 ―(案B 切) ― 748 0 746 B 2台 ―(案B 切) ― 911 0 866 C 1台 0 回・0 秒 0 皿・0 秒・0 773 0 770 C 2台 160 回・37,223 秒 73 皿・4,942 秒・42 570 0 530 (回ごとの中央値 16 回・3,376 秒、最大 26 回・7,306 秒) A の回はすべて 0(切)。数は種10個の合計。 C 2台の 3,376 台秒は、回の長さ(約 230 分)のうちの約 56 分ぶん。 ==================================================================== 7. 回ごとの揺れ(④・2台・種0・A の作り・cs:33) ==================================================================== 記録 night/20261031_repeat/(runner_log.txt・runs.csv・queue.json=repeat1 の queue・ queue_repeat4.json=repeat4 の queue を手で写した・judge.md=6回をまとめて判定し直したもの) 6回とも completed・全員帰った。 実際の同時本数 往復 30秒以上の止まり(1往復あたり) 入店待ち(分) 動けなくなった 打ち切り repeat1a 1 81 96(1.185) 18.51 73 17 repeat1b 1 84 88(1.048) 19.85 63 13 repeat1c 1 77 95(1.234) 18.41 76 14 repeat4a 1→3 85 93(1.094) 19.22 73 13 repeat4b 2→3 75 117(1.560) 21.39 92 16 repeat4c 3 81 97(1.198) 14.59 74 17 (参考)夜の A 2台 種0(同時 3) 80 94(1.175) 20.49 69 14 (参考)sbcheck_off(同時 1) 89 78(0.876) 14.99 54 12 ・同時1本の3回でも同じにならない:往復 77〜84・止まり 88〜96・入店待ち 18.41〜19.85。 同じ実行ファイル・同じ種・ほかに何も走っていない状態でもずれる。 ・同時3本の3回は幅が広かった:往復 75〜85・止まり 93〜117・入店待ち 14.59〜21.39。 3回ずつなので、同時本数で幅が広がると言い切れるほどの数ではない。 ・sbcheck_off(同時1本・同じ cs:33・同じ作り)も、同時1本の3回の幅の外(止まり 78・入店待ち 14.99)。 ・「同時4本で3回」は、並べたのが3回なので実際の同時は 3 本(-ssParallel は 4、 run_info の parallel_actual は起動したときの本数で 1・2・3)。 ==================================================================== 8. 台帳 ==================================================================== 行数:368 → 445(77 行足した=3 の 1 + 5 の 70 + 6 の 6。追記だけ。77 行とも completed・ unity_cs ServiceSim/cs:33) 先頭 368 行の md5:f15eb7e9f26c110388003506683978f0(退避と同じ) 列は 59 列のまま。鍵ファイルは残っていない。 全員が帰らなかった回・失敗した回・止まった回:なし ==================================================================== 9. 一時ファイル ==================================================================== queue はすべて作業フォルダの外(/tmp/sb13/)に作った。作業フォルダに queue の一時ファイルはない。 プロジェクトの queue.json は前からあったもの(③⑦の60回)で、触っていない。 最後の保留 0(cs:33 head)。テスト用の出力(2-5)は KIOXIA の unity_scratch_20261027_sbret/ に残してある。 集計に使ったスクリプトは /tmp/sb13/agg.py・report_tables.py(読むだけ)。 ==================================================================== 10. 決めてほしいこと ==================================================================== 1. C(案B 入)の2台は、往復 62・受け渡し口で待った 3,376 台秒(中央値)・受け渡し口の前の 「もう1台のロボット」444 で、B より悪かった。④の1つめの待機場所が受け渡し口の点から 約 1.35 m で pass_clear_m 1.5 m の内側にあることが関わっていそうだが、調べていない。 案Bの決まり(離れる距離など)や待機場所の位置を見直すか、調べるか。 2. 同じ版・同じ種・同時1本でも、回ごとに数字がずれる(往復 77〜84・止まり 88〜96)。 1回どうしの比べ(3 の sbcheck_off と p2ruleB_off など)は揺れと見分けられない。 ずれの元(毎回同じにならない所)を調べるか、このまま種の中央値で比べることにするか。 3. 待機場所へ戻るの作りで次のように決めた。このままでよいか。 (a) 往復の記録(距離・時間・止まり)に、待機場所までの戻りと、待機場所から受け渡し口の前へ 出る分も入れた (b) 打ち切りで受け渡し口の点に置き直された台は、次の往復までそこで待つ(待機場所へは下がらない) (c) 料理を積む時間は今までどおり 0(受け渡し口の点に着いたらすぐ卓へ向かう) 4. 入れる前のテストの出力(unity_scratch_20261027_sbret/・2回ぶんと、その中だけの台帳)を 消すか残すか(本番の台帳には入っていない)。 5. 判定(judge_night.py)は、待機場所へ戻る・案Bの入切を条件として分けない。夜 20261031 の judge.md では A・B・C が同じ条件にまとめられている(④は基準なしなので判定には効いていない)。 分けるようにするか(判定の決まりを変えることになるので今回は直していない)。 6. 待機場所へ戻るを、これからの ④(や③⑦)の回の既定にするか(今は既定 切)。