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)