commit 5c58fa9 下書き:⑨の島を左へ0.5m(large-ef184aab9fc4)、params に food_pass_lane・staff_clear_jam(切)を足す。⑨の試算を回し直してから main へ diff --git a/public/sim/serving-robot-params.json b/public/sim/serving-robot-params.json index aec9d5a..ef92e3b 100644 --- a/public/sim/serving-robot-params.json +++ b/public/sim/serving-robot-params.json @@ -447,6 +447,19 @@ "role": "site_rule", "note": "(入・標準)スタッフは、細い通路の中にロボットがいても入口で出るのを待たず、そのまま入って、体を横に向けてロボットの横をすり抜ける(2026-11-08 エイイチと決めた。⑧で今のままと比べ、標準にするかは結果を見て決める)。人はロボットよりずっと狭い所を通れ、店も人がギリギリまで寄れる前提で作られているため。依頼122 で、幅1.5mの通路の入口でスタッフが中のロボットを待ち、60秒であきらめるのをくり返し、片付けが600秒進まない回があった(型A)。すり抜けられないとき(体を横に向けても3秒抜けられないとき)は、staff_moves_robot の決まりでロボットを動かす。お客さんの動きは今のまま。店の形と試算の数字は変わらない。2026-11-08 標準(入)にした(依頼123 の⑧の比べで、型A が 0 になり、入店待ち・料理が届くまで・スタッフの手すきが横ばいか良くなったのを見てエイイチが決めた。細い通路でロボットが人の前で止まる分が増えるのは、実物のロボットも人が横を通ると止まるので現実に近いと見る。それまでの基準データはこの決まりなしで回している)。あわせて決めたこと:すり抜けるときもスタッフの体はロボットに重ならない(依頼123 では 4,276 回のうち 328 回重なり、最大 12cm だった。人がロボットの体を通り抜けるのは瞬間移動と同じく現実にない動きのため)。重ならずに抜ける隙間がなければ、その場で待つか、staff_moves_robot の決まりでロボットを動かす。2026-11-08 に足した決まり(依頼124 の結果を見てエイイチが決めた):人の側だけでは防げない重なり(壁ぎわのスタッフの横をロボットが通るとき、ロボットの方が寄ってくる)は、2.5cm 未満なら許す(服が触れるくらいとして扱い、記録だけ残す)。依頼124 の⑧80回で、すり抜け 14,991 回のうち 61 回、どれも 2.5cm 未満だった", "overlap_ok_m": 0.025 + }, + "food_pass_lane": { + "value": false, + "role": "site_rule", + "side_m": 0.6, + "depth_m": 1.2, + "note": "(切)受け渡し口の前に、ロボットの通る帯を置く。帯は受け渡し口の幅を左右に0.6m ずつ広げ、手前に1.2m。人(スタッフ・お客さん)はこの帯の中で立ち止まらない(通り抜けるのはよい。料理を取る・置くために受け渡し口の前に立つのもよい)。スタッフの持ち場や待つ点が帯の中にあれば、帯の外の一番近い点へ移す。2026-11-08 エイイチと決めた。依頼125 で⑨の受け渡し口の前と持ち場2のまわりで、受け渡し口へ向かうロボットがスタッフに止められていた(1回の営業あたり配膳で約720秒・下げ膳で約1,150秒)ため。⑨で切と入を比べてから標準にするかを決める" + }, + "staff_clear_jam": { + "value": false, + "role": "site_rule", + "radius_m": 3.0, + "note": "(切)同じ所(半径3m 以内)で動けないロボットが2台以上になったら、近くのスタッフ(staff_moves_robot と同じく7m 以内)が1台ずつ脇へ動かす。動かす順は、ほかの台の道をふさいでいる台から。1台目を動かしたら、次の台はまた一番近いスタッフが受け持つ。瞬間移動はさせない。2026-11-08 エイイチと決めた。依頼125 で⑨の待機点の入る点と T50 のそばで、ロボット5台と人2人が約3.1時間動けず、助けに行くスタッフが着けないまま仕事の受け渡しが193回くり返されたため。あわせて⑨の島を左へ0.5m 寄せた(店の形 tools/sim_layouts/large_store.py)。⑨で切と入を比べてから標準にするかを決める" } }, "stores": { diff --git a/tools/sim_layouts/large_store.py b/tools/sim_layouts/large_store.py index ccf00c4..3dd0b8f 100644 --- a/tools/sim_layouts/large_store.py +++ b/tools/sim_layouts/large_store.py @@ -128,7 +128,9 @@ def build_b(): dict(label="ドリンクバー", rect=[17.6, D - 0.7, 24.0, D], kind="drink")] # 左の壁ぞいと島は上へ1.0m(2026-11-06 エイイチ:レジの上の端から島まで 1.5m → 2.5m。上の通路は 4.05m → 3.05m) t = strip(0.0, 8.2, "v", 4, walls=walls) # 左の壁ぞい(レジの上から) - for x in (2.7, 6.75, 10.8, 14.85, 18.9): # ゆったりの島を5本(間の通路1.5m) + # 2026-11-08 エイイチ:右の島の T50〜T54 でロボットが止まる点と、待機点へ入る点(真正面1.0m)が 0.44m しか離れず、 + # 依頼125 で5台・2人が約3.1時間動けなかった。島の間の通路を 1.5m → 1.4m にして5本を左へ寄せ、右の通路を 1.75m → 2.25m に(止まる点と入る点 0.44m → 0.90m) + for x in (2.6, 6.55, 10.5, 14.45, 18.4): # ゆったりの島を5本(間の通路1.4m・左の壁ぞいとの間も1.4m) t += island(x, 7.9, "v", 5, walls=walls) t += strip(6.6, 0.0, "h", 8, seats=6, walls=walls) # 家族用の6人ボックス(下の壁ぞい。レジと一緒に右へ1.0m) # 右下にあった6人ボックス3つは、トイレにした所から上の壁ぞいへ移した(2026-11-02 エイイチ)