v5(段階2)0 章と、1 章の狭い通路・2 章の値の読み込みまで入れました。 3 章(回し方そのもの)はこれからです。Unity は押していません(Editor が開いたままのため)。 ──────────────────────────────────────────────────────── 0. 先にやること(両方おわり) ──────────────────────────────────────────────────────── (1) 10/21 までの変更を、今回の作業と分けて Check-in しました cs:113@br:/main 2026/10/22 19:25:30 コメント「10/21 までの作業分(あきらめる道・待機場所・字幕など)」 21 ファイル。すべて変更(C)で、中身は 1 文字も変えていません。 C Assets/ServiceSim/Editor/ServiceSimMenu.cs C Assets/ServiceSim/Editor/ServiceSimRender.cs C Assets/ServiceSim/Editor/ServiceSimSetup.cs C Assets/ServiceSim/Experiment/ExperimentPlan.cs C Assets/ServiceSim/Experiment/TripLogger.cs C Assets/ServiceSim/People/GuestAgent.cs C Assets/ServiceSim/People/PeopleNav.cs C Assets/ServiceSim/People/PeopleSpawner.cs C Assets/ServiceSim/People/PeopleSpec.cs C Assets/ServiceSim/People/PeopleTargets.cs C Assets/ServiceSim/People/PersonBody.cs C Assets/ServiceSim/People/SeatedGuest.cs C Assets/ServiceSim/People/StaffAgent.cs C Assets/ServiceSim/Robot/FrontSensor.cs C Assets/ServiceSim/Robot/RobotSpec.cs C Assets/ServiceSim/Robot/ServingRobotController.cs C Assets/ServiceSim/Store/BandStoreLayout.cs C Assets/ServiceSim/Store/NavMeshBaker.cs C Assets/ServiceSim/Store/StoreBuilder.cs C Assets/ServiceSim/Store/StoreLayout.cs C Assets/ServiceSim/Store/StorePlan.cs ※ ServiceSimMenu.cs・NavMeshBaker.cs・StoreBuilder.cs・StorePlan.cs・RobotSpec.cs・ ServingRobotController.cs は、この Check-in の **あと** に今回の v5 の直しを入れています。 cs:113 に入っているのは 10/21 までの状態です。 (1b) .git は Check-in していません(ご指示のとおり) cs:112(段階1)と cs:113(10/21 分)に `.git` で始まる項目は **0 件** です(cm log で確認)。 いま Pending に残っている .git は次の 7 件です。 Changed .git/index ← 過去に管理下に入ってしまっている(Plastic が持っている) Private .git/objects/… 6 件 ← 管理外(入れていない) 直すなら 2 段構えになります。**どちらもまだ実行していません。** ア) ignore.conf に 1 行足す(Private の 6 件が Pending から消える) ワークスペース直下の ignore.conf に `.git` を足すだけです。 いまの ignore.conf は Library / Temp / .vs / .vscode / .idea … という書き方なので、同じ並びに入ります。 .git イ) .git/index は管理下(Changed)なので、ignore.conf だけでは消えません リポジトリからだけ外す必要があります。ディスクの .git/index は残す形です。 cm remove --nodisk .git/index cm checkin .git/index -c "git の内部ファイルを Plastic の管理から外す" --nodisk は「バージョン管理から外し、ディスクには残す」オプションです (cm remove controlled --help で確認)。ローカルの git は壊れません。 Plastic が持っていた古いコピーが消えるだけです。 ウ) 何もしない場合は、Pending に .git/index が 1 件ずっと残ります(害はありません)。 ア・イを進めてよければ、言っていただければ入れます(相談してからにします)。 (2) 小さな直し 2 つ a. 細い通路の歩ける幅が 0 m と出る誤報(ServiceSimMenu.CheckAisleWidths) SamplePosition の探す半径を 0.02 m → navVoxelSize(0.05 m)以上にしました。 焼けた面は床より少し上(この店では y=0.03 m)に出るので、0.02 m では届かず、 どこを打っても「乗っていない」になっていました。 横のずれの判定(刻み × 0.8)はそのままなので、測る細かさは変わりません。 **同じ誤報がレジの内側の幅(WalkRun / CheckRegisterBack)にも出ていた**ので、 そちらも同じ 1 行で直しました(「入口が 0.7 m 未満。registerBackDepthZ を広げる」 も同じ原因の誤報でした)。依頼には CheckAisleWidths だけと書かれていましたが、 原因も直し方も同じなので、あわせて直しています。要らなければ戻します。 b. store_report.txt の名前に店の名前を入れました {日付}_{run_name}_{店の名前}_store_report.txt になります。③⑦を続けて回しても 上書きされません。conditions.json と table_path_lengths_family.csv は 名前がそのままなので、まだ上書きされます(必要なら次に直します)。 ──────────────────────────────────────────────────────── 1. 狭い通路をサイトにそろえる(入れました) ──────────────────────────────────────────────────────── サイトの決まり:「ふだんは幅 normal_width(1.0 m)以上の道を選び、 それで届かない卓だけ狭い道を使う」。 作り方(通れなくはしない。道探しのコストを上げるだけ) JsonStoreLayout JSON の細い通路のうち、幅が meta.settings.normal_width 未満のものに PlanAisle.hardToPass の印を付ける(③ 1.2 m は付かない/⑦ 0.8 m は 3 本とも付く) StoreBuilder AisleInfo.hardToPass に渡す NavMeshBaker narrowAisleArea(既定 4)の区画にする。形は足さず、箱の中の区画の 番号だけを変える(ModifierBox。レジの内側と同じ作り) RobotSpec narrowAisleCost(既定 20)を足した。ふつうの床は 1 ServingRobot NavMeshAgent.SetAreaCost(narrowAisleArea, narrowAisleCost) ※ 区画 4 の名前は ProjectSettings/NavMeshAreas に入れていません (Assets/ServiceSim の外を触らないため。番号だけで動きます) ※ コスト 20 は仮です。「1.0 m 以上の道があればそちらを選ぶ」が成り立つ範囲で、 小さいほど素直です。確かめの結果を見て decide したいです 確かめ方も足しました(JSON Store の確かめに列を 1 つ追加) table_dist.csv に **via_narrow**(0/1)を足し、受け渡し口→卓の経路が 狭い通路の区画を通ったかを出します。経路の角と、角のあいだ 0.25 m ごとの点の 区画を見て判定します。道のりも、同じコストを入れた道探しで測ります。 → 依頼 4-5 の「⑦で T17・T22 が狭い通路を避けているか」は、この列で分かります。 ──────────────────────────────────────────────────────── 2. 試算の値を読む(入れました) ──────────────────────────────────────────────────────── 写したもの:Assets/ServiceSim/Experiment/serving-robot-params.json 写した日時:2026-10-22 19:26:39 JST 写し元:https://pixelstomotors.com/sim/serving-robot-params.json 試算の版:meta.model v2.4 / meta.layout_generation **e624bdf4bdd4**  → ③⑦の店の形の meta.generation と同じです(合っています) 読む道具:Experiment/SimParams.cs + SimParams.asset ・role=site_rule の値だけを返す。**unity_measures(robot_speed・pause_rate・ pause_s・stuck_rate)を読もうとしたら、値を返さずに「読みません」と記録します** (まちがって使わないための歯止め) ・site_only(hop_m・warmup_min・sustain・util_sample_s・model)も返しません ・meta.layout_generation が店の形の版と違ったら Ready が false(回さない) ・unity_conditions の 6 件を Condition として持ちます fam_p1 × ロボット 0/1/2・fam_p5 × ロボット 0/1/2、どれもスタッフ 4 人・42 組毎時・ serve(上げ膳だけ)・fragile_by=any。trays は robots=0 のとき 1、それ以外 3 ・site_result(サイトの結果)も条件ごとに持ちます(4-2 の表に使います) 確かめのメニューを足しました(回しません。読めるかどうかだけ) ServiceSim/JSON Store/試算の値を読んで確かめる(v5) → ③⑦それぞれと版を突き合わせ、使う値・店ごとの値・metrics の名前と意味を screens/{日付}_sim_params_check.txt に書き出します いまの .asset の値と JSON を、私の側で突き合わせた結果(違うのは 2 つだけ) ★ちがう arrivalsPerHourByCrowd : .asset [25, 35, 45] → JSON [30, 42, 54] ★ちがう trays : .asset 3(固定)→ 条件ごと(robots=0 は 1・それ以外 3) 同じ peak_min 120 / guide_s 45 / pay_s 90 / call_s 30 / call_rate 0.6 / first_dishes [5,8,12][8,12,18] / fragile 0.5 / fragile_cook [2,4,7] / cold_min 3 / robot_handoff_s 25 / staff_place_s 10 / eat_min [20,30,45] / clear_s 40 / wipe_s 40 / bus_trips 2 → 手で写した値は、来客のペース以外はすべて合っていました。 ServiceSpec・PeopleSpec を JSON から読む形にする作業(3 章)でも、 実際に変わるのはこの 2 つだけの見込みです。 ──────────────────────────────────────────────────────── 3. まだ入れていないもの(3 章・4 章) ──────────────────────────────────────────────────────── 依頼 3 章の表のうち、残りはここです。どれも「回し方」そのものに触ります。 a. 条件 unity_conditions の 6 つを選べるようにする(いまは 通路幅×混み具合×台数 の 18 条件の作り)。スタッフの人数を条件にする。ロボット 0 台で回せるようにする b. 始め方 空の店から peak_min(120分)来客し、全員が帰るまで(max_extra_min で打ち切り)。 いまの「8割埋まった店・慣らし15分」をやめる c. 立ち往生 受け渡し口へ移す(warp)をやめ、スタッフが歩いて行って rescue_s(15秒)動かす。 ほかの仕事より先にする d. 逃がし弁 あきらめた・移した・卓を空けた の回数を数えて記録(消さない) e. 出す数字 meta.metrics の名前と定義にそろえる。定義が違うものは報告に書く f. 測る値 往復ごとに4つ(速さ・止まっていた長さ・動けなくなった割合・止まった割合)。 ⑦は狭い通路の中と外を分ける g. 値の差し替え ServiceSpec / PeopleSpec を JSON から読む形にする(上の 2 つが変わる) これらは ExperimentRunner(668 行)・ServiceOps(1078 行)・TripLogger(1044 行)・ StaffAgent(403 行)・ServingRobotController(1135 行)に手を入れることになります。 **Unity Editor が開いたままで、こちらではコンパイルも実行もできません。** 読まずに大きく書いて渡すと、動かしてみるまで間違いが分からないので、 ここで一度切って報告します。 ──────────────────────────────────────────────────────── 4. お願い ──────────────────────────────────────────────────────── (ア) いま入れた分を、Unity で読んでから押してください 1. コンパイルが通るか(新しいのは SimParams.cs だけ。ほかは数行ずつの差し替えです) 2. ServiceSim/JSON Store/試算の値を読んで確かめる(v5) → 版が合っているか・使う値・6 条件が読めているか 3. ServiceSim/JSON Store/③⑦ を続けて確かめる → 幅の誤報が消えているか(「0 m ← 直す必要あり」が実際の幅になるか) → ⑦の table_dist.csv の via_narrow が 0 になっているか (狭い通路を避けて遠回りしているか。T17・T22 を特に見てください) → ③の via_narrow は 0 のまま(1.2 m なので区画を付けていません) (ウ) そのあと、3 章 a〜g を続けます。**Unity を閉じていただければ**、 こちらで batch mode にかけて、コンパイル→③ロボット2台を1回(4 章)まで 回して報告できます。開けたままなら、同じように「書く→エイイチが押す」で進めます。 VCS Check-in は、今回入れた分(1 章・2 章・0-2 の直し)はまだしていません。 コンパイルと上の確かめが通ってから入れます(依頼 5 の「確かめが通ったら」のため)。 いま触ったファイル 新規 Experiment/serving-robot-params.json(+ .meta) Experiment/SimParams.cs(+ .meta)/ Experiment/SimParams.asset(+ .meta) 変更 Editor/ServiceSimMenu.cs(幅の誤報 2 か所・store_report の名前) Editor/ServiceSimJsonStore.cs(試算の値のメニュー・via_narrow・コスト入りの道探し) Store/StorePlan.cs(PlanAisle.hardToPass) Store/StoreBuilder.cs(AisleInfo.hardToPass) Store/JsonStoreLayout.cs(normal_width で印を付ける・報告) Store/NavMeshBaker.cs(narrowAisleArea・AddNarrowAisleAreas) Robot/RobotSpec.cs(narrowAisleCost) Robot/ServingRobotController.cs(区画のコストを agent に入れる・測る用の filter)