依頼156 報告：電源（12V・2A → 5A）の前後比較の準備と、位置5 の入れ替えをコマンド1つにする（Log30）

■ 1. やったこと
A. 電源の前後比較
- record_teach_demo.py run に --power 2A / 5A を足した。試行 JSON の power に残る。付けたときだけ、爪の位置（サーボ7 の番地 56/57）と電圧（番地 62。肩2・爪7）を生の値で recording/power_regs.csv に読む。数は power_regs_meta.json と試行 JSON の currents.power_regs に残す。
  - 今あるもの（爪と肩の電流 currents.csv。依頼116・121）は変えていない。currents.csv の列、currents_meta.json、実機推論の記録（PolicyRecorder）も変えていない。
  - 足した番地は電流と同じ時だけ読む（本体が daemon を使わずに待っている間だけ。爪の命令から待ちが終わるまでは読まない）。1 回に足すのは 2 つまで（肩の上位を読む回には足さない。爪の位置と電圧を交互に読む）。足す回だけ、読み終わる見込みを 0.15 秒から 0.19 秒にとる。
  - 番地が 2 回続けて返事なしなら、その run ではもう頼まない（本体を待たせるのは多くて 2 回）。止めずに、空の値と no_reply を残す。
  - get_gripper_value は使っていない（2026-10-19 の固まった件があるため）。爪の位置は番地 69/70 と同じ get_servo_data で読む。
  - --power は --no-currents・--no-record とは一緒に使えない。値の形（数字 + A）も確かめる。動き・速さ・待ち時間・閉じる値（既定 20）は変えていない。
- 集計 pi05/power_ab_compare.py（読むだけ）。試行ごとに 1 行、電源ごとの中央値と差を出す。出力は compare.csv と summary.md で、置き場所は KIOXIA runs/experiments/power_ab_compare/{日時}/。KIOXIA がないとき・出し先があるときは止まる。
  - 自動で選ぶのは、位置5 の教えた記録で power の付いた run だけ。閉じる値が run でそろっていなければ、電源と閉じる値の組で分け、そのときは差を出さない。
  - 合否の線は決め打ちしていない。--loose-ratio を付けたときだけ「緩んだ？(仮)」を出す（仮と明記）。
- 手順書 pi05/POWER_AB.md：2A で 3 回、5A で 3 回。同じブロック・同じ位置・同じ閉じる値で、各回のあいだは 5 分（目安）。実行コマンド・集計コマンド・見るべき行を書いた。電源の差し替えは Pi ごと落としてから行う。

B. 位置5 の入れ替え
- pi05/build_deep_even10_v2.sh で、DEEP_DEMOS 5-2 の手順をコマンド 1 つにした。順番は 確かめ → build → merge（6 本を外す・tar）→ check_dataset → count_by_position（各位置 10 本・位置5 の補正入り 0・分からない 0・合計 50）→ 比べる。どこかで 1 つでも失敗したら、そこで止まる。
  - 出し先がもうあれば、何もせずに止まる。使えた本が 6 本でなければ merge の前に止まる。教えた記録が位置5 でない run、同じ run を 2 回渡したときも止まる。
  - 元のデータセットは読むだけ。置き場所は子のスクリプトと同じ /Volumes/KIOXIA に決め打ち。
- pi05/pos5_lift_compare.py で、つかみの深さと持ち上げの高さを 1 本 1 行で出す。新しい 6 本を撮ったあとは --group を 2 つ渡すと並ぶ（上のシェルの最後でも流れる）。
  - 持ち上げの高さの測り方：エピソードの state の関節角で、爪が閉じたコマから放す前までを見る。FK テーブル fk_scan_motion_based_v2.csv で、j1〜j4 がいちばん近い行の ee_y を手先の高さとする（読むだけ。md5 は変わっていない）。時間は t_orig を使う。
- DEEP_DEMOS.md の 5 節に 5-3（コマンド）と 5-4（比べ方と今日の値）を足した。

■ 2. 結果
- 今の補正入り 6 本（runs/experiments/pos5_lift_compare/20261112_113209/）
  - つかみの深さ：中央値 15.0px（−19.4〜20.2px。どれも 24px 以下）
  - 閉じてから 5 秒の間に持ち上がった本：0 本（rise_5s 0.0〜0.3mm）
  - 30mm 上がるまで：8.3〜32.7 秒（中央値 20.0 秒）
  - 放すまでの最高：88〜192mm（中央値 104mm）
  - fk_diff：183926・184650 の 2 本は 9.1・9.4° で、この 2 本の高い所の高さは当てにならない。ほかの 4 本は 2.4〜2.6°。
  - 比べるために、前の教えた動きの再生も 1 本見た（194913）。閉じてから 3.2 秒で 30mm 上がっていた。
- 偽の daemon での再生（--power あり／なし）
  - 命令の間の差：最大 0.017〜0.108 秒
  - 再生にかかる時間の差：0.06 秒以下
  - 見込み超え：0 回
  - read_servo 1 回：中央値 約 125ms、最大 約 132ms
- 本物の記録（11/09 の再生）で分かったこと：持ち上げの区間そのもの（約 1 秒）と、閉じてから 2 秒の待ちの間は読めない。なので「閉じて 1〜2 秒の電流」は再生では空になる。代わりに「待ちが終わって最初に読めた 1 秒」（閉じて 3〜4 秒あと）を出す。「持ち上げ中」は、持ち上げ始めてから放すまで（運ぶ間を含む）にした。
- テスト
  - 新しく足したもの：test_power_ab 20、test_build_deep_even10_v2 10、test_pos5_lift_compare 8。すべて通った。
  - 既存：pi05/ の全部、tools/ の全部、test_servo_check.sh 52、test_lab_start.sh 197。すべて通った。
  - 最後の一括実行で、test_power_ab の 1 件と test_teach_currents の 1 件が落ちた。どちらも同じ原因で、再生の最初に爪を開く前の「止まっているか」の確かめで、角度を読む回数が 1 回多かった。多かったのは片方では記録ありの側、もう片方では記録なしの側だったので、記録を足したせいではなく、偽の daemon の時間の揺れ。単独で流し直すと両方とも通った。
- codex：2 回。1 回目は必須 4 件・推奨 2 件で、全部直した。2 回目は必須なしで、推奨 1 件を直した。
- コミットはしていない（頼まれていないため）。

■ 3. 変えたファイル
- 修正：dynamic_tracking_limits/drag_teaching/record_teach_demo.py（git の外。写し：record_teach_demo.py.bak_pre_req156_20261112）、pi05/policy_recorder.py（PowerRegsRecorder を足した。基底の読み取りの見込みはメソッドにしたが、値は同じ）、pi05/DEEP_DEMOS.md
- 新規：pi05/power_ab_compare.py、pi05/POWER_AB.md、pi05/build_deep_even10_v2.sh、pi05/pos5_lift_compare.py、pi05/test_power_ab.py、pi05/test_build_deep_even10_v2.py、pi05/test_pos5_lift_compare.py
- KIOXIA：runs/experiments/pos5_lift_compare/20261112_113209/（新しく作っただけ）

■ 4. 実機で試す手順（A。今日 2A でやる分）
1. recorder.py --top --no-side を常駐させる。Pi の daemon に read_servo が入っているか確かめる。
2. ブロックを位置5 の印に置き、record_teach_demo.py measure で測る。
3. record_teach_demo.py run --teach drag_v2_20221013_233323.json --power 2A でドライランする（「電源: 2A」と出る）。
4. 同じコマンドに --execute を付けて流す。終わりの [RECORD] 爪の位置と電圧 の行で、読めた数（7:56・2:62 など）が 0 でないか、「もう読まなかった番地」がないかを見る。currents の overruns が 0 かも見る。
5. python3 pi05/grasp_depth.py {run} で深さを見る。
6. 5 分おいて、置き直して 2 回目、同じように 3 回目を撮る（3 回とも閉じる値は同じ）。
7. python3 pi05/power_ab_compare.py で集計する。summary.md の電圧の静止の値が 120 前後（12V）かを見る。

■ 5. 決めてほしいこと
1. 番地（爪の位置 56/57、電圧 62）はこの機体で確かめていない。1 回目で読めなかったり、電圧が 120 前後でなかったりしたら、その列を使うかどうか。
2. 「閉じて 1〜2 秒の電流」は、再生では閉じてからの 2 秒の待ちで読まない決まり（2026-10-19）のため取れない。代わりの「待ちのあと最初の 1 秒」でよいか。持ち上げ中を「放すまで（運ぶ間を含む）」とした定義でよいか。
3. 各回のあいだの 5 分は目安として置いた。この長さでよいか。
4. 「緩んだ」の目安：仮に 0.8（持ち上げ中の電流の最小 < 閉じた直後の中央値 × 0.8）を置ける形にした。2A の結果を見て線を決めること。
5. 2A・5A で撮った run は runs/run_pick_place に入り、台帳にも載る（recorder.py が置き場所を決めるため）。位置5 の深いお手本として使えるかたちでもある。新しい 6 本と兼ねるか、分けるか。

判定：止めた（決めてほしいことあり）
