依頼178 報告:実機推論をチャンクごとの Enter で止めず、スペースを押したときだけ止める(Log35) ■ やったこと 1. run_policy_client.py に --no-step-confirm を足した(付けなければ今までと同じ)。 - 始めの確かめ(1回目の推論の前の Enter)は今までどおり。--skip-first-confirm もそのまま効く。 - そのあとは入力欄を出さずに次の推論・実行へ進む。 - 推論中・中継点を送って待つ間・到着の確かめの間にスペース(Enter も可)を押すと「止める予約」になる。今のチャンクは最後まで送り、次の推論を出したところ(送る前)で今までと同じ入力欄を出す。推論中に押したときは、その推論を送らずに入力欄を出す。 - 入力欄からの p・c・b・r・h・q・s・Enter は今までどおり。Enter で実行すると、また止まらずに進む。s・b・c・p のあとは止めたままにし、次の推論でも入力欄を出す(始めの確かめで s・b・c・p を選んだときも同じ)。 - キーは termios の cbreak と select で待たずに読む。入力欄の前と、終わるとき(Ctrl-C・例外も)に端末の設定を元に戻す。Ctrl-C はそのまま効く。 - 未到達・関節角が読めない(最後の中継点を送らなかった経路も含む)ときは、終了コード 1 にせず止める予約を入れて入力欄を出す。安全範囲の外は今までどおり。推論の始めに関節角が読めないときの終了コード 1 は、今の --auto なしと同じなので変えていない。 - 止める予約のときと入力欄を出すときに 1 行出す。log.jsonl に type=pause の行(event=requested:押したキー・わけ・どの推論の間か・どのチャンクのあとか・時刻/event=prompt/event=resume)を残す。入力欄を出した推論の行に paused と prompt_t(入力欄を出した・閉じた時刻)、頭(type=model)に step_confirm を残す。 - 入力欄で待つ間の recorder のモードは今までどおり wait。 - --auto とは一緒に使えない(引数の確かめで止める)。 2. lab_start.sh:既定で --no-step-confirm を渡す。--step-confirm を付けると今までどおりチャンクごとに確かめる。起動時に [CONFIRM] の行でどちらかを出す。--help にも書いた。 3. chunk_timing.py:止めて入力欄で待った時間は「確認待ち」の列に入る(送ったチャンクは今までどおりの計算で入り、送らなかったチャンクも prompt_t から入れる)。メモに「止めた(スペース)」などを出し、頭に確かめの形(毎チャンク/止めたときだけ)を出す。 4. テスト - 新しく足したもの:pi05/test_no_step_confirm.py 17件(キーなしで最後まで入力欄なし/途中でスペース→次の推論のあとで入力欄→p・b・Enter/スペースのあと q/Enter で止めて s/推論中に押したら送らない/ほかのキーでは止めない/未到達・読めない・最後の中継点を送らなかった経路で入力欄/Ctrl-C で端末を戻す/入力欄のときは必ず端末が元に戻っている/pty で本物の端末の設定が cbreak になり元に戻る/戻すのに失敗してももう一度戻せる/付けなければ git HEAD の版と同じ送り方・同じ log) - test_chunk_timing 7件、test_lab_start.sh OK 218 / NG 0。 - pi05/ のテストと tools/test_gamepad_teleop は全部通った。test_power_ab は全部まとめて流したときに 1 件落ちたが、単独では通った。計測の時刻に左右されるテストで、今回変えたファイルは使っていない。test_teach_currents も 1 回目に 1 件落ちたが、2 回目は通った。 5. codex:3回。1回目に必須4件・推奨1件。R1(始めの確かめで s・b・c・p を選んだあとに止まらない)、R3(最後の中継点を送らなかった経路の未到達)、R4(端末の設定を戻すのに失敗したとき)、R5(送らなかったチャンクの待ち)を直した。R2(推論の始めに関節角が読めないと終了コード 1)は今の --auto なしと同じ動きなので据え置いた。2回目で R5 の続き(最後のチャンクの合計)を直し、3回目は指摘なし。 6. コミット 047e472(7ファイルを個別に add)。 ■ 画面の例(偽のアームで流したもの) キーなしで流れるとき(始めの Enter のあとは入力欄なし): [PAUSE ] --no-step-confirm: 始めの確かめのあとは入力欄を出さずに進みます. 止めるときはスペース (Enter も可). 今のチャンクを送り終えてから, 次の推論のあと (送る前) で入力欄を出します [000] 推論 …… (始めの確かめの入力欄 → Enter) [VIA ] step 2 …… 着いた …… step 9 …… 着いた [001] 推論 0ms 10ステップ先 Δ=+10.0 +5.0 …… [VIA ] 中継点 4 点: step 2, 5, 8, 9 [VIA ] step 2 …… 着いた …… step 9 …… 着いた [002] 推論 …… (そのまま進む) 途中でスペースを押したとき: [001] 推論 0ms 10ステップ先 Δ=+10.0 +5.0 …… [VIA ] step 2 …… 着いた [VIA ] step 5 …… 着いた [PAUSE ] 止める予約 (スペース). 推論 1 を送り終えてから, 次の推論のあと (送る前) で止めます [VIA ] step 8 …… 着いた [VIA ] step 9 …… 着いた [002] 推論 0ms 10ステップ先 Δ=+10.0 +5.0 …… [VIA ] 中継点 4 点: step 2, 5, 8, 9 [PAUSE ] 止めました (推論 2 はまだ送っていません). Enter で実行すると, また止まらずに進みます Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > (推論中に押したときは「止める予約 (スペース). 推論 N は送らずに入力欄を出します」) 「止める予約」の行は、押したあとの次の区切り(中継点を送り終えたとき・推論のあと・チャンクの送り終わり)で出る。1 つの中継点の到着を待っている間に押すと、その中継点が終わってから出る。 ■ ゲームパッドのボタンで止める案(今回は作っていない) - 案:推論のあいだ、gamepad_teleop.py を別のプロセスで「見張りだけ」の形(例:--pad-watch。決めた 1 ボタン(OPTIONS か ○ など)を押したら 1 行の JSON を出すだけ。送る仕事はしない)で起動しておく。推論のプロセスは、スペースを読むのと同じ所(check_pause)で、その子の出力を select で待たずに読み、届いたら同じ「止める予約」にする(key=pad)。 - 補正 p でゲームパッドの子を起動する前に見張りの子を止め、補正を抜けたら起こし直す(同じコントローラーを 2 つのプロセスで同時に開かないため)。cv2 と pygame は今までどおり別のプロセスのまま。 - 手間:gamepad_teleop に見張りの形を足す・子の起動と止めと落ちたときの扱い・つながらないときは黙ってキーだけにする・テスト(偽の子)で、半日〜1日ほど。見張りの子が止まらないときの扱い(依頼145 と同じく kill して進む)を決める必要がある。 ■ エイイチが実機で比べるときのコマンド - 新しい形(既定):./lab_start.sh --log Log35 --model <いつものモデル> --flow - 今までの形:./lab_start.sh --log Log35 --model <いつものモデル> --flow --step-confirm - 比べる:python3 pi05/chunk_timing.py pi05_20261113_193254 <今回の試行のフォルダ名> (--flow・--speed は依頼176 と同じく好みで。止めるときはスペースを 1 回押す。動いている途中では止まらず、次の推論のあとで入力欄が出る) ■ 変えたファイル - 修正:pi05/run_policy_client.py、lab_start.sh、test_lab_start.sh、pi05/chunk_timing.py、pi05/test_chunk_timing.py、pi05/test_rewind_correct.py - 新規:pi05/test_no_step_confirm.py ■ 決めてほしいこと 1. 止める場所:依頼文は「次の推論の前で止める」だが、今までと同じ入力欄(Enter=表示した推論を実行・s=送らず次へ)をそのまま使うため、「次の推論を出したあと・送る前」で止めた(アームは送る前なので動かない。待ち時間は今までどおり確認待ちの列に入る)。推論の前で止める形がよければ直す。 2. 推論中にスペースを押したときは、その推論を送らずに入力欄を出すようにした(依頼文の「今のチャンクを最後まで」は動いている途中の話と読んだ)。それでよいか。 3. 推論の始めに関節角が読めないときは、今の --auto なしと同じく終了コード 1 で止まる(何も送らない)。入力欄を出す形にするか。