サービスロボット導入シミュレーション Log#36 | 配膳ロボットが止まり合う原因は、待機点への入り方

この記事の素材(コード・ログ・データ 20ファイル・まとめてダウンロードあり)
AIで読む ChatGPT・Claude などで、この記事に質問できます

70卓・312席の大型ファミレスを Unity の3Dで再現したシミュレーションでは、配膳ロボット5台が止まり合う大きな原因は、0.8m 間隔で並んだ待機点へ斜めに寄るため、隣で待つロボットが前のセンサーに入ってしまうことだった。 待機点の真下まで来てからまっすぐ入る決まりにすると、待機場所のそばの止まり合いは、1回の営業あたり3,317秒から1,255秒に減りました(同じお客さんの来かたで10回回した中央値)。実物の店で測った数字ではなく、シミュレーションの中の結果です。

この回で、次のことが良くなり、分かるようになりました。

  • 近くのスタッフが、止まったロボットをすぐ押して動かす決まりを入れた。ロボット5台の店で、ロボットが止まっていた時間の合計は1回の営業あたり12,896秒から8,068秒へ、約1時間20分減り、入店待ちは17.6分から11.3分に縮んだ
  • 待機点への入り方を変えるだけで、店の形(待機点の数・並び・間隔)を変えずに、待機場所のそばの止まり合いを約6割減らせた。待機場所を広げる工事をしなくても、ロボットの動き方の設定で直せる候補が見えた
  • どの直し方が効いて、どれが効かなかったかを、1つずつ切り替えて比べた数で残した。待機点を列で使う・2列に並べ直す、の2つは効かず、2列のほうは元に戻した
  • 入店待ちは、まっすぐ入る決まりで12.2分から14.9分に延びた。原因はロボットではなく、Unity の人が待機点の列の中を通り道にしていることだと分かり、次に直す所がはっきりした

困っていたのは、ロボットを増やすと店が遅くなることでした。前の回(LOG452)で、この大型店⑧は、ロボットを2台から5台に増やすと入店待ちが11.7分から17.2分に延び、ロボットどうしが待機場所のまわりで止まり合っていました。原因の候補はいくつもあり、数字の表だけではどれが効いているのか分かりませんでした。

そこで、店を⑧の1つ、使い方を配膳だけに絞り、原因の候補を1つずつ入れたり外したりして比べました。

やったことなぜ結果
近くのスタッフが、5秒止まったロボットを押して動かす決まりを入れた
現実の店なら、スタッフが真っ先にロボットを動かすため
3台以上で効いた。5台の止まりの合計は12,896秒→8,068秒
待機場所のそばの止まり合いを10の型に分けた
どこで何が詰まるのかを知るため
待機点に戻る台が、隣の台のそばで入れない型がいちばん多かった
待機点を、受け渡し口に近い方から列のように使った
入る順を決めれば止まり合いが減ると考えたため
ほとんど変わらなかった(行ったり来たりの1件を除くと6.3時間→6.0時間)
待機点を2列に並べ直した間を広げるため
戻れない待機点が出て、卓までの道も延びた。元の1列に戻した
待機点の真下からまっすぐ入る決まりを入れた
間0.8mのまま、隣の台をセンサーに入れないため
待機場所のそばの止まり合いが3,317秒→1,255秒

この回では、どれか1つを直して終わりにするのではなく、何を変えたら何が変わったかを数で並べることを目的にしています。シミュレーションを実物に近づけ続けることが目的ではなく、店で問題が起きたときに原因を切り分けるための材料を集める道具として使っています。

配膳ロボットを自分の店に入れたらどうなるかは、このシリーズの試算をもとにした別のページで試せます。

店の立体図(席・キッチン・配膳ロボットの通り道)導入前シミュレーション配膳ロボットを、導入前に自分の店舗でシミュレーション店舗の図面と人数から、何人で回るか・どこで止まるか・月いくらかかるかを出します

作業ログ ― 大型店⑧の配膳だけに絞って、止まり合いの原因を探した

前の回の終わりに、Unity のシミュレーションのまずい所を8つ洗い出し、直し方をまとめたレポートを作りました。そのレポートを読みながら、まず範囲を絞りました。

まずは⑧だけに絞るのはどう?問題をもっと明確にしたい

⑧は70卓・312席の大型店で、厨房が中央にあります。お客さんの来かた・人数・スタッフ6人は前の回と同じで、ロボットの台数(2〜5台)だけを変えます。ほかの店・⑨・下げ膳(食べ終えた皿を運ぶ使い方)は、この回では回していません。途中で一度、ほかの店と下げ膳まで広げた依頼(依頼101)を出してしまい、すぐ止めて⑧だけの依頼に出し直しました。

この回で使う言葉:待機点・前のセンサー・種・30秒の呼び出し

この記事で何度も出てくる言葉を先に説明します。

言葉意味
待機点
配膳ロボットが、運ぶ料理がない間に止まって待つ場所。⑧ではパントリー(料理を出す棚)の前の壁ぞいに、6つが0.8m 間隔で1列に並んでいる
受け渡し口
厨房から料理を受け取る所。ロボットは待機点からここへ行き、料理を載せて卓へ運び、待機点へ戻る
前のセンサー
ロボットが前にある物を見て止まるための目。ロボットの中心から0.85m(台の半径0.25m+0.6m)先まで届く。実物の配膳ロボットにも、前の人や物で止まる仕組みがある
種
お客さんがいつ何人で来るかなど、偶然で決まる部分を作るための番号。種が同じなら同じお客さんが同じ時刻に来るので、決まりを変えたときの違いだけを比べられる。1つの条件を種0〜9の10回で回し、真ん中の値(中央値)で見る
30秒の呼び出し
Unity の店で前から入れていた決まり。ロボットが30秒動けないと、スタッフが呼ばれて助けに行く
依頼箱
Unity の作業を Claude Code に頼む仕組み。依頼文を iCloud のフォルダに置くと、Mac で Claude Code が順に作業し、結果を書き戻す。依頼100 のような番号は、この依頼の番号

Unity は、ゲームや3Dの場面を作る道具です。このシリーズでは、店の形と条件をサイトの試算(表計算で出した見込み)から写し、Unity の中に店を建てて、お客さん・スタッフ・ロボットを動かしています。店の形と条件の正はサイトで、Unity はそれを読みます。

作業ログ ― 依頼100:近くのスタッフが止まったロボットを動かす決まりを入れた

この記事のコード・ログ・データは、1ファイルずつ下に置いています。全文はリンク先にあります。

ファイルの一覧(20本)

01_sec02.txt ― 依頼100 の依頼文・3,270字

02_sec02.txt ― 依頼100 の結果・3,355字

03_sec02.txt ― 依頼100 の Claude Code の報告(20261107_sm100.txt)・14,978字

04_sec03.txt ― 依頼101b の結果・3,289字

05_sec03.txt ― 依頼101b の Claude Code の報告(20261107_sm101b.txt)・14,136字

06_sec04.txt ― 依頼104 の結果・3,136字

07_sec04.txt ― 依頼104 の Claude Code の報告(20261107_standby104.txt)・11,996字

08_sec05.txt ― 依頼105 の Claude Code の報告(20261107_sq105.txt)・15,826字

09_sec06.txt ― 2列の店の形の差分(p2m-site commit 18d23fe・あとで元に戻した)・5,670字

10_sec06.txt ― 依頼108 の依頼文・3,565字

11_sec06.txt ― 依頼108 の Claude Code の報告(20261107_sb108.txt)・13,736字

12_sec07.py.txt ― 図を描いたスクリプト(fig_fix_options.py)・4,369字

13_sec07.txt ― 1列に戻し、まっすぐ入る決まりを足した差分(p2m-site commit de01a0e)・33,453字

14_sec08.txt ― 依頼112 の依頼文・3,578字

15_sec08.txt ― 依頼112 の結果・3,349字

16_sec08.txt ― 依頼112 の Claude Code の報告(20261107_sb112.txt)・14,456字

17_sec09.txt ― 依頼114 の依頼文・3,188字

18_sec09.txt ― 依頼114 の結果・3,009字

19_sec09.txt ― 依頼114 の Claude Code の報告(20261107_sb114.txt)・15,139字

20_sec10.txt ― 依頼118 の下書き(置いていない)・3,437字

レポートを見たあと、シミュレーションのいちばんまずい所は、別の所にあると分かりました。Unity の画面で、スタッフがロボットのすぐ横に立っているのに、ロボットを動かして通路を開けようとしない場面です。

⑧の Unity の画面。客席の間の通路で、白い配膳ロボット2台と青いスタッフ、黄色いお客さんが固まっている。スタッフはロボットの横に立っているが、ロボットを動かさない

単純にシミュレーションとしてまずいのは、スタッフがロボットの近くにいるのにロボットを動かして通路を開けたりすることをシミュレーションで行わないところ(現実なら接客中でなければ、まず一番最初にロボットを動かすはず)なのでまずはスタッフが何を重要視しているかと、ロボットに対してどんな時に働きかけるかを明確にした方が良さそう。

この画像の状態だったら真っ先にロボットを止めて動かすね

それまでの Unity の店では、ロボットが30秒動けないと呼び出しがかかり、呼ばれたスタッフが行って押すだけでした。近くにいる人が自分から動かすことはありません。どんなときにスタッフが動くかを、次のように決めました。

どのくらい近くにいる人が動かすか7メートルくらいかな/料理や皿を持って歩いている途中の人は動かさない(料理や皿を置いてからロボットを動かしにくる)/自分の道をふさがれたときに、すり抜けられる幅があっても動かすか:その時は動かさないでいい/お客さんはロボットに触らない

ロボットが何秒止まっていたら、近くのスタッフが動かしに行くか:5秒かな。

この決まりを、サイトの条件の表(serving-robot-params.json)の unity_rules に staff_moves_robot として足しました。既定は切で、Unity は入にした回だけこの動きをします。

  • ねらい:現実のスタッフと同じように、止まったロボットを近くの人がすぐ動かし、ロボットどうしの止まり合いが長引かないようにする
  • 変わったこと:ロボットが5秒止まると、7m 以内で手の空いているスタッフ(料理や皿を持っていない人)が動かしに行く
  • 見込める効果:止まりの合計と30秒の呼び出しが減る。結果は下の依頼100・101b の表で確かめた

params の差分(p2m-site commit 143aaf2)

commit 143aaf25114291821fa7d722bf5fa4ad353a037a
Author: Claude <noreply@anthropic.com>
Date:   Fri Nov 6 23:15:56 2026 +0900

    params: unity_rules に staff_moves_robot(近くのスタッフがロボットを動かす・既定は切)を足す


diff --git a/public/sim/serving-robot-params.json b/public/sim/serving-robot-params.json
index 6a78d4c..8234b1e 100644
--- a/public/sim/serving-robot-params.json
+++ b/public/sim/serving-robot-params.json
@@ -417,6 +417,13 @@
     }
    },
    "wait_points_checked": "2026-11-01 ロボットの地図で、待つ点はどれもふだんの道(1.0m)が通れるマス(free_class=2)で、障害物から0.59m以上離れていることを確かめた"
+  },
+  "staff_moves_robot": {
+   "value": false,
+   "role": "site_rule",
+   "stopped_s": 5,
+   "reach_m": 7,
+   "note": "(切)近くのスタッフがロボットを動かして通路を空ける(2026-11-06 エイイチと決めた。まず⑧で今のままと比べ、標準にするかは結果を見て決める)。ロボットが走っている途中で5秒以上止まったとき(待機場所・受け渡し口・卓で決まって待っているときは除く)、止まったロボットから歩いて7mくらいまでにいるスタッフのうち一番近い1人が、真っ先に行ってロボットを止め、脇へ動かす(瞬間移動はしない)。行かない人:お客さんの対応中(案内・会計・卓での接客)。料理や皿を持って歩いている人は、それを置いてから動かしに来る。自分の道をふさがれても、すり抜けられる幅があるなら動かさない。お客さんはロボットに触らない。7m以内に行ける人がいなければ、今までどおり30秒で呼ぶ。試算の数字は変わらない"
   }
  },
  "stores": {

依頼100 の依頼文

01_sec02.txt3,270字・59行・text
---
作業フォルダ: /Users/shimazueiichi/Robotics_UX/ServiceSim
上限時間: 600
---
# 依頼100:近くのスタッフがロボットを動かして通路を空ける決まりを入れ、⑧だけで今のままと比べる

エイイチと決めたこと(2026-11-06):
- シミュレーションとしていちばんまずいのは、スタッフがロボットのそばにいても、ロボットを動かして通路を空けないこと。現実なら、接客中でなければ真っ先にロボットを止めて動かす
別のタブで開く保存

依頼100 の結果

02_sec02.txt3,355字・66行・text
# 結果:20261106_100_近くのスタッフがロボットを動かす決まりを入れ⑧で比べる

- 状態:完了
- 始めた時刻:2026-11-06 23:17
- 終わった時刻:2026-11-07 02:19(182分)
- 作業フォルダ:/Users/shimazueiichi/Robotics_UX/ServiceSim
- この続きを Claude Code で話すとき:作業フォルダで `claude --resume 9246fe00-4f54-4346-9fd9-43abacdab8c7`
別のタブで開く保存

依頼100 の Claude Code の報告(20261107_sm100.txt)

03_sec02.txt14,978字・243行・text
====================================================================
依頼100:近くのスタッフがロボットを動かして通路を空ける決まりを入れ、⑧だけで今のままと比べる
2026-11-06 23:18〜2026-11-07 02:20 作業場所 cs:83 → cs:84
====================================================================

結論
  ・止める線には当たらなかった。確かめ(2 章)は3つとも通った(切は large95 と全ファイル一致・入の2回は一致・瞬間移動 0)
  ・3 章の 80 回はどれも completed。瞬間移動 0・1コマの跳び 0。切の ⑧5台 種0 だけ、1組が帰らず上限の 720 分まで回った(下の 3 章)
別のタブで開く保存

依頼100 では、3台以上ではっきり効きました。ただ、スタッフはロボットの所に着いてから15秒待ってから押していました。前からある30秒の呼び出しの動かし方を、そのまま使ったためです。現実の店で、ロボットの横に着いて15秒待つ人はいません。近くのスタッフの分は、着いたらすぐ押すことにしました。

作業ログ ― 依頼101b:近くのスタッフが着いたらすぐ押す形にした

最初に出した依頼101 は、すぐ押す形を作ったうえで、ほかの店と下げ膳でも確かめる中身でした。⑧だけに絞ると決めたのに、範囲を広げてしまっていました。

⑧だけに絞ってって言わなかったっけ?

依頼101 は始まって9分で止め(Mac の Claude Code のプロセスを止めた)、⑧だけを回す依頼101b に出し直しました。依頼101 が途中で作った変更は、依頼101b の最初に元に戻しています。

params の差分(p2m-site commit 548c134)

commit 548c1344c1dc88782a087c65002a582989bb273f
Author: Claude <noreply@anthropic.com>
Date:   Sat Nov 7 05:20:15 2026 +0900

    params: staff_moves_robot の決まりに、着いたらすぐ押す・取り消し・すり抜けの判定などを足す(既定は切のまま)


diff --git a/public/sim/serving-robot-params.json b/public/sim/serving-robot-params.json
index 8234b1e..c585789 100644
--- a/public/sim/serving-robot-params.json
+++ b/public/sim/serving-robot-params.json
@@ -423,7 +423,7 @@
    "role": "site_rule",
    "stopped_s": 5,
    "reach_m": 7,
-   "note": "(切)近くのスタッフがロボットを動かして通路を空ける(2026-11-06 エイイチと決めた。まず⑧で今のままと比べ、標準にするかは結果を見て決める)。ロボットが走っている途中で5秒以上止まったとき(待機場所・受け渡し口・卓で決まって待っているときは除く)、止まったロボットから歩いて7mくらいまでにいるスタッフのうち一番近い1人が、真っ先に行ってロボットを止め、脇へ動かす(瞬間移動はしない)。行かない人:お客さんの対応中(案内・会計・卓での接客)。料理や皿を持って歩いている人は、それを置いてから動かしに来る。自分の道をふさがれても、すり抜けられる幅があるなら動かさない。お客さんはロボットに触らない。7m以内に行ける人がいなければ、今までどおり30秒で呼ぶ。試算の数字は変わらない"
+   "note": "(切)近くのスタッフがロボットを動かして通路を空ける(2026-11-06 エイイチと決めた。まず⑧で今のままと比べ、標準にするかは結果を見て決める)。ロボットが走っている途中で5秒以上止まったとき(待機場所・受け渡し口・卓で決まって待っているときは除く)、止まったロボットから歩いて7mくらいまでにいるスタッフのうち一番近い1人が、真っ先に行ってロボットを止め、脇へ動かす(瞬間移動はしない)。行かない人:お客さんの対応中(案内・会計・卓での接客)。料理や皿を持って歩いている人は、それを置いてから動かしに来る。自分の道をふさがれても、すり抜けられる幅があるなら動かさない。お客さんはロボットに触らない。7m以内に行ける人がいなければ、今までどおり30秒で呼ぶ。2026-11-07 に足した決まり(依頼100 の結果を見てエイイチが了承):着いたら待たずにすぐ押して動かす(30秒の呼び出しで来た人の動かし方は今のまま)。着く前にロボットが自分で動き出したら取り消して戻る。その場で手を動かしている人(卓で料理を渡す・皿をまとめる・卓を拭く)は終わるまで行かない。すり抜けられないとは、体を横に向けても3秒抜けられないこと(そのとき進む向きの1.5m以内で止まっている台を動かす)。よける場所で待っているロボットも5秒のきっかけに入れる。60秒で着けなかった人はやめて自分の仕事に戻る。試算の数字は変わらない"
   }
  },
  "stores": {

依頼101 の依頼文(止めた依頼)

---
作業フォルダ: /Users/shimazueiichi/Robotics_UX/ServiceSim
上限時間: 900
---
# 依頼101:近くのスタッフが着いたらすぐ押す形にし、ほかの店と下げ膳で「入」を確かめる

依頼100 の報告(claude_code_reports/20261107_sm100.txt)を読んで、エイイチと決めたこと(2026-11-07):
- 決めてほしいこと1:近くのスタッフの分は、着いたら待たずにすぐ押す(今は着いてから15秒待っている)。30秒の呼び出しで来た人の動かし方は今のまま
- 決めてほしいこと2:着く前にロボットが動き出したら取り消す、はこのまま
- 決めてほしいこと3:Claude Code が決めた4つ(手を動かしている人は終わるまで行かない・すり抜けられない=横向きでも3秒抜けられない・よける場所で待つ台もきっかけに入れる・60秒で着けなければやめる)はこのまま
- 決めてほしいこと4:staff_moves_robot は標準の入にする方向。その前に、ほかの店と下げ膳で、入にして逆向きに悪くならないかを確かめる

サイトの params の note にこれらを書き足した(p2m-site commit 548c134。value は切のまま、stopped_s・reach_m も同じ)。
**エイイチは見ていない。人に聞かないと進めない所に当たったら、その項目は止めて報告に書き、ほかは続ける。時刻で止めず、全部終わるまで続ける。**

## 始める前に確かめること(違えば回さずに報告して終わる)
1. 作業場所・Builds/headless が cs:84、保留 0。Unity・night_runner/rec_runner が動いていない。KIOXIA がマウント済み、unity_ledger_v1.lock がない。台帳を archive/unity_ledger_v1_pre_101_20261107/ に退避(行数と md5 を報告に)
2. サイトの params を写し直し、前の写しとの違いが unity_rules.staff_moves_robot.note の文だけであることを確かめる

## 1. 着いたらすぐ押す
- staffMovesRobot で来た近くのスタッフは、着いたら待たずに押して動かす(押し方・動かす先は今の案a のまま。瞬間移動はしない)
- 30秒の呼び出し(stuck_rescue)で来た人は今のまま
- staff_moves.csv に、着いてから押し始めるまでの秒の列を足す
- check-in して cs と実行ファイルを作り直す(保留 0)

## 2. 確かめ(通らなければ 3 は回さない)
- 切のとき、⑧ 2台 serve 種7 が依頼100 の sm100off の同じ回と全ファイル一致すること
- 入のとき、⑧ 5台 serve 種0 を2回回して一致すること
- 瞬間移動 0

## 3. 回す(画面なし・同時4本・人の先よけは切・撮らない)
上から順に回す。どれも staffMovesRobot の切と入を同じ種で並べる(label の末尾 off/on)。
1. ⑧ serve:条件 92・136・137・138(2〜5台)× 種0〜9 を入だけ = 40回(label sm101p6on)。切は依頼100 の sm100off を使う(2 の確かめで一致が分かっているため)
2. 標準の6店 serve:base73 と同じ6店のロボット1・2台の条件 × 種0〜9 × 切と入 = 240回(label sm101fam)。0台はこの決まりが効かないので回さない
3. 標準の6店 bus:bus75 と同じ条件 120〜131 × 種0〜9 × 切と入 = 240回(label sm101fambus)
4. ⑨ serve:条件 107・142・143・144(2〜5台)× 種0〜9 × 切と入 = 80回(label sm101p7)
5. ⑧⑨ bus:条件 133・139・140・141(⑧ 2〜5台)と 135・145・146・147(⑨ 2〜5台)× 種0〜9 × 切と入 = 160回(label sm101largebus)
- 1回の上限は 90 分。止まっても回し直さない。上限時間で終わらなかった所は、どこまで回ったかを報告に書く

## 4. 表にすること(10種の中央値。切と入を並べる)
- 店 × serve/bus × 台数ごとに:入店待ち・料理の待ち・turn・スタッフ1人の歩いた距離・ロボットの止まりの合計秒・うちロボット同士・60秒動けなくなった回数・30秒の呼び出しの回数・スタッフが動かした回数と取り消しの回数・人がロボットで詰まった回数・瞬間移動・全員が帰らなかった回
- 逆向きの印:入店待ち か 料理の待ち が、入で切より 10% 以上悪く、しかも種の過半数で悪くなっている所に印を付け、上にまとめて書く
- ⑧ serve は、依頼100 の sm100on(15秒待ってから押す)と sm101p6on(すぐ押す)も並べる
- 印の付いた所は、止まりの多い場所の上位3つと、スタッフが動かしに行く前にしていたことの内訳も書く

## 止める線
瞬間移動が1回でも出たとき、または同じ種の2回が違ったとき、または切のときの⑧が sm100off と違ったとき。止めたら報告に書き、ほかの項目は続ける。

## 報告
claude_code_reports/20261107_sm101.txt に:始める前の確かめ、1 の作り(どのファイルのどこ)、2 の確かめ、4 の表と逆向きの印、どこまで回ったか、台帳の行数の変化と md5。
**報告の最後の1行は必ず次のどれか**:「判定:合格」/「判定:止めた(決めてほしいことあり)」/「判定:失敗」

依頼101 の結果(止めた依頼)

# 結果:20261107_101_近くのスタッフがすぐ押す形にしてほかの店と下げ膳で確かめる

- 状態:失敗
- 始めた時刻:2026-11-07 05:21
- 終わった時刻:2026-11-07 05:29(9分)
- 作業フォルダ:/Users/shimazueiichi/Robotics_UX/ServiceSim

## Claude Code の報告

(報告がありません。終了コード 143。_stderr.txt を見てください。ログインが切れているときは、ターミナルで claude を開いて /login)

依頼101b の依頼文

---
作業フォルダ: /Users/shimazueiichi/Robotics_UX/ServiceSim
上限時間: 420
---
# 依頼101b:近くのスタッフが着いたらすぐ押す形にし、⑧で確かめる

依頼100 の報告(claude_code_reports/20261107_sm100.txt)を読んで、エイイチと決めたこと(2026-11-07):
- 決めてほしいこと1:近くのスタッフの分は、着いたら待たずにすぐ押す(今は着いてから15秒待っている)。30秒の呼び出しで来た人の動かし方は今のまま
- 決めてほしいこと2:着く前にロボットが動き出したら取り消す、はこのまま
- 決めてほしいこと3:Claude Code が決めた4つ(手を動かしている人は終わるまで行かない・すり抜けられない=横向きでも3秒抜けられない・よける場所で待つ台もきっかけに入れる・60秒で着けなければやめる)はこのまま
- 決めてほしいこと4:staff_moves_robot を標準の入にするかは、まだ決めない。問題をはっきりさせるため、今は⑧(large_p6)の配膳だけに絞る。ほかの店・⑨・下げ膳は回さない
- 依頼101 は、ほかの店まで広げて書いてしまったので途中で止めた。101 で作りかけた変更があれば、始める前に取り消してから始める

サイトの params の note にこれらを書き足した(p2m-site commit 548c134。value は切のまま、stopped_s・reach_m も同じ)。
**エイイチは見ていない。人に聞かないと進めない所に当たったら、その項目は止めて報告に書き、ほかは続ける。時刻で止めず、全部終わるまで続ける。**

## 始める前に確かめること(違えば回さずに報告して終わる)
0. 依頼101 が残した画面なしの Unity・night_runner があれば終わらせる。101 で作りかけた変更(保留)があれば取り消す。101 で回し始めた回のフォルダは消さずにそのまま残し、名前を報告に書く
1. 作業場所・Builds/headless が cs:84、保留 0。Unity・night_runner/rec_runner が動いていない。KIOXIA がマウント済み、unity_ledger_v1.lock がない。台帳を archive/unity_ledger_v1_pre_101b_20261107/ に退避(行数と md5 を報告に)
2. サイトの params を写し直し、前の写しとの違いが unity_rules.staff_moves_robot.note の文だけであることを確かめる

## 1. 着いたらすぐ押す
- staffMovesRobot で来た近くのスタッフは、着いたら待たずに押して動かす(押し方・動かす先は今の案a のまま。瞬間移動はしない)
- 30秒の呼び出し(stuck_rescue)で来た人は今のまま
- staff_moves.csv に、着いてから押し始めるまでの秒の列を足す
- check-in して cs と実行ファイルを作り直す(保留 0)

## 2. 確かめ(通らなければ 3 は回さない)
- 切のとき、⑧ 2台 serve 種7 が依頼100 の sm100off の同じ回と全ファイル一致すること
- 入のとき、⑧ 5台 serve 種0 を2回回して一致すること
- 瞬間移動 0

## 3. 回す(画面なし・同時4本・人の先よけは切)
- ⑧ serve:条件 92・136・137・138(2〜5台)× 種0〜9 を入だけ = 40回(label sm101p6on)。切は依頼100 の sm100off を使う(2 の確かめで一致が分かっているため)
- 1回の上限は 90 分。止まっても回し直さない

## 4. 撮る(2 が通れば撮る)
- ⑧ 5台 serve 種7 を入(すぐ押す)で1本。撮り方は依頼100 と同じ。置き場所:/Volumes/KIOXIA/r2r2r-data/service_sim/unity/rec_sm101_20261107/on_now/
- 依頼100 の off(今のまま)と左右に並べ、依頼100 と同じ5分(開店から1時間10分〜15分、パントリーのそば)に寄せて店の時刻の5倍で流すパネル付きの動画を作る。題「⑧ ロボット5台:今のまま と 近くのスタッフがすぐ動かす」

## 5. 表にすること(10種の中央値)
- 台数ごとに、sm100off(今のまま)・sm100on(15秒待ってから押す)・sm101p6on(すぐ押す)の3列を並べる:ロボットの止まりの合計秒・うちロボット同士・60秒動けなくなった回数・30秒の呼び出しの回数・スタッフが動かした回数と取り消しの回数・着いてから押し始めるまでの秒・料理ができてから届くまで・料理が受け渡し口でロボットを待った秒・2分待って人が運んだ皿・人がロボットで詰まった回数・往復数・スタッフ1人の歩いた距離・入店待ち(参考)
- 5台で、すぐ押しても残る止まりの多い場所の上位5つと、その止まりのわけ

## 止める線
瞬間移動が1回でも出たとき、または同じ種の2回が違ったとき、または切のときの⑧が sm100off と違ったとき。止めたら報告に書き、ほかの項目は続ける。

## 報告
claude_code_reports/20261107_sm101b.txt に:始める前の確かめ(101 の変更を取り消したか)、1 の作り(どのファイルのどこ)、2 の確かめ、4 の動画の名前と長さ、5 の表、台帳の行数の変化と md5。
**報告の最後の1行は必ず次のどれか**:「判定:合格」/「判定:止めた(決めてほしいことあり)」/「判定:失敗」

依頼101b の結果

04_sec03.txt3,289字・69行・text
# 結果:20261107_101b_近くのスタッフがすぐ押す形にして⑧で確かめる

- 状態:完了
- 始めた時刻:2026-11-07 05:30
- 終わった時刻:2026-11-07 07:17(107分)
- 作業フォルダ:/Users/shimazueiichi/Robotics_UX/ServiceSim
- この続きを Claude Code で話すとき:作業フォルダで `claude --resume 8c35f8bb-86d3-4df1-8cb7-55fb003d94b8`
- 止められた操作:1件(いちばん下に一覧)
別のタブで開く保存

依頼101b の Claude Code の報告(20261107_sm101b.txt)

05_sec03.txt14,136字・219行・text
====================================================================
依頼101b:近くのスタッフが着いたらすぐ押す形にし、⑧で確かめる
2026-11-07 05:30〜07:20 作業場所 cs:85(依頼101 の残り)→ cs:86(取り消し)→ cs:87
====================================================================

結論
  ・止める線には当たらなかった。確かめ(2 章)は3つとも通った(切は sm100off と全ファイル一致・入の2回は一致・瞬間移動 0)
  ・3 章の 40 回はどれも completed。瞬間移動 0・1コマの跳び 0。ただし ⑧5台 種7 だけ、1組が帰らず店の時刻 720 分の上限まで回った(3 章)
別のタブで開く保存

近くのスタッフがすぐ押す決まりの、前と後(⑧・10種の中央値)

項目2台3台4台5台
ロボットの止まりの合計(秒):今のまま → 15秒待って押す → すぐ押す
2,526 → 2,396 → 1,810
6,054 → 4,594 → 3,959
9,248 → 7,279 → 5,903
12,896 → 9,704 → 8,068

5台では、30秒の呼び出しが153.5回から112回に、入店待ちが17.56分から11.32分になりました。

  • ねらい:近くのスタッフが、着いてから待たずにロボットを押す
  • 変わったこと:着いてから押し始めるまでが14.9秒から0.0秒になった
  • 見込める効果(測った値):5台の止まりの合計が12,896秒から8,068秒へ、約1時間20分減った。入店待ちは17.6分から11.3分

それでも5台では、待機場所のそばに4,214秒の止まりが残りました。残った止まりは、ほとんどがロボットどうしです。種7では、ロボット1台が待機場所のそばで行ったり来たりして抜けられず、1組のお客さんが帰らないまま、店の時刻の上限の720分まで回りました。

作業ログ ― 依頼104:待機場所のそばの止まり合いを10の型に分けた

待機場所のそばで何が起きているのかを、止まり合いを1件ずつ型に分けて数えました。30秒以上続いたロボットどうしの止まりを1つの詰まりとし、台の位置・向かっていた先・相手の台の状態・待機点の埋まり方から、10の型に分けています。

依頼104 の依頼文

---
作業フォルダ: /Users/shimazueiichi/Robotics_UX/ServiceSim
上限時間: 240
---
# 依頼104:台帳の2つを直し、⑧の待機場所のそばでロボット同士が止まり合う詰まりを調べる(直さない)

依頼101b の報告(claude_code_reports/20261107_sm101b.txt)の「決めてほしいこと」4つを、エイイチが決めた(2026-11-07):
1. 撮影が二重に始まって台帳に入った rec101b の失敗の行は、除く一覧(unity_ledger_v1_excluded_runs.csv)に入れる。撮り直して終わった回の行を台帳に足す
2. 止めた依頼101 が台帳に足した3行(cs:85)も、除く一覧に入れる
3. 待機場所のそばでロボット同士が抜けられなくなる詰まりは、⑧で調べる。**この依頼では調べるだけで、Unity の作りは変えない。** 直し方は報告を読んでエイイチと決める
4. すぐ押すと着く前の取り消しが増えた件は、このままでよい

範囲は⑧(large_p6)の配膳だけ。ほかの店・⑨・下げ膳は回さない。staff_moves_robot は入(すぐ押す、cs:87)、人の先よけは切で見る。
**エイイチは見ていない。人に聞かないと進めない所に当たったら、その項目は止めて報告に書き、ほかは続ける。**

## 始める前に確かめること(違えば回さずに報告して終わる)
1. 作業場所・Builds/headless が cs:87、保留 0。Unity・night_runner/rec_runner が動いていない。KIOXIA がマウント済み、unity_ledger_v1.lock がない
2. 台帳と除く一覧を archive/unity_ledger_v1_pre_104_20261107/ に退避(行数と md5 を報告に)

## 1. 台帳を直す
- 決めたこと 1・2 のとおりに、除く一覧に行を足し、撮り直した回の行を台帳に足す。台帳のほかの行は1字も変えない
- 足した行・除いた行の run の名前を報告に書く

## 2. 調べる(⑧・5台・すぐ押す)
材料は依頼101b の40回(sm101b)と、撮った ⑧5台・種7 の回(rec_sm101_20261107)。足りなければ ⑧5台を種0〜9 で撮らずに回し直してよい(記録を足すだけで、作りは変えない)
- 待機場所のそば(x 18〜24.5・y 10〜12.6 を目安。店の形の RobotStandby の位置から決め直してよい)で、ロボット同士の止まりを、30秒以上続いたものを中心に1つずつ見る
- 1つずつについて、そのときの台の位置・向かっていた先(待機点・受け渡し口・卓)・何をしていたか(待機場所へ入る/出る/受け渡し口へ行く/戻る)・待機点の埋まり方・道を探した結果・どう解けたか(自分で・よけた・スタッフが動かした・解けない)をまとめる
- それを型に分けて、型ごとの回数と秒を出す。たとえば次のような型(ほかの型が見つかれば足してよい)
  - 待機場所から出る台と入る台が向かい合う
  - 受け渡し口へ向かう台と、待機場所へ戻る台がぶつかる
  - 待機点が埋まっていて、戻る台が入れずに待機場所の前で止まる
  - 1台が行ったり来たりして抜けられない(⑧5台・種7 の上限まで回った回)
- いちばん多い型と、種7 の行ったり来たりの場面は、上から見た図(待機点・受け渡し口・台の位置と向かう先の矢印)を作る。撮った回にある場面は、録画のコマも並べる
- 参考に、今ある切り替え「案B(受け渡し口は1台ずつ・同じ卓は1台)」を入にした ⑧5台 × 種0〜9 を10回回し、待機場所のそばの止まりが型ごとにどう変わるかを並べる(作りは変えない。案B は params の unity_rules のまま)
- 直すなら何を変えればよさそうか、候補を2〜3つ(待機点の並べ方・出入りの道の分け方・入る順の決まりなど)、型との対応つきで書く。**どれも作らない**

## 止める線
瞬間移動が1回でも出たとき。止めたら報告に書き、ほかの項目は続ける。

## 報告
claude_code_reports/20261107_standby104.txt に:始める前の確かめ、1 の台帳の直し(足した行・除いた行・行数と md5)、2 の型の表・図とコマの置き場所・案B 入との比べ・直す候補。
**報告の最後の1行は必ず次のどれか**:「判定:合格」/「判定:止めた(決めてほしいことあり)」/「判定:失敗」

依頼104 の結果

06_sec04.txt3,136字・86行・text
# 結果:20261107_104_台帳を直し⑧の待機場所のそばの詰まりを調べる

- 状態:完了
- 始めた時刻:2026-11-07 08:05
- 終わった時刻:2026-11-07 08:23(18分)
- 作業フォルダ:/Users/shimazueiichi/Robotics_UX/ServiceSim
- この続きを Claude Code で話すとき:作業フォルダで `claude --resume d3a524da-6eb4-482d-89a8-25b63fc517d0`
別のタブで開く保存

依頼104 の Claude Code の報告(20261107_standby104.txt)

07_sec04.txt11,996字・215行・text
====================================================================
依頼104:台帳の2つを直し、⑧の待機場所のそばでロボット同士が止まり合う詰まりを調べる(直さない)
2026-11-07 08:05〜08:25 作業場所 cs:87(変えていない)
====================================================================

結論
  ・止める線には当たらなかった(案B 入の 10 回すべて completed・瞬間移動 0・1コマの跳び 0)
  ・台帳の直し:依頼101 の3行(cs:85)は除く一覧に入れた。
別のタブで開く保存

待機点に戻る台が、隣の台のそばで止まる場面(型C1)

⑧ロボット5台・種7を左上から見た4コマ(店の時刻9,230〜9,310秒)。赤い丸のロボット3が待機点3へ戻ろうとして、待機点2のロボット2のそばで止まり続ける

いちばん多かったのは、待機点に戻る台が、隣の待機点で待つ台のそばで入れない型(C1・103件・6,735秒)でした。報告の中でいちばん大事な所はここです。

待機点どうしの間は0.8mしかなく、ロボットの前のセンサー(中心から0.85m)が隣の待機点の台に届く。 戻る台は斜めに寄ってくるので、隣の台がセンサーに入り、止まります。道を探した結果の87〜98%は道が引けていました。道はあるのに、センサーが止めていたことになります。

作業ログ ― 依頼105:待機点を列で使う決まりは、ほとんど効かなかった

報告が出した直す候補は3つでした。待機点の並べ方を変える・出る道と戻る道を分ける・入る順を決める、です。最初に、店の形を変えずにすむ入る順を試しました。受け渡し口に近い待機点から順に埋め、列のように使う決まり(standby_queue)です。あわせて、短い止まりをくり返す台もスタッフが動かす決まり(repeat_stop)を足しました。依頼104 の種7の行ったり来たりは、止まりが毎回15秒ほどで、5秒・30秒のどちらのきっかけにもならず、スタッフが一度も来なかったためです。

params の差分(p2m-site commit a029a65)

commit a029a654ff834caf0454e9e6bd3de06284ac12ca
Author: Claude <noreply@anthropic.com>
Date:   Sat Nov 7 09:45:09 2026 +0900

    params: unity_rules に standby_queue(待機点を列で使う)と staff_moves_robot.repeat_stop を足す(どちらも既定は切)


diff --git a/public/sim/serving-robot-params.json b/public/sim/serving-robot-params.json
index c585789..d7a3ae1 100644
--- a/public/sim/serving-robot-params.json
+++ b/public/sim/serving-robot-params.json
@@ -423,7 +423,13 @@
    "role": "site_rule",
    "stopped_s": 5,
    "reach_m": 7,
-   "note": "(切)近くのスタッフがロボットを動かして通路を空ける(2026-11-06 エイイチと決めた。まず⑧で今のままと比べ、標準にするかは結果を見て決める)。ロボットが走っている途中で5秒以上止まったとき(待機場所・受け渡し口・卓で決まって待っているときは除く)、止まったロボットから歩いて7mくらいまでにいるスタッフのうち一番近い1人が、真っ先に行ってロボットを止め、脇へ動かす(瞬間移動はしない)。行かない人:お客さんの対応中(案内・会計・卓での接客)。料理や皿を持って歩いている人は、それを置いてから動かしに来る。自分の道をふさがれても、すり抜けられる幅があるなら動かさない。お客さんはロボットに触らない。7m以内に行ける人がいなければ、今までどおり30秒で呼ぶ。2026-11-07 に足した決まり(依頼100 の結果を見てエイイチが了承):着いたら待たずにすぐ押して動かす(30秒の呼び出しで来た人の動かし方は今のまま)。着く前にロボットが自分で動き出したら取り消して戻る。その場で手を動かしている人(卓で料理を渡す・皿をまとめる・卓を拭く)は終わるまで行かない。すり抜けられないとは、体を横に向けても3秒抜けられないこと(そのとき進む向きの1.5m以内で止まっている台を動かす)。よける場所で待っているロボットも5秒のきっかけに入れる。60秒で着けなかった人はやめて自分の仕事に戻る。試算の数字は変わらない"
+   "note": "(切)近くのスタッフがロボットを動かして通路を空ける(2026-11-06 エイイチと決めた。まず⑧で今のままと比べ、標準にするかは結果を見て決める)。ロボットが走っている途中で5秒以上止まったとき(待機場所・受け渡し口・卓で決まって待っているときは除く)、止まったロボットから歩いて7mくらいまでにいるスタッフのうち一番近い1人が、真っ先に行ってロボットを止め、脇へ動かす(瞬間移動はしない)。行かない人:お客さんの対応中(案内・会計・卓での接客)。料理や皿を持って歩いている人は、それを置いてから動かしに来る。自分の道をふさがれても、すり抜けられる幅があるなら動かさない。お客さんはロボットに触らない。7m以内に行ける人がいなければ、今までどおり30秒で呼ぶ。2026-11-07 に足した決まり(依頼100 の結果を見てエイイチが了承):着いたら待たずにすぐ押して動かす(30秒の呼び出しで来た人の動かし方は今のまま)。着く前にロボットが自分で動き出したら取り消して戻る。その場で手を動かしている人(卓で料理を渡す・皿をまとめる・卓を拭く)は終わるまで行かない。すり抜けられないとは、体を横に向けても3秒抜けられないこと(そのとき進む向きの1.5m以内で止まっている台を動かす)。よける場所で待っているロボットも5秒のきっかけに入れる。60秒で着けなかった人はやめて自分の仕事に戻る。試算の数字は変わらない。2026-11-07 に足した切り替え repeat_stop(既定は切):同じ所(1.0m以内)で、止まっては少し動くをくり返し、合わせて5秒以上進めていないロボットも、5秒止まったものとして近くのスタッフが動かす(⑧ 5台・種7 で、1台が待機場所のそばで止まっては動くを2,051回くり返し、毎回の止まりが5秒に届かずスタッフが一度も来なかったため)",
+   "repeat_stop": false
+  },
+  "standby_queue": {
+   "value": false,
+   "role": "site_rule",
+   "note": "(切)待機点を台ごとに決めず、列で使う(2026-11-07 エイイチと決めた。⑧で今のままと比べる)。店の形の RobotStandby は、受け渡し口に近い順に1番から並べる。次の往復に出るのは、待機している台のうち受け渡し口に一番近い台。往復を終えて戻る台は、待機している台より受け渡し口に近い側の空いている待機点のうち、一番遠い所(いる台のすぐ手前)へ入る。待機している台がいなければ一番遠い待機点へ入る。こうすると、出る台も戻る台も、待機している台の前を通らない。店の形(待機点の位置と数)は変えない。試算の数字は変わらない"
   }
  },
  "stores": {

依頼105 の依頼文

---
作業フォルダ: /Users/shimazueiichi/Robotics_UX/ServiceSim
上限時間: 360
---
# 依頼105:待機点を列で使う決まりと、くり返し止まる台もスタッフが動かす決まりを入れ、⑧で比べる

依頼104 の報告(claude_code_reports/20261107_standby104.txt)を読んで、エイイチが決めたこと(2026-11-07):
- 直す候補のうち、まず「候補3:入る順の決まりを変える」から試す(店の形は変えない)
- 依頼104 の決めてほしいこと1(rec101b の台帳)は、今は触らない。台帳と除く一覧は、この依頼で回す回の追記のほかは変えない

決まりの正はサイト。p2m-site の public/sim/serving-robot-params.json に足した(commit a029a65。どちらも既定は切)。note の文がそのまま決まり:
- `unity_rules.standby_queue`:待機点を台ごとに決めず、列で使う。待機点は受け渡し口に近い順に1番から。出るのは、待機している台のうち受け渡し口に一番近い台。戻る台は、待機している台より受け渡し口に近い側の空いている待機点のうち一番遠い所(いる台のすぐ手前)へ入る。待機している台がいなければ一番遠い待機点へ。出る台も戻る台も、待機している台の前を通らない
- `unity_rules.staff_moves_robot.repeat_stop`:同じ所(1.0m以内)で止まっては少し動くをくり返し、合わせて5秒以上進めていないロボットも、5秒止まったものとして近くのスタッフが動かす(依頼104 の種7 の行ったり来たりのため)

範囲は⑧(large_p6)の配膳だけ。ほかの店・⑨・下げ膳は回さない。staff_moves_robot は入(すぐ押す)、人の先よけは切。
**エイイチは見ていない。人に聞かないと進めない所に当たったら、その項目は止めて報告に書き、ほかは続ける。**

## 始める前に確かめること(違えば回さずに報告して終わる)
1. 作業場所・Builds/headless が cs:87、保留 0。Unity・night_runner/rec_runner が動いていない。KIOXIA がマウント済み、unity_ledger_v1.lock がない。台帳と除く一覧を archive/unity_ledger_v1_pre_105_20261107/ に退避(行数と md5 を報告に)
2. サイトの params を写し直し、前の写しとの違いが unity_rules.standby_queue が1つ増えたことと、staff_moves_robot の repeat_stop と note の文だけであることを確かめる

## 1. 作る(どちらも切り替え。既定は切。値は params から読む)
- standbyQueue:note のとおり。待機点の割り当てを、往復に出るとき・戻るときにその場で決める。ほかの店でも同じ作りで動くようにする(RobotStandby の並びの順を受け渡し口からの距離で決める)。待機点の位置・数・店の形は変えない
- repeatStop:note のとおり。「同じ所」は、くり返しが始まった位置から 1.0m 以内。止まり(見張りで止められた時間を含む)と、進めなかった時間を合わせて5秒になったら、5秒のきっかけと同じに近くのスタッフを呼ぶ。staff_moves.csv のきっかけの列に「くり返し」と書く
- 瞬間移動はさせない。同じ条件・同じ種なら同じ結果になること
- check-in して cs と実行ファイルを作り直す(保留 0)

## 2. 確かめ(通らなければ 3 は回さない)
- 両方切のとき、⑧5台 serve 種7 が依頼101b の sm101p6on の同じ回と全ファイル一致すること
- 両方入のとき、⑧5台 serve 種0 を2回回して一致すること
- 瞬間移動 0

## 3. 回す(画面なし・同時4本・⑧ serve・すぐ押す 入・人の先よけ 切)
1. ⑧5台(条件 138)× 種0〜9 を standbyQueue 入だけ = 10回(label sq105)
2. ⑧5台 × 種0〜9 を standbyQueue 入+repeatStop 入 = 10回(label sq105rs)
3. ⑧2〜4台(条件 92・136・137)× 種0〜9 を両方入 = 30回(label sq105rs)。台数が少ないときに悪くならないかを見る
- 比べる相手(今のまま)は依頼101b の sm101p6on(同じ cs:87 の作りで、両方切)
- 1回の上限は 90 分。止まっても回し直さない

## 4. 表にすること(10種の中央値)
- 5台:sm101p6on・sq105・sq105rs の3列。依頼104 と同じ型分け(ep104.py を使う)で、待機場所のそばの30秒以上の詰まりの型ごとの件数と秒。あわせて、ロボットの止まりの合計秒・うちロボット同士・60秒動けなくなった回数・30秒の呼び出しの回数・スタッフが動かした回数(きっかけ別)・料理ができてから届くまで・2分待って人が運んだ皿・往復数・全員が帰った回・入店待ち(参考)
- 2〜4台:sm101p6on と sq105rs の2列で、同じ数
- 待機点ごとの、待っていた時間と、中心から 0.3m より外にはみ出していた時間の割合(依頼104 の C2 の数と並べる)

## 5. 撮る(2 が通れば撮る)
- ⑧5台 serve 種7 を両方入で1本。撮り方は依頼101b と同じ。置き場所:/Volumes/KIOXIA/r2r2r-data/service_sim/unity/rec_sq105_20261107/on/
- 依頼101b の now(すぐ押す・待機点は台ごと)と左右に並べ、待機場所のそばに寄せて店の時刻の5倍で流すパネル付きの動画を作る。寄る5分は、now の方で待機場所のそばの止まりがいちばん長い5分。題「⑧ ロボット5台:待機点は台ごと と 列で使う」
- 撮った回の名前が、撮らない回や前の撮影と同じにならないようにする(依頼104 の決めてほしいこと1 と同じことを起こさない)

## 止める線
瞬間移動が1回でも出たとき、または同じ種の2回が違ったとき、または両方切のときの⑧が sm101p6on と違ったとき。止めたら報告に書き、ほかの項目は続ける。

## 報告
claude_code_reports/20261107_sq105.txt に:始める前の確かめ、1 の作り(どのファイルのどこ・値の読み方・切り替えの名前)、2 の確かめ、4 の表、5 の動画の名前と長さ、台帳の行数の変化と md5。
**報告の最後の1行は必ず次のどれか**:「判定:合格」/「判定:止めた(決めてほしいことあり)」/「判定:失敗」

依頼105 の結果

# 結果:20261107_105_待機点を列で使い⑧で比べる

- 状態:完了
- 始めた時刻:2026-11-07 09:46
- 終わった時刻:2026-11-07 11:40(114分)
- 作業フォルダ:/Users/shimazueiichi/Robotics_UX/ServiceSim
- この続きを Claude Code で話すとき:作業フォルダで `claude --resume 1cbdba5f-3728-485f-9e06-266632c93963`

## Claude Code の報告

**やったこと**
- **始める前の確かめ**:どれも合っていた(cs:87、保留 0、Unity と実行係は止まっていた、鍵ファイルなし)。
  - 台帳と除く一覧を archive/unity_ledger_v1_pre_105_20261107/ に退避した。台帳は 3,453 行・md5 7825123e…、除く一覧は 24 行・md5 d754edc5…。
  - params はサイトの a029a65 から写し直した。前の写しとの違いは、standby_queue が増えたこと、repeat_stop が増えたこと、note の文の3つだけだった。
- **作り**:待機点を列で使う切り替え(-ssStandbyQueue、フォルダ名に _sq)と、くり返し止まる切り替え(-ssRepeatStop、フォルダ名に _rstop)を足した。どちらも既定は切で、params から読む。
  - cs:88 では、戻る途中の台も「待機している台」に数えていた。note に合わせて cs:89 で直した。
  - 実行ファイルは cs:89 で作り直した(保留 0)。
- **確かめ(cs:89)**:3つとも通った。
  - 両方切の⑧5台 種7 は、sm101p6on の同じ回と 18 ファイルすべて一致した。
  - 両方入の種0 を2回回し、一致した。
  - 瞬間移動 0。
- **回したこと**:50 回、すべて completed、瞬間移動 0。撮影1本、表、動画も作った。

**結果**(10 種の中央値。並びは 今のまま → 列で使う → 列で使う+くり返し)
- **⑧5台の止まりの合計**:8,068 → 9,295 → 8,428 秒。
- **待機場所のそばの30秒以上の詰まり**:1回あたり 2,473 → 3,187 → 2,022 秒(10 回の和は 54,008 → 64,525 → 21,433 秒)。
- **行ったり来たりの詰まり(D)**:今のままと列で使うだけでは1件ずつ残った。両方入では0になった。
- **全員が帰った回**:9 → 9 → 10 回(10 回のうち)。
- **入店待ち**:11.32 → 15.09 → 14.90 分。
- **料理ができてから届くまで**:1.69 → 1.88 → 1.80 分。
- **スタッフが動かした回数**:151 → 180 → 373 回(両方入のうち 254 回がきっかけ「くり返し」)。
- **2〜4台**:待機場所のそばの詰まりは少し減った。ただし30秒の呼び出しが増えた(2台で 42.5 → 110 回)。待っている台がいないと一番遠い待機点へ入るため、台が奥に並び、そこで人の道をふさいでいる。
- **ほかに分かったこと**:列で使う回では、スタッフに下へどかされた台が待機点へ戻らないまま長く止まっていた。なぜ戻らないかは確かめていない。
- **動画**:rec_sq105_20261107/slow_now_sq/slow_now_sq_panel.mp4(61.5 秒)。寄った5分は店の時刻 3,180〜3,480 秒。
- **台帳**:3,453 → 3,510 行(この依頼の 57 行の追記だけ)。先頭 3,453 行の md5 は変わっていない。終わったあとの md5 は 5c38ea64…。

**変えたファイル**
- Unity(cs:88・cs:89):ServiceOps.cs・ServingRobotController.cs・ExperimentRunner.cs・HeadlessRun.cs・TripLogger.cs・serving-robot-params.json・tools/night_runner.py・tools/make_queue.py。
- Builds/headless(作り直し)・Builds/rec26_sq105(新しく足した写し)。
- KIOXIA:night/20261107_sq105/ ほか、rec_sq105_20261107/、退避した台帳。
- 報告:claude_code_reports/20261107_sq105.txt。

**決めてほしいこと**
1. 戻る台より受け渡し口に近い側に空いた待機点が無いときの入り方。note に書かれていないので、仮に「空いている待機点のうち受け渡し口に一番近い所」にして回した(5台では戻る回数の 13%)。このままでよいか、別の決め方にするか。
2. 列で使う+くり返しを標準にするか。待機場所のそばの詰まりは減ったが、5台の止まりの合計・料理の待ち・入店待ちは今のままより悪かった。2〜4台では奥の待機点の台が人の道をふさいだ。次に何を試すか。
3. 直す前の cs:88 の確かめ3行(det105・chk105a・chk105b)を除く一覧に入れるか、このままにするか。
4. どかされた台が待機点へ戻らない件を、別の依頼で調べるか。

判定:止めた(決めてほしいことあり)

依頼105 の Claude Code の報告(20261107_sq105.txt)

08_sec05.txt15,826字・266行・text
====================================================================
依頼105:待機点を列で使う決まりと、くり返し止まる台もスタッフが動かす決まりを入れ、⑧で比べる
2026-11-07 09:46〜11:45 作業場所 cs:87 → cs:88(作り)→ cs:89(直し)
====================================================================

結論
  ・止める線には当たらなかった(瞬間移動 0・1コマの跳び 0。cs:89 で両方切の⑧5台 種7 は sm101p6on と全ファイル一致。両方入の2回も一致)
  ・3 章の 50 回と撮った1回は、どれも completed
別のタブで開く保存

待機点を列で使った前と後(⑧5台・10回分を重ねた図)

⑧ロボット5台・10回分を重ねて、待機場所のまわりを上から見た図。上から、今のまま・待機点を列で使う・列で使う+くり返し止まる台もスタッフが動かす。赤い丸がロボット同士の30秒以上の詰まり、青が仕事のないロボットがいた所

列で使う+くり返しの組み合わせで、待機場所のそばの30秒以上の詰まりは、10回の和で54,008秒から21,433秒に減ったように見えました。ただし、減った分のほとんどは種7の行ったり来たり1件(31,320秒)が消えたためです。その1件を除くと、22,688秒(6.3時間)から21,433秒(6.0時間)で、ほとんど変わっていません。入店待ちは11.32分から14.90分に延びました。

列で使う決まりは、標準にはしませんでした。入る順を決めても、斜めに寄って隣の台をセンサーに入れることは変わらないためです。

作業ログ ― 依頼108:待機点を2列に並べ直したら、戻れない待機点が出た

次に、待機点どうしの間を広げる方向を選びました。

待機点の間を広げる方向

待機点の並べ方の3つの案

⑧の待機点の並べ方の案を上から見た図。今(1列・間0.8m・6点)、案A(1列・間1.2m・5点)、案B(2列を互い違い・6点)。白い丸がロボット、赤い輪が前のセンサーの届く所。今は隣の白い丸が赤い輪の中に入っている

案A は、1列のまま間を1.2m に広げる案です。ただ、このとき描いた図は、受け渡し口の前の空けておく所に待機点1がかかっていて、⑧の壁ぞいには収まりませんでした。あとで測り直すと、1列で取れる間は1.1m までです。ここでは案B(2列を互い違い)を選びました。

2列にすると、卓までの道が延びる

⑧の受け渡し口から右上の卓へのロボットの道。上が今(1列)、下が案B(2列)。2列では手前の列をよけて下を回るため、T57まで7.66m が9.98m に、卓までの距離の平均が15.6m から16.1m に延びる

2列にすると、手前の列をよけて下を回るので、卓までの道が延びます。サイトの試算も、店の形を2列にして⑧の分を計算し直しました(3,066条件)。

2列の店の形の差分(p2m-site commit 18d23fe・あとで元に戻した)

18d23fe で変わったファイルの一覧です。Unity が読む店の形(unity/p6_large_center.json)と params は、計算し直した数字の差分なので、一覧だけを載せます。

 public/sim/layouts/large/p6_large_center.json      |    50 +-
 .../layouts/large/p6_large_center_analysis.json    |    92 +-
 public/sim/layouts/large/p7_large_b.json           |     2 +-
 public/sim/layouts/large/p7_large_b_analysis.json  |     2 +-
 public/sim/layouts/large/summary.json              |     8 +-
 .../sim/layouts/large/unity/p6_large_center.json   | 14650 ++++++++++---------
 .../layouts/large/unity/p6_large_center_map.json   |     2 +-
 public/sim/layouts/large/unity/p7_large_b.json     |     2 +-
 public/sim/layouts/large/unity/p7_large_b_map.json |     2 +-
 public/sim/serving-robot-params.json               |   868 +-
 public/sim/serving-robot.html                      |     5 +-
 tools/serving_sim/build_page_large.py              |     2 +
 tools/sim_layouts/README.md                        |     1 +
 tools/sim_layouts/famires_v3.py                    |    14 +-
 tools/sim_layouts/large_store.py                   |    12 +
 15 files changed, 8198 insertions(+), 7514 deletions(-)

店の形を作るコード・試算のページを作るコード・README の差分です。

09_sec06.txt5,670字・87行・diff
diff --git a/tools/serving_sim/build_page_large.py b/tools/serving_sim/build_page_large.py
index b50e2e9..79b6395 100644
--- a/tools/serving_sim/build_page_large.py
+++ b/tools/serving_sim/build_page_large.py
@@ -67,6 +67,8 @@ for k in KEYS:
         tables=[[t["x"], t["y"], round(t["x"] + t["w"], 3), round(t["y"] + t["h"], 3), t["seats"]] for t in L["tables"]],
         dish=[d["rect"] for d in L["dish_up"]], standby=L["robot_standby"]["rect"],
         ent=[L["entrance"]["side"], L["entrance"]["a0"], L["entrance"]["a1"]])
別のタブで開く保存

⑧の試算を2列で計算し直したスクリプト(run_p6.py)

import json, sys, os
sys.path.insert(0, "/home/claude/p2m-site/tools/serving_sim")
os.chdir("/home/claude/p2m-site/tools/serving_sim")
from multiprocessing import Pool
import haizen_sim as h
out = sys.argv[1]
cs = [c for c in h.conditions() if c["store"] == "large_p6"]
rows = []
with Pool() as p:
    for i, r in enumerate(p.imap_unordered(h.run_condition, cs, chunksize=4), 1):
        rows.append(r)
        if i % 300 == 0: print(i, len(cs), flush=True)
order = {h.key(c): i for i, c in enumerate(cs)}
rows.sort(key=lambda r: order[h.key(r)])
json.dump({"common": h.COMMON, "reps": h.REPS, "rows": rows}, open(out, "w", encoding="utf-8"), ensure_ascii=False)
print("done", len(rows))

計算し直した⑧の数字を params に入れたスクリプト(patch_params_p6.py)

"""公開中の params に、⑧の待機点を2列にした店の形の site_result を入れる(2026-11-07)。
⑧(large_p6)の条件の site_result と、stores.large_p6、meta.layout_generation_large だけを入れ替える"""
import json, sys, os
sys.path.insert(0, "/home/claude/p2m-site/tools/serving_sim")
os.chdir("/home/claude/p2m-site/tools/serving_sim")
import haizen_sim as h
OUT = "/home/claude/p2m-site/public/sim/serving-robot-params.json"
P = json.load(open(OUT, encoding="utf-8"))
R = json.load(open("/tmp/claude-0/sim/results_large_p6_standby2.json", encoding="utf-8"))
assert R["common"] == json.loads(json.dumps(h.COMMON)) and R["reps"] == h.REPS
rows = {h.key(r): r for r in R["rows"]}
changed = []
for i, c in enumerate(P["unity_conditions"]):
    if c["condition"]["store"] == "large_p6":
        r = rows[h.key(c["condition"])]
        new = {m: r[m] for m in r if m not in c["condition"]}
        assert set(new) == set(c["site_result"])
        changed.append((i, c["condition"]["mode"], c["condition"]["robots"], c["condition"]["staff"], c["condition"]["arrivals_per_h"],
                        round(c["site_result"]["entry_wait_mean"], 2), round(new["entry_wait_mean"], 2),
                        round(c["site_result"]["dish_wait_mean"], 2), round(new["dish_wait_mean"], 2)))
        c["site_result"] = new
gen = {g["generation"] for g in json.load(open(h.LAYOUT_DIR_LARGE + "/summary.json", encoding="utf-8"))}
assert len(gen) == 1
P["meta"]["layout_generation_large"] = gen.pop()
st = dict(h.STORES["large_p6"])
P["stores"]["large_p6"] = json.loads(json.dumps(st))
json.dump(P, open(OUT, "w", encoding="utf-8"), ensure_ascii=False, indent=1)
print("gen", P["meta"]["layout_generation_large"], "changed", len(changed))
print("番号\t使い方\t台数\tスタッフ\t来客\t入店待ち 前→後\t料理の待ち 前→後")
for x in changed: print(*x, sep="\t")

依頼108 の依頼文

10_sec06.txt3,565字・58行・text
---
作業フォルダ: /Users/shimazueiichi/Robotics_UX/ServiceSim
上限時間: 480
---
# 依頼108:⑧の待機点を2列にした店の形で建て直し、どかされた台が待機点へ戻るように直して、⑧で比べる

依頼104・105 の報告を読んで、エイイチと決めたこと(2026-11-07):
- ⑧の待機場所のそばの詰まりの原因は、待機点どうしの間が0.8mしかなく、前のセンサー(中心から0.85m)が隣の待機点の台にかかること。列で使う決まり(依頼105)は使う順番を変えるだけで、この間隔は変わらないので効かなかった
別のタブで開く保存

依頼108 の結果

# 結果:20261107_108_⑧の待機点を2列にしどかされた台が戻るようにして比べる

- 状態:完了
- 始めた時刻:2026-11-07 13:09
- 終わった時刻:2026-11-07 13:35(26分)
- 作業フォルダ:/Users/shimazueiichi/Robotics_UX/ServiceSim
- この続きを Claude Code で話すとき:作業フォルダで `claude --resume beeb2c85-58c9-47b8-8e98-fbda59bc55f9`

## Claude Code の報告

**やったこと**
- 始める前の確かめは、どれも依頼どおりでした。
  - 作業場所と実行ファイルは cs:89、保留 0。Unity と実行係は動いていませんでした。
  - 台帳と除く一覧を archive/unity_ledger_v1_pre_108_20261107/ に退避しました(台帳 3,510 行・md5 5c38ea64…、除く一覧 24 行・md5 d754edc5…)。
  - サイト 18d23fe を写し直して比べました。params の違いは依頼どおりの3か所だけ(⑧の条件の site_result は 23 件)、⑨の店の形の違いは版の名前だけでした。
  - 除く一覧に cs:88 の確かめ3行を足しました。
- どかされた台が戻る直しを入れました(cs:90)。
  - 往復を終えて止まっている台がスタッフに押されたとき(連れて戻されたときも)、自分の待機点から離れていれば、往復の戻りと同じ走り方で自分で戻ります。瞬間移動はしません。
  - 戻る途中で次の往復が来たら、そのまま往復へ出ます。
  - 戻りのあいだの止まりは stops.csv に入れ、1回ずつを新しい park_returns.csv に書きます。
- ⑧を2列の店の形で建て直しました(cs:91)。Unity の作りには1列前提のコードはありませんでした。1列前提だったのは型分けの台本なので、待機点の位置を店の形から読むように直しました(ep108.py)。
- 待機点に入れるかの確かめ用に、客を来させずに台を1台ずつ往復させる作りを足しました(cs:92・cs:93)。この確かめは台帳には書きません。

**結果**
- ⑨ 2台 種7 は large95 と同じになりませんでした。原因は今回の直しで、店の形の読み直しではありません。
  - 直しだけの実行ファイルと新しい店の形の実行ファイルでは、⑨は版の名前の1欄のほかは全ファイル一致しました。
  - large95 とは、直しが初めて働いた 10,597 秒より前の記録がすべて同じでした。
- ⑧5台 種0 の2回は全ファイル一致しました。瞬間移動 0、1コマの跳び 0 です。
- **⑧の待機点に5台がそれぞれ入れるかは、通りませんでした。**
  - 待機点3:台3 だけを往復させると、外へは出られましたが、戻るときに待機点5 の台の真下で行ったり来たりし、900 秒たっても戻れませんでした(ほかの4台は待機点にいるまま)。
  - 待機点2:1台だけなら戻れました(101 秒)。ただ、隣の台1 が中心から 0.23 m ずれて止まっていたときは、外へ出られませんでした。
  - 待機点1・4・5 は入れました。台4 は中心から 0.26 m で、0.25 m より 1 cm 外でした。
- 依頼の決まり(入れない待機点があれば止める・通らなければ 3 は回さない)に従い、**3 の回す(50 回)、4 の表と図、5 の撮影はやっていません。**
- 参考に種0 の1回だけ比べると、2列+直しは止まりの合計 6,279 → 4,406 秒、60 秒動けなくなった 14 → 1 回でした。一方、30 秒の呼び出しは 41 → 104 回に増えました。
- 台帳は 3,510 → 3,515 行です(追記 5 行だけ。先頭 3,510 行の md5 は始める前と同じ)。終わったあとの md5 は 13095221…、除く一覧は 27 行です。

**変えたファイル**
- Unity
  - cs:90:ServingRobotController.cs・ServiceOps.cs・ExperimentRunner.cs・TripLogger.cs
  - cs:91:⑧⑨の店の形5つと serving-robot-params.json
  - cs:92・cs:93:HeadlessRun.cs・ExperimentRunner.cs
- 実行ファイル:Builds/headless(cs:93)。直しだけで前の店の形のもの(3-1 用)を Builds/sb108ret_cs90 として別名で残しました。
- KIOXIA
  - 退避、除く一覧に3行、台帳に5行
  - night/20261107_sb108/(台本・比べた結果・図 fig_standby_check108.png)
- 報告:claude_code_reports/20261107_sb108.txt と 20261107_sb108_files/

**決めてほしいこと**
1. 2列の店の形で待機点3 に戻れない件をどうするか。例えば、待機点の位置や列のあいだの幅を変える、5台では待機点3 のかわりに6 を使う、止まっている台を相手に行ったり来たりする動きを先に直す、このまま回す、など。決まれば 3 の回と撮影を回せます。
2. 新しい⑧の店の形で、スタッフの持ち場4 が待機点3 の右上 (23.25, 11.75) に動いていました。依頼文には無い違いです。このままでよいか。
3. 待機点に入れるかの確かめ方は私が決めました(一番近い卓へ1往復・ほかの台は待機点にいるまま・900 秒まで・中心から 0.25 m 以内)。この確かめ方でよいか。
4. 戻りのあいだの止まりを「ロボットの止まりの合計秒」に入れ、ロボットがふさがっていた時間には入れない数え方にしました。この数え方でよいか。

判定:止めた(決めてほしいことあり)

依頼108 の Claude Code の報告(20261107_sb108.txt)

11_sec06.txt13,736字・218行・text
====================================================================
依頼108:⑧の待機点を2列にした店の形で建て直し、どかされた台が待機点へ戻るように直して、⑧で比べる
2026-11-07 13:09〜13:45 作業場所 cs:89 → cs:90(直し)→ cs:91(店の形)→ cs:92・cs:93(待機点の確かめ用)
====================================================================

結論
  ・2 の確かめのうち「⑧の待機点に5台がそれぞれ入れること」が通らなかった。依頼の決まり(入れない待機点があれば止める・
    通らなければ 3 は回さない・2 が通れば撮る)に従い、3(回す)・4(表と図)・5(撮る)はやっていない
別のタブで開く保存

2列の待機点に1台ずつ戻れるかの確かめ

⑧の2列の待機点に1台ずつ戻れるかの確かめ。左は1台ずつ順に往復させたもの、右は台3だけを往復させたもの。台3は待機点5の台の真下で行ったり来たりし、900秒のうちに待機点3へ戻れなかった

2列では、奥の列の待機点3へ、手前の列の台のあいだを抜けて戻れませんでした。依頼の決まりどおり、本番の50回と撮影は回していません。この依頼で入れた、スタッフにどかされた台が自分の待機点へ戻る直し(cs:90)は、このあとも使っています。依頼105 で、どかされた台が待機点へ戻らず長く止まっていたためです。

  • ねらい:待機点どうしの間を広げ、隣の台がセンサーに入らないようにする
  • 変わったこと:待機点を2列の互い違いにした
  • 見込める効果:見込みは外れた。奥の列に戻れない待機点が出て、卓までの道も延びた

作業ログ ― 間は1.1mまでしか広げられず、入り方の決まりで直すことにした

2列をやめるにあたって、直し方を1枚の図で比べ直しました。

待機点の直し方の4つの絵

⑧の待機点の直し方を上から見た図。今(間0.8m・斜めに寄ると隣がセンサーに入る)、(1) 1列・間1.1m・5点(斜めに寄ると、まだ隣に届くことがある)、(2) 間0.8m のまま真下まで来てからまっすぐ入る、(3) 1列・間1.2m・4点+受け渡し口の左に1点(スタッフの持ち場を動かす)

1列で間を広げられるのは1.1m までです。左は受け渡し口の前の空けておく所、右は右の卓へ上がる道があるためです。1.1m では、斜めに寄るとまだ隣の台に届くことがあります。

(2) は、店の形を今のまま(間0.8m)にして、ロボットの入り方の決まりを足す案です。戻る台は、自分の待機点の真下(壁と反対の向きへ1.0m 下がった点)まで来て、向きを合わせてからまっすぐ入ります。まっすぐ入れば、前のセンサーの先には自分の待機点しかなく、両隣の台は横にいるので入りません。(2) を選びました。

店の形とサイトの⑧の試算は、2列にする前(large-99db3254b08b)に戻しました。

図を描いたスクリプト(fig_fix_options.py)

12_sec07.py.txt4,369字・51行・python
import numpy as np, matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt, matplotlib.patches as mp
matplotlib.rcParams['font.family']='Noto Sans CJK JP'
R=0.25; SENS=0.85; HALF=35
def robot(ax,x,y,col='white',ec='#333',lab=None,z=5):
    ax.add_patch(mp.Circle((x,y),R,fc=col,ec=ec,lw=1.4,zorder=z))
    if lab: ax.text(x,y,lab,ha='center',va='center',fontsize=9,zorder=z+1)
別のタブで開く保存

1列に戻し、まっすぐ入る決まりを足した差分(p2m-site commit de01a0e)

13_sec07.txt33,453字・1,198行・diff
commit de01a0ed250eeb3c6bb94397760dd53d3dbdbb71
Author: Claude <noreply@anthropic.com>
Date:   Sat Nov 7 15:18:13 2026 +0900

    ⑧の待機点を元の1列に戻し、待機点へまっすぐ入る決まり(standby_straight_entry・既定は切)を足す

2列の形(18d23fe)は Unity で奥の列へ台が戻れなかったため、2026-11-07 エイイチの (2) で、店の形は元の1列(large-99db3254b08b)に戻し、
⑧の試算もページ・params とも元の値に戻した。止まり合いは入り方の決まりで直す。
別のタブで開く保存

作業ログ ― 依頼112:待機点の真下からまっすぐ入る決まりを入れた

まっすぐ入る決まり(standby_straight_entry)を Unity に入れ、どかされた台が戻る形と比べました。最初の作りでは、待機点3・4の台が待機点から出られませんでした。入る点(待機点の真下)から引いた道が、並びのすぐ下を通って待機点1の台で止まり続けたためです。Claude Code が、まっすぐの区間ではすれ違いで寄らない・入る点からの最初の道は近くの台をよけて引く、の2つを足して直しています。

依頼112 の依頼文

14_sec08.txt3,578字・58行・text
---
作業フォルダ: /Users/shimazueiichi/Robotics_UX/ServiceSim
上限時間: 480
---
# 依頼112:⑧を元の1列の店の形に戻し、待機点へまっすぐ入る決まりを入れて、⑧で比べる

依頼108 の報告(claude_code_reports/20261107_sb108.txt)を読んで、エイイチと決めたこと(2026-11-07):
- 2列の待機点(large-b13cd179e6bf)はやめる。奥の列の待機点3へ、手前の列の台のすき間(0.8m)の下で行ったり来たりして戻れなかったため
別のタブで開く保存

依頼112 の結果

15_sec08.txt3,349字・76行・text
# 結果:20261107_112_⑧を1列に戻し待機点へまっすぐ入る決まりを入れて比べる

- 状態:完了
- 始めた時刻:2026-11-07 15:31
- 終わった時刻:2026-11-07 17:17(106分)
- 作業フォルダ:/Users/shimazueiichi/Robotics_UX/ServiceSim
- この続きを Claude Code で話すとき:作業フォルダで `claude --resume 05b04c9b-08ef-44dc-9162-1c915044dd67`
別のタブで開く保存

依頼112 の Claude Code の報告(20261107_sb112.txt)

16_sec08.txt14,456字・244行・text
====================================================================
依頼112:⑧を元の1列の店の形に戻し、待機点へまっすぐ入る決まりを入れて、⑧で比べる
2026-11-07 15:31〜17:20 作業場所 cs:93 → cs:94(店の形を戻す・まっすぐ入る)→ cs:95・cs:96・cs:97(確かめで見つけた直し・確かめ用の記録)
====================================================================

結論
  ・1〜5 をすべてやった。止める線(瞬間移動・同じ種の2回の違い)には当たっていない
  ・2 の確かめは cs:97 ですべて通った
別のタブで開く保存

待機場所のそばの詰まりの位置(今のまま・どかされた台が戻る・戻る+まっすぐ入る)

⑧ロボット5台・10回分の、待機場所のそばのロボット同士の30秒以上の詰まりの始めの位置。左から、今のまま(368件・22,688秒)、どかされた台が戻る(523件・31,746秒)、戻る+まっすぐ入る(277件・16,485秒)

待機場所のそばの止まり合いは減りました。一方で、30秒の呼び出しは112回から180.5回に増えました。もう1つ、気になる数え方が見つかりました。入る点の手前で順番を待つ台が、止まりとして数えられ、近くのスタッフに動かされていたことです。順番を待つのは止まっているのではなく、並んでいるだけです。

作業ログ ― 依頼114:入る点の待ちを止まりから外し、止まりの数え間違いを直した

入る点の手前で順番を待つ間は、止まりとして数えないことにしました(5秒・30秒・60秒のきっかけにも入れない)。あわせて、依頼112 の報告にあった数え間違いを直しました。近くのスタッフがその場で道を引き直すたびに、止まりの秒が0に戻り、30秒の呼び出しにならない止まり方があったためです。

params の差分(p2m-site commit e70e145)

commit e70e145d6e4dec116b20218484cf513adde3fc44
Author: Claude <noreply@anthropic.com>
Date:   Sat Nov 7 17:36:58 2026 +0900

    params: standby_straight_entry に、入る点の手前の順番待ちは止まりとして扱わない決まりを足す(既定は切のまま)


diff --git a/public/sim/serving-robot-params.json b/public/sim/serving-robot-params.json
index 153328e..4aba54c 100644
--- a/public/sim/serving-robot-params.json
+++ b/public/sim/serving-robot-params.json
@@ -435,7 +435,7 @@
    "value": false,
    "role": "site_rule",
    "entry_back_m": 1.0,
-   "note": "(切)待機点へ戻るロボットは、待機点の真正面(壁から離れる向き)に entry_back_m(1.0m)下がった「入る点」まで来てから、待機点へまっすぐ入る。出るときも、入る点までまっすぐ下がってから向きを変える(2026-11-07 エイイチと決めた。⑧で今のままと比べる)。待機点の間が0.8mの1列では、斜めに寄ると前のセンサー(中心から0.85m)に隣の待機点の台が入って止まり合っていたため。待機点の間を広げる案は、受け渡し口の前と右の卓へ上がる道があって⑧では1.1mまでしか取れず、2列の案は手前の列のすき間で台が戻れなかったので、店の形は変えず、入り方の決まりで直す。入る点がほかの台・人でふさがっていたら、入る点の手前で待つ。店の形と試算の数字は変わらない"
+   "note": "(切)待機点へ戻るロボットは、待機点の真正面(壁から離れる向き)に entry_back_m(1.0m)下がった「入る点」まで来てから、待機点へまっすぐ入る。出るときも、入る点までまっすぐ下がってから向きを変える(2026-11-07 エイイチと決めた。⑧で今のままと比べる)。待機点の間が0.8mの1列では、斜めに寄ると前のセンサー(中心から0.85m)に隣の待機点の台が入って止まり合っていたため。待機点の間を広げる案は、受け渡し口の前と右の卓へ上がる道があって⑧では1.1mまでしか取れず、2列の案は手前の列のすき間で台が戻れなかったので、店の形は変えず、入り方の決まりで直す。入る点がほかの台・人でふさがっていたら、入る点の手前で待つ。店の形と試算の数字は変わらない。2026-11-07 に足した決まり(依頼112 の結果を見てエイイチが了承):入る点の手前で順番を待っている台は、止まった台として扱わない。近くのスタッフが動かしに来る(5秒)・30秒の呼び出し・60秒動けない、のどれにも数えず、待った時間は別に記録する(並んで待つロボットを店員はどかさないため)"
   }
  },
  "stores": {

依頼114 の依頼文

17_sec09.txt3,188字・53行・text
---
作業フォルダ: /Users/shimazueiichi/Robotics_UX/ServiceSim
上限時間: 420
---
# 依頼114:入る点の手前の順番待ちを止まりから外し、止まりの秒が0に戻る数え間違いを直して、⑧で比べ直す

依頼112 の報告(claude_code_reports/20261107_sb112.txt)を読んで、エイイチと決めたこと(2026-11-07):
1. 入る点の手前で順番を待っている台は、止まった台として扱わない。近くのスタッフが動かしに来る(5秒)・30秒の呼び出し・60秒動けない、のどれにも数えない。待った時間は別に記録する(並んで待つロボットを店員はどかさないため)。params の unity_rules.standby_straight_entry の note に書き足した(p2m-site commit e70e145。value は切のまま)
別のタブで開く保存

依頼114 の結果

18_sec09.txt3,009字・61行・text
# 結果:20261107_114_入る点の待ちを止まりから外し止まりの数え直しを直して⑧で比べる

- 状態:完了
- 始めた時刻:2026-11-07 17:38
- 終わった時刻:2026-11-07 19:37(120分)
- 作業フォルダ:/Users/shimazueiichi/Robotics_UX/ServiceSim
- この続きを Claude Code で話すとき:作業フォルダで `claude --resume e41db82b-792a-4651-a142-dd9ba70db7cf`
別のタブで開く保存

依頼114 の Claude Code の報告(20261107_sb114.txt)

19_sec09.txt15,139字・275行・text
====================================================================
依頼114:入る点の手前の順番待ちを止まりから外し、止まりの秒が0に戻る数え間違いを直して、⑧で比べ直す
2026-11-07 17:38〜19:45 作業場所 cs:97 → cs:98(2つの直し)→ cs:99(待機点の確かめで呼び出しの記録も書く)
====================================================================

結論
  ・0〜5 をすべてやった。止める線(瞬間移動・同じ種の2回の違い)には当たっていない
  ・2 の確かめはすべて通った(種0 入の2回が全20ファイル一致・瞬間移動 0・待機点の確かめ 入は1〜5 とも戻れた・
別のタブで開く保存

まっすぐ入る決まりの前と後(⑧5台・10種の中央値)

項目
どかされた台が戻る・斜めに寄る(sb114ret)
戻る+まっすぐ入る(sb114se)
待機場所のそばの30秒以上の詰まり
54.0件・3,317秒24.0件・1,255秒
ロボットの止まりの合計11,083秒8,703秒
30秒の呼び出し115.5回180.0回
入店待ち12.22分14.90分
⑧ロボット5台・10回分の、待機場所のそばのロボット同士の30秒以上の詰まりの始めの位置。左が斜めに寄る形(537件・32,885秒)、右がまっすぐ入る形(228件・12,442秒)。右では待機点の下に広がっていた詰まりが減っている
  • ねらい:待機点の間を0.8m のまま、戻る台の前のセンサーに隣の台が入らないようにする
  • 変わったこと:戻る台は、待機点の真下1.0m の点まで来て、向きを合わせてからまっすぐ入る
  • 見込める効果(測った値):待機場所のそばの30秒以上の詰まりは1回あたり3,317秒から1,255秒、ロボットの止まりの合計は11,083秒から8,703秒に減った

入店待ちは12.22分から14.90分に延びました。報告では、待機点に入ったロボットが人の道をふさいで呼ばれる回が約1.9倍に増え、そのぶんスタッフの手すきが25.6%から20.3%に減り、片付けを待つ卓が増えていました。待機点の列の中を、Unity のスタッフやお客さんが通り道にしているためです。現実の店では、待機中のロボットの列は人がよけて通ります。

もう1つ、新しい詰まりが見つかりました。2台が互いの入る点をふさいで、互いに相手を待ち、だれも来ないので解けない待ち合いです。40回のうち3回で起き、2台・種9では約4時間、回の終わりまで解けませんでした。

作業ログ ― 依頼118 を出さずに区切った理由と、残した候補

依頼114 の報告を見て、次の依頼118 の下書きまで作りました。人は待機点の区画を通らない(people_avoid_standby)・待ち合いを解く・30秒の呼び出しのあとも止まりの秒を続けて数える、の3つです。params には people_avoid_standby を既定は切で足しました(commit 453df0f)。

ここで、次の問いが出ました。

区切りはどこですか?また意味もなく作業を長引かせていないですか?

この回は、どこまでやったら終わりかを先に決めずに始めていました。依頼を1つ回すたびに、次に直したい所が出てきて、そのまま次の依頼を作っていました。このシミュレーションは原因を切り分けるための道具で、Unity の中のずれを全部直すことが目的ではありません。待機場所の止まり合いの原因(間0.8m と斜めの寄り方)と、それを入り方で減らせることは、この時点で数で言えます。依頼118 は置かずに下書きのまま残し、ここで区切りました。

params の差分(p2m-site commit 453df0f)

commit 453df0f17490481af65ca4af94d0c369824a8982
Author: Claude <noreply@anthropic.com>
Date:   Sat Nov 7 19:40:21 2026 +0900

    params: 人は待機点の区画を通らない(people_avoid_standby・既定は切)を足し、まっすぐ入るの待ち合いの決まりを書き足す


diff --git a/public/sim/serving-robot-params.json b/public/sim/serving-robot-params.json
index 4aba54c..20747f7 100644
--- a/public/sim/serving-robot-params.json
+++ b/public/sim/serving-robot-params.json
@@ -435,7 +435,12 @@
    "value": false,
    "role": "site_rule",
    "entry_back_m": 1.0,
-   "note": "(切)待機点へ戻るロボットは、待機点の真正面(壁から離れる向き)に entry_back_m(1.0m)下がった「入る点」まで来てから、待機点へまっすぐ入る。出るときも、入る点までまっすぐ下がってから向きを変える(2026-11-07 エイイチと決めた。⑧で今のままと比べる)。待機点の間が0.8mの1列では、斜めに寄ると前のセンサー(中心から0.85m)に隣の待機点の台が入って止まり合っていたため。待機点の間を広げる案は、受け渡し口の前と右の卓へ上がる道があって⑧では1.1mまでしか取れず、2列の案は手前の列のすき間で台が戻れなかったので、店の形は変えず、入り方の決まりで直す。入る点がほかの台・人でふさがっていたら、入る点の手前で待つ。店の形と試算の数字は変わらない。2026-11-07 に足した決まり(依頼112 の結果を見てエイイチが了承):入る点の手前で順番を待っている台は、止まった台として扱わない。近くのスタッフが動かしに来る(5秒)・30秒の呼び出し・60秒動けない、のどれにも数えず、待った時間は別に記録する(並んで待つロボットを店員はどかさないため)"
+   "note": "(切)待機点へ戻るロボットは、待機点の真正面(壁から離れる向き)に entry_back_m(1.0m)下がった「入る点」まで来てから、待機点へまっすぐ入る。出るときも、入る点までまっすぐ下がってから向きを変える(2026-11-07 エイイチと決めた。⑧で今のままと比べる)。待機点の間が0.8mの1列では、斜めに寄ると前のセンサー(中心から0.85m)に隣の待機点の台が入って止まり合っていたため。待機点の間を広げる案は、受け渡し口の前と右の卓へ上がる道があって⑧では1.1mまでしか取れず、2列の案は手前の列のすき間で台が戻れなかったので、店の形は変えず、入り方の決まりで直す。入る点がほかの台・人でふさがっていたら、入る点の手前で待つ。店の形と試算の数字は変わらない。2026-11-07 に足した決まり(依頼112 の結果を見てエイイチが了承):入る点の手前で順番を待っている台は、止まった台として扱わない。近くのスタッフが動かしに来る(5秒)・30秒の呼び出し・60秒動けない、のどれにも数えず、待った時間は別に記録する(並んで待つロボットを店員はどかさないため)。2026-11-07 に足した決まり(依頼114 の結果を見てエイイチが了承):入る点の手前で順番を待っている台は、近くのスタッフも30秒の呼び出しで来た人も動かさない。2台が互いの入る点の手前で相手を待ち合ったときは、受け渡し口に近い待機点へ入る台が先に入り、もう1台はそのまま待つ(待ち合いで動かなくなるのを防ぐ)"
+  },
+  "people_avoid_standby": {
+   "value": false,
+   "role": "site_rule",
+   "note": "(切)スタッフとお客さんは、ロボットの待機点の区画(RobotStandby の各区画)を通り道にしない(2026-11-07 エイイチと決めた。⑧で比べる)。待機中のロボットの列は人がよけて通るのが現実の店の形のため。依頼114 で、待機点に止まっている台が人の道をふさいだとして30秒の呼び出しが多く鳴り(⑧5台・10回で1,602件)、スタッフの手が取られていた。待機点へ物を取りに行く・ロボットを動かすなど、待機点そのものに用がある人は入ってよい。店の形と試算の数字は変わらない"
   }
  },
  "stores": {

依頼118 の下書き(置いていない)

20_sec10.txt3,437字・55行・text
---
作業フォルダ: /Users/shimazueiichi/Robotics_UX/ServiceSim
上限時間: 480
---
# 依頼118:人は待機点の区画を通らない・待ち合いを解く・数え方をそろえる、を入れて、⑧で「まっすぐ入る」を比べ直す

依頼114 の報告(claude_code_reports/20261107_sb114.txt)を読んで、エイイチと決めたこと(2026-11-07):
1. 人(スタッフ・お客さん)は、ロボットの待機点の区画を通り道にしない。待機中のロボットの列は人がよけて通るのが現実の店の形のため。params の unity_rules.people_avoid_standby(既定は切)。待機点そのものに用がある人(ロボットを動かす・物を取る)は入ってよい
別のタブで開く保存

残した候補

起きた場面原因の候補
切り分け方(ほかは同じにして1つだけ変える)
まっすぐ入る形で入店待ちが延びた
人が待機点の列の中を通り道にしている
people_avoid_standby の入と切で比べる
2台が互いの入る点の手前で待ち合い、解けない
待ち合いを解く決まりがない
受け渡し口に近い待機点へ入る台が先に入る決まりの、ありとなしで比べる
入る点の手前で順番を待つ台が、スタッフに動かされる
動かす相手を選ぶ決まり
順番待ちの台を相手に選ばない決まりの、ありとなしで比べる
30秒の呼び出しのあと、止まりの秒が0に戻る
止まりの数え方
続けて数える形にして、切の回の数がどれだけ変わるかを見る
まっすぐ入る形を標準にするか上の4つの結果しだい
4つを入れたあとで、斜めに寄る形と比べ直す

この回で決めたことは次のとおりです。

  • 近くのスタッフが止まったロボットを動かす決まり(staff_moves_robot)は、すぐ押す形にした。⑧の配膳では3台以上で効いた
  • 待機点を列で使う決まり(standby_queue)と、2列の並びは使わない。2列の店の形とサイトの⑧の試算は、元の1列に戻した
  • 待機場所の止まり合いは、待機点の真下からまっすぐ入る決まり(standby_straight_entry)で減らせると分かった。標準にするかは、人が待機点の列を通らない形にしてから決める
  • 次に Unity を直すときは、どこまでやったら終わりかを先に決めてから始める