====================================================================
② 定番の郊外型（fam_p0・記憶の店）を建てて、1回ずつ回して確かめた
依頼：20261029_23_店2を建てて確かめる.md
2026-10-29 17:32　check-in：cs:39　build_id cs39_20261029_1717（保留 0）
====================================================================

結論

  ・始める前の確かめ5つは、すべて合格だった。
  ・公開版（版 dffc100b269c）の params と ②③④⑤⑥⑦の店の形を写した。版はすべてそろっていた。
    ③④⑤⑥⑦は前の写しと「版の番号と meta.rules（説明文）」以外同じ。params は fam_p0 と条件3件（15〜17 番）が足されただけ。
  ・②は今までと同じコードで建った。ただし、今のコードが知らなかったもの（t4・r4・long6、丸い天板、スツール、
    新しい裏の部屋の名前）を読めるように、読み方を店に関係なく広げた（3 章）。②のためだけの手直しはしていない。
  ・卓 19・席 88 が JSON・summary.json と一致。合わないもの なし。確かめ A も全卓・待機場所3つとも道が引けた。
  ・確かめの3回（② × 0・1・2台 × 種0）は3回とも completed・全員帰った。打ち切りは 2台の回で 1。
  ・2台の回の 30 秒以上の止まり 17 のうち 9 が奥の区画（うち 8 が丸テーブル T05・T06 のあいだ）、7 が待機場所1の中。
    仕切りの右端のすき間では 30 秒以上の止まりは 0。
  ・台帳 631 → 634 行（追記だけ）。先頭 631 行の md5 は退避と同じ。
  ・何も指定しない make_queue は③⑦の60回のまま。


====================================================================
1. 始める前の確かめ（5つとも合格。17:00 ごろ）
====================================================================

  1. Unity エディタ：起動していない（Unity Hub だけが起動していた）
  2. /Volumes/KIOXIA：マウントされている。unity_ledger_v1.lock：なし
  3. 台帳 unity_ledger_v1.csv：631 行・md5 41c8ceff63036168a9d2940fb1e8c4ba（退避と同じ）
  4. ServiceSim の保留：0（cs:38 head）
  5. 公開中の serving-robot-params.json：meta.layout_generation dffc100b269c・unity_conditions 18 件（1回目の取得で合った）


====================================================================
2. 写したもの（やること 1）
====================================================================

  写し元：https://pixelstomotors.com/sim/（2026-10-29 17:05 に curl で取得）
    控え：unity/site_copy_dffc100b269c/（params・summary.json・unity/ の6店の JSON と地図・README.txt）
  版の番号：params の layout_generation、6店の JSON と地図の meta.generation、summary.json がすべて dffc100b269c
  プロジェクトの前の写し（cs:38）との違い
    p1・p5・p2・p3・p4 の JSON：meta.generation と meta.rules（説明文）だけ違う。それ以外の違い 0
      （meta.furniture_types はこの5店の JSON には無く、違いも無い）
    p1・p5・p2・p3・p4 の地図：meta.generation だけ違う
    summary.json：6店の generation だけ違う
    params：meta.layout_generation・stores.fam_p0・unity_conditions の 15〜17 番が足されただけ。
            前の 0〜14 番・common・unity_rules は同じ
  どれも cp でそのまま写した（手で値を写していない）。p0 の JSON と地図は新しく足した。


====================================================================
3. 入れた cs・build_id・変えたファイル
====================================================================

  check-in：cs:39（保留 0。回したあとも 0）
  画面なしの実行ファイル：build_id cs39_20261029_1717 / unity_cs ServiceSim/cs:39 / pending_changes 空
                         Build Finished, Result: Success・error CS 0

  変えたファイル（すべて cs:39）
    足した
      Assets/ServiceSim/Store/Layouts/p0_memory.json・p0_memory_map.json（＋.meta）   公開版の写し
      Assets/ServiceSim/Store/StoreLayout_p0_memory.asset（＋.meta）   ⑥の .asset を写し、JSON・地図・名前・写し元を差し替えた
    写し直した
      Assets/ServiceSim/Experiment/serving-robot-params.json
      Assets/ServiceSim/Store/Layouts/summary.json・p1/p2/p3/p4/p5 の JSON と地図
    ②を足した（⑥を足したときと同じ形。名前と番号の差し替えだけ）
      Editor/ServiceSimSetup.cs       P0LayoutPath・HeadlessRun.layouts に②
      Editor/ServiceSimSiteRun.cs     ②の3条件（unity_conditions の 15・16・17）
      Editor/ServiceSimJsonStore.cs   「② p0_memory を建てて確かめる」・版と試算の値の確かめに②
      Editor/ServiceSimMapPlanner.cs  「② 確かめ A」
      Scenes/ServiceSim_Family.unity  HeadlessRun.layouts に②（1行）
    読み方を広げた（店に関係なく使える形）
      Store/JsonStoreLayout.cs
        ・卓の種類：t4・r4 → 島の卓（IslandTable）、long6 → 大人数席（LargeTable）。
          種類の名前を当てるだけで、形は今までどおり parts（top・benches・chairs・seat_points）から建てる
        ・parts.top_shape："circle" なら丸い天板（無い・"rect" なら今までどおり四角。ほかの値は建てずに止める）
        ・chairs[].stool：true ならスツール。pullable:false・pull_dir:null はもともと読めていた（引かない・向き 0）
        ・部屋：知らないラベルでも kind が "back" で walkable でなければ、裏の通れない部屋（事務所）として箱にする。
          ②の「こおり」「冷凍庫」「保存庫」「社員トイレ」「更衣室」「冷蔵庫」「物置」がこれに当たる。
          キッチンのモニターの置き場所がずれないよう、キッチン（Kitchen）にはしない
      Store/StorePlan.cs     PlanSeat.tableRound・PlanBox.round・PlanChair.stool を足した
      Store/StoreBuilder.cs  丸い天板は、同じ四角に内接する円柱にする（見た目も当たりも丸。BoxCollider を外して凸の MeshCollider）。
                             スツールは名前を Stool にする（今の椅子も背のない箱なので、形は椅子と同じ）
    今までの店（③④⑤⑥⑦）には丸い天板・スツール・知らない部屋が無いので、建つものは変わらない。

  手で戻したもの（check-in していない）
    建てて確かめる処理で ProjectSettings/NavMeshAreas.asset と Mat_RobotKeepout.mat が変更ありになったので cm undo で戻した（④⑤⑥と同じ）。

  make_queue.py・night_runner.py・judge_night.py は変えていない。
  .asset の細い通路の幅は⑥の写しのまま 1.5 m（②は細い通路 0 本なので JSON からは合わせない。使われない値）。


====================================================================
4. ②を建てて分かったこと（JSON Store「② を建てて確かめる」・Map Planner「② 確かめ A」）
====================================================================

  数         卓：Unity 19 / JSON 19 / summary.json 19 で一致。席 88 で一致。細い通路 0 本。外寸 24 × 19.2 m
             地図のマスの数は JSON の counts と一致。合わないもの：なし
  建物の輪郭  L字（左上が欠ける）。床 2 枚・外壁 7 本を JSON のまま建てた。外壁の切れ目はない
             （焼いた NavMesh は、ロボット用・人用とも「つながっていない面」0 m2）
  卓の部品    椅子 52 脚（t4 11 卓・r4 2 卓 × 4 脚）＋スツール 6 つ（long6）＝ 58（Unity の数え方は「椅子」）。ほかに booth6L 5 卓のベンチ。
             座る位置 88 / 88（全卓）。席に着く点 57。丸い天板 2（T05・T06）
  止まる位置  19 か所すべてロボット用の NavMesh の上（乗らない 0）。地図でも 19 卓すべて通れるマス
  道順       受け渡し口から全 19 卓、すべての区間がつながった。JSON の dist との差は平均 −0.27 m・最大 0.59 m（T01）。
             30% を超えた卓 0。狭い道を使う卓 0
  席         入口 (11.0, 0.5) から全 19 卓の席に着く点まで歩ける（入れない卓 0）
  場所の点    25 か所すべて NavMesh に乗った（乗らない 0）。置けなかった所はない
               受け渡し口・返却口・パントリー (10.9, 5.45)／入口 (11.0, 0.5)／待合の前 (13.3, 0.9)／トイレの入口の前 (8.75, 16.4)
               レジ 1 (11.05, 1.8)・レジに並ぶ点 3 (11.05, 1.3 / 0.8 / 0.3)・レジの内側 (11.05, 3.3)
                 レジの内側は人用・ロボット用とも受け渡し口から 2.16 m で行ける
               ドリンクバー（立つ点 1：(19.0, 3.55)／並ぶ点 3：(19.9 / 20.4 / 20.9, 3.55)）
               ロボットの待機場所 3：(12.6, 5.5)・(13.4, 5.5)・(14.2, 5.5)。地図では3つとも「ふだんの道」のマス
               スタッフが待つ点 6：x 9.25・y 6.31〜9.39（スタッフ2人）
  確かめ A   引けない卓 0 / 19。待機場所3つとも道が引けた。長さの比 最小 0.979 / 平均 1.017 / 最大 1.047

  気づいたこと（直していない。調べてもいない）
    ・席の確かめ（通る半径 0.25 m）で T19 の右の席に着く点 (23.7, 1.0) が NavMesh に乗らない（右の外壁まで 0.3 m）。
      人用（半径 0.2 m）の「席に入れない卓」は 0 で、回でも T19 に座れなかった記録はない
    ・レジの内側：南北の歩ける幅 0.52 m で、確かめが「入口が 0.7 m 未満」と出す（レジ内の奥行き 0.8 m）。
      回でレジの内側に入れなかった人は 0（register_back_intruders 0）。会計の位置がずれた回は 1台 1・2台 1
  書き出し（unity/screens/）
    20261029_p0_memory_json_check.txt / _table_dist.csv
    20261029_1712 ごろの map_planner_checkA_p0.txt


====================================================================
5. 確かめの3回（② × 0・1・2台 × 種0・すれ違い入・待機場所へ戻る入・案B切・ラベル p0check・同時 4 本）
====================================================================

  python3 tools/make_queue.py --stores fam_p0 --seeds 0 --label p0check --out /tmp/p0c/queue_p0check.json
  python3 tools/night_runner.py --queue /tmp/p0c/queue_p0check.json --parallel 4 --night 20261029
      --label p0check --record-name 20261029_p0check
  出力 20261029_p0check_cs39_fam_p0_r{0,1,2}_s0_passon_sbret
  記録 night/20261029_p0check/（runner 終了コード 0・completed 3・失敗 0）
  judge.md：基準なし 3（②の基準データがないため。依頼のとおり）

  左が Unity、右が試算（params の site_result）。単位は分。割合は 0〜1
                                   0台                 1台                 2台
  最後まで回ったか                 completed           completed           completed
  全員帰ったか                     はい                はい                はい
  実時間                           2.4 分              2.5 分              2.5 分
  （参考）店の時間                 164.1 分            163.7 分            164.0 分
  入れた組の数                     31 / 37.4           31 / 38.7           31 / 37.5
  入店待ち                         1.33 / 2.68         1.21 / 2.44         1.45 / 1.60
   うち席は空いているのに待った     0 / 1.13            0 / 0.56            0 / 0.35
  料理の待ち                       0.68 / 0.60         0.95 / 0.94         0.94 / 0.40
  会計待ち                         0.80 / 1.31         0.72 / 1.30         1.16 / 1.25
  ロボットが運んだ皿の割合         0 / 0               0.987 / 0.979       0.974 / 1.000
  往復の数                         0                   63                  73
  30秒以上の止まり                 0                   1                   17
   （1往復あたり）                 0                   0.016               0.233
  動けなくなった（60秒）           0                   0                   12
  卓を空けた（逃がし弁）           0                   0                   0
  瞬間移動                         3                   8                   15
  打ち切り                         0                   0                   1
  （参考）あきらめた               3                   4                   12
  （参考）冷めた皿の割合           0 / 0.0003          0.026 / 0.009       0.065 / 0
  （参考）待機場所へ戻った／出た   0 / 0               63 / 63             72 / 72（戻れず受け渡し口へ 0）
  （参考）ドリンクバーで並んだ／あきらめた  52 / 2     56 / 4              51 / 4
  ※ 0台の瞬間移動 3 はロボットのいない回なので、人の側のもの

  目立つ点（差の理由は調べていない。依頼のとおり）
    ・入れた組の数が3回とも 31 組で、試算（37〜39 組）より少ない（⑤⑥と同じ傾向）
    ・2台の回は料理の待ち 0.94 分（試算 0.40）、30 秒以上の止まり 17・動けなくなった 12 で、1台の回より悪い
    ・1台の回の 30 秒以上の止まりは 1 だけ（T06 の椅子の前・30.4 秒・回り込んで動き出した）


====================================================================
6. 2台の回の 30 秒以上の止まり（17 回）の場所と理由
====================================================================

  受け渡し口の点 (10.9, 5.45) から 2.5 m 以内              7 回（すべて「もう1台のロボット」）
   うち待機場所での止まりを除いた数                        0 回
     （7 回とも待機場所1の四角（x 12.2〜13.0・y 5.1〜5.9）の中、(12.27〜12.39, 5.41〜5.51)。
      うち 4 回が 60 秒の「動けなくなった」、2 回は「よける場所へ動いた」、1 回は「自分で動き出した」）
  仕切りの右端のすき間のまわり（x 7.5〜9.5・y 8.0〜9.6）  0 回
  奥の区画（x < 9.5・y > 9.0）                             9 回
    8 回は丸テーブル T05 と T06 のあいだ（(5.36, 12.41) に 1号機 3 回・(5.85, 11.98) に 2号機 5 回）。
      すべて 60 秒の「動けなくなった」。理由は椅子（T05・T06 の椅子）4・もう1台のロボット 4
      （店の時間 15〜24 分の間に続けて起きた。T05 の止まる位置は (5.36, 12.81)、T06 は (6.79, 11.86)）
    1 回は (7.57, 13.28)：もう1台のロボット・44 秒・回り込んで動き出した
  ドリンクバーのまわり（x 13.0〜21.5・y 2.6〜4.5）         0 回
  入口・レジのまわり（x 9.0〜14.0・y < 3.8）                1 回（(13.49, 1.69)：人が立ち止まっていた・44 秒・自分で動き出した）
  理由ごと（17 回）：もう1台のロボット 12・椅子・荷物・ベビーカー 4・人が立ち止まっていた 1
  動けなくなった 12 ＝ T05・T06 のあいだ 8 ＋ 待機場所1 4

  ロボットどうしが向かい合って止まった（face_stop）：25 回（待機場所 18・通路 7・受け渡し口 0）、いちばん長いもので 244 秒（待機場所）


====================================================================
7. 仕切りの右端のすき間（x 8.0〜9.5・y 8.6〜9.0）で向かい合って待った回数（まわり y 8.3〜9.3 で数えた。分かる範囲）
====================================================================

                                       1台       2台
  ロボットどうしのすれ違い（passes）     0         1（「幅が足りず今の決まりへ」）
  スタッフがロボットに道をゆずって待った  0         5（Staff01 2 回・Staff02 3 回。1.35〜7.8 秒）
  ロボットが止まった（30 秒未満も含む）  13        14
    1台：スタッフとすれ違った 10・お客さんとすれ違った 2（最長 8 秒）・人が立ち止まっていた 1
    2台：スタッフとすれ違った 8・人が立ち止まっていた 2・お客さんとすれ違った 2・もう1台のロボット 2（0.65 秒・3.45 秒）
  人どうしで詰まった（people_jams）      0         1（体を横に向けて抜けた・1 秒）
  客が 60 秒であきらめた（give_ups）      0         1
  ロボットと人の接触（contacts）         1（客）    1（スタッフ）
  どれも 30 秒未満で、ここで「動けなくなった」ものはない。


====================================================================
8. 台帳
====================================================================

  行数：631 → 634（3 行足した。追記だけ。3行とも unity_cs ServiceSim/cs:39・layout_generation dffc100b269c）
  先頭 631 行の md5：41c8ceff63036168a9d2940fb1e8c4ba（退避と同じ）
  列は今までどおり（59 列）。鍵ファイルは残っていない


====================================================================
9. make_queue（台帳には書いていない）
====================================================================

  --stores fam_p0 --seeds 0 --label p0check → fam_p0_s2_r{0,1,2}_a19 の 3 回
    （0台 trays 1・1台と2台 trays 3・レジ 1・すれ違い入・待機場所へ戻る入・案B切）。make_queue.py はコードを変えずに使えた
  何も指定しない（/tmp に作った）
    → fam_p1・fam_p5 × 0・1・2 台 × 種 0〜9 ＝ 60 回。
       night/20261102/queue.json（v5 の夜）と、回の並びと中身が同じ（label を除く）
  作業フォルダに queue の一時ファイルは置いていない（/tmp/p0c/ にだけ作った）。最後の保留 0（cs:39 head）。


====================================================================
10. エイイチが画面で②を見る手順
====================================================================

  1. Unity Hub から ServiceSim（/Users/shimazueiichi/Robotics_UX/ServiceSim）を開き、
     シーン Assets/ServiceSim/Scenes/ServiceSim_Family.unity を開く
  2. 建てるだけで見る：ServiceSim → JSON Store → ② p0_memory を建てて確かめる
  3. 回して見る：ServiceSim → Site Run → ② スタッフ2人・ロボット0台 / 1台 / 2台
     Play に入って回り、終わると自動で抜ける。すれ違い入・待機場所へ戻る入・案B切（今の標準）。
     種は ExperimentPlan の trialSeed。出力は KIOXIA に出る（台帳には書かない）
  ※ 丸テーブル T05・T06 のあいだの止まりを見るなら 2台の回の店の時間 15〜24 分ごろ。
     待機場所1での止まりは 43 分・53 分・96〜99 分・125〜130 分ごろ


====================================================================
11. 決めてほしいこと
====================================================================

  1. ②の夜を回すかどうか（依頼のとおり、本番の夜は回していない）。
  2. 2台の回で、丸テーブル T05・T06 のあいだに 2台が続けて入り、8 回 60 秒の「動けなくなった」になった
     （椅子 4・もう1台のロボット 4）。T05 の止まる位置 (5.36, 12.81) と T06 の止まる位置 (6.79, 11.86) が近く、
     引いた椅子も効いているように見える。このまま夜を回すか、先にサイトで卓の並びか止まる位置を見直すか。
  3. 待機場所1の中での止まり 7（すべてもう1台のロボット。4 回は 60 秒）。③⑦④⑥と同じ「待機場所が受け渡し口の前の近く」の形。
  4. 入れた組の数が 31 組で、試算（37〜39 組）より少ない（⑤⑥と同じ傾向）。
  5. 卓の部品の読み方の広げ方（3 章）でよいか。特に、知らない名前の裏の部屋を「kind = back なら事務所の箱」にしたこと
     （サイトの JSON に部屋の種類を足してもらう方がよければ、そちらに合わせて戻す）。
  6. 4 章の気づいたこと（T19 の右の席に着く点が壁から 0.3 m、レジの内側の南北 0.52 m）を調べるかどうか。
     どちらも回は最後まで回っているが、店の形のことなので、直すならサイトが先。
