==================================================================== 依頼86:ロボットに「進めているか」の見張りを入れ、揺れ続けをなくして180回で確かめる 2026-11-03 20:50〜21:50 作業場所 cs:75 → cs:76 build_id cs76_20261103_2122(画面なし・保留 0) ==================================================================== -------------------------------------------------------------------- 0. 始める前の確かめ(どれも依頼どおり) -------------------------------------------------------------------- Unity エディタ・night_runner・rec_runner:動いていない(Unity Hub だけ)/KIOXIA:マウント済み/ unity_ledger_v1.lock:無し/保留 0/作業場所 cs:75 - head 台帳を archive/unity_ledger_v1_pre_base73_20261103/ に退避(2491 行・md5 d0517dccd299f9d1d3d26619763ad54e。依頼85 の終わりと同じ) -------------------------------------------------------------------- 1. 揺れの原因(調べたこと) -------------------------------------------------------------------- 依頼84 と同じ動き(cs:73 の形)で ⑦2台 種9 を回し、1号機の位置と状態を1コマ(0.05 秒)ごとに書き出して見た (試しのビルドだけに足した記録。check-in していない。出力は /tmp/req86/trace_p5s9.csv)。 ・11205 秒に卓42 へ向かう途中、待機場所に止まっていた2号機とすれ違いに入り、3 秒止まって「すれ違いをあきらめた」状態になった ・あきらめた台は「相手との空きが 0.6 m(passByBackOffM)になるまで1コマずつ下がる」。一方、前のセンサー(0.6 m)には 相手が映らない(相手は横寄り)ので、下がり終えると「前が空いている」として進む。進むと空きが 0.6 m を割り、また下がる ・これが「3コマ進んで1コマ下がる」でくり返し、x 方向 1.4 cm の幅を行ったり来たりしていた(11215〜11450 秒で状態は 進む 3538 コマ・下がる 1180 コマだけ。道の引き直しは 1 回きりで、引き直しが原因ではなかった) ・下がる1コマで速さが 0 に戻るが、次のコマでまた動くので「続けて止まっている秒」が貯まらず、30 秒の線(助け)にも 60 秒(動けなくなった)にも届かなかった まとめ:揺れの元は「すれ違いをあきらめたあとの下がる動き」と「前が空いたので進む動き」のぶつかり合い。 依頼85 で見た ②2台 種2 も同じ形(行ったり来たりの幅 1.4 cm)とみられる(1コマの記録では確かめていない) -------------------------------------------------------------------- 2. 直したこと(cs:76) -------------------------------------------------------------------- a. 進めているかの見張り(Robot/ServingRobotController.cs・Robot/RobotSpec.cs) ・値は RobotSpec に名前を付けて置いた:progressWatchSec = 10 秒・progressWatchM = 0.5 m(Nav2 SimpleProgressChecker の既定値。 Unity だけの値で、params には入れていない) ・見張るのは、卓へ/受け渡し口へ/待機場所へ走ろうとしているあいだ(往復の ToTable・ToPass)だけ。見張りを始めた所から 0.5 m 離れたら、その所から始め直す(Nav2 と同じ) ・見張らないとき:入口の順番待ち・1本道の順番待ち(待つ点へ向かう途中も)・細い通路の入口の譲り合い・ よける場所でよけている・譲って下がっている。受け渡し口で料理を待つ・受け渡し口の列・卓で客が取るのを待つ・ 待機場所は、往復の外(Idle/Done)か卓での受け渡し(Dwell)なので、はじめから見ない ・「進めていない」になったら、そのコマで速さ 0 にしてその場でぴたりと止まる。止まっているあいだは、すれ違いの走り方 (下がる動きを含む)をしない。そのあとは今までの決まりどおり: - 前が空けば進む … 前のセンサーに何もなく、道が引けていて、道の先 0.5 m を進むとほかの台に前のセンサーの長さ (0.6 m)より近づいてしまうことがない、が resumeAfterClearSec(1 秒)続いたら進み出す (近づく向きへ進み出さないのは、上の揺れの元を断つため) - 3 秒空かなければ回り込む道を探す(前がふさがっているときと同じ UpdateDetour を使う) - 30 秒で助けを呼ぶ・60 秒で動けなくなった(止まりの数え方は cs:73 のまま。速さ 0 なのでそのまま止まりに数える) ・止まりの記録(stops.csv)の cause_detail の頭に「進めていない(10秒で0.5m):」を付ける。原因は、近づいてしまう台がいれば 「もう1台のロボット」、前のセンサーに映っていればそれ、無ければまわりで探したもの b. 依頼85 の 0.3 m の測り方をやめた ・止まりの数え方・立ち往生の数え方・助けの取り消しを cs:73 の形に戻した(ServingRobotController.cs・ServiceOps.cs の 依頼85 の部分を cs:73 の中身に戻してから a・c を足した) ・依頼85 の c(summary.json の open_after_all_left・all_left_s)は測り方に関わらないので残した(分け方だけ d で直した) c. 助けで動かす先が見つからないとき(ServingRobotController.cs・ServiceOps.cs) ・往復の途中の台で、動かす先が 3 回続けて見つからなければ(3 回目で)、助けのスタッフが付き添い、来た道を 受け渡し口か待機場所の近い方まで、歩く速さ(1.0 m/秒。スタッフの歩く速さと同じ)で押して連れて戻す。瞬間移動はしない ・来た道:その往復で通った所を 0.25 m ごとに覚えておき、逆にたどる。先に受け渡し口か待機場所に着いた方で止める ・着いたらその往復を終える(まだ届けていない料理は受け渡し口の先頭へ戻る。理由は「連れて戻した」)。そこから次の仕事を受けてよい ・rescues.csv の outcome に「連れて戻した」、summary.json の stuck_rescue に escorts・escort_m ・動かす先が見つかったら数え直す。往復の始めでも数え直す。止まっている台(往復の外)は今までどおり d. 詰まりの分け方(Experiment/ExperimentRunner.cs) ・全員が帰った回で、最後の組が帰った時刻より「あとに始まった」ロボットの詰まり・助けだけを記録だけにする(open_after_all_left)。 客がいるあいだに始まって回の終わりまで残ったものは、解けずに残った詰まりに数える e. 記録だけ(動きは変えない) ・summary.json に progress_watch(halts:見張りで止まった回数・released:前が空いて自分で進み出した回数・halts_list: [時刻, 号機, x, z, 原因, 区間])と jitter(揺れ続け。1コマごとの位置で、半径 5 cm の中を動き続け、動いた道のりが 0.1 m 以上、 それが 60 秒以上続いた回数・最長秒・並び。2 秒より長くじっとしたら数え直す)を足した ・揺れ続けの数え方は、試しの1回目では「着く前に少し動いてから長く止まっていた所」まで数えてしまっていたので、 「2 秒より長くじっとしたら数え直す」を足してから check-in した(待機場所の台を1コマごとに見て、動いていないことを確かめた) 変えていないもの:ロボットの速さ・物理の設定・譲る順番・人とロボットの数字・rescue_s 15 秒・30 秒・60 秒という時間・ センサーの 0.6 m・同じ種で同じ結果にする作り・動かす先が見つかるときの決め方・瞬間移動をなくした作り・ 依頼84 で入れた直し・店の形・台帳の列と今までの行・試算の値 -------------------------------------------------------------------- 3. 変えたファイル・版 -------------------------------------------------------------------- cs:76 Robot/ServingRobotController.cs・Robot/RobotSpec.cs・Service/ServiceOps.cs・Experiment/ExperimentRunner.cs・Experiment/TripLogger.cs 実行ファイル:Builds/headless build_id cs76_20261103_2122・unity_cs ServiceSim/cs:76・pending_changes 空・error CS 0 (check-in の前に /tmp/req86/try1・try2・try4 に試しのビルドを作り、書き先を /tmp に向けて ⑦2台 種9・④2台 種6・ ④2台 種0・③2台 種2 を回して確かめた。台帳には書いていない) -------------------------------------------------------------------- 4. 確かめ -------------------------------------------------------------------- (1) 同じ種で同じ結果か(cs:76・det86a と det86b) ⑦ fam_p5・種9・2台、④ fam_p2・種6・2台 とも: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 は run_label・written_at・wall_seconds・speedup・ plan_ms だけ違う(前と同じ扱い) 4 回とも全員が帰った・瞬間移動 0・1コマの跳び 0・揺れ続け 0・解けずに残った詰まり 0 ⑦2台 種9:入店待ち 6.56 分(依頼84 7.55)・料理の待ち 1.64 分・助け 24 回・見張りで止まった 49 回(うち進み出した 25) ④2台 種6:入店待ち 20.87 分(依頼84 19.44・依頼85 32.50)・料理の待ち 1.43 分・助け 57 回・見張り 102 回(進み出した 47)・ 詰まり残り 0(依頼85 で 4473 秒残っていた所は、今回は起きなかった。連れて戻したは 0 回) (2) 180回(label base73・同時4本・6店 × 0・1・2台 × 種0〜9、並びは依頼84 と同じ)→ 44 回で止めた 44 回目のあと(21:41)、見張りが止める線に当たった: ⑦2台(fam_p5)の入店待ちの中央値が、同じ種(0・1・2)で 依頼84 1.53 分 → 今回 3.99 分(2.61 倍) 種0 1.38 → 1.57 分(依頼85 1.61) 種1 1.53 → 3.99 分(依頼85 2.09) ← これで中央値が2倍を超えた 種2 10.83 → 11.86 分(依頼85 10.28) 依頼どおりここで止めた(夜の実行係に止める合図を送り、走っていた 3 回は中断。その 3 回は台帳に入っていない)。 台帳の completed は 44 回。瞬間移動の線には当たっていない ⑦2台 種1 の中身(今回):詰まり 17 回・1317 秒(依頼84 16 回・344 秒)。いちばん長いのは入口の近く (1,2) の 「スタッフ・案内」341 秒、次が (2,9) の「客・会計」209 秒・(2,7) の「スタッフ・呼び出し」184 秒。 依頼84 は客のドリンクバーの詰まりだけだった。見張りで止まった 43 回のうち多いのは (9,4) の「人が立ち止まっていた」7 回など。 助けは 22 回(依頼84 10 回)。入店待ちが延びたのは入口・案内の通り道での詰まりが増えたためとみられるが、 見張りで止まった台との関わりはまだ確かめていない 依頼84・85 と並べる(同じ 44 回=同じ店・台数・種だけで比べた。記録:night/20261103_base73_cs76/) 項目 依頼84(cs:73) 依頼85(cs:75) 今回(cs:76) 瞬間移動 0 0 0 1コマの跳び 0 0 0 揺れ続け(1 cm 幅の行ったり来たりが 60 秒以上) 記録なし(※) 記録なし(※) 0 回 見張りで止まった(うち自分で進み出した) ― ― 999 回(529) 解けずに残った詰まり(件) 1 0 0 全員が帰ったあとに始まった詰まり(件) 0 0 0 全員が帰ったあとに呼び、終わる前に回が終わった助け 1 1 1(⑤2台 種0) 全員が帰らなかった回 0 0 0 助け(回/往復/1往復あたり) 499/2748/0.182 591/2752/0.215 609/2696/0.226 うち取り消し 62 105 81 その場で引き直した 19 27 20 連れて戻した ― ― 0 立ち往生(動けなくなった) 208 218 295 うち行ったり来たりで数えたもの 0 157 0 立ち往生が1回でもあった往復(割合) 130(0.047) 143(0.052) 192(0.071) 試算の stuck_rate 0.01 30 秒以上の止まり 456 480 582 詰まり(回・秒・1回の最長) 518・31,489・1,218 454・22,771・885 539・30,828・1,085 (※)依頼84・85 には1コマごとの揺れの記録が無い。参考に、依頼84 の 180 回では ⑦2台 種9 が回の終わりまで 31,402 秒 行ったり来たりしていた。依頼85 の 180 回では「行ったり来たりで数えた立ち往生」が 822 回あった 180 回全体(依頼84・85)の値は依頼85 の報告(20261103_base72.txt)のとおり。依頼84 の解けずに残った詰まりは、 今回の分け方では 2 件(⑦2台 種9・⑤2台 種0 の客がいるあいだに始まったもの)、依頼85 は 1 件(④2台 種6)になる 見張りで止まった場所の上位(今回 44 回。店・台数・1 m のマス・回数) ⑤2台(16,9) 47・④2台(13,4) 30・③2台(6,4) 25・③2台(3,4) 21・④2台(2,3) 19・⑤2台(15,9) 18・⑥2台(17,5) 18・③2台(7,4) 15・⑦2台(6,4) 15 原因:人が立ち止まっていた 481・もう1台のロボット 346・お客さんとすれ違った 63・スタッフとすれ違った 56・分からない 49・椅子など 4 区間:卓へ 629・待機場所へ 370 (⑤2台(16,9)・(15,9) は待機場所 (14.8, 8.8) のすぐ手前。依頼85 で「待機場所が台1台分しかない」と書いた所と同じ) 店・台数ごと(同じ種どうし。入店待ち・料理の待ちは分の中央値、比は今回/依頼84。助けは1往復あたり、立ち往生はその種の和) 店・台数 種 入店 84→今回(比) 料理 84→今回(比) 助け 84→今回 立ち往生 84→今回 見張り ③1台 0-2 1.77→1.85(1.04) 2.32→2.38(1.02) 0.142→0.202 9→11 66 ③2台 0-2 1.63→1.74(1.07) 1.49→1.71(1.15) 0.179→0.244 22→33 158 ⑦1台 0-2 1.49→1.65(1.10) 2.24→2.48(1.10) 0.110→0.153 6→14 48 ⑦2台 0-2 1.53→3.99(2.61)★ 1.46→1.59(1.09) 0.122→0.234 15→39 137 ④1台 0-2 13.83→11.88(0.86) 2.08→1.77(0.85) 0.217→0.246 32→37 87 ④2台 0-1 19.94→13.52(0.68) 2.08→2.14(1.03) 0.640→0.680 90→92 167 ⑤1台 0-1 4.16→4.67(1.12) 2.66→2.83(1.06) 0.185→0.268 4→15 37 ⑤2台 0-1 6.06→3.70(0.61) 2.04→1.63(0.80) 0.222→0.219 5→15 132 ⑥1台 0-1 3.21→3.14(0.98) 2.02→1.95(0.96) 0.084→0.054 3→1 16 ⑥2台 0-1 2.84→3.35(1.18) 0.96→0.98(1.03) 0.042→0.079 3→9 71 ②1台 0-1 5.04→5.11(1.01) 1.41→1.44(1.02) 0.183→0.192 14→15 26 ②2台 0-1 4.38→4.27(0.98) 0.58→0.75(1.29) 0.119→0.146 5→14 54 (0台はどの店も依頼84 と同じ値(比 1.00)。2倍を超えたのは ⑦2台の入店待ちだけ) 向きの12本(今回そろった種だけの中央値。0台・1台・2台で種の数が 2〜3 しかないので参考) 店 入店待ち Unity 0→1→2台 向き 試算 0→1→2台 向き 合う? ③ 3.69 → 1.85 → 1.74 -- 4.09 → 1.68 → 1.13 -- 合う ⑦ 4.37 → 1.65 → 3.99 -+ 3.08 → 1.58 → 1.60 -+ 合う(2台が止める線の所) ④ 14.00 → 11.88 → 13.52 -+ 10.91 → 4.81 → 5.57 -+ 合う ⑤ 4.80 → 4.67 → 3.70 -- 7.51 → 3.16 → 2.37 -- 合う ⑥ 5.53 → 3.14 → 3.35 -+ 7.91 → 3.68 → 2.11 -- 逆(1→2台) ② 4.87 → 5.11 → 4.27 +- 2.61 → 1.79 → 1.30 -- 逆(0→1台) 店 料理の待ち Unity 0→1→2台 向き 試算 0→1→2台 向き 合う? ③ 0.95 → 2.38 → 1.71 +- 0.63 → 1.97 → 0.96 +- 合う ⑦ 1.01 → 2.48 → 1.59 +- 0.63 → 2.01 → 1.01 +- 合う ④ 1.32 → 1.77 → 2.14 ++ 0.99 → 1.29 → 0.47 +- 逆(1→2台。依頼85 と同じ逆) ⑤ 1.08 → 2.83 → 1.63 +- 0.77 → 2.28 → 1.27 +- 合う ⑥ 1.06 → 1.95 → 0.98 +- 0.84 → 2.01 → 0.82 +- 合う ② 0.82 → 1.44 → 0.75 +- 0.61 → 0.91 → 0.40 +- 合う 12 本中 9 本が合う(依頼84・85 は 10 種そろって 10 本)。種がそろっていないので、ここで合う・合わないは決められない 詰まりの場所の上位(今回 44 回):④(2,4) 5 回 1,733 秒・⑦(5,5) 14 回 1,503 秒・④(7,3) 16 回 1,271 秒・③(6,4) 10 回 1,005 秒・ ②(14,2) 2 回 985 秒・③(4,5) 33 回 837 秒 だれ・仕事:客ドリンクバー 409 回 15,384 秒・スタッフ片付け 16 回 5,940 秒・ロボット1往復の打ち切り 7 回 2,837 秒・ 客退店 45 回 1,826 秒・スタッフ案内 10 回 1,805 秒・スタッフ呼び出し 7 回 1,040 秒 (3) 残った詰まりの中身と場所(今回 44 回) ・解けずに残った詰まり:0 件。全員が帰らなかった回:0。揺れ続け:0 回。連れて戻した:0 回(この 44 回では動かす先が 3 回続けて見つからない所が無かった。付き添いの作りが実際に働いた回はまだ無い) ・全員が帰ったあとに呼び、終わる前に回が終わった助け:⑤2台 種0 の 1 件(11166 秒に呼んだ・(14.46, 8.54)・相手はスタッフ。 最後の組が帰ったのは 10599 秒。依頼84・85 の同じ回と同じ所=待機場所の手前) -------------------------------------------------------------------- 5. 台帳 -------------------------------------------------------------------- 2491 行 → 2539 行(追記 48 行だけ。どれも 59 列。先頭 2491 行の md5 は d0517dcc… で始める前と同じ) 終わったあとの md5 05f61ef7bd6d032ee909834a0df16213。鍵ファイルは残っていない 追記:det86a 2・det86b 2・base73 44(どれも completed) 集計の手順と出力:/tmp/req86/(agg86.py・agg86.txt=44 回、agg86_same44.txt=依頼84・85 を同じ 44 回に絞ったもの、 watch86.py・watch_log.txt・run180.sh、揺れを調べた1コマの記録 trace_p5s9.csv) -------------------------------------------------------------------- 決めてほしいこと -------------------------------------------------------------------- 1. 止める線(⑦2台 の入店待ちの中央値が依頼84 の 2.61 倍)に 44 回目で当たったので止めた。種 0〜2 の 3 つでの中央値で、 種1 だけが 1.53 → 3.99 分に延びた(種0・種2 は 1.1 倍ほど)。このまま見張りの作りを見直すか、それとも残りの 136 回を 回して 10 種で見てから決めるか 2. 立ち往生が増えた(同じ 44 回で 依頼84 208 → 今回 295 回、立ち往生が1回でもあった往復の割合 0.047 → 0.071。試算の stuck_rate は 0.01)。見張りで止まった台は、前が空くまで速さ 0 のまま待つので、60 秒に届きやすくなったとみられる。 この数え方のまま試算と比べてよいか 3. 見張りで止まったあと「前が空いた」とみる決まりに、「道の先 0.5 m を進むとほかの台に 0.6 m より近づくなら進み出さない」 を入れた(揺れの元を断つため。依頼に書かれていない所なので、私が決めた)。このままでよいか 4. よける場所でよけているあいだ・譲って下がっているあいだも見張らないことにした(依頼の「わざと待っている間」の並びには 入っていないが、見張りで止めるとよけ終わりの決まりが働かなくなるため)。このままでよいか 5. 連れて戻した台は、そこでその往復を終え、まだ届けていない料理を受け渡し口の先頭へ戻すことにした(依頼に書かれていない所)。 このままでよいか。なお 44 回では連れて戻す所が出ておらず、まだ働きを確かめられていない 判定:止めた(決めてほしいことあり)