# 結果：20261106_97_ゲームパッドで直した成功5本でcorr_v5を作り続きの学習を回す

- 状態：完了
- 始めた時刻：2026-11-06 18:59
- 終わった時刻：2026-11-06 20:08（69分）
- 作業フォルダ：/Users/shimazueiichi/r2r2r-scripts
- この続きを Claude Code で話すとき：作業フォルダで `claude --resume 2a5a4788-f085-45c0-9e7d-8aa031e8de2c`
- 止められた操作：1件（いちばん下に一覧）

## Claude Code の報告

## やったこと

点検・データ作り・学習の開始まで終えました。学習は Log22 の Pod で回っており、20:07 に step 44/1500 まで進んだのを確かめました。アームは使っていません。

**前提として分かったこと**
- 11-05 の daemon の直し（c7992ca）のあと、send_angles の rpc は 0.03〜0.14 秒で返ります（11-01 は約 1.6 秒）。腕は rpc が返ったあとも指令へ向かって動いています。
- そのため、依頼57の点検をそのまま使うと、ふつうの動きを「外れ」として大量に数えていました。

**A. 手首と関節の点検（pi05/diag_joint_hold.py を直した）**
- ゲームパッドの rpc 行（send_angle / stop）を log.jsonl の pad の行と組にして、指令を作るようにしました。
  - 1 刻みの指令は送った目標そのものです。
  - 長押しでは、押した関節は見ません（15° 先へ着く気がないため）。
  - stop のあとの指令は、止めた関節だけ止めたあとに読んだ角度にしました（gamepad_teleop と同じ決まり）。
  - 組にできなかった行は、今日の 5 本では 0 件です。
- rpc がすぐ返った区間では、指令へ向かう途中の動きを遅れに数えません。代わりに「いちばん指令へ近づいた所から離れた分」を見て、4° を超えたら外れにします。指令が変わらない間は区間をまたいで見ます。
- 11-01 の 9 本は、前の結果と全部同じ値になりました。

**B. corr_v5**
- build_correction_episodes.py は直す必要がありませんでした。合成の記録のテストを足して、次の 3 つを確かめました。
  - 補正の間（correct）のコマは、長押しで動いている途中も含めて入ります。
  - 補正の中の爪の指令は、その時刻で 0/1 が切り替わります。ただし今日の 9 回では、ゲームパッドで爪は使っていません。
  - 長押しを離して止まった所や 1 刻みのあとの止まりは、今までと同じ決まりで詰まります。
- 角度の抜けはほとんどなくなりました。動いた角度のうち抜けの中の割合は、11-01 の 98% に対して 2.2〜2.9% です。
- ゲームパッドの区間の抜けは、補正の始めの約 3.2 秒（窓を開く間で、腕はほぼ止まっている）と、長押しの途中の 0.3〜0.4 秒です。後者は speed20 で埋めても linear と同じ結果になるので、作り直し（ウ）は要りません。依頼57と同じ設定（speed20・詰め方 --trim-hold）で作りました。

**C. 続きの学習**
- `--model corr3` を lab_train.sh と lab_start.sh に足しました。trim・corr・corr2 の動きは変えていません。
- 続きの元 corr2 の 1499 の正規化の値は、trim2 と同じ（sha256 80346837…）であることを確かめてから置きました。
- 推論の Pod（b6j7nc4m74h7ru）は、18:58 にすでに消えていました。推論の記録は `lab/Log22/pod/`、学習の記録は `lab/Log22/train/` で、ぶつかりません。

## 結果

**A. run ごとの表（外れ = 4° 超）**

| run | j4 止まったあとのずれ 中央/最大 | j4 指令から離れた分の最大 | j1 中央/最大 | j2 中央/最大 | 外れ |
|---|---|---|---|---|---|
| 183926 | 0.8 / 2.2 | 1.2 | 0.9 / 2.1 | 0.9 / 2.2 | 0 |
| 184452 | 0.7 / 3.3 | 3.8 | 0.9 / 2.6 | 0.4 / 2.0 | 0 |
| 184650 | 0.8 / 3.0 | 2.7 | 1.1 / 2.6 | 1.0 / 1.9 | 0 |
| 184906 | 1.4 / 3.2 | 2.4 | 1.0 / 3.0 | 0.8 / 2.8 | 0 |
| 185554 | 1.5 / 6.8 | 5.8 | 0.9 / 2.1 | 0.7 / 1.7 | 5 区間（j4） |

- 入れる案: 183926・184452・184650・184906。184452 の離れた分 3.8° は、4° の目安の少し下です。
- 入れない案: 185554。補正 2 で j1 を長押ししている間に、j4 が指令 −64.5 のまま −63.5 から −57.7 まで動きました（止まったあとのずれ 6.8°）。推論に戻ったあとも −59 のままでした。

**B. corr_v5（/Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_corr_v5）**
- 11 本 / 1584 コマ（補正のコマ 430・止まり 14.9%）です。前の 7 本は、corr_v4b とバイトで同じです。
- trim2 と合わせた `..._teach_v1_trim2_corr_v5` は 30 本 / 4301 コマ、Pod に送る tar は 117 MB で、`._` は 0 件です。
- check_dataset は FAIL なしです。WARN は止まりの割合（190854 22.8%・192101 22.1%）と、ブロックの位置が j0 +15° 付近に集まっていることで、どちらも依頼57と同じ内容です。
- 今日の 4 本の表:

| run | コマ | 補正のコマ | 止まり | 1 コマの最大の動き（j0〜j5, °） |
|---|---|---|---|---|
| 183926 | 188 | 34 | 8.0% | 3.81 5.94 3.07 1.15 4.89 0.61 |
| 184452 | 190 | 55 | 11.1% | 4.13 4.72 3.39 1.18 4.41 0.70 |
| 184650 | 178 | 38 | 7.3% | 4.44 6.68 4.76 1.03 4.08 0.73 |
| 184906 | 135 | 20 | 10.4% | 3.82 4.41 4.01 1.29 3.73 0.88 |

- 前の 7 本の数字は、依頼58の表と同じです。全部の表は logs/20261106_2010.md にあります。
- 1 コマの最大の動きが、今までより大きくなっています（trim2 は 3.3° まで）。推論で最大 4.8°、ゲームパッドの長押しで j1 最大 6.7° です。詰めたつなぎ目ではなく、実際の 0.1 秒の動きです。

**C. 学習**
- 始めた時刻: 19:51:43 に Pod を作り始め、19:56:56 に学習が始まりました。
- Pod: id uirn5j6iy4xbyx、NVIDIA A40、1 時間 0.59 ドルです。
- 進み: 20:07 に step 44/1500 まで進んだのを確かめました。
- 出力のファイル: `/Volumes/KIOXIA/r2r2r-data/lab/Log22/train/lab_train_20261106_195143.txt`（同じ場所に nohup_lab_train_20261106_195143.txt）。まとめは同じ場所の result_*.txt に出ます。
- モデルの置き場所: Hugging Face の `PixelstoMotors/pi05-mecharm-trim-corr-lora-v3` と、KIOXIA の `checkpoints/pi05_mecharm_trim_corr_lora_v3/1499` です。
- 終わる見込み: 22:45〜23:15 ごろ。学習が終われば、lab_train.sh がモデルを持ち帰って Pod を消します。上限の 11-07 00:51 を超えたときも消します。

**テスト（全部 OK）**
- pi05/ の Python テスト: diag_joint_hold 24、test_pad_build 3（新しく足したもの）、merge_and_config 27、rewind_correct 69 ほか。
- ほかのテスト: provenance 42（1 件は skip）、gamepad_teleop 90、servo_check_pi 15。
- シェルのテスト: test_lab_train.sh 214 件・test_lab_start.sh 153 件、どちらも NG 0。
  - test_lab_train.sh は、test_lab_start.sh と同時に流したときに時間を見る 1 件が NG になりました。1 本ずつ流すと全部 OK です。
- pi05/test_rewind_correct.py の top.mp4 の 1 件は、Mac では通りました。

**codex のレビュー（3 回）**
- 1 回目は必須 2 件でした（ゲームパッドの送信を次の送信と組にしうる／区間をまたいでゆっくり垂れるのを見落とす）。
- 2 回目は必須 1 件でした（角度の読みがない区間で、引き継ぎを切っていない）。
- 3 回目で必須がなくなりました。推奨のテスト 2 件も足しました。
- 直したあとも、A の結果（入れる 4 本・入れない 185554）は変わっていません。

## 変えたファイル
- pi05/diag_joint_hold.py
- pi05/test_diag_joint_hold.py
- pi05/test_pad_build.py（新しく足したもの）
- pi05/test_merge_and_config.py
- pi05/openpi_addon/add_trim_corr_config.py
- pi05/openpi_addon/pod_prep_trim_corr.sh
- lab_lib.sh
- lab_train.sh
- lab_start.sh
- lab_train_fakes.sh
- test_lab_train.sh
- test_lab_start.sh
- docs/diag_joint_hold_20261106.txt・.json
- docs/review_request_20261106_corr_v5_gamepad（_r2・_r3）.md
- docs/review_result_20261106_corr_v5_gamepad_codex（_r2・_r3）.md
- logs/20261106_2010.md

コミットは 284dfd7 と 6dac235 です。

## 決めてほしいこと
1. **184650 を入れたままでよいか。** 外れがないので入れましたが、補正 2 の終わりに j2 が trim2 の範囲（上限 +31.4°）を最大 11.1° 超えるコマが 18 あります。推論の安全範囲（trim2 +10°）では、この動きの端の約 1° が切られます。外すなら corr_v5b を作って学習し直しになります。
2. **1 コマの動きが大きいデータを入れ続けてよいか。** 推論で最大 4.8°、ゲームパッドの長押しで j1 最大 6.7° です（trim2 は 3.3° まで）。daemon の直しのあとの記録はこの形になります。
3. **据え置いた推奨の扱い。** 学習のテストの偽物のチェックポイントの assets 名が v3 のままです（テストだけの話で、本番の流れには影響しません）。次に直すかどうかを決めてください。

## 止められた操作

- {"tool_name": "Bash", "tool_use_id": "toolu_01Rw1Y1BCqsNsxnWonBdfA1b", "tool_input": {"command": "cd /Users/shimazueiichi/r2r2r-scripts; rm -rf /tmp/r97/root; mkdir -p /tmp/r97/root/datasets; R=\"--run pi05_20261031_175527 --run pi05_20261031_180435 --run pi05_20261031_181946 --run pi05_20261031_184016 --run pi05_20261101_190347 --run pi05_20261101_190854 --run pi05_20261101_192101 --run pi05_20261106_183926 --run pi05_20261106_184452 --run pi05_20261106_184650 --run pi05_20261106_184906\"; pyth
