commit a33aefdcca1dc9c15a0cb6b83c5984bff18d2767
配膳ロボット：③⑦のドリンクバーを動かして右下の行き止まりをなくし、試算 v2.7（料理はロボット優先）を公開（店の形の版 8a5b2f6a016a）


diff --git a/public/sim/serving-robot-params.json b/public/sim/serving-robot-params.json
index 3f3cb45..23f2350 100644
--- a/public/sim/serving-robot-params.json
+++ b/public/sim/serving-robot-params.json
@@ -1,10 +1,10 @@
 {
  "meta": {
   "schema_version": "serving-robot-params/0.1",
-  "model": "v2.4",
+  "model": "v2.7",
   "reps": 40,
   "ng_min": 10,
-  "layout_generation": "2fa10547a2b7",
+  "layout_generation": "8a5b2f6a016a",
   "source": "p2m-site の public/sim/serving-robot.html と同じ試算（haizen_sim.py）と結果（results.json）",
   "roles": {
    "unity_measures": "Unity で測ってサイトに戻すための仮の値。Unity は読まない",
@@ -129,8 +129,12 @@
    "value": 600,
    "role": "site_rule"
   },
+  "robot_first_wait_s": {
+   "value": 120,
+   "role": "site_rule"
+  },
   "model": {
-   "value": "v2.4",
+   "value": "v2.7",
    "role": "site_only"
   }
  },
@@ -226,17 +230,17 @@
     4.67,
     3.81,
     4.0,
-    4.62,
-    5.72,
-    6.82,
-    7.92,
-    9.02,
-    10.12,
+    4.8,
+    5.9,
+    7.0,
+    7.94,
+    8.35,
+    9.45,
     5.43
    ]
   },
   "fam_p5": {
-   "label": "⑦ ③の通路を80cmに",
+   "label": "⑦ ③の通路を95cmに",
    "tables": 42,
    "dist_m": [
     3.0,
@@ -326,12 +330,12 @@
     4.67,
     3.81,
     4.0,
-    4.62,
-    5.72,
-    6.82,
-    7.92,
-    9.02,
-    10.12,
+    4.8,
+    5.9,
+    7.0,
+    7.94,
+    8.35,
+    9.45,
     5.43
    ]
   }
@@ -348,13 +352,13 @@
     "fragile_by": "any"
    },
    "site_result": {
-    "dish_wait_mean": 0.653,
-    "dish_wait_p90": 1.3663,
-    "cold_share": 0.0004,
-    "seat_wait_mean": 2.602,
-    "turn_mean": 9.4605,
-    "walk_km_per_staff": 2.7655,
-    "staff_util": 0.7511,
+    "dish_wait_mean": 0.6466,
+    "dish_wait_p90": 1.3635,
+    "cold_share": 0.0001,
+    "seat_wait_mean": 3.4037,
+    "turn_mean": 9.7179,
+    "walk_km_per_staff": 2.7861,
+    "staff_util": 0.7454,
     "robot_util": 0.0,
     "robot_share": 0.0,
     "robot_bus_share": 0.0,
@@ -362,12 +366,12 @@
     "rescues": 0,
     "pauses": 0,
     "fragile_robot": 0,
-    "groups": 84.2,
-    "entry_wait_mean": 3.1814,
-    "blocked_wait_mean": 2.4548,
-    "guide_wait_mean": 0.3997,
-    "staff_wait_mean": 2.8545,
-    "full_wait_mean": 0.1472
+    "groups": 84.475,
+    "entry_wait_mean": 3.99,
+    "blocked_wait_mean": 2.9486,
+    "guide_wait_mean": 0.4067,
+    "staff_wait_mean": 3.3554,
+    "full_wait_mean": 0.455
    }
   },
   {
@@ -381,26 +385,26 @@
     "fragile_by": "any"
    },
    "site_result": {
-    "dish_wait_mean": 0.5455,
-    "dish_wait_p90": 1.1186,
-    "cold_share": 0.0008,
-    "seat_wait_mean": 1.4919,
-    "turn_mean": 5.3329,
-    "walk_km_per_staff": 2.1959,
-    "staff_util": 0.6855,
-    "robot_util": 0.5883,
-    "robot_share": 0.4671,
+    "dish_wait_mean": 2.0323,
+    "dish_wait_p90": 3.0681,
+    "cold_share": 0.124,
+    "seat_wait_mean": 1.4083,
+    "turn_mean": 4.2104,
+    "walk_km_per_staff": 1.9076,
+    "staff_util": 0.6428,
+    "robot_util": 0.7572,
+    "robot_share": 0.7275,
     "robot_bus_share": 0.0,
     "collects": 0,
-    "rescues": 0.775,
-    "pauses": 23.975,
-    "fragile_robot": 21.7,
-    "groups": 83.8,
-    "entry_wait_mean": 1.9592,
-    "blocked_wait_mean": 1.1414,
-    "guide_wait_mean": 0.2909,
-    "staff_wait_mean": 1.4322,
-    "full_wait_mean": 0.3505
+    "rescues": 0.725,
+    "pauses": 20.5,
+    "fragile_robot": 32.8,
+    "groups": 82.85,
+    "entry_wait_mean": 1.8213,
+    "blocked_wait_mean": 0.9854,
+    "guide_wait_mean": 0.2347,
+    "staff_wait_mean": 1.2201,
+    "full_wait_mean": 0.4229
    }
   },
   {
@@ -414,26 +418,26 @@
     "fragile_by": "any"
    },
    "site_result": {
-    "dish_wait_mean": 0.4568,
-    "dish_wait_p90": 0.8167,
-    "cold_share": 0.0,
-    "seat_wait_mean": 0.6083,
-    "turn_mean": 4.3928,
-    "walk_km_per_staff": 1.872,
-    "staff_util": 0.6436,
-    "robot_util": 0.4764,
-    "robot_share": 0.7257,
+    "dish_wait_mean": 1.0095,
+    "dish_wait_p90": 2.0763,
+    "cold_share": 0.0158,
+    "seat_wait_mean": 0.6758,
+    "turn_mean": 3.7762,
+    "walk_km_per_staff": 1.6174,
+    "staff_util": 0.6257,
+    "robot_util": 0.605,
+    "robot_share": 0.9918,
     "robot_bus_share": 0.0,
     "collects": 0,
-    "rescues": 1.475,
-    "pauses": 41.625,
-    "fragile_robot": 31.9,
-    "groups": 82.1,
-    "entry_wait_mean": 1.0194,
-    "blocked_wait_mean": 0.5116,
-    "guide_wait_mean": 0.2337,
-    "staff_wait_mean": 0.7453,
-    "full_wait_mean": 0.0967
+    "rescues": 1.4,
+    "pauses": 44.425,
+    "fragile_robot": 42.025,
+    "groups": 84.8,
+    "entry_wait_mean": 1.0758,
+    "blocked_wait_mean": 0.5223,
+    "guide_wait_mean": 0.2245,
+    "staff_wait_mean": 0.7468,
+    "full_wait_mean": 0.1535
    }
   },
   {
@@ -447,13 +451,13 @@
     "fragile_by": "any"
    },
    "site_result": {
-    "dish_wait_mean": 0.6572,
-    "dish_wait_p90": 1.3761,
-    "cold_share": 0.0012,
-    "seat_wait_mean": 3.775,
-    "turn_mean": 10.152,
-    "walk_km_per_staff": 2.8551,
-    "staff_util": 0.7522,
+    "dish_wait_mean": 0.6502,
+    "dish_wait_p90": 1.3481,
+    "cold_share": 0.0011,
+    "seat_wait_mean": 4.1988,
+    "turn_mean": 9.9907,
+    "walk_km_per_staff": 2.8371,
+    "staff_util": 0.7444,
     "robot_util": 0.0,
     "robot_share": 0.0,
     "robot_bus_share": 0.0,
@@ -461,12 +465,12 @@
     "rescues": 0,
     "pauses": 0,
     "fragile_robot": 0,
-    "groups": 85.625,
-    "entry_wait_mean": 4.3607,
-    "blocked_wait_mean": 3.568,
-    "guide_wait_mean": 0.4037,
-    "staff_wait_mean": 3.9717,
-    "full_wait_mean": 0.207
+    "groups": 85.325,
+    "entry_wait_mean": 4.7827,
+    "blocked_wait_mean": 3.5477,
+    "guide_wait_mean": 0.402,
+    "staff_wait_mean": 3.9497,
+    "full_wait_mean": 0.651
    }
   },
   {
@@ -480,26 +484,26 @@
     "fragile_by": "any"
    },
    "site_result": {
-    "dish_wait_mean": 0.5299,
-    "dish_wait_p90": 1.0788,
-    "cold_share": 0.0005,
-    "seat_wait_mean": 1.1136,
-    "turn_mean": 5.1263,
-    "walk_km_per_staff": 2.2447,
-    "staff_util": 0.6905,
-    "robot_util": 0.587,
-    "robot_share": 0.4586,
+    "dish_wait_mean": 2.1584,
+    "dish_wait_p90": 3.2312,
+    "cold_share": 0.1651,
+    "seat_wait_mean": 1.6764,
+    "turn_mean": 4.7822,
+    "walk_km_per_staff": 2.0685,
+    "staff_util": 0.6682,
+    "robot_util": 0.7541,
+    "robot_share": 0.7081,
     "robot_bus_share": 0.0,
     "collects": 0,
-    "rescues": 1,
-    "pauses": 24.925,
-    "fragile_robot": 21.15,
-    "groups": 83.525,
-    "entry_wait_mean": 1.572,
-    "blocked_wait_mean": 0.879,
-    "guide_wait_mean": 0.2779,
-    "staff_wait_mean": 1.1569,
-    "full_wait_mean": 0.2346
+    "rescues": 0.8,
+    "pauses": 20,
+    "fragile_robot": 31.9,
+    "groups": 85.875,
+    "entry_wait_mean": 2.142,
+    "blocked_wait_mean": 1.0793,
+    "guide_wait_mean": 0.2813,
+    "staff_wait_mean": 1.3606,
+    "full_wait_mean": 0.5971
    }
   },
   {
@@ -513,26 +517,26 @@
     "fragile_by": "any"
    },
    "site_result": {
-    "dish_wait_mean": 0.481,
-    "dish_wait_p90": 0.8814,
-    "cold_share": 0.0001,
-    "seat_wait_mean": 0.9795,
-    "turn_mean": 4.5091,
-    "walk_km_per_staff": 1.9533,
-    "staff_util": 0.6561,
-    "robot_util": 0.4897,
-    "robot_share": 0.7311,
+    "dish_wait_mean": 1.0105,
+    "dish_wait_p90": 2.0635,
+    "cold_share": 0.014,
+    "seat_wait_mean": 0.743,
+    "turn_mean": 3.845,
+    "walk_km_per_staff": 1.654,
+    "staff_util": 0.6208,
+    "robot_util": 0.6061,
+    "robot_share": 0.9917,
     "robot_bus_share": 0.0,
     "collects": 0,
-    "rescues": 1.425,
-    "pauses": 40.525,
-    "fragile_robot": 31.85,
-    "groups": 82.925,
-    "entry_wait_mean": 1.4157,
-    "blocked_wait_mean": 0.842,
-    "guide_wait_mean": 0.2535,
-    "staff_wait_mean": 1.0954,
-    "full_wait_mean": 0.1375
+    "rescues": 1.575,
+    "pauses": 43.525,
+    "fragile_robot": 42.65,
+    "groups": 83.525,
+    "entry_wait_mean": 1.1434,
+    "blocked_wait_mean": 0.5823,
+    "guide_wait_mean": 0.2194,
+    "staff_wait_mean": 0.8016,
+    "full_wait_mean": 0.1607
    }
   }
  ]
diff --git a/tools/sim_layouts/README.md b/tools/sim_layouts/README.md
index 1aa11e9..93a8385 100644
--- a/tools/sim_layouts/README.md
+++ b/tools/sim_layouts/README.md
@@ -58,6 +58,7 @@ python3 test_famires_v3.py         # 確かめの仕組みそのものを確か
 6. ドリンクバーあり。ロボットの待機・充電の場所は料理の受け渡し口の横（1台あたり0.8m×0.8m）
 7. ⑦は③と同じ卓・同じ席数のまま、列の間の通路だけを95cmに詰めた比較用（はじめは80cm。2026-10-23、Unity でロボットがほとんど動けず、右端の列の横に余りがあったので、島を右へずらして95cmにした。ふだん走らせる幅1.0mより狭いので、細い通路の卓は狭い道で入る）
 8. ②記憶の店は、昔働いていた店の記憶をもとにした店（layout_v11.json）を決まりに合わせた版。トイレとバックヤード（パントリーの出入り口・洗い場・物置）が客席の奥の壁より外へ出っ張り、奥の端はそろう。トイレへはパントリーの壁ぞいの通路から入る
+9. ③⑦のドリンクバーは、右の6人席との間に1.2mの抜け道を空けて置く（2026-10-24。前は間が0.4mで、右下の2人席の前の通路が行き止まりになり、Unity でロボットが正面から出会って詰まった。上へ0.5m・左へ0.8m動かし、ロボットがドリンクバーのまわりを一周できるようにした。下の通路は1.9mで、卓の前にロボットが止まっていても横を抜けられる）
 
 **ロボット**
 - 通れる幅は機種の公表値。初期値は BellaBot の80cm（ファミレスで多く使われ、調べた中で一番厳しい）
diff --git a/tools/sim_layouts/famires_gen2.py b/tools/sim_layouts/famires_gen2.py
index 506f458..e06e6ff 100644
--- a/tools/sim_layouts/famires_gen2.py
+++ b/tools/sim_layouts/famires_gen2.py
@@ -174,7 +174,9 @@ def p1_efficient_corner():
     rooms += [dict(label="待合", rect=[0.0, 0.9, 0.5, 3.3], kind="guest"),
               # 縦のカウンター。客は入口の側（左）に立ち、入口へ向かって並ぶ。下の通路をふさがない（2026-10-23 エイイチと決めた）
               *register([3.3, 0.4, 4.0, 2.9], [4.0, 0.4, 4.9, 2.9]),
-              dict(label="ドリンクバー", rect=[16.8, 2.8, 20.8, 3.5], kind="drink")]
+              # ドリンクバーは上へ0.5m・左へ0.8m。右の6人席との間に1.2mの抜け道を作り、右下の2人席の前の通路を行き止まりにしない
+              # （ロボットが一周できる。下の通路は1.9mで、卓の前にロボットが止まっていても横を抜けられる。2026-10-24 エイイチと決めた）
+              dict(label="ドリンクバー", rect=[16.0, 3.3, 20.0, 4.0], kind="drink")]
     t = strip(0.0, 4.6, "v", 4)                       # 左の壁ぞいのソファ（トイレの手前で止める）
     t += island(2.4, 4.8, "v", 4)                     # 背中合わせのソファの列（間の通路1.2m）
     t += island(6.1, 4.8, "v", 5)
