依頼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 本と兼ねるか、分けるか。 判定:止めた(決めてほしいことあり)