# フィジカルAI研究室を作る Log#34 | mechArm 270 の電源を5Aに替え、ブロックを落とさなくなった

- 記録: LOG504（フィジカルAI研究室）
- 公開: 2026/11/13
- 記事のページ: https://pixelstomotors.com/record/mecharm-270-5a-adapter-stops-dropping-block
- サイト: Pixels to Motors（ADAPT DESIGN / 島津 栄一） https://pixelstomotors.com/
- 要約: 小型ロボットアーム mechArm 270 がブロックを落とす原因は電源の不足だった。12V・5A に替えると、π0.5 は位置5 で5回とも成功（12V・2A の日は3回中1回）。教えた動きの再生も7回すべて成功した。

> AI が読むための記事の全文です（コード・実行ログを含む）。引用するときは上の「記事のページ」の住所を使ってください。

---

**小型ロボットアーム mechArm 270 がつかんだブロックを落とす原因は、電源アダプターの不足でした。12V・2A（24W）から12V・5A（60W）に替えると、Physical Intelligence の π0.5 に動かさせた位置5 のつかみは5回とも成功し、同じモデル・同じ爪の閉じる値で12V・2A だった11月11日の3回中1回から変わりました。** 人が手で教えた動きの再生も、位置5 で6回、位置2 で1回、すべて箱に入りました。

この回の差し替えで、次のことが変わりました。

- 人が手を出す回数が減った：12V・2A の日は位置5 の3回とも、途中でゲームパッドを使って人がアームを持ち上げ直していた。12V・5A では5回のうち4回、人は Enter を押して進めるだけで終わった
- 爪の力が抜けなくなった：爪のサーボの電流は、12V・2A の日は3回とも、つかんでいる途中で0付近まで落ちていた（閉じてから26.7秒・72.4秒・103.8秒）。12V・5A では5回のうち4回、箱の上で開くまで600〜780 のまま保った
- 費用：アダプターは3,355円。この回の GPU（Runpod の A40）は2回借りて約27円と約7円
- アームの動きが目で見てきびきびした（体感。動きの速さは数字で比べていない）

前の回（[LOG487](https://pixelstomotors.com/record/mecharm-270-drops-block-underpowered-adapter)）で、位置5 の失敗はブロックまで届かないのではなく、つかんだあとに落とすものだと分かりました。爪の電流が、指令を何も送っていないのに急に抜けていたのです。アームの台座のラベルは40W を求めているのに、届いたときから使っていたアダプターは24W でした。アームは2026年3月に届き、箱に AC アダプターが入っていなかったため、あとから別に送られてきたのがこの12V・2A です。8か月の実機の記録は、すべてこの電源で取っていたことになります。

新しいアダプターが届いたので、差し替えて同じ動きを試しました。

| やったこと | なぜ | 結果 |
|---|---|---|
| Pi を落として、12V・5A に差し替える | 電源を本体の求める量より多くする | 起動し、つながった（つながるまで約3分） |
| 位置5 で教えた動きを6回再生する | 毎回同じ動きで、爪が緩むかを見る | 6回とも成功。つかんでいる間の爪の位置は1615〜1618 のまま |
| 12V・2A で同じ再生を撮るかを決める | 比べる記録を残すか | 目で見て違いがはっきりしたので撮らない |
| 位置5 で π0.5 を5回動かす | 落としていた場面そのもので確かめる | 5回とも成功。1回だけ、人が持ち上げた瞬間に爪の電流が落ちた |
| 位置2 で教えた動きを1回再生する | ほかの置き場所でも動きを見る | 成功。お手本どおりに動いた |

![新しく届いたスイッチサイエンスの AC アダプター。ラベルは出力 DC 12V・5A、型番 SNDEI3060-120050PA](https://pixelstomotors.com/media/LOG504_01_adapter_12v_5a.jpg)

実機と推論の記録は、KIOXIA の `runs/run_pick_place/run_0001_20261113_*`（再生）と `runs/pi05_policy/pi05_20261113_*`（推論）、`lab/Log34/` に入れています。

GPU を買うか借りるかの判断は、Runpod で実際に借りて学習させた費用をもとに、別のページにまとめています。

[ロボットAIの学習用GPU、買うか借りるか](https://pixelstomotors.com/gpu-buy-or-rent)

[図解: LOG504_grip_current_2a_5a.html](https://pixelstomotors.com/embeds/LOG504_grip_current_2a_5a.html)


## 作業ログ ― 電源を12V・5A に替え、位置5 と位置2 でつかみを確かめるまで

ここから下は作業の記録です。コマンド・出力・コードは全量で載せます。効果を書いた所のうち、数字で書いたものは測った値、「見込み」と書いたものはまだ確かめていない値です。

この回で何度も出てくる言葉を先に言い換えておきます。

- 位置1〜位置5：赤いブロックを置く5つの場所。お手本はこの5か所で10本ずつ撮った
- 教えた動きの再生：人がアームを手で動かして教えた要所の姿勢（ブロックの真上・つかむ位置・箱の上・放す位置）を、毎回同じ角度・同じ速さで送り直す動かし方（`record_teach_demo.py`）。AI は使わない
- π0.5：Physical Intelligence が公開しているロボット用の AI。上カメラの画像と関節の角度を見て、次の動きを出す。この回は、位置ごとに10本そろえた50本で学習したモデル deep1 を使った（[LOG480](https://pixelstomotors.com/record/retrain-pi05-from-base-on-50-even-demos)）
- 爪の電流：爪を動かすサーボが使っている電流を、サーボの番地から直接読んだ値（単位のない生の数。[LOG461](https://pixelstomotors.com/record/reading-mecharm-270-servo-current-for-learning)）。爪がブロックを押しているあいだは600〜900、開いているときはマイナス50前後、何も押していないときは0付近になる
- 爪の位置：爪のサーボの今の角度を、番地56・57 から読んだ生の値。この機体では開いたとき約2034、ブロックをつかんだとき約1617 だった
- 閉じる値：爪を閉じるときにサーボへ送る目標の値（0〜100）。再生は20、π0.5 の推論は25 で動かした
- Pod：Runpod で借りる GPU のマシン。π0.5 はこの上で動き、Mac から画像と関節の角度を送って次の動きを受け取る


## 12V・5A のアダプターに差し替え、Pi が起動するまで

### 差し替えの順番：Pi を落としてから電源を抜く

電源を差し替える手順は、前の日に `pi05/POWER_AB.md` に書いてありました。アームの電源だけを抜き差しせず、先に中の Raspberry Pi を shutdown し、ランプが消えてからアダプターを替えます。

届いたアダプターは、出力が DC 12V・5A（60W）、プラグの中心がプラスの記号でした。前に使っていた12V・2A と同じ向きです。

### 起動直後に Pi へつながらなかった理由

差し替えて電源を入れたあと、しばらく ssh も ping も返ってきませんでした。Mac の有線の口（en8）にも 192.168.2 の番号が付いておらず、Mac とアームのあいだの線がまだつながっていない状態でした。アームのサーボは力を保っていたので、電源は来ていました。数分待って同じコマンドを打つと、en8 に 192.168.2.2 が付き、ping が返り、daemon（アームを動かす Pi 側の常駐プログラム）も起動していました。差し替えの直後は、Pi の起動が終わるまで3分ほどかかったことになります。

途中の `recorder.py` のエラーは、置き場所を間違えて打ったもので、正しくは `dynamic_tracking_limits/place/place_modules/recorder.py` です。

#### 差し替えから daemon の確認までのターミナル

```text
Last login: Tue Nov 10 19:34:16 on ttys004
(base) shimazueiichi@shimadzueiichinoMacBook-Pro ~ % ssh -i ~/.ssh/id_rsa_pi ubuntu@192.168.2.1 'sudo shutdown -h now'
Connection to 192.168.2.1 closed by remote host.
(base) shimazueiichi@shimadzueiichinoMacBook-Pro ~ % cd ~/r2r2r-scripts && python3 recorder.py --top --no-side
python3: can't open file '/Users/shimazueiichi/r2r2r-scripts/recorder.py': [Errno 2] No such file or directory
(base) shimazueiichi@shimadzueiichinoMacBook-Pro r2r2r-scripts % cd ~/r2r2r-scripts
ssh -i ~/.ssh/id_rsa_pi ubuntu@192.168.2.1 'echo ok'
bash tools/daemon_ctl.sh status
ssh: connect to host 192.168.2.1 port 22: Operation timed out
ssh: connect to host 192.168.2.1 port 22: Operation timed out
(base) shimazueiichi@shimadzueiichinoMacBook-Pro r2r2r-scripts % ping -c 3 192.168.2.1
PING 192.168.2.1 (192.168.2.1): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1

--- 192.168.2.1 ping statistics ---
3 packets transmitted, 0 packets received, 100.0% packet loss
(base) shimazueiichi@shimadzueiichinoMacBook-Pro r2r2r-scripts % bash tools/daemon_ctl.sh status
ssh: connect to host 192.168.2.1 port 22: Operation timed out
(base) shimazueiichi@shimadzueiichinoMacBook-Pro r2r2r-scripts % ping -c 3 192.168.2.1
PING 192.168.2.1 (192.168.2.1): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1

--- 192.168.2.1 ping statistics ---
3 packets transmitted, 0 packets received, 100.0% packet loss
(base) shimazueiichi@shimadzueiichinoMacBook-Pro r2r2r-scripts % ifconfig | grep -B4 "192.168.2"
(base) shimazueiichi@shimadzueiichinoMacBook-Pro r2r2r-scripts % ifconfig | grep -B4 "192.168.2"
ping -c 3 192.168.2.1
en8: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	options=6464<VLAN_MTU,TSO4,TSO6,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM>
	ether 00:e0:4c:46:23:48
	inet6 fe80::188e:3b4f:ba1:e28%en8 prefixlen 64 secured scopeid 0x16 
	inet 192.168.2.2 netmask 0xffffff00 broadcast 192.168.2.255
PING 192.168.2.1 (192.168.2.1): 56 data bytes
64 bytes from 192.168.2.1: icmp_seq=0 ttl=64 time=1.886 ms
64 bytes from 192.168.2.1: icmp_seq=1 ttl=64 time=1.249 ms
64 bytes from 192.168.2.1: icmp_seq=2 ttl=64 time=1.497 ms

--- 192.168.2.1 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 1.249/1.544/1.886/0.262 ms
(base) shimazueiichi@shimadzueiichinoMacBook-Pro r2r2r-scripts % bash tools/daemon_ctl.sh status
ssh: connect to host 192.168.2.1 port 22: Operation timed out
(base) shimazueiichi@shimadzueiichinoMacBook-Pro r2r2r-scripts % bash tools/daemon_ctl.sh status
--- process
512 /usr/bin/python3 -u /home/ubuntu/mecharm_daemon.py
--- 5555
LISTEN0      1                                 0.0.0.0:5555        0.0.0.0:*    
--- systemd
enabled: enabled
active:  active
```


## 位置5 で教えた動きを12V・5A で6回再生した

### 再生のコマンドと、記録に足したもの

位置5 の教えた記録 `drag_v2_20221013_233323.json` を、`--power 5A` を付けて再生しました。`--power` を付けると、いつもの記録（上カメラの映像・関節の角度・爪と肩の電流）に、爪の位置（サーボ7 の番地56・57）と電圧（肩のサーボ2 と爪のサーボ7 の番地62）が足されます。前の日に電源の比べのために入れた仕組みで、実機で通したのはこれが初めてです。

- ねらい：爪が緩むかを、目で見た感じではなく、爪の位置と電流と電圧の数字で確かめる
- 変わったこと：足した番地は4つとも、1回あたり17〜24回読めた（読めなかった番地はない）
- 見込める効果：これから電源・爪の閉じる値・つかむ物を変えたときも、同じ列で前後を並べられる

### 6回の数字：爪の位置は1615〜1618 のまま動かなかった

6回とも、つかんで箱に入りました。つかんでいる間の数字は次のとおりです。

| 試行 | 運ぶ間の爪の電流 | つかんでいる間の爪の位置 | 電圧（肩 / 爪） |
|---|---|---|---|
| 19:13（run_0001_20261113_191353） | 907→877 | 1618 | 70〜72 / 69〜74 |
| 19:17（191709） | 894→848 | 1617 | 69〜72 / 67〜75 |
| 19:18（191807） | 893→868 | 1615 | 70〜73 / 70〜74 |
| 19:19（191916） | 878→858 | 1618 | 71〜72 / 68〜74 |
| 19:20（192043） | 871→852 | 1618 | 70〜72 / 70〜74 |
| 19:22（192223） | 865→850 | 1617 | 71〜72 / 68〜75 |

**つかんでいる間、爪の位置は6回とも1615〜1618 から動かず、開く向きに戻った回はありませんでした。** 爪の電流は1回の中で3〜5% ずつ下がり、回を重ねるごとに出だしの値も907 から865 へ下がっています。原因は確かめていません。

電圧の番地62 は、69〜75 の間で落ち着いていました。手順書には「0.1V 単位なら12V で120前後になるはず」と書いていましたが、実際はそれより低い値です。サーボに届く電圧が12V から下げてあるなら7.2V 前後を示していると読めますが、この番地の単位はこの機体ではまだ確かめていません。持ち上げで急に下がる様子はありませんでした。

19:13 の1回目のあとに、爪の位置と電圧の生の値を開いて見ました。開いた状態が2034、ブロックをつかんで運んでいる間が1618 で、箱の上で開くとまた2034 に戻っています。

```text
ts,r7_56,r7_57,gripper_pos,r2_62,r7_62,note
1794564836.007821,64,7,1856,,,
1794564836.289328,,,,71,72,
1794564836.410041,64,7,1856,,,
1794564836.690279,,,,71,72,
1794564837.090282,64,7,1856,,,
1794564837.490369,,,,72,73,
1794564837.610246,63,7,1855,,,
1794564837.886076,,,,72,73,
1794564838.300705,63,7,1855,,,
1794564838.411324,,,,72,74,
1794564838.700701,63,7,1855,,,
1794564838.813386,,,,72,73,
1794564839.342287,63,7,1855,,,
1794564839.666017,,,,72,72,
1794564839.990259,63,7,1855,,,
1794564847.396785,,,,72,74,
1794564847.721627,242,7,2034,,,
1794564848.033381,,,,72,72,
1794564848.357695,242,7,2034,,,
1794564848.685924,,,,72,71,
1794564849.325770,242,7,2034,,,
1794564849.649592,,,,70,71,
1794564849.992583,242,7,2034,,,
1794564850.320003,,,,72,73,
1794564850.650722,242,7,2034,,,
1794564850.951843,,,,72,74,
1794564852.373621,244,7,2036,,,
1794564852.701508,,,,72,73,
1794564853.023256,244,7,2036,,,
1794564857.529508,,,,71,69,
1794564858.957396,82,6,1618,,,
1794564859.274433,,,,72,70,
1794564859.600132,82,6,1618,,,
1794564868.109303,,,,72,73,
1794564868.433587,242,7,2034,,,
1794564868.753541,,,,71,74,
```

19:22 の6回目は、ターミナルの画面を録画しました。KIOXIA の `runs/run_pick_place/run_0001_20261113_192223/screen_terminal_20261113_192205.mp4`（約60秒）に置いています。

### measure でマットの四隅が806px ずれて見えた件

再生の前の measure（上カメラでブロックと箱の位置を測る段）で、マットの四隅の1つが806px ずれて検出され、「この measure の homography は信用できません」と出ていました。ブロックの位置は5回とも同じ値で、再生は決まった角度で動くので、この回の結果には影響していません。6回目の前だけ、ブロックの位置が (-527.5, +251.4)mm と大きく外れて出ていますが、ブロックはそのまま位置5 にあり、つかめています。四隅の見間違いか、カメラがずれたのかは、確認画像（`mecharm_calibration/teach_poses_20261113/measure_20261113_191316.jpg`）でまだ見ていません。

#### 1回目：measure・ドライラン・再生のターミナル

```text
(base) shimazueiichi@shimadzueiichinoMacBook-Pro r2r2r-scripts % cd ~/r2r2r-scripts
python3 dynamic_tracking_limits/drag_teaching/record_teach_demo.py measure
python3 dynamic_tracking_limits/drag_teaching/record_teach_demo.py run --teach drag_v2_20221013_233323.json --power 5A
python3 dynamic_tracking_limits/drag_teaching/record_teach_demo.py run --teach drag_v2_20221013_233323.json --power 5A --execute
[RTD   ] 到達許容差は本線 run_pick_place.py の stage 値を使います（区間ごと。一律 8.0° は 2026-10-19 にやめた）:
[RTD   ]   HOME                       2.5°  ← rpp.TOL_HOME（stage1_to_home / HOME 復帰）
[RTD   ]   APPROACH_PICK              2.0°  ← rpp.TOL_APPROACH（approach 系）
[RTD   ]   PICK                       3.0°  ← rpp.TOL_PICK_PLACE（stage4_pick）
[RTD   ]   APPROACH_PICK (lift)       3.0°  ← rpp.TOL_LIFT_BACK（lift の残差 2.19° を吸収）
[RTD   ]   APPROACH_PLACE             3.0°  ← rpp.TOL_APPROACH_PLACE（stage7）
[RTD   ]   PLACE                      3.0°  ← rpp.TOL_PICK_PLACE（stage8_place）
[RTD   ]   APPROACH_PLACE (retreat)   3.0°  ← rpp.TOL_LIFT_BACK（stage10_lift_back）
[RTD   ] 到達を待つ最大時間 = clamp(2.0 + max|Δ|/20*3.0, 8.0, 30.0) 秒（本線と同じ wr._compute_arrival_timeout）
[RTD   ] measure: 上カメラで検出します（repeat=5 interval=0.3s）
[CAM] 接続中カメラ一覧:
  index=0  name=FaceTime HDカメラ
  index=1  name=Iriun Camera
  index=2  name=‎iPhone14 Pro MAXのカメラ
[CAM] 上カメラ(iPhone)  index=2
[CAM] 横カメラ(Iriun)   index=1
[DETECT] resolved top index: 2
[Mac] マット四隅検出中... (10フレーム)
[Mac] ✓ マット四隅検出: 9/10 フレーム成功
[Mac] ✓ 動的homography計算完了
[Mac] ✓ マット範囲: X=[116, 1197] Y=[0, 969]
[06f] TEMPLATES_DIR overridden to: /Users/shimazueiichi/r2r2r-scripts/dynamic_tracking_limits/place/templates
[06f] ROTATION_ANGLES_DEG overridden to: [0, 15, 30, 45, 60, 75]
[06f] SCALES overridden to: [0.85, 1.0, 1.15]
[テンプレ] loading white box templates from: /Users/shimazueiichi/r2r2r-scripts/dynamic_tracking_limits/place/templates
[テンプレ] glob '/Users/shimazueiichi/r2r2r-scripts/dynamic_tracking_limits/place/templates/*.png' → 8 file(s)
[テンプレ]   - white_box_20260520_163829_004.png
[テンプレ]   - white_box_20260520_163838_005.png
[テンプレ]   - white_box_20260520_163846_006.png
[テンプレ]   - white_box_20260520_163905_009.png
[テンプレ]   - white_box_20260520_163912_010.png
[テンプレ]   - white_box_20260520_163918_011.png
[テンプレ]   - white_box_20260520_163923_012.png
[テンプレ]   - white_box_20260520_163929_013.png
[テンプレ] 計 8 枚 (day165=8, auto=0)
[06f] WARN: 輪郭検出失敗 → テンプレ中心に fallback
[06f] DETECT: center=(734,890) source=template_fallback score=0.518 angle=0° scale=0.85 size=(158x158) template=white_box_20260520_163923_012.png (eval 5.77s)
[DETECT][1/5] box Unity=(-0.017,+0.351) score=0.5183433294296265
  赤ブロック pixel=(990, 640) → Unity=(-0.2639, 0.2779)
[DETECT][1/5] block Unity=(-0.264,+0.278) score=null
[06f] WARN: 輪郭検出失敗 → テンプレ中心に fallback
[06f] DETECT: center=(936,890) source=template_fallback score=0.577 angle=0° scale=0.85 size=(158x158) template=white_box_20260520_163923_012.png (eval 5.79s)
[DETECT][2/5] box Unity=(-0.144,+0.355) score=0.5769586563110352
  赤ブロック pixel=(990, 640) → Unity=(-0.2639, 0.2779)
[DETECT][2/5] block Unity=(-0.264,+0.278) score=null
[06f] WARN: 輪郭検出失敗 → テンプレ中心に fallback
[06f] DETECT: center=(1029,880) source=template_fallback score=0.577 angle=0° scale=0.85 size=(158x158) template=white_box_20260520_163923_012.png (eval 5.82s)
[DETECT][3/5] box Unity=(-0.206,+0.354) score=0.5769842863082886
  赤ブロック pixel=(990, 640) → Unity=(-0.2639, 0.2779)
[DETECT][3/5] block Unity=(-0.264,+0.278) score=null
[06f] WARN: 輪郭検出失敗 → テンプレ中心に fallback
[06f] DETECT: center=(936,890) source=template_fallback score=0.577 angle=0° scale=0.85 size=(158x158) template=white_box_20260520_163923_012.png (eval 5.82s)
[DETECT][4/5] box Unity=(-0.144,+0.355) score=0.5770441889762878
  赤ブロック pixel=(990, 640) → Unity=(-0.2639, 0.2779)
[DETECT][4/5] block Unity=(-0.264,+0.278) score=null
[06f] WARN: 輪郭検出失敗 → テンプレ中心に fallback
[06f] DETECT: center=(936,890) source=template_fallback score=0.577 angle=0° scale=0.85 size=(158x158) template=white_box_20260520_163923_012.png (eval 5.73s)
[DETECT][5/5] box Unity=(-0.144,+0.355) score=0.5770353078842163
  赤ブロック pixel=(990, 640) → Unity=(-0.2639, 0.2779)
[DETECT][5/5] block Unity=(-0.264,+0.278) score=null
[RTD   ] measure: block = (-263.9, +277.9) mm
[RTD   ] measure: box   = (-143.5, +355.0) mm  score=0.5769842863082886
[RTD   ] [WARN] measure: 四隅が最大 806.4px ずれています（1 回目 / 上限 15.0px）。測り直します
[RTD   ] [WARN] measure: 四隅が最大 806.4px ずれています（2 回目 / 上限 15.0px）。測り直します
[RTD   ] [WARN] measure: 四隅が最大 806.4px ずれています（3 回目 / 上限 15.0px）。やり直しの上限に達しました
[RTD   ] 確認画像: /Volumes/KIOXIA/r2r2r-data/mecharm_calibration/teach_poses_20261113/measure_20261113_191316.jpg
[RTD   ] homography のもとになった四隅と、測り直した四隅の差: 最大 806.4px（上限 15.0px・やり直し 3 回）
[RTD   ] [WARN] この measure の homography は信用できません: マット四隅が測り直しと 3 回とも食い違った（各回の最大: 806.4, 806.4, 806.4）。mm の値が外れている可能性があります（WARN のみ・保存します）
[RTD   ] 確認画像: /Volumes/KIOXIA/r2r2r-data/mecharm_calibration/teach_poses_20261113/measure_20261113_191316.jpg
[RTD   ] ブロックのばらつき: 0.0px = 0.00mm（5 枚・上限 4.0mm）
[RTD   ] 元の検出と測り直しの差: 0.00mm（上限 3.0mm）
[RTD   ] 保存しました: /Volumes/KIOXIA/r2r2r-data/mecharm_calibration/teach_poses_20261113/measure_20261113_191316.json
[RTD   ] [WARN] この measure には WARN が 1 件あります: mat_corner_mismatch
[RTD   ] [WARN] 値が外れている可能性があります。気になるなら取り直してください（保存はしてあります）
[RTD   ] 次は Pi で教示 → daemon 起動 → recorder.py --top --no-side 常駐 → run --teach <file> --execute
[RTD   ] 到達許容差は本線 run_pick_place.py の stage 値を使います（区間ごと。一律 8.0° は 2026-10-19 にやめた）:
[RTD   ]   HOME                       2.5°  ← rpp.TOL_HOME（stage1_to_home / HOME 復帰）
[RTD   ]   APPROACH_PICK              2.0°  ← rpp.TOL_APPROACH（approach 系）
[RTD   ]   PICK                       3.0°  ← rpp.TOL_PICK_PLACE（stage4_pick）
[RTD   ]   APPROACH_PICK (lift)       3.0°  ← rpp.TOL_LIFT_BACK（lift の残差 2.19° を吸収）
[RTD   ]   APPROACH_PLACE             3.0°  ← rpp.TOL_APPROACH_PLACE（stage7）
[RTD   ]   PLACE                      3.0°  ← rpp.TOL_PICK_PLACE（stage8_place）
[RTD   ]   APPROACH_PLACE (retreat)   3.0°  ← rpp.TOL_LIFT_BACK（stage10_lift_back）
[RTD   ] 到達を待つ最大時間 = clamp(2.0 + max|Δ|/20*3.0, 8.0, 30.0) 秒（本線と同じ wr._compute_arrival_timeout）
[RTD   ] 爪の閉じる値: 20（既定）
[RTD   ] 電源: 5A（--power。試行 JSON の power に残し、爪の位置と電圧も読みます）
[RTD   ] モード: ドライラン（アームに何も送りません）
[RTD   ] Pi から教えた記録を取得します: ubuntu@192.168.2.1:r2r2r-scripts/dynamic_tracking_limits/drag_teaching/drag_v2_20221013_233323.json
[RTD   ] 取得しました → /var/folders/5w/2q2mc64n6yv63gfh31h34w6h0000gn/T/record_teach_demo_3raxsiam/drag_v2_20221013_233323.json
[RTD   ] 入力ファイル: drag_v2_20221013_233323.json
[RTD   ] 抽出ウェイポイント:
  APPROACH_PICK  <- phase APPROACH_PICK argmax_idx=175 (start=175 end=233, gap=14.85°)
                    angles = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
  PICK           <- gripper close mark idx=247（PICK phase 範囲内）
                    angles = [ +13.09,  +59.23,  +18.54,   -3.25,  -60.11,  -27.07]
  APPROACH_PLACE <- phase APPROACH_PLACE argmax_idx=350 (start=350 end=390, gap=15.39°)
                    angles = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
  PLACE          <- gripper open mark idx=400（PLACE phase 範囲内）
                    angles = [ +43.06,  +66.00,   -5.97,   +6.67,  -62.05,  -35.33]
[RTD   ] JOINT_LIMITS 一括検証 OK（全 endpoint + HOME）
[RTD   ] 姿勢検査 OK（全 116 姿勢が 有限値 + JOINT_LIMITS + J4_SAFE [-90.0, +60.0] 内）
[RTD   ] j4 の余裕は最小 22.94°（しきい値 3.0° 以上）
==============================================================================
[RTD   ] 実行プラン（daemon 経由・区間ごとに 1 回送信 → 到達待ち）
==============================================================================
  [STEP  1] MOVE → HOME (single send + settle)  speed=20
            current = 未取得（ドライラン・daemon に接続していない）
            to HOME = [  +0.00,   +0.00,   +0.00,   +0.00,   +0.00,  -30.00]
  [STEP  2] GRIPPER OPEN  daemon_set_gripper(0, 50, wait=0) ×1 回（daemon 事前 2.0s + 事後 2.0s + 待ち 2.0s）= 計 6.0s
            開いたかは確認しません（gv を使わず・開始前の y/n も無し。判定は終了後の y/n と動画）
  [STEP  3] MOVE → APPROACH_PICK  segment HOME → APPROACH_PICK  tol=2.0°  [rpp.TOL_APPROACH（approach 系）]
            from    = [  +0.00,   +0.00,   +0.00,   +0.00,   +0.00,  -30.00]
            to      = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
            max |Δ| = 67.06°  1 回送信 speed=20  (~ 3.4s @ 20°/s 目安・到達待ち 最大 12.1s)
  [STEP  4] MOVE → PICK  segment APPROACH_PICK → PICK  [critical]  tol=3.0°  [rpp.TOL_PICK_PLACE（stage4_pick）]
            from    = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
            to      = [ +13.09,  +59.23,  +18.54,   -3.25,  -60.11,  -27.07]
            max |Δ| = 14.85°  1 回送信 speed=20  (~ 0.7s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP  5] GRIPPER CLOSE  daemon_set_gripper_value(20, 50) + sleep(2.0s)
  [STEP  6] MOVE → APPROACH_PICK (lift)  segment PICK → APPROACH_PICK (lift)  tol=3.0°  [rpp.TOL_LIFT_BACK（lift の残差 2.19° を吸収）]
            from    = [ +13.09,  +59.23,  +18.54,   -3.25,  -60.11,  -27.07]
            to      = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
            max |Δ| = 14.85°  1 回送信 speed=20  (~ 0.7s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP  7] MOVE → APPROACH_PLACE  segment APPROACH_PICK → APPROACH_PLACE  tol=3.0°  [rpp.TOL_APPROACH_PLACE（stage7）]
            from    = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
            to      = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
            max |Δ| = 36.38°  1 回送信 speed=20  (~ 1.8s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP  8] MOVE → PLACE  segment APPROACH_PLACE → PLACE  [critical]  tol=3.0°  [rpp.TOL_PICK_PLACE（stage8_place）]
            from    = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
            to      = [ +43.06,  +66.00,   -5.97,   +6.67,  -62.05,  -35.33]
            max |Δ| = 15.39°  1 回送信 speed=20  (~ 0.8s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP  9] GRIPPER OPEN  daemon_set_gripper(0, 50, wait=0) ×1 回（daemon 事前 2.0s + 事後 2.0s + 待ち 2.0s）= 計 6.0s
            開いたかは確認しません（gv を使わず・開始前の y/n も無し。判定は終了後の y/n と動画）
  [STEP 10] MOVE → APPROACH_PLACE (retreat)  segment PLACE → APPROACH_PLACE (retreat)  tol=3.0°  [rpp.TOL_LIFT_BACK（stage10_lift_back）]
            from    = [ +43.06,  +66.00,   -5.97,   +6.67,  -62.05,  -35.33]
            to      = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
            max |Δ| = 15.39°  1 回送信 speed=20  (~ 0.8s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP 11] MOVE → HOME  segment APPROACH_PLACE → HOME  tol=2.5°  [rpp.TOL_HOME（stage1_to_home / HOME 復帰）]
            from    = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
            to      = [  +0.00,   +0.00,   +0.00,   +0.00,   +0.00,  -30.00]
            max |Δ| = 50.62°  1 回送信 speed=20  (~ 2.5s @ 20°/s 目安・到達待ち 最大 9.6s)
==============================================================================
[RTD   ] 送信 = 8 回（STEP 1 + move 7 区間）, 想定所要時間 ≈ 27.7s（最悪 73.0s）
[RTD   ]   内訳: 先頭 settle 3.0s + 移動 10.7s（max|Δ| 合計 214.5° @ 20°/s 目安） + gripper 14.0s
[RTD   ]   到達確認: 許容は区間ごと（本線 run_pick_place.py の stage 値）/ 最大は clamp(2.0 + max|Δ|/20*3.0, 8.0, 30.0) 秒
[RTD   ]   届かないとき: 送信前から 1.0° 未満しか動いていなければ 5.0s 待って**同じ目標へ 1 回だけ**再送（本線と同じ）。それでも届かなければ ABORT（HOME へ自動で戻らない）
[RTD   ]   実測 j4: [-90.0, +60.0] の外は WARN / [-98.0, +68.0] の外は ABORT
==============================================================================
[RTD   ] measure: /Volumes/KIOXIA/r2r2r-data/mecharm_calibration/teach_poses_20261113/measure_20261113_191316.json
[RTD   ]   measured_at = 2026-11-13T19:13:21.449689  block = (-263.9, +277.9) mm  box = (-143.5, +355.0) mm
[RTD   ] 再生直前: 上カメラでマット四隅とブロック画素を確認します
[RTD   ] [WARN] 再生直前: 四隅が最大 806.4px ずれています（1 回目 / 上限 15.0px）。測り直します
[RTD   ] [WARN] 再生直前: 四隅が最大 806.4px ずれています（2 回目 / 上限 15.0px）。測り直します
[RTD   ] [WARN] 再生直前: 四隅が最大 806.4px ずれています（3 回目 / 上限 15.0px）。やり直しの上限に達しました
[RTD   ] 再生直前: block = (-263.9, +277.9) mm（measure の homography で換算）
[RTD   ] 確認画像: /Volumes/KIOXIA/r2r2r-data/mecharm_calibration/teach_poses_20261113/prerun_20261113_191323.jpg
[RTD   ] 弾いた理由と各回の記録を残しました: /Volumes/KIOXIA/r2r2r-data/mecharm_calibration/teach_poses_20261113/prerun_20261113_191323_rejected.json
[RTD   ] [WARN] マット四隅が measure 時から最大 806.4px ずれています（上限 15.0px・最大 3 回やり直しても収まらず）。カメラが動いた可能性があるので止めます。measure を取り直してください（各隅のずれ: 1.0, 806.4, 390.0, 4.0）（**止めません**・WARN のみ）
[RTD   ] ドライランなので、ここで終了します（アームには何も送っていません）
[RTD   ] Pi 版と比べる点: 抽出ウェイポイント 4 姿勢と各区間の max|Δ| は同じ。送り方は単発（Pi 版は 0.1s 補間ストリーミング）なので n_steps / ticks は比較対象外。送信 8 回 / 想定所要 ≈ 27.7s
[RTD   ] 到達許容差は本線 run_pick_place.py の stage 値を使います（区間ごと。一律 8.0° は 2026-10-19 にやめた）:
[RTD   ]   HOME                       2.5°  ← rpp.TOL_HOME（stage1_to_home / HOME 復帰）
[RTD   ]   APPROACH_PICK              2.0°  ← rpp.TOL_APPROACH（approach 系）
[RTD   ]   PICK                       3.0°  ← rpp.TOL_PICK_PLACE（stage4_pick）
[RTD   ]   APPROACH_PICK (lift)       3.0°  ← rpp.TOL_LIFT_BACK（lift の残差 2.19° を吸収）
[RTD   ]   APPROACH_PLACE             3.0°  ← rpp.TOL_APPROACH_PLACE（stage7）
[RTD   ]   PLACE                      3.0°  ← rpp.TOL_PICK_PLACE（stage8_place）
[RTD   ]   APPROACH_PLACE (retreat)   3.0°  ← rpp.TOL_LIFT_BACK（stage10_lift_back）
[RTD   ] 到達を待つ最大時間 = clamp(2.0 + max|Δ|/20*3.0, 8.0, 30.0) 秒（本線と同じ wr._compute_arrival_timeout）
[RTD   ] 爪の閉じる値: 20（既定）
[RTD   ] 電源: 5A（--power。試行 JSON の power に残し、爪の位置と電圧も読みます）
[RTD   ] モード: EXECUTE（実機）  記録: ON
[RTD   ] Pi から教えた記録を取得します: ubuntu@192.168.2.1:r2r2r-scripts/dynamic_tracking_limits/drag_teaching/drag_v2_20221013_233323.json
[RTD   ] 取得しました → /var/folders/5w/2q2mc64n6yv63gfh31h34w6h0000gn/T/record_teach_demo_nrezy0ka/drag_v2_20221013_233323.json
[RTD   ] 入力ファイル: drag_v2_20221013_233323.json
[RTD   ] 抽出ウェイポイント:
  APPROACH_PICK  <- phase APPROACH_PICK argmax_idx=175 (start=175 end=233, gap=14.85°)
                    angles = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
  PICK           <- gripper close mark idx=247（PICK phase 範囲内）
                    angles = [ +13.09,  +59.23,  +18.54,   -3.25,  -60.11,  -27.07]
  APPROACH_PLACE <- phase APPROACH_PLACE argmax_idx=350 (start=350 end=390, gap=15.39°)
                    angles = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
  PLACE          <- gripper open mark idx=400（PLACE phase 範囲内）
                    angles = [ +43.06,  +66.00,   -5.97,   +6.67,  -62.05,  -35.33]
[RTD   ] JOINT_LIMITS 一括検証 OK（全 endpoint + HOME）
[RTD   ] 姿勢検査 OK（全 116 姿勢が 有限値 + JOINT_LIMITS + J4_SAFE [-90.0, +60.0] 内）
[RTD   ] j4 の余裕は最小 22.94°（しきい値 3.0° 以上）
[RTD   ] 現在姿勢を daemon から取得します
[RTD   ] 現在姿勢 = [ +26.01, +103.09,  -74.35,   +2.37,  -37.35,  -32.51]
==============================================================================
[RTD   ] 実行プラン（daemon 経由・区間ごとに 1 回送信 → 到達待ち）
==============================================================================
  [STEP  1] MOVE → HOME (single send + settle)  speed=20
            current = [ +26.01, +103.09,  -74.35,   +2.37,  -37.35,  -32.51]
            to HOME = [  +0.00,   +0.00,   +0.00,   +0.00,   +0.00,  -30.00]
            max |Δ| = 103.09°  (settle 3.0s)
  [STEP  2] GRIPPER OPEN  daemon_set_gripper(0, 50, wait=0) ×1 回（daemon 事前 2.0s + 事後 2.0s + 待ち 2.0s）= 計 6.0s
            開いたかは確認しません（gv を使わず・開始前の y/n も無し。判定は終了後の y/n と動画）
  [STEP  3] MOVE → APPROACH_PICK  segment HOME → APPROACH_PICK  tol=2.0°  [rpp.TOL_APPROACH（approach 系）]
            from    = [  +0.00,   +0.00,   +0.00,   +0.00,   +0.00,  -30.00]
            to      = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
            max |Δ| = 67.06°  1 回送信 speed=20  (~ 3.4s @ 20°/s 目安・到達待ち 最大 12.1s)
  [STEP  4] MOVE → PICK  segment APPROACH_PICK → PICK  [critical]  tol=3.0°  [rpp.TOL_PICK_PLACE（stage4_pick）]
            from    = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
            to      = [ +13.09,  +59.23,  +18.54,   -3.25,  -60.11,  -27.07]
            max |Δ| = 14.85°  1 回送信 speed=20  (~ 0.7s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP  5] GRIPPER CLOSE  daemon_set_gripper_value(20, 50) + sleep(2.0s)
  [STEP  6] MOVE → APPROACH_PICK (lift)  segment PICK → APPROACH_PICK (lift)  tol=3.0°  [rpp.TOL_LIFT_BACK（lift の残差 2.19° を吸収）]
            from    = [ +13.09,  +59.23,  +18.54,   -3.25,  -60.11,  -27.07]
            to      = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
            max |Δ| = 14.85°  1 回送信 speed=20  (~ 0.7s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP  7] MOVE → APPROACH_PLACE  segment APPROACH_PICK → APPROACH_PLACE  tol=3.0°  [rpp.TOL_APPROACH_PLACE（stage7）]
            from    = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
            to      = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
            max |Δ| = 36.38°  1 回送信 speed=20  (~ 1.8s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP  8] MOVE → PLACE  segment APPROACH_PLACE → PLACE  [critical]  tol=3.0°  [rpp.TOL_PICK_PLACE（stage8_place）]
            from    = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
            to      = [ +43.06,  +66.00,   -5.97,   +6.67,  -62.05,  -35.33]
            max |Δ| = 15.39°  1 回送信 speed=20  (~ 0.8s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP  9] GRIPPER OPEN  daemon_set_gripper(0, 50, wait=0) ×1 回（daemon 事前 2.0s + 事後 2.0s + 待ち 2.0s）= 計 6.0s
            開いたかは確認しません（gv を使わず・開始前の y/n も無し。判定は終了後の y/n と動画）
  [STEP 10] MOVE → APPROACH_PLACE (retreat)  segment PLACE → APPROACH_PLACE (retreat)  tol=3.0°  [rpp.TOL_LIFT_BACK（stage10_lift_back）]
            from    = [ +43.06,  +66.00,   -5.97,   +6.67,  -62.05,  -35.33]
            to      = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
            max |Δ| = 15.39°  1 回送信 speed=20  (~ 0.8s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP 11] MOVE → HOME  segment APPROACH_PLACE → HOME  tol=2.5°  [rpp.TOL_HOME（stage1_to_home / HOME 復帰）]
            from    = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
            to      = [  +0.00,   +0.00,   +0.00,   +0.00,   +0.00,  -30.00]
            max |Δ| = 50.62°  1 回送信 speed=20  (~ 2.5s @ 20°/s 目安・到達待ち 最大 9.6s)
==============================================================================
[RTD   ] 送信 = 8 回（STEP 1 + move 7 区間）, 想定所要時間 ≈ 27.7s（最悪 73.0s）
[RTD   ]   内訳: 先頭 settle 3.0s + 移動 10.7s（max|Δ| 合計 214.5° @ 20°/s 目安） + gripper 14.0s
[RTD   ]   到達確認: 許容は区間ごと（本線 run_pick_place.py の stage 値）/ 最大は clamp(2.0 + max|Δ|/20*3.0, 8.0, 30.0) 秒
[RTD   ]   届かないとき: 送信前から 1.0° 未満しか動いていなければ 5.0s 待って**同じ目標へ 1 回だけ**再送（本線と同じ）。それでも届かなければ ABORT（HOME へ自動で戻らない）
[RTD   ]   実測 j4: [-90.0, +60.0] の外は WARN / [-98.0, +68.0] の外は ABORT
==============================================================================
[RTD   ] measure: /Volumes/KIOXIA/r2r2r-data/mecharm_calibration/teach_poses_20261113/measure_20261113_191316.json
[RTD   ]   measured_at = 2026-11-13T19:13:21.449689  block = (-263.9, +277.9) mm  box = (-143.5, +355.0) mm
[RTD   ] 再生直前: 上カメラでマット四隅とブロック画素を確認します
[RTD   ] [WARN] 再生直前: 四隅が最大 806.4px ずれています（1 回目 / 上限 15.0px）。測り直します
[RTD   ] [WARN] 再生直前: 四隅が最大 806.4px ずれています（2 回目 / 上限 15.0px）。測り直します
[RTD   ] [WARN] 再生直前: 四隅が最大 806.4px ずれています（3 回目 / 上限 15.0px）。やり直しの上限に達しました
[RTD   ] 再生直前: block = (-263.9, +277.9) mm（measure の homography で換算）
[RTD   ] 確認画像: /Volumes/KIOXIA/r2r2r-data/mecharm_calibration/teach_poses_20261113/prerun_20261113_191331.jpg
[RTD   ] 弾いた理由と各回の記録を残しました: /Volumes/KIOXIA/r2r2r-data/mecharm_calibration/teach_poses_20261113/prerun_20261113_191331_rejected.json
[RTD   ] [WARN] マット四隅が measure 時から最大 806.4px ずれています（上限 15.0px・最大 3 回やり直しても収まらず）。カメラが動いた可能性があるので止めます。measure を取り直してください（各隅のずれ: 1.0, 806.4, 390.0, 4.0）（**止めません**・WARN のみ）
[RTD   ] [SAFETY] 再生中はグリッパーが実機で開閉します。爪に指を挟まないこと。
[RTD   ] [SAFETY] 止めるときはアームの電源を切ること。Ctrl-C は新しい送信をやめるだけで、進行中の移動は止まりません。
[RTD   ] [SAFETY] 開いたかの自動確認はしません（gv は使わない）。STEP 2 で open を送ってから PICK へ降ります。
[RTD   ] 周囲に手・物が無いか確認してください。OK なら Enter で開始

[RTD   ] [WARN] 先頭移動の最大軸差 103.09° > 30.0°。急加速の可能性があります
[RTD   ] 続行するには 'yes' と入力してください（それ以外は中止）
yes
[RTD   ] 試行フォルダ: /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_191353
[RTD   ] 教えた記録のコピー: /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_191353/teach/drag_v2_20221013_233323.json
[RTD   ] recorder に trial_start を送りました。1.0s 待ってから動き出します（mp4 writer が開くまで）
[RTD   ] 爪と肩の電流を 1 秒 10 回で記録します（爪を動かしている間は読みません）→ /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_191353/recording/currents.csv
[RTD   ] 電源 5A: 爪の位置（番地 7:56/57）と電圧（2:62・7:62）も読みます（生の値・未確認の番地）→ /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_191353/recording/power_regs.csv
  [Pi] fresh_mode=1
[RTD   ] daemon_set_fresh_mode(1)（最新コマンド優先・本線 run_pick_place.py L3976 と同じ。647 試行の実績はこの状態）
[STEP  1] MOVE → HOME  daemon_send_angles(HOME, 20)
[STEP  1] 到達待ち 許容 2.5°[TOL_HOME（stage1_to_home / HOME 復帰）] / 最大 17.5s
[RTD   ] 先頭移動: 送信直前の実測で max|Δ| = 103.09° / 到達待ち 最大 17.5s
[RTD   ] [WARN] 送信直前の実測では current → HOME が 103.09°（> 30.0°）あります。周囲に手・物が無いか、もう一度目で確かめてください
[STEP  1] 3.0s 待ちます（settle）
[RTD   ] arrival OK (current → HOME, max|Δ|=1.40° <= tol 2.5°)
[STEP  2] GRIPPER OPEN → daemon_set_gripper(0, 50, wait=0)
[RTD   ] 静止確認 OK（step2_open: 連続 3 回・連続差 最大 0.26° <= 1.0°）
  [Pi] GRIPPER: OPEN result= None
[RTD   ] gripper open (1/1 回目) の daemon 往復 = 2.014s
[STEP  2] open 後 2.0s 待ちます（本線の daemon wait=2 相当・読み取りなし）
[STEP  2] gripper dwell 2.0s（読み取りなし）
[STEP  3] MOVE → APPROACH_PICK  segment HOME → APPROACH_PICK  (1 回送信 speed=20 → 到達待ち 許容 2.0°[TOL_APPROACH（approach 系）] / 最大 12.1s)
[RTD   ] 送信 OK（daemon 往復 1.033s）
[RTD   ] arrival OK (HOME → APPROACH_PICK, max|Δ|=0.88° <= tol 2.0°)
[STEP  4] MOVE → PICK  segment APPROACH_PICK → PICK  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_PICK_PLACE（stage4_pick）] / 最大 8.0s)  [critical]
[RTD   ] 送信 OK（daemon 往復 1.031s）
[RTD   ] arrival OK (APPROACH_PICK → PICK, max|Δ|=1.67° <= tol 3.0°)
[STEP  5] GRIPPER CLOSE → daemon_set_gripper_value(20, 50)
[RTD   ] 静止確認 OK（step5_close: 連続 3 回・連続差 最大 0.09° <= 1.0°）
  [Pi] GRIPPER: VALUE=20 speed=50 result= None
[RTD   ] gripper close (1/1 回目) の daemon 往復 = 0.011s
[STEP  5] gripper dwell 2.0s（読み取りなし）
[STEP  6] MOVE → APPROACH_PICK (lift)  segment PICK → APPROACH_PICK (lift)  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_LIFT_BACK（lift の残差 2.19° を吸収）] / 最大 8.0s)
[RTD   ] 送信 OK（daemon 往復 1.056s）
[RTD   ] arrival OK (PICK → APPROACH_PICK (lift), max|Δ|=2.64° <= tol 3.0°)
[STEP  7] MOVE → APPROACH_PLACE  segment APPROACH_PICK → APPROACH_PLACE  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_APPROACH_PLACE（stage7）] / 最大 8.0s)
[RTD   ] 送信 OK（daemon 往復 1.032s）
[RTD   ] arrival OK (APPROACH_PICK → APPROACH_PLACE, max|Δ|=1.49° <= tol 3.0°)
[STEP  8] MOVE → PLACE  segment APPROACH_PLACE → PLACE  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_PICK_PLACE（stage8_place）] / 最大 8.0s)  [critical]
[RTD   ] 送信 OK（daemon 往復 1.042s）
[RTD   ] arrival OK (APPROACH_PLACE → PLACE, max|Δ|=1.32° <= tol 3.0°)
[STEP  9] GRIPPER OPEN → daemon_set_gripper(0, 50, wait=0)
[RTD   ] 静止確認 OK（step9_open: 連続 3 回・連続差 最大 0.09° <= 1.0°）
  [Pi] GRIPPER: OPEN result= None
[RTD   ] gripper open (1/1 回目) の daemon 往復 = 2.013s
[STEP  9] open 後 2.0s 待ちます（本線の daemon wait=2 相当・読み取りなし）
[STEP  9] gripper dwell 2.0s（読み取りなし）
[STEP 10] MOVE → APPROACH_PLACE (retreat)  segment PLACE → APPROACH_PLACE (retreat)  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_LIFT_BACK（stage10_lift_back）] / 最大 8.0s)
[RTD   ] 送信 OK（daemon 往復 1.055s）
[RTD   ] arrival OK (PLACE → APPROACH_PLACE (retreat), max|Δ|=2.02° <= tol 3.0°)
[STEP 11] MOVE → HOME  segment APPROACH_PLACE → HOME  (1 回送信 speed=20 → 到達待ち 許容 2.5°[TOL_HOME（stage1_to_home / HOME 復帰）] / 最大 9.6s)
[RTD   ] 送信 OK（daemon 往復 1.036s）
[RTD   ] arrival OK (APPROACH_PLACE → HOME, max|Δ|=1.31° <= tol 2.5°)
  [Pi] fresh_mode=0
[RTD   ] daemon_set_fresh_mode(0) 完了
[RTD   ] 実測角の読み取り: ok 53/53 回, 実効 1.55 Hz（目標 3.0 Hz 以上）
[RTD   ] [WARN] 実測角の読み取りが目標 3.0 Hz を下回りました（1.55 Hz）。学習データの state 密度が 19 本より薄くなります
[RTD   ] send_angles の daemon 往復 (7 回): 平均 1.041s / p50 1.036s / 最大 1.056s（timeout 6.0s）
[RTD   ] [WARN] 送信 1 回に 1.056s かかった回があります。daemon は送信後に角度を読み直すので、動き始めで読めないと伸びます（単発送信なので試行全体への影響は小さい）
[RTD   ] 区間の所要（送信→到達確認まで）(8 区間): 平均 2.15s / 最大 4.95s
[RECORD] 電流の記録終了 46 行 (1.34 行/秒. 本体が眠っている間だけ読む. 爪の間 14.059 秒は読まない. 見込み超え 0 回. read_servo)  → /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_191353/recording/currents.csv
[RECORD] 爪の位置と電圧 36 行 (読めた数 {'7:56': 18, '7:57': 18, '2:62': 18, '7:62': 18})  → /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_191353/recording/power_regs.csv
==============================================================================
[RTD   ] 再生 完了
==============================================================================
[RTD   ] つかめたか (y/n) > y
[RTD   ] 箱に入ったか (y/n) > y
[RTD   ] 試行 JSON: /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_191353/run_0001_20261113_191353.json
[LEDGER] append OK: /Volumes/KIOXIA/r2r2r-data/runs/pick_place_ledger_v3.csv (pick=yes place=yes recording_status=ok)
[RTD   ] 次に進むには: python3 /Users/shimazueiichi/r2r2r-scripts/pi05/build_demo_episodes.py --run run_0001_20261113_191353 --dataset mecharm_redblock_box_teach_v1
```

#### 2〜6回目の再生のターミナル

```text
(base) shimazueiichi@shimadzueiichinoMacBook-Pro r2r2r-scripts % python3 dynamic_tracking_limits/drag_teaching/record_teach_demo.py run --teach drag_v2_20221013_233323.json --power 5A --execute
[RTD   ] 到達許容差は本線 run_pick_place.py の stage 値を使います（区間ごと。一律 8.0° は 2026-10-19 にやめた）:
[RTD   ]   HOME                       2.5°  ← rpp.TOL_HOME（stage1_to_home / HOME 復帰）
[RTD   ]   APPROACH_PICK              2.0°  ← rpp.TOL_APPROACH（approach 系）
[RTD   ]   PICK                       3.0°  ← rpp.TOL_PICK_PLACE（stage4_pick）
[RTD   ]   APPROACH_PICK (lift)       3.0°  ← rpp.TOL_LIFT_BACK（lift の残差 2.19° を吸収）
[RTD   ]   APPROACH_PLACE             3.0°  ← rpp.TOL_APPROACH_PLACE（stage7）
[RTD   ]   PLACE                      3.0°  ← rpp.TOL_PICK_PLACE（stage8_place）
[RTD   ]   APPROACH_PLACE (retreat)   3.0°  ← rpp.TOL_LIFT_BACK（stage10_lift_back）
[RTD   ] 到達を待つ最大時間 = clamp(2.0 + max|Δ|/20*3.0, 8.0, 30.0) 秒（本線と同じ wr._compute_arrival_timeout）
[RTD   ] 爪の閉じる値: 20（既定）
[RTD   ] 電源: 5A（--power。試行 JSON の power に残し、爪の位置と電圧も読みます）
[RTD   ] モード: EXECUTE（実機）  記録: ON
[RTD   ] Pi から教えた記録を取得します: ubuntu@192.168.2.1:r2r2r-scripts/dynamic_tracking_limits/drag_teaching/drag_v2_20221013_233323.json
[RTD   ] 取得しました → /var/folders/5w/2q2mc64n6yv63gfh31h34w6h0000gn/T/record_teach_demo_s3fbxwfl/drag_v2_20221013_233323.json
[RTD   ] 入力ファイル: drag_v2_20221013_233323.json
[RTD   ] 抽出ウェイポイント:
  APPROACH_PICK  <- phase APPROACH_PICK argmax_idx=175 (start=175 end=233, gap=14.85°)
                    angles = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
  PICK           <- gripper close mark idx=247（PICK phase 範囲内）
                    angles = [ +13.09,  +59.23,  +18.54,   -3.25,  -60.11,  -27.07]
  APPROACH_PLACE <- phase APPROACH_PLACE argmax_idx=350 (start=350 end=390, gap=15.39°)
                    angles = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
  PLACE          <- gripper open mark idx=400（PLACE phase 範囲内）
                    angles = [ +43.06,  +66.00,   -5.97,   +6.67,  -62.05,  -35.33]
[RTD   ] JOINT_LIMITS 一括検証 OK（全 endpoint + HOME）
[RTD   ] 姿勢検査 OK（全 116 姿勢が 有限値 + JOINT_LIMITS + J4_SAFE [-90.0, +60.0] 内）
[RTD   ] j4 の余裕は最小 22.94°（しきい値 3.0° 以上）
[RTD   ] 現在姿勢を daemon から取得します
[RTD   ] 現在姿勢 = [  -0.43,   +1.31,   +0.79,   +0.26,   -0.26,  -30.23]
==============================================================================
[RTD   ] 実行プラン（daemon 経由・区間ごとに 1 回送信 → 到達待ち）
==============================================================================
  [STEP  1] MOVE → HOME (single send + settle)  speed=20
            current = [  -0.43,   +1.31,   +0.79,   +0.26,   -0.26,  -30.23]
            to HOME = [  +0.00,   +0.00,   +0.00,   +0.00,   +0.00,  -30.00]
            max |Δ| = 1.31°  (settle 3.0s)
  [STEP  2] GRIPPER OPEN  daemon_set_gripper(0, 50, wait=0) ×1 回（daemon 事前 2.0s + 事後 2.0s + 待ち 2.0s）= 計 6.0s
            開いたかは確認しません（gv を使わず・開始前の y/n も無し。判定は終了後の y/n と動画）
  [STEP  3] MOVE → APPROACH_PICK  segment HOME → APPROACH_PICK  tol=2.0°  [rpp.TOL_APPROACH（approach 系）]
            from    = [  +0.00,   +0.00,   +0.00,   +0.00,   +0.00,  -30.00]
            to      = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
            max |Δ| = 67.06°  1 回送信 speed=20  (~ 3.4s @ 20°/s 目安・到達待ち 最大 12.1s)
  [STEP  4] MOVE → PICK  segment APPROACH_PICK → PICK  [critical]  tol=3.0°  [rpp.TOL_PICK_PLACE（stage4_pick）]
            from    = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
            to      = [ +13.09,  +59.23,  +18.54,   -3.25,  -60.11,  -27.07]
            max |Δ| = 14.85°  1 回送信 speed=20  (~ 0.7s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP  5] GRIPPER CLOSE  daemon_set_gripper_value(20, 50) + sleep(2.0s)
  [STEP  6] MOVE → APPROACH_PICK (lift)  segment PICK → APPROACH_PICK (lift)  tol=3.0°  [rpp.TOL_LIFT_BACK（lift の残差 2.19° を吸収）]
            from    = [ +13.09,  +59.23,  +18.54,   -3.25,  -60.11,  -27.07]
            to      = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
            max |Δ| = 14.85°  1 回送信 speed=20  (~ 0.7s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP  7] MOVE → APPROACH_PLACE  segment APPROACH_PICK → APPROACH_PLACE  tol=3.0°  [rpp.TOL_APPROACH_PLACE（stage7）]
            from    = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
            to      = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
            max |Δ| = 36.38°  1 回送信 speed=20  (~ 1.8s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP  8] MOVE → PLACE  segment APPROACH_PLACE → PLACE  [critical]  tol=3.0°  [rpp.TOL_PICK_PLACE（stage8_place）]
            from    = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
            to      = [ +43.06,  +66.00,   -5.97,   +6.67,  -62.05,  -35.33]
            max |Δ| = 15.39°  1 回送信 speed=20  (~ 0.8s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP  9] GRIPPER OPEN  daemon_set_gripper(0, 50, wait=0) ×1 回（daemon 事前 2.0s + 事後 2.0s + 待ち 2.0s）= 計 6.0s
            開いたかは確認しません（gv を使わず・開始前の y/n も無し。判定は終了後の y/n と動画）
  [STEP 10] MOVE → APPROACH_PLACE (retreat)  segment PLACE → APPROACH_PLACE (retreat)  tol=3.0°  [rpp.TOL_LIFT_BACK（stage10_lift_back）]
            from    = [ +43.06,  +66.00,   -5.97,   +6.67,  -62.05,  -35.33]
            to      = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
            max |Δ| = 15.39°  1 回送信 speed=20  (~ 0.8s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP 11] MOVE → HOME  segment APPROACH_PLACE → HOME  tol=2.5°  [rpp.TOL_HOME（stage1_to_home / HOME 復帰）]
            from    = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
            to      = [  +0.00,   +0.00,   +0.00,   +0.00,   +0.00,  -30.00]
            max |Δ| = 50.62°  1 回送信 speed=20  (~ 2.5s @ 20°/s 目安・到達待ち 最大 9.6s)
==============================================================================
[RTD   ] 送信 = 8 回（STEP 1 + move 7 区間）, 想定所要時間 ≈ 27.7s（最悪 73.0s）
[RTD   ]   内訳: 先頭 settle 3.0s + 移動 10.7s（max|Δ| 合計 214.5° @ 20°/s 目安） + gripper 14.0s
[RTD   ]   到達確認: 許容は区間ごと（本線 run_pick_place.py の stage 値）/ 最大は clamp(2.0 + max|Δ|/20*3.0, 8.0, 30.0) 秒
[RTD   ]   届かないとき: 送信前から 1.0° 未満しか動いていなければ 5.0s 待って**同じ目標へ 1 回だけ**再送（本線と同じ）。それでも届かなければ ABORT（HOME へ自動で戻らない）
[RTD   ]   実測 j4: [-90.0, +60.0] の外は WARN / [-98.0, +68.0] の外は ABORT
==============================================================================
[RTD   ] measure: /Volumes/KIOXIA/r2r2r-data/mecharm_calibration/teach_poses_20261113/measure_20261113_191316.json
[RTD   ]   measured_at = 2026-11-13T19:13:21.449689  block = (-263.9, +277.9) mm  box = (-143.5, +355.0) mm
[RTD   ] 再生直前: 上カメラでマット四隅とブロック画素を確認します
[RTD   ] [WARN] 再生直前: 四隅が最大 810.4px ずれています（1 回目 / 上限 15.0px）。測り直します
[RTD   ] [WARN] 再生直前: 四隅が最大 810.4px ずれています（2 回目 / 上限 15.0px）。測り直します
[RTD   ] [WARN] 再生直前: 四隅が最大 810.4px ずれています（3 回目 / 上限 15.0px）。やり直しの上限に達しました
[RTD   ] 再生直前: block = (-256.7, +281.0) mm（measure の homography で換算）
[RTD   ] 確認画像: /Volumes/KIOXIA/r2r2r-data/mecharm_calibration/teach_poses_20261113/prerun_20261113_191701.jpg
[RTD   ] 弾いた理由と各回の記録を残しました: /Volumes/KIOXIA/r2r2r-data/mecharm_calibration/teach_poses_20261113/prerun_20261113_191701_rejected.json
[RTD   ] [WARN] マット四隅が measure 時から最大 810.4px ずれています（上限 15.0px・最大 3 回やり直しても収まらず）。カメラが動いた可能性があるので止めます。measure を取り直してください（各隅のずれ: 6.0, 810.4, 392.9, 8.2）（**止めません**・WARN のみ）
[RTD   ] [SAFETY] 再生中はグリッパーが実機で開閉します。爪に指を挟まないこと。
[RTD   ] [SAFETY] 止めるときはアームの電源を切ること。Ctrl-C は新しい送信をやめるだけで、進行中の移動は止まりません。
[RTD   ] [SAFETY] 開いたかの自動確認はしません（gv は使わない）。STEP 2 で open を送ってから PICK へ降ります。
[RTD   ] 周囲に手・物が無いか確認してください。OK なら Enter で開始

[RTD   ] 試行フォルダ: /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_191709
[RTD   ] 教えた記録のコピー: /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_191709/teach/drag_v2_20221013_233323.json
[RTD   ] recorder に trial_start を送りました。1.0s 待ってから動き出します（mp4 writer が開くまで）
[RTD   ] 爪と肩の電流を 1 秒 10 回で記録します（爪を動かしている間は読みません）→ /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_191709/recording/currents.csv
[RTD   ] 電源 5A: 爪の位置（番地 7:56/57）と電圧（2:62・7:62）も読みます（生の値・未確認の番地）→ /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_191709/recording/power_regs.csv
  [Pi] fresh_mode=1
[RTD   ] daemon_set_fresh_mode(1)（最新コマンド優先・本線 run_pick_place.py L3976 と同じ。647 試行の実績はこの状態）
[STEP  1] MOVE → HOME  daemon_send_angles(HOME, 20)
[STEP  1] 到達待ち 許容 2.5°[TOL_HOME（stage1_to_home / HOME 復帰）] / 最大 8.0s
[RTD   ] 先頭移動: 送信直前の実測で max|Δ| = 1.31° / 到達待ち 最大 8.0s
[STEP  1] 3.0s 待ちます（settle）
[RTD   ] arrival OK (current → HOME, max|Δ|=1.31° <= tol 2.5°)
[STEP  2] GRIPPER OPEN → daemon_set_gripper(0, 50, wait=0)
[RTD   ] 静止確認 OK（step2_open: 連続 3 回・連続差 最大 0.00° <= 1.0°）
  [Pi] GRIPPER: OPEN result= None
[RTD   ] gripper open (1/1 回目) の daemon 往復 = 2.004s
[STEP  2] open 後 2.0s 待ちます（本線の daemon wait=2 相当・読み取りなし）
[STEP  2] gripper dwell 2.0s（読み取りなし）
[STEP  3] MOVE → APPROACH_PICK  segment HOME → APPROACH_PICK  (1 回送信 speed=20 → 到達待ち 許容 2.0°[TOL_APPROACH（approach 系）] / 最大 12.1s)
[RTD   ] 送信 OK（daemon 往復 1.032s）
[RTD   ] arrival OK (HOME → APPROACH_PICK, max|Δ|=1.50° <= tol 2.0°)
[STEP  4] MOVE → PICK  segment APPROACH_PICK → PICK  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_PICK_PLACE（stage4_pick）] / 最大 8.0s)  [critical]
[RTD   ] 送信 OK（daemon 往復 1.034s）
[RTD   ] arrival OK (APPROACH_PICK → PICK, max|Δ|=1.58° <= tol 3.0°)
[STEP  5] GRIPPER CLOSE → daemon_set_gripper_value(20, 50)
[RTD   ] 静止確認 OK（step5_close: 連続 3 回・連続差 最大 0.00° <= 1.0°）
  [Pi] GRIPPER: VALUE=20 speed=50 result= None
[RTD   ] gripper close (1/1 回目) の daemon 往復 = 0.006s
[STEP  5] gripper dwell 2.0s（読み取りなし）
[STEP  6] MOVE → APPROACH_PICK (lift)  segment PICK → APPROACH_PICK (lift)  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_LIFT_BACK（lift の残差 2.19° を吸収）] / 最大 8.0s)
[RTD   ] 送信 OK（daemon 往復 1.036s）
[RTD   ] arrival OK (PICK → APPROACH_PICK (lift), max|Δ|=1.85° <= tol 3.0°)
[STEP  7] MOVE → APPROACH_PLACE  segment APPROACH_PICK → APPROACH_PLACE  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_APPROACH_PLACE（stage7）] / 最大 8.0s)
[RTD   ] 送信 OK（daemon 往復 1.031s）
[RTD   ] arrival OK (APPROACH_PICK → APPROACH_PLACE, max|Δ|=1.41° <= tol 3.0°)
[STEP  8] MOVE → PLACE  segment APPROACH_PLACE → PLACE  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_PICK_PLACE（stage8_place）] / 最大 8.0s)  [critical]
[RTD   ] 送信 OK（daemon 往復 1.031s）
[RTD   ] arrival OK (APPROACH_PLACE → PLACE, max|Δ|=1.23° <= tol 3.0°)
[STEP  9] GRIPPER OPEN → daemon_set_gripper(0, 50, wait=0)
[RTD   ] 静止確認 OK（step9_open: 連続 3 回・連続差 最大 0.09° <= 1.0°）
  [Pi] GRIPPER: OPEN result= None
[RTD   ] gripper open (1/1 回目) の daemon 往復 = 2.013s
[STEP  9] open 後 2.0s 待ちます（本線の daemon wait=2 相当・読み取りなし）
[STEP  9] gripper dwell 2.0s（読み取りなし）
[STEP 10] MOVE → APPROACH_PLACE (retreat)  segment PLACE → APPROACH_PLACE (retreat)  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_LIFT_BACK（stage10_lift_back）] / 最大 8.0s)
[RTD   ] 送信 OK（daemon 往復 1.029s）
[RTD   ] arrival OK (PLACE → APPROACH_PLACE (retreat), max|Δ|=2.02° <= tol 3.0°)
[STEP 11] MOVE → HOME  segment APPROACH_PLACE → HOME  (1 回送信 speed=20 → 到達待ち 許容 2.5°[TOL_HOME（stage1_to_home / HOME 復帰）] / 最大 9.6s)
[RTD   ] 送信 OK（daemon 往復 1.031s）
[RTD   ] arrival OK (APPROACH_PLACE → HOME, max|Δ|=1.31° <= tol 2.5°)
  [Pi] fresh_mode=0
[RTD   ] daemon_set_fresh_mode(0) 完了
[RTD   ] 実測角の読み取り: ok 54/54 回, 実効 1.57 Hz（目標 3.0 Hz 以上）
[RTD   ] [WARN] 実測角の読み取りが目標 3.0 Hz を下回りました（1.57 Hz）。学習データの state 密度が 19 本より薄くなります
[RTD   ] send_angles の daemon 往復 (7 回): 平均 1.032s / p50 1.031s / 最大 1.036s（timeout 6.0s）
[RTD   ] [WARN] 送信 1 回に 1.036s かかった回があります。daemon は送信後に角度を読み直すので、動き始めで読めないと伸びます（単発送信なので試行全体への影響は小さい）
[RTD   ] 区間の所要（送信→到達確認まで）(8 区間): 平均 2.18s / 最大 4.49s
[RECORD] 電流の記録終了 45 行 (1.3 行/秒. 本体が眠っている間だけ読む. 爪の間 14.048 秒は読まない. 見込み超え 0 回. read_servo)  → /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_191709/recording/currents.csv
[RECORD] 爪の位置と電圧 36 行 (読めた数 {'7:56': 18, '7:57': 18, '2:62': 18, '7:62': 18})  → /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_191709/recording/power_regs.csv
==============================================================================
[RTD   ] 再生 完了
==============================================================================
[RTD   ] つかめたか (y/n) > y
[RTD   ] 箱に入ったか (y/n) > y
[RTD   ] 試行 JSON: /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_191709/run_0001_20261113_191709.json
[LEDGER] append OK: /Volumes/KIOXIA/r2r2r-data/runs/pick_place_ledger_v3.csv (pick=yes place=yes recording_status=ok)
[RTD   ] 次に進むには: python3 /Users/shimazueiichi/r2r2r-scripts/pi05/build_demo_episodes.py --run run_0001_20261113_191709 --dataset mecharm_redblock_box_teach_v1
(base) shimazueiichi@shimadzueiichinoMacBook-Pro r2r2r-scripts % python3 dynamic_tracking_limits/drag_teaching/record_teach_demo.py run --teach drag_v2_20221013_233323.json --power 5A --execute
[RTD   ] 到達許容差は本線 run_pick_place.py の stage 値を使います（区間ごと。一律 8.0° は 2026-10-19 にやめた）:
[RTD   ]   HOME                       2.5°  ← rpp.TOL_HOME（stage1_to_home / HOME 復帰）
[RTD   ]   APPROACH_PICK              2.0°  ← rpp.TOL_APPROACH（approach 系）
[RTD   ]   PICK                       3.0°  ← rpp.TOL_PICK_PLACE（stage4_pick）
[RTD   ]   APPROACH_PICK (lift)       3.0°  ← rpp.TOL_LIFT_BACK（lift の残差 2.19° を吸収）
[RTD   ]   APPROACH_PLACE             3.0°  ← rpp.TOL_APPROACH_PLACE（stage7）
[RTD   ]   PLACE                      3.0°  ← rpp.TOL_PICK_PLACE（stage8_place）
[RTD   ]   APPROACH_PLACE (retreat)   3.0°  ← rpp.TOL_LIFT_BACK（stage10_lift_back）
[RTD   ] 到達を待つ最大時間 = clamp(2.0 + max|Δ|/20*3.0, 8.0, 30.0) 秒（本線と同じ wr._compute_arrival_timeout）
[RTD   ] 爪の閉じる値: 20（既定）
[RTD   ] 電源: 5A（--power。試行 JSON の power に残し、爪の位置と電圧も読みます）
[RTD   ] モード: EXECUTE（実機）  記録: ON
[RTD   ] Pi から教えた記録を取得します: ubuntu@192.168.2.1:r2r2r-scripts/dynamic_tracking_limits/drag_teaching/drag_v2_20221013_233323.json
[RTD   ] 取得しました → /var/folders/5w/2q2mc64n6yv63gfh31h34w6h0000gn/T/record_teach_demo_22ctq726/drag_v2_20221013_233323.json
[RTD   ] 入力ファイル: drag_v2_20221013_233323.json
[RTD   ] 抽出ウェイポイント:
  APPROACH_PICK  <- phase APPROACH_PICK argmax_idx=175 (start=175 end=233, gap=14.85°)
                    angles = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
  PICK           <- gripper close mark idx=247（PICK phase 範囲内）
                    angles = [ +13.09,  +59.23,  +18.54,   -3.25,  -60.11,  -27.07]
  APPROACH_PLACE <- phase APPROACH_PLACE argmax_idx=350 (start=350 end=390, gap=15.39°)
                    angles = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
  PLACE          <- gripper open mark idx=400（PLACE phase 範囲内）
                    angles = [ +43.06,  +66.00,   -5.97,   +6.67,  -62.05,  -35.33]
[RTD   ] JOINT_LIMITS 一括検証 OK（全 endpoint + HOME）
[RTD   ] 姿勢検査 OK（全 116 姿勢が 有限値 + JOINT_LIMITS + J4_SAFE [-90.0, +60.0] 内）
[RTD   ] j4 の余裕は最小 22.94°（しきい値 3.0° 以上）
[RTD   ] 現在姿勢を daemon から取得します
[RTD   ] 現在姿勢 = [  -0.43,   +1.31,   +0.79,   +0.26,   -0.26,  -30.23]
==============================================================================
[RTD   ] 実行プラン（daemon 経由・区間ごとに 1 回送信 → 到達待ち）
==============================================================================
  [STEP  1] MOVE → HOME (single send + settle)  speed=20
            current = [  -0.43,   +1.31,   +0.79,   +0.26,   -0.26,  -30.23]
            to HOME = [  +0.00,   +0.00,   +0.00,   +0.00,   +0.00,  -30.00]
            max |Δ| = 1.31°  (settle 3.0s)
  [STEP  2] GRIPPER OPEN  daemon_set_gripper(0, 50, wait=0) ×1 回（daemon 事前 2.0s + 事後 2.0s + 待ち 2.0s）= 計 6.0s
            開いたかは確認しません（gv を使わず・開始前の y/n も無し。判定は終了後の y/n と動画）
  [STEP  3] MOVE → APPROACH_PICK  segment HOME → APPROACH_PICK  tol=2.0°  [rpp.TOL_APPROACH（approach 系）]
            from    = [  +0.00,   +0.00,   +0.00,   +0.00,   +0.00,  -30.00]
            to      = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
            max |Δ| = 67.06°  1 回送信 speed=20  (~ 3.4s @ 20°/s 目安・到達待ち 最大 12.1s)
  [STEP  4] MOVE → PICK  segment APPROACH_PICK → PICK  [critical]  tol=3.0°  [rpp.TOL_PICK_PLACE（stage4_pick）]
            from    = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
            to      = [ +13.09,  +59.23,  +18.54,   -3.25,  -60.11,  -27.07]
            max |Δ| = 14.85°  1 回送信 speed=20  (~ 0.7s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP  5] GRIPPER CLOSE  daemon_set_gripper_value(20, 50) + sleep(2.0s)
  [STEP  6] MOVE → APPROACH_PICK (lift)  segment PICK → APPROACH_PICK (lift)  tol=3.0°  [rpp.TOL_LIFT_BACK（lift の残差 2.19° を吸収）]
            from    = [ +13.09,  +59.23,  +18.54,   -3.25,  -60.11,  -27.07]
            to      = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
            max |Δ| = 14.85°  1 回送信 speed=20  (~ 0.7s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP  7] MOVE → APPROACH_PLACE  segment APPROACH_PICK → APPROACH_PLACE  tol=3.0°  [rpp.TOL_APPROACH_PLACE（stage7）]
            from    = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
            to      = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
            max |Δ| = 36.38°  1 回送信 speed=20  (~ 1.8s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP  8] MOVE → PLACE  segment APPROACH_PLACE → PLACE  [critical]  tol=3.0°  [rpp.TOL_PICK_PLACE（stage8_place）]
            from    = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
            to      = [ +43.06,  +66.00,   -5.97,   +6.67,  -62.05,  -35.33]
            max |Δ| = 15.39°  1 回送信 speed=20  (~ 0.8s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP  9] GRIPPER OPEN  daemon_set_gripper(0, 50, wait=0) ×1 回（daemon 事前 2.0s + 事後 2.0s + 待ち 2.0s）= 計 6.0s
            開いたかは確認しません（gv を使わず・開始前の y/n も無し。判定は終了後の y/n と動画）
  [STEP 10] MOVE → APPROACH_PLACE (retreat)  segment PLACE → APPROACH_PLACE (retreat)  tol=3.0°  [rpp.TOL_LIFT_BACK（stage10_lift_back）]
            from    = [ +43.06,  +66.00,   -5.97,   +6.67,  -62.05,  -35.33]
            to      = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
            max |Δ| = 15.39°  1 回送信 speed=20  (~ 0.8s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP 11] MOVE → HOME  segment APPROACH_PLACE → HOME  tol=2.5°  [rpp.TOL_HOME（stage1_to_home / HOME 復帰）]
            from    = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
            to      = [  +0.00,   +0.00,   +0.00,   +0.00,   +0.00,  -30.00]
            max |Δ| = 50.62°  1 回送信 speed=20  (~ 2.5s @ 20°/s 目安・到達待ち 最大 9.6s)
==============================================================================
[RTD   ] 送信 = 8 回（STEP 1 + move 7 区間）, 想定所要時間 ≈ 27.7s（最悪 73.0s）
[RTD   ]   内訳: 先頭 settle 3.0s + 移動 10.7s（max|Δ| 合計 214.5° @ 20°/s 目安） + gripper 14.0s
[RTD   ]   到達確認: 許容は区間ごと（本線 run_pick_place.py の stage 値）/ 最大は clamp(2.0 + max|Δ|/20*3.0, 8.0, 30.0) 秒
[RTD   ]   届かないとき: 送信前から 1.0° 未満しか動いていなければ 5.0s 待って**同じ目標へ 1 回だけ**再送（本線と同じ）。それでも届かなければ ABORT（HOME へ自動で戻らない）
[RTD   ]   実測 j4: [-90.0, +60.0] の外は WARN / [-98.0, +68.0] の外は ABORT
==============================================================================
[RTD   ] measure: /Volumes/KIOXIA/r2r2r-data/mecharm_calibration/teach_poses_20261113/measure_20261113_191316.json
[RTD   ]   measured_at = 2026-11-13T19:13:21.449689  block = (-263.9, +277.9) mm  box = (-143.5, +355.0) mm
[RTD   ] 再生直前: 上カメラでマット四隅とブロック画素を確認します
[RTD   ] [WARN] 再生直前: 四隅が最大 809.4px ずれています（1 回目 / 上限 15.0px）。測り直します
[RTD   ] [WARN] 再生直前: 四隅が最大 809.6px ずれています（2 回目 / 上限 15.0px）。測り直します
[RTD   ] [WARN] 再生直前: 四隅が最大 810.2px ずれています（3 回目 / 上限 15.0px）。やり直しの上限に達しました
[RTD   ] 再生直前: block = (-259.4, +284.0) mm（measure の homography で換算）
[RTD   ] 確認画像: /Volumes/KIOXIA/r2r2r-data/mecharm_calibration/teach_poses_20261113/prerun_20261113_191754.jpg
[RTD   ] 弾いた理由と各回の記録を残しました: /Volumes/KIOXIA/r2r2r-data/mecharm_calibration/teach_poses_20261113/prerun_20261113_191754_rejected.json
[RTD   ] [WARN] マット四隅が measure 時から最大 810.2px ずれています（上限 15.0px・最大 3 回やり直しても収まらず）。カメラが動いた可能性があるので止めます。measure を取り直してください（各隅のずれ: 6.0, 810.2, 393.0, 8.5）（**止めません**・WARN のみ）
[RTD   ] [SAFETY] 再生中はグリッパーが実機で開閉します。爪に指を挟まないこと。
[RTD   ] [SAFETY] 止めるときはアームの電源を切ること。Ctrl-C は新しい送信をやめるだけで、進行中の移動は止まりません。
[RTD   ] [SAFETY] 開いたかの自動確認はしません（gv は使わない）。STEP 2 で open を送ってから PICK へ降ります。
[RTD   ] 周囲に手・物が無いか確認してください。OK なら Enter で開始

[RTD   ] 試行フォルダ: /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_191807
[RTD   ] 教えた記録のコピー: /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_191807/teach/drag_v2_20221013_233323.json
[RTD   ] recorder に trial_start を送りました。1.0s 待ってから動き出します（mp4 writer が開くまで）
[RTD   ] 爪と肩の電流を 1 秒 10 回で記録します（爪を動かしている間は読みません）→ /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_191807/recording/currents.csv
[RTD   ] 電源 5A: 爪の位置（番地 7:56/57）と電圧（2:62・7:62）も読みます（生の値・未確認の番地）→ /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_191807/recording/power_regs.csv
  [Pi] fresh_mode=1
[RTD   ] daemon_set_fresh_mode(1)（最新コマンド優先・本線 run_pick_place.py L3976 と同じ。647 試行の実績はこの状態）
[STEP  1] MOVE → HOME  daemon_send_angles(HOME, 20)
[STEP  1] 到達待ち 許容 2.5°[TOL_HOME（stage1_to_home / HOME 復帰）] / 最大 8.0s
[RTD   ] 先頭移動: 送信直前の実測で max|Δ| = 1.31° / 到達待ち 最大 8.0s
[STEP  1] 3.0s 待ちます（settle）
[RTD   ] arrival OK (current → HOME, max|Δ|=1.31° <= tol 2.5°)
[STEP  2] GRIPPER OPEN → daemon_set_gripper(0, 50, wait=0)
[RTD   ] 静止確認 OK（step2_open: 連続 3 回・連続差 最大 0.00° <= 1.0°）
  [Pi] GRIPPER: OPEN result= None
[RTD   ] gripper open (1/1 回目) の daemon 往復 = 2.005s
[STEP  2] open 後 2.0s 待ちます（本線の daemon wait=2 相当・読み取りなし）
[STEP  2] gripper dwell 2.0s（読み取りなし）
[STEP  3] MOVE → APPROACH_PICK  segment HOME → APPROACH_PICK  (1 回送信 speed=20 → 到達待ち 許容 2.0°[TOL_APPROACH（approach 系）] / 最大 12.1s)
[RTD   ] 送信 OK（daemon 往復 1.029s）
[RTD   ] arrival OK (HOME → APPROACH_PICK, max|Δ|=1.41° <= tol 2.0°)
[STEP  4] MOVE → PICK  segment APPROACH_PICK → PICK  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_PICK_PLACE（stage4_pick）] / 最大 8.0s)  [critical]
[RTD   ] 送信 OK（daemon 往復 1.031s）
[RTD   ] arrival OK (APPROACH_PICK → PICK, max|Δ|=1.76° <= tol 3.0°)
[STEP  5] GRIPPER CLOSE → daemon_set_gripper_value(20, 50)
[RTD   ] 静止確認 OK（step5_close: 連続 3 回・連続差 最大 0.00° <= 1.0°）
  [Pi] GRIPPER: VALUE=20 speed=50 result= None
[RTD   ] gripper close (1/1 回目) の daemon 往復 = 0.012s
[STEP  5] gripper dwell 2.0s（読み取りなし）
[STEP  6] MOVE → APPROACH_PICK (lift)  segment PICK → APPROACH_PICK (lift)  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_LIFT_BACK（lift の残差 2.19° を吸収）] / 最大 8.0s)
[RTD   ] 送信 OK（daemon 往復 1.030s）
[RTD   ] arrival OK (PICK → APPROACH_PICK (lift), max|Δ|=2.99° <= tol 3.0°)
[STEP  7] MOVE → APPROACH_PLACE  segment APPROACH_PICK → APPROACH_PLACE  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_APPROACH_PLACE（stage7）] / 最大 8.0s)
[RTD   ] 送信 OK（daemon 往復 1.030s）
[RTD   ] arrival OK (APPROACH_PICK → APPROACH_PLACE, max|Δ|=1.58° <= tol 3.0°)
[STEP  8] MOVE → PLACE  segment APPROACH_PLACE → PLACE  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_PICK_PLACE（stage8_place）] / 最大 8.0s)  [critical]
[RTD   ] 送信 OK（daemon 往復 1.020s）
[RTD   ] arrival OK (APPROACH_PLACE → PLACE, max|Δ|=1.41° <= tol 3.0°)
[STEP  9] GRIPPER OPEN → daemon_set_gripper(0, 50, wait=0)
[RTD   ] 静止確認 OK（step9_open: 連続 3 回・連続差 最大 0.09° <= 1.0°）
  [Pi] GRIPPER: OPEN result= None
[RTD   ] gripper open (1/1 回目) の daemon 往復 = 2.019s
[STEP  9] open 後 2.0s 待ちます（本線の daemon wait=2 相当・読み取りなし）
[STEP  9] gripper dwell 2.0s（読み取りなし）
[STEP 10] MOVE → APPROACH_PLACE (retreat)  segment PLACE → APPROACH_PLACE (retreat)  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_LIFT_BACK（stage10_lift_back）] / 最大 8.0s)
[RTD   ] 送信 OK（daemon 往復 1.029s）
[RTD   ] arrival OK (PLACE → APPROACH_PLACE (retreat), max|Δ|=2.02° <= tol 3.0°)
[STEP 11] MOVE → HOME  segment APPROACH_PLACE → HOME  (1 回送信 speed=20 → 到達待ち 許容 2.5°[TOL_HOME（stage1_to_home / HOME 復帰）] / 最大 9.6s)
[RTD   ] 送信 OK（daemon 往復 1.035s）
[RTD   ] arrival OK (APPROACH_PLACE → HOME, max|Δ|=1.31° <= tol 2.5°)
  [Pi] fresh_mode=0
[RTD   ] daemon_set_fresh_mode(0) 完了
[RTD   ] 実測角の読み取り: ok 51/51 回, 実効 1.52 Hz（目標 3.0 Hz 以上）
[RTD   ] [WARN] 実測角の読み取りが目標 3.0 Hz を下回りました（1.52 Hz）。学習データの state 密度が 19 本より薄くなります
[RTD   ] send_angles の daemon 往復 (7 回): 平均 1.029s / p50 1.030s / 最大 1.035s（timeout 6.0s）
[RTD   ] [WARN] 送信 1 回に 1.035s かかった回があります。daemon は送信後に角度を読み直すので、動き始めで読めないと伸びます（単発送信なので試行全体への影響は小さい）
[RTD   ] 区間の所要（送信→到達確認まで）(8 区間): 平均 2.06s / 最大 4.48s
[RECORD] 電流の記録終了 44 行 (1.31 行/秒. 本体が眠っている間だけ読む. 爪の間 14.056 秒は読まない. 見込み超え 0 回. read_servo)  → /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_191807/recording/currents.csv
[RECORD] 爪の位置と電圧 35 行 (読めた数 {'7:56': 18, '7:57': 18, '2:62': 17, '7:62': 17})  → /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_191807/recording/power_regs.csv
==============================================================================
[RTD   ] 再生 完了
==============================================================================
[RTD   ] つかめたか (y/n) > y
[RTD   ] 箱に入ったか (y/n) > y
[RTD   ] 試行 JSON: /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_191807/run_0001_20261113_191807.json
[LEDGER] append OK: /Volumes/KIOXIA/r2r2r-data/runs/pick_place_ledger_v3.csv (pick=yes place=yes recording_status=ok)
[RTD   ] 次に進むには: python3 /Users/shimazueiichi/r2r2r-scripts/pi05/build_demo_episodes.py --run run_0001_20261113_191807 --dataset mecharm_redblock_box_teach_v1
(base) shimazueiichi@shimadzueiichinoMacBook-Pro r2r2r-scripts % python3 dynamic_tracking_limits/drag_teaching/record_teach_demo.py run --teach drag_v2_20221013_233323.json --power 5A --execute
[RTD   ] 到達許容差は本線 run_pick_place.py の stage 値を使います（区間ごと。一律 8.0° は 2026-10-19 にやめた）:
[RTD   ]   HOME                       2.5°  ← rpp.TOL_HOME（stage1_to_home / HOME 復帰）
[RTD   ]   APPROACH_PICK              2.0°  ← rpp.TOL_APPROACH（approach 系）
[RTD   ]   PICK                       3.0°  ← rpp.TOL_PICK_PLACE（stage4_pick）
[RTD   ]   APPROACH_PICK (lift)       3.0°  ← rpp.TOL_LIFT_BACK（lift の残差 2.19° を吸収）
[RTD   ]   APPROACH_PLACE             3.0°  ← rpp.TOL_APPROACH_PLACE（stage7）
[RTD   ]   PLACE                      3.0°  ← rpp.TOL_PICK_PLACE（stage8_place）
[RTD   ]   APPROACH_PLACE (retreat)   3.0°  ← rpp.TOL_LIFT_BACK（stage10_lift_back）
[RTD   ] 到達を待つ最大時間 = clamp(2.0 + max|Δ|/20*3.0, 8.0, 30.0) 秒（本線と同じ wr._compute_arrival_timeout）
[RTD   ] 爪の閉じる値: 20（既定）
[RTD   ] 電源: 5A（--power。試行 JSON の power に残し、爪の位置と電圧も読みます）
[RTD   ] モード: EXECUTE（実機）  記録: ON
[RTD   ] Pi から教えた記録を取得します: ubuntu@192.168.2.1:r2r2r-scripts/dynamic_tracking_limits/drag_teaching/drag_v2_20221013_233323.json
[RTD   ] 取得しました → /var/folders/5w/2q2mc64n6yv63gfh31h34w6h0000gn/T/record_teach_demo_gp0agddw/drag_v2_20221013_233323.json
[RTD   ] 入力ファイル: drag_v2_20221013_233323.json
[RTD   ] 抽出ウェイポイント:
  APPROACH_PICK  <- phase APPROACH_PICK argmax_idx=175 (start=175 end=233, gap=14.85°)
                    angles = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
  PICK           <- gripper close mark idx=247（PICK phase 範囲内）
                    angles = [ +13.09,  +59.23,  +18.54,   -3.25,  -60.11,  -27.07]
  APPROACH_PLACE <- phase APPROACH_PLACE argmax_idx=350 (start=350 end=390, gap=15.39°)
                    angles = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
  PLACE          <- gripper open mark idx=400（PLACE phase 範囲内）
                    angles = [ +43.06,  +66.00,   -5.97,   +6.67,  -62.05,  -35.33]
[RTD   ] JOINT_LIMITS 一括検証 OK（全 endpoint + HOME）
[RTD   ] 姿勢検査 OK（全 116 姿勢が 有限値 + JOINT_LIMITS + J4_SAFE [-90.0, +60.0] 内）
[RTD   ] j4 の余裕は最小 22.94°（しきい値 3.0° 以上）
[RTD   ] 現在姿勢を daemon から取得します
[RTD   ] 現在姿勢 = [  -0.43,   +1.31,   +0.79,   +0.26,   -0.26,  -30.23]
==============================================================================
[RTD   ] 実行プラン（daemon 経由・区間ごとに 1 回送信 → 到達待ち）
==============================================================================
  [STEP  1] MOVE → HOME (single send + settle)  speed=20
            current = [  -0.43,   +1.31,   +0.79,   +0.26,   -0.26,  -30.23]
            to HOME = [  +0.00,   +0.00,   +0.00,   +0.00,   +0.00,  -30.00]
            max |Δ| = 1.31°  (settle 3.0s)
  [STEP  2] GRIPPER OPEN  daemon_set_gripper(0, 50, wait=0) ×1 回（daemon 事前 2.0s + 事後 2.0s + 待ち 2.0s）= 計 6.0s
            開いたかは確認しません（gv を使わず・開始前の y/n も無し。判定は終了後の y/n と動画）
  [STEP  3] MOVE → APPROACH_PICK  segment HOME → APPROACH_PICK  tol=2.0°  [rpp.TOL_APPROACH（approach 系）]
            from    = [  +0.00,   +0.00,   +0.00,   +0.00,   +0.00,  -30.00]
            to      = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
            max |Δ| = 67.06°  1 回送信 speed=20  (~ 3.4s @ 20°/s 目安・到達待ち 最大 12.1s)
  [STEP  4] MOVE → PICK  segment APPROACH_PICK → PICK  [critical]  tol=3.0°  [rpp.TOL_PICK_PLACE（stage4_pick）]
            from    = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
            to      = [ +13.09,  +59.23,  +18.54,   -3.25,  -60.11,  -27.07]
            max |Δ| = 14.85°  1 回送信 speed=20  (~ 0.7s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP  5] GRIPPER CLOSE  daemon_set_gripper_value(20, 50) + sleep(2.0s)
  [STEP  6] MOVE → APPROACH_PICK (lift)  segment PICK → APPROACH_PICK (lift)  tol=3.0°  [rpp.TOL_LIFT_BACK（lift の残差 2.19° を吸収）]
            from    = [ +13.09,  +59.23,  +18.54,   -3.25,  -60.11,  -27.07]
            to      = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
            max |Δ| = 14.85°  1 回送信 speed=20  (~ 0.7s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP  7] MOVE → APPROACH_PLACE  segment APPROACH_PICK → APPROACH_PLACE  tol=3.0°  [rpp.TOL_APPROACH_PLACE（stage7）]
            from    = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
            to      = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
            max |Δ| = 36.38°  1 回送信 speed=20  (~ 1.8s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP  8] MOVE → PLACE  segment APPROACH_PLACE → PLACE  [critical]  tol=3.0°  [rpp.TOL_PICK_PLACE（stage8_place）]
            from    = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
            to      = [ +43.06,  +66.00,   -5.97,   +6.67,  -62.05,  -35.33]
            max |Δ| = 15.39°  1 回送信 speed=20  (~ 0.8s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP  9] GRIPPER OPEN  daemon_set_gripper(0, 50, wait=0) ×1 回（daemon 事前 2.0s + 事後 2.0s + 待ち 2.0s）= 計 6.0s
            開いたかは確認しません（gv を使わず・開始前の y/n も無し。判定は終了後の y/n と動画）
  [STEP 10] MOVE → APPROACH_PLACE (retreat)  segment PLACE → APPROACH_PLACE (retreat)  tol=3.0°  [rpp.TOL_LIFT_BACK（stage10_lift_back）]
            from    = [ +43.06,  +66.00,   -5.97,   +6.67,  -62.05,  -35.33]
            to      = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
            max |Δ| = 15.39°  1 回送信 speed=20  (~ 0.8s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP 11] MOVE → HOME  segment APPROACH_PLACE → HOME  tol=2.5°  [rpp.TOL_HOME（stage1_to_home / HOME 復帰）]
            from    = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
            to      = [  +0.00,   +0.00,   +0.00,   +0.00,   +0.00,  -30.00]
            max |Δ| = 50.62°  1 回送信 speed=20  (~ 2.5s @ 20°/s 目安・到達待ち 最大 9.6s)
==============================================================================
[RTD   ] 送信 = 8 回（STEP 1 + move 7 区間）, 想定所要時間 ≈ 27.7s（最悪 73.0s）
[RTD   ]   内訳: 先頭 settle 3.0s + 移動 10.7s（max|Δ| 合計 214.5° @ 20°/s 目安） + gripper 14.0s
[RTD   ]   到達確認: 許容は区間ごと（本線 run_pick_place.py の stage 値）/ 最大は clamp(2.0 + max|Δ|/20*3.0, 8.0, 30.0) 秒
[RTD   ]   届かないとき: 送信前から 1.0° 未満しか動いていなければ 5.0s 待って**同じ目標へ 1 回だけ**再送（本線と同じ）。それでも届かなければ ABORT（HOME へ自動で戻らない）
[RTD   ]   実測 j4: [-90.0, +60.0] の外は WARN / [-98.0, +68.0] の外は ABORT
==============================================================================
[RTD   ] measure: /Volumes/KIOXIA/r2r2r-data/mecharm_calibration/teach_poses_20261113/measure_20261113_191316.json
[RTD   ]   measured_at = 2026-11-13T19:13:21.449689  block = (-263.9, +277.9) mm  box = (-143.5, +355.0) mm
[RTD   ] 再生直前: 上カメラでマット四隅とブロック画素を確認します
[RTD   ] [WARN] 再生直前: 四隅が最大 809.6px ずれています（1 回目 / 上限 15.0px）。測り直します
[RTD   ] [WARN] 再生直前: 四隅が最大 809.4px ずれています（2 回目 / 上限 15.0px）。測り直します
[RTD   ] [WARN] 再生直前: 四隅が最大 809.4px ずれています（3 回目 / 上限 15.0px）。やり直しの上限に達しました
[RTD   ] 再生直前: block = (-259.2, +281.5) mm（measure の homography で換算）
[RTD   ] 確認画像: /Volumes/KIOXIA/r2r2r-data/mecharm_calibration/teach_poses_20261113/prerun_20261113_191907.jpg
[RTD   ] 弾いた理由と各回の記録を残しました: /Volumes/KIOXIA/r2r2r-data/mecharm_calibration/teach_poses_20261113/prerun_20261113_191907_rejected.json
[RTD   ] [WARN] マット四隅が measure 時から最大 809.4px ずれています（上限 15.0px・最大 3 回やり直しても収まらず）。カメラが動いた可能性があるので止めます。measure を取り直してください（各隅のずれ: 6.0, 809.4, 393.1, 8.6）（**止めません**・WARN のみ）
[RTD   ] [SAFETY] 再生中はグリッパーが実機で開閉します。爪に指を挟まないこと。
[RTD   ] [SAFETY] 止めるときはアームの電源を切ること。Ctrl-C は新しい送信をやめるだけで、進行中の移動は止まりません。
[RTD   ] [SAFETY] 開いたかの自動確認はしません（gv は使わない）。STEP 2 で open を送ってから PICK へ降ります。
[RTD   ] 周囲に手・物が無いか確認してください。OK なら Enter で開始

[RTD   ] 試行フォルダ: /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_191916
[RTD   ] 教えた記録のコピー: /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_191916/teach/drag_v2_20221013_233323.json
[RTD   ] recorder に trial_start を送りました。1.0s 待ってから動き出します（mp4 writer が開くまで）
[RTD   ] 爪と肩の電流を 1 秒 10 回で記録します（爪を動かしている間は読みません）→ /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_191916/recording/currents.csv
[RTD   ] 電源 5A: 爪の位置（番地 7:56/57）と電圧（2:62・7:62）も読みます（生の値・未確認の番地）→ /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_191916/recording/power_regs.csv
  [Pi] fresh_mode=1
[RTD   ] daemon_set_fresh_mode(1)（最新コマンド優先・本線 run_pick_place.py L3976 と同じ。647 試行の実績はこの状態）
[STEP  1] MOVE → HOME  daemon_send_angles(HOME, 20)
[STEP  1] 到達待ち 許容 2.5°[TOL_HOME（stage1_to_home / HOME 復帰）] / 最大 8.0s
[RTD   ] 先頭移動: 送信直前の実測で max|Δ| = 1.31° / 到達待ち 最大 8.0s
[STEP  1] 3.0s 待ちます（settle）
[RTD   ] arrival OK (current → HOME, max|Δ|=1.31° <= tol 2.5°)
[STEP  2] GRIPPER OPEN → daemon_set_gripper(0, 50, wait=0)
[RTD   ] 静止確認 OK（step2_open: 連続 3 回・連続差 最大 0.00° <= 1.0°）
  [Pi] GRIPPER: OPEN result= None
[RTD   ] gripper open (1/1 回目) の daemon 往復 = 2.013s
[STEP  2] open 後 2.0s 待ちます（本線の daemon wait=2 相当・読み取りなし）
[STEP  2] gripper dwell 2.0s（読み取りなし）
[STEP  3] MOVE → APPROACH_PICK  segment HOME → APPROACH_PICK  (1 回送信 speed=20 → 到達待ち 許容 2.0°[TOL_APPROACH（approach 系）] / 最大 12.1s)
[RTD   ] 送信 OK（daemon 往復 1.029s）
[RTD   ] arrival OK (HOME → APPROACH_PICK, max|Δ|=1.32° <= tol 2.0°)
[STEP  4] MOVE → PICK  segment APPROACH_PICK → PICK  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_PICK_PLACE（stage4_pick）] / 最大 8.0s)  [critical]
[RTD   ] 送信 OK（daemon 往復 1.030s）
[RTD   ] arrival OK (APPROACH_PICK → PICK, max|Δ|=1.67° <= tol 3.0°)
[STEP  5] GRIPPER CLOSE → daemon_set_gripper_value(20, 50)
[RTD   ] 静止確認 OK（step5_close: 連続 3 回・連続差 最大 0.00° <= 1.0°）
  [Pi] GRIPPER: VALUE=20 speed=50 result= None
[RTD   ] gripper close (1/1 回目) の daemon 往復 = 0.013s
[STEP  5] gripper dwell 2.0s（読み取りなし）
[STEP  6] MOVE → APPROACH_PICK (lift)  segment PICK → APPROACH_PICK (lift)  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_LIFT_BACK（lift の残差 2.19° を吸収）] / 最大 8.0s)
[RTD   ] 送信 OK（daemon 往復 1.055s）
[RTD   ] arrival OK (PICK → APPROACH_PICK (lift), max|Δ|=2.99° <= tol 3.0°)
[STEP  7] MOVE → APPROACH_PLACE  segment APPROACH_PICK → APPROACH_PLACE  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_APPROACH_PLACE（stage7）] / 最大 8.0s)
[RTD   ] 送信 OK（daemon 往復 1.031s）
[RTD   ] arrival OK (APPROACH_PICK → APPROACH_PLACE, max|Δ|=1.76° <= tol 3.0°)
[STEP  8] MOVE → PLACE  segment APPROACH_PLACE → PLACE  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_PICK_PLACE（stage8_place）] / 最大 8.0s)  [critical]
[RTD   ] 送信 OK（daemon 往復 1.031s）
[RTD   ] arrival OK (APPROACH_PLACE → PLACE, max|Δ|=1.41° <= tol 3.0°)
[STEP  9] GRIPPER OPEN → daemon_set_gripper(0, 50, wait=0)
[RTD   ] 静止確認 OK（step9_open: 連続 3 回・連続差 最大 0.09° <= 1.0°）
  [Pi] GRIPPER: OPEN result= None
[RTD   ] gripper open (1/1 回目) の daemon 往復 = 2.004s
[STEP  9] open 後 2.0s 待ちます（本線の daemon wait=2 相当・読み取りなし）
[STEP  9] gripper dwell 2.0s（読み取りなし）
[STEP 10] MOVE → APPROACH_PLACE (retreat)  segment PLACE → APPROACH_PLACE (retreat)  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_LIFT_BACK（stage10_lift_back）] / 最大 8.0s)
[RTD   ] 送信 OK（daemon 往復 1.031s）
[RTD   ] arrival OK (PLACE → APPROACH_PLACE (retreat), max|Δ|=2.02° <= tol 3.0°)
[STEP 11] MOVE → HOME  segment APPROACH_PLACE → HOME  (1 回送信 speed=20 → 到達待ち 許容 2.5°[TOL_HOME（stage1_to_home / HOME 復帰）] / 最大 9.6s)
[RTD   ] 送信 OK（daemon 往復 1.049s）
[RTD   ] arrival OK (APPROACH_PLACE → HOME, max|Δ|=1.23° <= tol 2.5°)
  [Pi] fresh_mode=0
[RTD   ] daemon_set_fresh_mode(0) 完了
[RTD   ] 実測角の読み取り: ok 51/51 回, 実効 1.52 Hz（目標 3.0 Hz 以上）
[RTD   ] [WARN] 実測角の読み取りが目標 3.0 Hz を下回りました（1.52 Hz）。学習データの state 密度が 19 本より薄くなります
[RTD   ] send_angles の daemon 往復 (7 回): 平均 1.037s / p50 1.032s / 最大 1.055s（timeout 6.0s）
[RTD   ] [WARN] 送信 1 回に 1.055s かかった回があります。daemon は送信後に角度を読み直すので、動き始めで読めないと伸びます（単発送信なので試行全体への影響は小さい）
[RTD   ] 区間の所要（送信→到達確認まで）(8 区間): 平均 2.06s / 最大 4.46s
[RECORD] 電流の記録終了 43 行 (1.28 行/秒. 本体が眠っている間だけ読む. 爪の間 14.051 秒は読まない. 見込み超え 0 回. read_servo)  → /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_191916/recording/currents.csv
[RECORD] 爪の位置と電圧 34 行 (読めた数 {'7:56': 17, '7:57': 17, '2:62': 17, '7:62': 17})  → /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_191916/recording/power_regs.csv
==============================================================================
[RTD   ] 再生 完了
==============================================================================
[RTD   ] つかめたか (y/n) > y
[RTD   ] 箱に入ったか (y/n) > y
[RTD   ] 試行 JSON: /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_191916/run_0001_20261113_191916.json
[LEDGER] append OK: /Volumes/KIOXIA/r2r2r-data/runs/pick_place_ledger_v3.csv (pick=yes place=yes recording_status=ok)
[RTD   ] 次に進むには: python3 /Users/shimazueiichi/r2r2r-scripts/pi05/build_demo_episodes.py --run run_0001_20261113_191916 --dataset mecharm_redblock_box_teach_v1
(base) shimazueiichi@shimadzueiichinoMacBook-Pro r2r2r-scripts % python3 dynamic_tracking_limits/drag_teaching/record_teach_demo.py run --teach drag_v2_20221013_233323.json --power 5A --execute
[RTD   ] 到達許容差は本線 run_pick_place.py の stage 値を使います（区間ごと。一律 8.0° は 2026-10-19 にやめた）:
[RTD   ]   HOME                       2.5°  ← rpp.TOL_HOME（stage1_to_home / HOME 復帰）
[RTD   ]   APPROACH_PICK              2.0°  ← rpp.TOL_APPROACH（approach 系）
[RTD   ]   PICK                       3.0°  ← rpp.TOL_PICK_PLACE（stage4_pick）
[RTD   ]   APPROACH_PICK (lift)       3.0°  ← rpp.TOL_LIFT_BACK（lift の残差 2.19° を吸収）
[RTD   ]   APPROACH_PLACE             3.0°  ← rpp.TOL_APPROACH_PLACE（stage7）
[RTD   ]   PLACE                      3.0°  ← rpp.TOL_PICK_PLACE（stage8_place）
[RTD   ]   APPROACH_PLACE (retreat)   3.0°  ← rpp.TOL_LIFT_BACK（stage10_lift_back）
[RTD   ] 到達を待つ最大時間 = clamp(2.0 + max|Δ|/20*3.0, 8.0, 30.0) 秒（本線と同じ wr._compute_arrival_timeout）
[RTD   ] 爪の閉じる値: 20（既定）
[RTD   ] 電源: 5A（--power。試行 JSON の power に残し、爪の位置と電圧も読みます）
[RTD   ] モード: EXECUTE（実機）  記録: ON
[RTD   ] Pi から教えた記録を取得します: ubuntu@192.168.2.1:r2r2r-scripts/dynamic_tracking_limits/drag_teaching/drag_v2_20221013_233323.json
[RTD   ] 取得しました → /var/folders/5w/2q2mc64n6yv63gfh31h34w6h0000gn/T/record_teach_demo_qgn8osrx/drag_v2_20221013_233323.json
[RTD   ] 入力ファイル: drag_v2_20221013_233323.json
[RTD   ] 抽出ウェイポイント:
  APPROACH_PICK  <- phase APPROACH_PICK argmax_idx=175 (start=175 end=233, gap=14.85°)
                    angles = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
  PICK           <- gripper close mark idx=247（PICK phase 範囲内）
                    angles = [ +13.09,  +59.23,  +18.54,   -3.25,  -60.11,  -27.07]
  APPROACH_PLACE <- phase APPROACH_PLACE argmax_idx=350 (start=350 end=390, gap=15.39°)
                    angles = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
  PLACE          <- gripper open mark idx=400（PLACE phase 範囲内）
                    angles = [ +43.06,  +66.00,   -5.97,   +6.67,  -62.05,  -35.33]
[RTD   ] JOINT_LIMITS 一括検証 OK（全 endpoint + HOME）
[RTD   ] 姿勢検査 OK（全 116 姿勢が 有限値 + JOINT_LIMITS + J4_SAFE [-90.0, +60.0] 内）
[RTD   ] j4 の余裕は最小 22.94°（しきい値 3.0° 以上）
[RTD   ] 現在姿勢を daemon から取得します
[RTD   ] 現在姿勢 = [  -0.43,   +1.23,   +0.79,   +0.17,   -0.26,  -30.23]
==============================================================================
[RTD   ] 実行プラン（daemon 経由・区間ごとに 1 回送信 → 到達待ち）
==============================================================================
  [STEP  1] MOVE → HOME (single send + settle)  speed=20
            current = [  -0.43,   +1.23,   +0.79,   +0.17,   -0.26,  -30.23]
            to HOME = [  +0.00,   +0.00,   +0.00,   +0.00,   +0.00,  -30.00]
            max |Δ| = 1.23°  (settle 3.0s)
  [STEP  2] GRIPPER OPEN  daemon_set_gripper(0, 50, wait=0) ×1 回（daemon 事前 2.0s + 事後 2.0s + 待ち 2.0s）= 計 6.0s
            開いたかは確認しません（gv を使わず・開始前の y/n も無し。判定は終了後の y/n と動画）
  [STEP  3] MOVE → APPROACH_PICK  segment HOME → APPROACH_PICK  tol=2.0°  [rpp.TOL_APPROACH（approach 系）]
            from    = [  +0.00,   +0.00,   +0.00,   +0.00,   +0.00,  -30.00]
            to      = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
            max |Δ| = 67.06°  1 回送信 speed=20  (~ 3.4s @ 20°/s 目安・到達待ち 最大 12.1s)
  [STEP  4] MOVE → PICK  segment APPROACH_PICK → PICK  [critical]  tol=3.0°  [rpp.TOL_PICK_PLACE（stage4_pick）]
            from    = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
            to      = [ +13.09,  +59.23,  +18.54,   -3.25,  -60.11,  -27.07]
            max |Δ| = 14.85°  1 回送信 speed=20  (~ 0.7s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP  5] GRIPPER CLOSE  daemon_set_gripper_value(20, 50) + sleep(2.0s)
  [STEP  6] MOVE → APPROACH_PICK (lift)  segment PICK → APPROACH_PICK (lift)  tol=3.0°  [rpp.TOL_LIFT_BACK（lift の残差 2.19° を吸収）]
            from    = [ +13.09,  +59.23,  +18.54,   -3.25,  -60.11,  -27.07]
            to      = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
            max |Δ| = 14.85°  1 回送信 speed=20  (~ 0.7s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP  7] MOVE → APPROACH_PLACE  segment APPROACH_PICK → APPROACH_PLACE  tol=3.0°  [rpp.TOL_APPROACH_PLACE（stage7）]
            from    = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
            to      = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
            max |Δ| = 36.38°  1 回送信 speed=20  (~ 1.8s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP  8] MOVE → PLACE  segment APPROACH_PLACE → PLACE  [critical]  tol=3.0°  [rpp.TOL_PICK_PLACE（stage8_place）]
            from    = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
            to      = [ +43.06,  +66.00,   -5.97,   +6.67,  -62.05,  -35.33]
            max |Δ| = 15.39°  1 回送信 speed=20  (~ 0.8s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP  9] GRIPPER OPEN  daemon_set_gripper(0, 50, wait=0) ×1 回（daemon 事前 2.0s + 事後 2.0s + 待ち 2.0s）= 計 6.0s
            開いたかは確認しません（gv を使わず・開始前の y/n も無し。判定は終了後の y/n と動画）
  [STEP 10] MOVE → APPROACH_PLACE (retreat)  segment PLACE → APPROACH_PLACE (retreat)  tol=3.0°  [rpp.TOL_LIFT_BACK（stage10_lift_back）]
            from    = [ +43.06,  +66.00,   -5.97,   +6.67,  -62.05,  -35.33]
            to      = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
            max |Δ| = 15.39°  1 回送信 speed=20  (~ 0.8s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP 11] MOVE → HOME  segment APPROACH_PLACE → HOME  tol=2.5°  [rpp.TOL_HOME（stage1_to_home / HOME 復帰）]
            from    = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
            to      = [  +0.00,   +0.00,   +0.00,   +0.00,   +0.00,  -30.00]
            max |Δ| = 50.62°  1 回送信 speed=20  (~ 2.5s @ 20°/s 目安・到達待ち 最大 9.6s)
==============================================================================
[RTD   ] 送信 = 8 回（STEP 1 + move 7 区間）, 想定所要時間 ≈ 27.7s（最悪 73.0s）
[RTD   ]   内訳: 先頭 settle 3.0s + 移動 10.7s（max|Δ| 合計 214.5° @ 20°/s 目安） + gripper 14.0s
[RTD   ]   到達確認: 許容は区間ごと（本線 run_pick_place.py の stage 値）/ 最大は clamp(2.0 + max|Δ|/20*3.0, 8.0, 30.0) 秒
[RTD   ]   届かないとき: 送信前から 1.0° 未満しか動いていなければ 5.0s 待って**同じ目標へ 1 回だけ**再送（本線と同じ）。それでも届かなければ ABORT（HOME へ自動で戻らない）
[RTD   ]   実測 j4: [-90.0, +60.0] の外は WARN / [-98.0, +68.0] の外は ABORT
==============================================================================
[RTD   ] measure: /Volumes/KIOXIA/r2r2r-data/mecharm_calibration/teach_poses_20261113/measure_20261113_191316.json
[RTD   ]   measured_at = 2026-11-13T19:13:21.449689  block = (-263.9, +277.9) mm  box = (-143.5, +355.0) mm
[RTD   ] 再生直前: 上カメラでマット四隅とブロック画素を確認します
[RTD   ] [WARN] 再生直前: 四隅が最大 810.4px ずれています（1 回目 / 上限 15.0px）。測り直します
[RTD   ] [WARN] 再生直前: 四隅が最大 810.4px ずれています（2 回目 / 上限 15.0px）。測り直します
[RTD   ] [WARN] 再生直前: 四隅が最大 810.4px ずれています（3 回目 / 上限 15.0px）。やり直しの上限に達しました
[RTD   ] 再生直前: block = (-261.2, +279.7) mm（measure の homography で換算）
[RTD   ] 確認画像: /Volumes/KIOXIA/r2r2r-data/mecharm_calibration/teach_poses_20261113/prerun_20261113_192027.jpg
[RTD   ] 弾いた理由と各回の記録を残しました: /Volumes/KIOXIA/r2r2r-data/mecharm_calibration/teach_poses_20261113/prerun_20261113_192027_rejected.json
[RTD   ] [WARN] マット四隅が measure 時から最大 810.4px ずれています（上限 15.0px・最大 3 回やり直しても収まらず）。カメラが動いた可能性があるので止めます。measure を取り直してください（各隅のずれ: 5.0, 810.4, 393.7, 7.6）（**止めません**・WARN のみ）
[RTD   ] [SAFETY] 再生中はグリッパーが実機で開閉します。爪に指を挟まないこと。
[RTD   ] [SAFETY] 止めるときはアームの電源を切ること。Ctrl-C は新しい送信をやめるだけで、進行中の移動は止まりません。
[RTD   ] [SAFETY] 開いたかの自動確認はしません（gv は使わない）。STEP 2 で open を送ってから PICK へ降ります。
[RTD   ] 周囲に手・物が無いか確認してください。OK なら Enter で開始

[RTD   ] 試行フォルダ: /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_192043
[RTD   ] 教えた記録のコピー: /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_192043/teach/drag_v2_20221013_233323.json
[RTD   ] recorder に trial_start を送りました。1.0s 待ってから動き出します（mp4 writer が開くまで）
[RTD   ] 爪と肩の電流を 1 秒 10 回で記録します（爪を動かしている間は読みません）→ /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_192043/recording/currents.csv
[RTD   ] 電源 5A: 爪の位置（番地 7:56/57）と電圧（2:62・7:62）も読みます（生の値・未確認の番地）→ /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_192043/recording/power_regs.csv
  [Pi] fresh_mode=1
[RTD   ] daemon_set_fresh_mode(1)（最新コマンド優先・本線 run_pick_place.py L3976 と同じ。647 試行の実績はこの状態）
[STEP  1] MOVE → HOME  daemon_send_angles(HOME, 20)
[STEP  1] 到達待ち 許容 2.5°[TOL_HOME（stage1_to_home / HOME 復帰）] / 最大 8.0s
[RTD   ] 先頭移動: 送信直前の実測で max|Δ| = 1.23° / 到達待ち 最大 8.0s
[STEP  1] 3.0s 待ちます（settle）
[RTD   ] arrival OK (current → HOME, max|Δ|=1.23° <= tol 2.5°)
[STEP  2] GRIPPER OPEN → daemon_set_gripper(0, 50, wait=0)
[RTD   ] 静止確認 OK（step2_open: 連続 3 回・連続差 最大 0.00° <= 1.0°）
  [Pi] GRIPPER: OPEN result= None
[RTD   ] gripper open (1/1 回目) の daemon 往復 = 2.013s
[STEP  2] open 後 2.0s 待ちます（本線の daemon wait=2 相当・読み取りなし）
[STEP  2] gripper dwell 2.0s（読み取りなし）
[STEP  3] MOVE → APPROACH_PICK  segment HOME → APPROACH_PICK  (1 回送信 speed=20 → 到達待ち 許容 2.0°[TOL_APPROACH（approach 系）] / 最大 12.1s)
[RTD   ] 送信 OK（daemon 往復 1.032s）
[RTD   ] arrival OK (HOME → APPROACH_PICK, max|Δ|=0.97° <= tol 2.0°)
[STEP  4] MOVE → PICK  segment APPROACH_PICK → PICK  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_PICK_PLACE（stage4_pick）] / 最大 8.0s)  [critical]
[RTD   ] 送信 OK（daemon 往復 1.032s）
[RTD   ] arrival OK (APPROACH_PICK → PICK, max|Δ|=1.76° <= tol 3.0°)
[STEP  5] GRIPPER CLOSE → daemon_set_gripper_value(20, 50)
[RTD   ] 静止確認 OK（step5_close: 連続 3 回・連続差 最大 0.09° <= 1.0°）
  [Pi] GRIPPER: VALUE=20 speed=50 result= None
[RTD   ] gripper close (1/1 回目) の daemon 往復 = 0.013s
[STEP  5] gripper dwell 2.0s（読み取りなし）
[STEP  6] MOVE → APPROACH_PICK (lift)  segment PICK → APPROACH_PICK (lift)  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_LIFT_BACK（lift の残差 2.19° を吸収）] / 最大 8.0s)
[RTD   ] 送信 OK（daemon 往復 1.039s）
[RTD   ] arrival OK (PICK → APPROACH_PICK (lift), max|Δ|=2.90° <= tol 3.0°)
[STEP  7] MOVE → APPROACH_PLACE  segment APPROACH_PICK → APPROACH_PLACE  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_APPROACH_PLACE（stage7）] / 最大 8.0s)
[RTD   ] 送信 OK（daemon 往復 1.056s）
[RTD   ] arrival OK (APPROACH_PICK → APPROACH_PLACE, max|Δ|=1.49° <= tol 3.0°)
[STEP  8] MOVE → PLACE  segment APPROACH_PLACE → PLACE  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_PICK_PLACE（stage8_place）] / 最大 8.0s)  [critical]
[RTD   ] 送信 OK（daemon 往復 1.031s）
[RTD   ] arrival OK (APPROACH_PLACE → PLACE, max|Δ|=1.32° <= tol 3.0°)
[STEP  9] GRIPPER OPEN → daemon_set_gripper(0, 50, wait=0)
[RTD   ] 静止確認 OK（step9_open: 連続 3 回・連続差 最大 0.09° <= 1.0°）
  [Pi] GRIPPER: OPEN result= None
[RTD   ] gripper open (1/1 回目) の daemon 往復 = 2.013s
[STEP  9] open 後 2.0s 待ちます（本線の daemon wait=2 相当・読み取りなし）
[STEP  9] gripper dwell 2.0s（読み取りなし）
[STEP 10] MOVE → APPROACH_PLACE (retreat)  segment PLACE → APPROACH_PLACE (retreat)  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_LIFT_BACK（stage10_lift_back）] / 最大 8.0s)
[RTD   ] 送信 OK（daemon 往復 1.032s）
[RTD   ] arrival OK (PLACE → APPROACH_PLACE (retreat), max|Δ|=2.02° <= tol 3.0°)
[STEP 11] MOVE → HOME  segment APPROACH_PLACE → HOME  (1 回送信 speed=20 → 到達待ち 許容 2.5°[TOL_HOME（stage1_to_home / HOME 復帰）] / 最大 9.6s)
[RTD   ] 送信 OK（daemon 往復 1.030s）
[RTD   ] arrival OK (APPROACH_PLACE → HOME, max|Δ|=1.23° <= tol 2.5°)
  [Pi] fresh_mode=0
[RTD   ] daemon_set_fresh_mode(0) 完了
[RTD   ] 実測角の読み取り: ok 52/52 回, 実効 1.54 Hz（目標 3.0 Hz 以上）
[RTD   ] [WARN] 実測角の読み取りが目標 3.0 Hz を下回りました（1.54 Hz）。学習データの state 密度が 19 本より薄くなります
[RTD   ] send_angles の daemon 往復 (7 回): 平均 1.036s / p50 1.032s / 最大 1.056s（timeout 6.0s）
[RTD   ] [WARN] 送信 1 回に 1.056s かかった回があります。daemon は送信後に角度を読み直すので、動き始めで読めないと伸びます（単発送信なので試行全体への影響は小さい）
[RTD   ] 区間の所要（送信→到達確認まで）(8 区間): 平均 2.10s / 最大 4.61s
[RECORD] 電流の記録終了 46 行 (1.36 行/秒. 本体が眠っている間だけ読む. 爪の間 14.06 秒は読まない. 見込み超え 0 回. read_servo)  → /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_192043/recording/currents.csv
[RECORD] 爪の位置と電圧 36 行 (読めた数 {'7:56': 18, '7:57': 18, '2:62': 18, '7:62': 18})  → /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_192043/recording/power_regs.csv
==============================================================================
[RTD   ] 再生 完了
==============================================================================
[RTD   ] つかめたか (y/n) > y
[RTD   ] 箱に入ったか (y/n) > y
[RTD   ] 試行 JSON: /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_192043/run_0001_20261113_192043.json
[LEDGER] append OK: /Volumes/KIOXIA/r2r2r-data/runs/pick_place_ledger_v3.csv (pick=yes place=yes recording_status=ok)
[RTD   ] 次に進むには: python3 /Users/shimazueiichi/r2r2r-scripts/pi05/build_demo_episodes.py --run run_0001_20261113_192043 --dataset mecharm_redblock_box_teach_v1
(base) shimazueiichi@shimadzueiichinoMacBook-Pro r2r2r-scripts % python3 dynamic_tracking_limits/drag_teaching/record_teach_demo.py run --teach drag_v2_20221013_233323.json --power 5A --execute
[RTD   ] 到達許容差は本線 run_pick_place.py の stage 値を使います（区間ごと。一律 8.0° は 2026-10-19 にやめた）:
[RTD   ]   HOME                       2.5°  ← rpp.TOL_HOME（stage1_to_home / HOME 復帰）
[RTD   ]   APPROACH_PICK              2.0°  ← rpp.TOL_APPROACH（approach 系）
[RTD   ]   PICK                       3.0°  ← rpp.TOL_PICK_PLACE（stage4_pick）
[RTD   ]   APPROACH_PICK (lift)       3.0°  ← rpp.TOL_LIFT_BACK（lift の残差 2.19° を吸収）
[RTD   ]   APPROACH_PLACE             3.0°  ← rpp.TOL_APPROACH_PLACE（stage7）
[RTD   ]   PLACE                      3.0°  ← rpp.TOL_PICK_PLACE（stage8_place）
[RTD   ]   APPROACH_PLACE (retreat)   3.0°  ← rpp.TOL_LIFT_BACK（stage10_lift_back）
[RTD   ] 到達を待つ最大時間 = clamp(2.0 + max|Δ|/20*3.0, 8.0, 30.0) 秒（本線と同じ wr._compute_arrival_timeout）
[RTD   ] 爪の閉じる値: 20（既定）
[RTD   ] 電源: 5A（--power。試行 JSON の power に残し、爪の位置と電圧も読みます）
[RTD   ] モード: EXECUTE（実機）  記録: ON
[RTD   ] Pi から教えた記録を取得します: ubuntu@192.168.2.1:r2r2r-scripts/dynamic_tracking_limits/drag_teaching/drag_v2_20221013_233323.json
[RTD   ] 取得しました → /var/folders/5w/2q2mc64n6yv63gfh31h34w6h0000gn/T/record_teach_demo_mwgv6v4l/drag_v2_20221013_233323.json
[RTD   ] 入力ファイル: drag_v2_20221013_233323.json
[RTD   ] 抽出ウェイポイント:
  APPROACH_PICK  <- phase APPROACH_PICK argmax_idx=175 (start=175 end=233, gap=14.85°)
                    angles = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
  PICK           <- gripper close mark idx=247（PICK phase 範囲内）
                    angles = [ +13.09,  +59.23,  +18.54,   -3.25,  -60.11,  -27.07]
  APPROACH_PLACE <- phase APPROACH_PLACE argmax_idx=350 (start=350 end=390, gap=15.39°)
                    angles = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
  PLACE          <- gripper open mark idx=400（PLACE phase 範囲内）
                    angles = [ +43.06,  +66.00,   -5.97,   +6.67,  -62.05,  -35.33]
[RTD   ] JOINT_LIMITS 一括検証 OK（全 endpoint + HOME）
[RTD   ] 姿勢検査 OK（全 116 姿勢が 有限値 + JOINT_LIMITS + J4_SAFE [-90.0, +60.0] 内）
[RTD   ] j4 の余裕は最小 22.94°（しきい値 3.0° 以上）
[RTD   ] 現在姿勢を daemon から取得します
[RTD   ] 現在姿勢 = [  -0.43,   +1.23,   +0.79,   +0.26,   -0.26,  -30.23]
==============================================================================
[RTD   ] 実行プラン（daemon 経由・区間ごとに 1 回送信 → 到達待ち）
==============================================================================
  [STEP  1] MOVE → HOME (single send + settle)  speed=20
            current = [  -0.43,   +1.23,   +0.79,   +0.26,   -0.26,  -30.23]
            to HOME = [  +0.00,   +0.00,   +0.00,   +0.00,   +0.00,  -30.00]
            max |Δ| = 1.23°  (settle 3.0s)
  [STEP  2] GRIPPER OPEN  daemon_set_gripper(0, 50, wait=0) ×1 回（daemon 事前 2.0s + 事後 2.0s + 待ち 2.0s）= 計 6.0s
            開いたかは確認しません（gv を使わず・開始前の y/n も無し。判定は終了後の y/n と動画）
  [STEP  3] MOVE → APPROACH_PICK  segment HOME → APPROACH_PICK  tol=2.0°  [rpp.TOL_APPROACH（approach 系）]
            from    = [  +0.00,   +0.00,   +0.00,   +0.00,   +0.00,  -30.00]
            to      = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
            max |Δ| = 67.06°  1 回送信 speed=20  (~ 3.4s @ 20°/s 目安・到達待ち 最大 12.1s)
  [STEP  4] MOVE → PICK  segment APPROACH_PICK → PICK  [critical]  tol=3.0°  [rpp.TOL_PICK_PLACE（stage4_pick）]
            from    = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
            to      = [ +13.09,  +59.23,  +18.54,   -3.25,  -60.11,  -27.07]
            max |Δ| = 14.85°  1 回送信 speed=20  (~ 0.7s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP  5] GRIPPER CLOSE  daemon_set_gripper_value(20, 50) + sleep(2.0s)
  [STEP  6] MOVE → APPROACH_PICK (lift)  segment PICK → APPROACH_PICK (lift)  tol=3.0°  [rpp.TOL_LIFT_BACK（lift の残差 2.19° を吸収）]
            from    = [ +13.09,  +59.23,  +18.54,   -3.25,  -60.11,  -27.07]
            to      = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
            max |Δ| = 14.85°  1 回送信 speed=20  (~ 0.7s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP  7] MOVE → APPROACH_PLACE  segment APPROACH_PICK → APPROACH_PLACE  tol=3.0°  [rpp.TOL_APPROACH_PLACE（stage7）]
            from    = [ +12.83,  +44.38,  +31.11,   -3.25,  -67.06,  -26.63]
            to      = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
            max |Δ| = 36.38°  1 回送信 speed=20  (~ 1.8s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP  8] MOVE → PLACE  segment APPROACH_PLACE → PLACE  [critical]  tol=3.0°  [rpp.TOL_PICK_PLACE（stage8_place）]
            from    = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
            to      = [ +43.06,  +66.00,   -5.97,   +6.67,  -62.05,  -35.33]
            max |Δ| = 15.39°  1 回送信 speed=20  (~ 0.8s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP  9] GRIPPER OPEN  daemon_set_gripper(0, 50, wait=0) ×1 回（daemon 事前 2.0s + 事後 2.0s + 待ち 2.0s）= 計 6.0s
            開いたかは確認しません（gv を使わず・開始前の y/n も無し。判定は終了後の y/n と動画）
  [STEP 10] MOVE → APPROACH_PLACE (retreat)  segment PLACE → APPROACH_PLACE (retreat)  tol=3.0°  [rpp.TOL_LIFT_BACK（stage10_lift_back）]
            from    = [ +43.06,  +66.00,   -5.97,   +6.67,  -62.05,  -35.33]
            to      = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
            max |Δ| = 15.39°  1 回送信 speed=20  (~ 0.8s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP 11] MOVE → HOME  segment APPROACH_PLACE → HOME  tol=2.5°  [rpp.TOL_HOME（stage1_to_home / HOME 復帰）]
            from    = [ +43.15,  +50.62,   -5.27,   +5.44,  -46.66,  -35.41]
            to      = [  +0.00,   +0.00,   +0.00,   +0.00,   +0.00,  -30.00]
            max |Δ| = 50.62°  1 回送信 speed=20  (~ 2.5s @ 20°/s 目安・到達待ち 最大 9.6s)
==============================================================================
[RTD   ] 送信 = 8 回（STEP 1 + move 7 区間）, 想定所要時間 ≈ 27.7s（最悪 73.0s）
[RTD   ]   内訳: 先頭 settle 3.0s + 移動 10.7s（max|Δ| 合計 214.5° @ 20°/s 目安） + gripper 14.0s
[RTD   ]   到達確認: 許容は区間ごと（本線 run_pick_place.py の stage 値）/ 最大は clamp(2.0 + max|Δ|/20*3.0, 8.0, 30.0) 秒
[RTD   ]   届かないとき: 送信前から 1.0° 未満しか動いていなければ 5.0s 待って**同じ目標へ 1 回だけ**再送（本線と同じ）。それでも届かなければ ABORT（HOME へ自動で戻らない）
[RTD   ]   実測 j4: [-90.0, +60.0] の外は WARN / [-98.0, +68.0] の外は ABORT
==============================================================================
[RTD   ] measure: /Volumes/KIOXIA/r2r2r-data/mecharm_calibration/teach_poses_20261113/measure_20261113_191316.json
[RTD   ]   measured_at = 2026-11-13T19:13:21.449689  block = (-263.9, +277.9) mm  box = (-143.5, +355.0) mm
[RTD   ] 再生直前: 上カメラでマット四隅とブロック画素を確認します
[RTD   ] [WARN] 再生直前: 四隅が最大 810.0px ずれています（1 回目 / 上限 15.0px）。測り直します
[RTD   ] [WARN] 再生直前: 四隅が最大 810.2px ずれています（2 回目 / 上限 15.0px）。測り直します
[RTD   ] [WARN] 再生直前: 四隅が最大 809.4px ずれています（3 回目 / 上限 15.0px）。やり直しの上限に達しました
[RTD   ] 再生直前: block = (-527.5, +251.4) mm（measure の homography で換算）
[RTD   ] 確認画像: /Volumes/KIOXIA/r2r2r-data/mecharm_calibration/teach_poses_20261113/prerun_20261113_192210.jpg
[RTD   ] 弾いた理由と各回の記録を残しました: /Volumes/KIOXIA/r2r2r-data/mecharm_calibration/teach_poses_20261113/prerun_20261113_192210_rejected.json
[RTD   ] [WARN] マット四隅が measure 時から最大 809.4px ずれています（上限 15.0px・最大 3 回やり直しても収まらず）。カメラが動いた可能性があるので止めます。measure を取り直してください（各隅のずれ: 5.1, 809.4, 393.1, 7.6）（**止めません**・WARN のみ）
[RTD   ] [SAFETY] 再生中はグリッパーが実機で開閉します。爪に指を挟まないこと。
[RTD   ] [SAFETY] 止めるときはアームの電源を切ること。Ctrl-C は新しい送信をやめるだけで、進行中の移動は止まりません。
[RTD   ] [SAFETY] 開いたかの自動確認はしません（gv は使わない）。STEP 2 で open を送ってから PICK へ降ります。
[RTD   ] 周囲に手・物が無いか確認してください。OK なら Enter で開始

[RTD   ] 試行フォルダ: /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_192223
[RTD   ] 教えた記録のコピー: /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_192223/teach/drag_v2_20221013_233323.json
[RTD   ] recorder に trial_start を送りました。1.0s 待ってから動き出します（mp4 writer が開くまで）
[RTD   ] 爪と肩の電流を 1 秒 10 回で記録します（爪を動かしている間は読みません）→ /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_192223/recording/currents.csv
[RTD   ] 電源 5A: 爪の位置（番地 7:56/57）と電圧（2:62・7:62）も読みます（生の値・未確認の番地）→ /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_192223/recording/power_regs.csv
  [Pi] fresh_mode=1
[RTD   ] daemon_set_fresh_mode(1)（最新コマンド優先・本線 run_pick_place.py L3976 と同じ。647 試行の実績はこの状態）
[STEP  1] MOVE → HOME  daemon_send_angles(HOME, 20)
[STEP  1] 到達待ち 許容 2.5°[TOL_HOME（stage1_to_home / HOME 復帰）] / 最大 8.0s
[RTD   ] 先頭移動: 送信直前の実測で max|Δ| = 1.23° / 到達待ち 最大 8.0s
[STEP  1] 3.0s 待ちます（settle）
[RTD   ] arrival OK (current → HOME, max|Δ|=1.23° <= tol 2.5°)
[STEP  2] GRIPPER OPEN → daemon_set_gripper(0, 50, wait=0)
[RTD   ] 静止確認 OK（step2_open: 連続 3 回・連続差 最大 0.00° <= 1.0°）
  [Pi] GRIPPER: OPEN result= None
[RTD   ] gripper open (1/1 回目) の daemon 往復 = 2.015s
[STEP  2] open 後 2.0s 待ちます（本線の daemon wait=2 相当・読み取りなし）
[STEP  2] gripper dwell 2.0s（読み取りなし）
[STEP  3] MOVE → APPROACH_PICK  segment HOME → APPROACH_PICK  (1 回送信 speed=20 → 到達待ち 許容 2.0°[TOL_APPROACH（approach 系）] / 最大 12.1s)
[RTD   ] 送信 OK（daemon 往復 1.031s）
[RTD   ] arrival OK (HOME → APPROACH_PICK, max|Δ|=1.06° <= tol 2.0°)
[STEP  4] MOVE → PICK  segment APPROACH_PICK → PICK  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_PICK_PLACE（stage4_pick）] / 最大 8.0s)  [critical]
[RTD   ] 送信 OK（daemon 往復 1.057s）
[RTD   ] arrival OK (APPROACH_PICK → PICK, max|Δ|=1.76° <= tol 3.0°)
[STEP  5] GRIPPER CLOSE → daemon_set_gripper_value(20, 50)
[RTD   ] 静止確認 OK（step5_close: 連続 3 回・連続差 最大 0.00° <= 1.0°）
  [Pi] GRIPPER: VALUE=20 speed=50 result= None
[RTD   ] gripper close (1/1 回目) の daemon 往復 = 0.011s
[STEP  5] gripper dwell 2.0s（読み取りなし）
[STEP  6] MOVE → APPROACH_PICK (lift)  segment PICK → APPROACH_PICK (lift)  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_LIFT_BACK（lift の残差 2.19° を吸収）] / 最大 8.0s)
[RTD   ] 送信 OK（daemon 往復 1.029s）
[RTD   ] arrival OK (PICK → APPROACH_PICK (lift), max|Δ|=2.90° <= tol 3.0°)
[STEP  7] MOVE → APPROACH_PLACE  segment APPROACH_PICK → APPROACH_PLACE  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_APPROACH_PLACE（stage7）] / 最大 8.0s)
[RTD   ] 送信 OK（daemon 往復 1.052s）
[RTD   ] arrival OK (APPROACH_PICK → APPROACH_PLACE, max|Δ|=1.49° <= tol 3.0°)
[STEP  8] MOVE → PLACE  segment APPROACH_PLACE → PLACE  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_PICK_PLACE（stage8_place）] / 最大 8.0s)  [critical]
[RTD   ] 送信 OK（daemon 往復 1.031s）
[RTD   ] arrival OK (APPROACH_PLACE → PLACE, max|Δ|=1.32° <= tol 3.0°)
[STEP  9] GRIPPER OPEN → daemon_set_gripper(0, 50, wait=0)
[RTD   ] 静止確認 OK（step9_open: 連続 3 回・連続差 最大 0.09° <= 1.0°）
  [Pi] GRIPPER: OPEN result= None
[RTD   ] gripper open (1/1 回目) の daemon 往復 = 2.013s
[STEP  9] open 後 2.0s 待ちます（本線の daemon wait=2 相当・読み取りなし）
[STEP  9] gripper dwell 2.0s（読み取りなし）
[STEP 10] MOVE → APPROACH_PLACE (retreat)  segment PLACE → APPROACH_PLACE (retreat)  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_LIFT_BACK（stage10_lift_back）] / 最大 8.0s)
[RTD   ] 送信 OK（daemon 往復 1.029s）
[RTD   ] arrival OK (PLACE → APPROACH_PLACE (retreat), max|Δ|=2.02° <= tol 3.0°)
[STEP 11] MOVE → HOME  segment APPROACH_PLACE → HOME  (1 回送信 speed=20 → 到達待ち 許容 2.5°[TOL_HOME（stage1_to_home / HOME 復帰）] / 最大 9.6s)
[RTD   ] 送信 OK（daemon 往復 1.032s）
[RTD   ] arrival OK (APPROACH_PLACE → HOME, max|Δ|=1.31° <= tol 2.5°)
  [Pi] fresh_mode=0
[RTD   ] daemon_set_fresh_mode(0) 完了
[RTD   ] 実測角の読み取り: ok 52/52 回, 実効 1.54 Hz（目標 3.0 Hz 以上）
[RTD   ] [WARN] 実測角の読み取りが目標 3.0 Hz を下回りました（1.54 Hz）。学習データの state 密度が 19 本より薄くなります
[RTD   ] send_angles の daemon 往復 (7 回): 平均 1.037s / p50 1.031s / 最大 1.057s（timeout 6.0s）
[RTD   ] [WARN] 送信 1 回に 1.057s かかった回があります。daemon は送信後に角度を読み直すので、動き始めで読めないと伸びます（単発送信なので試行全体への影響は小さい）
[RTD   ] 区間の所要（送信→到達確認まで）(8 区間): 平均 2.10s / 最大 4.61s
[RECORD] 電流の記録終了 46 行 (1.36 行/秒. 本体が眠っている間だけ読む. 爪の間 14.059 秒は読まない. 見込み超え 0 回. read_servo)  → /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_192223/recording/currents.csv
[RECORD] 爪の位置と電圧 36 行 (読めた数 {'7:56': 18, '7:57': 18, '2:62': 18, '7:62': 18})  → /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_192223/recording/power_regs.csv
==============================================================================
[RTD   ] 再生 完了
==============================================================================
[RTD   ] つかめたか (y/n) > y
[RTD   ] 箱に入ったか (y/n) > y
[RTD   ] 試行 JSON: /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_192223/run_0001_20261113_192223.json
[LEDGER] append OK: /Volumes/KIOXIA/r2r2r-data/runs/pick_place_ledger_v3.csv (pick=yes place=yes recording_status=ok)
[RTD   ] 次に進むには: python3 /Users/shimazueiichi/r2r2r-scripts/pi05/build_demo_episodes.py --run run_0001_20261113_192223 --dataset mecharm_redblock_box_teach_v1
```


## 12V・2A で同じ再生を撮らずに進めた判断

手順書（`POWER_AB.md`）では、12V・2A のうちに同じ再生で3回撮り、12V・5A の3回と並べることにしていました。「動きが良くなった気がする」で終わらせないためです。ところが12V・2A の記録を撮る前にアダプターが届き、先に12V・5A で動かしました。

1回目の再生を見て、「アームの動きがキビキビして今までと全然違う」と感じました。Claude は、12V・2A に戻して同じ再生を3回撮ってから比べることを提案しましたが、目で見て違いがはっきりしているので比べる記録は要らないと判断し、12V・5A のまま進めることにしました。そこで、12V・2A との比べは、前の日（11月11日）に同じ位置5・同じモデル・同じ閉じる値で撮った π0.5 の推論の記録と並べることにしました（次の節）。再生どうしの比べは残っていません。


## 位置5 で π0.5 を12V・5A で5回動かした

### Runpod の A40 で deep1 を起動し、位置5 で5回

前の回で落としていたのは、π0.5 に動かさせた位置5 のつかみです。同じ条件（モデル deep1・爪の閉じる値25・位置5）で、`lab_start.sh` から Pod を作って推論しました。Pod を作り始めてから1回目の推論までは約5分、5回の推論は合わせて約8分（位置合わせの時間を除く）でした。

| 回 | 推論の記録 | 結果 | 人の手 | 閉じて1秒後の爪の電流 |
|---|---|---|---|---|
| 1 | pi05_20261113_193254 | 成功 | なし | 791 |
| 2 | pi05_20261113_193542 | 成功 | なし | 778.5 |
| 3 | pi05_20261113_193712 | 成功 | ゲームパッドで1回（推論9 のあと、肩 j1 を54°→48° に持ち上げた） | 676 |
| 4 | pi05_20261113_193939 | 成功 | なし | 722 |
| 5 | pi05_20261113_194108 | 成功 | なし | 765 |

爪の締め直し（r）は、5回とも一度も使っていません。

### 12V・2A の日の3回と、つかんでいる間の爪の電流を並べた

11月11日の夕方に、同じ deep1・閉じる値25・位置5 で動かした3回（[LOG487](https://pixelstomotors.com/record/mecharm-270-drops-block-underpowered-adapter) の終わりの3本）と、爪がブロックを押している間の電流を並べました。押している間は、爪の電流が300 を超えてから、開く指令を送るまでとしました。「力が抜けた」は、その間に電流が150 未満へ落ち、1秒以上そのままだったときです。

| 電源 | 推論の記録 | 結果 | 人の直し | 押している時間 | 電流の中央値 | 力が抜けた時刻（閉じてから） |
|---|---|---|---|---|---|---|
| 12V・2A | pi05_20261111_160851 | 成功 | 1回 | 121.4秒 | 661 | 103.8秒 |
| 12V・2A | pi05_20261111_161402 | 失敗 | 1回 | 171.1秒 | 634 | 72.4秒 |
| 12V・2A | pi05_20261111_161743 | 失敗 | 1回 | 68.1秒 | 9 | 26.7秒 |
| 12V・5A | pi05_20261113_193254 | 成功 | 0 | 23.4秒 | 723 | 抜けなかった |
| 12V・5A | pi05_20261113_193542 | 成功 | 0 | 29.5秒 | 627 | 抜けなかった |
| 12V・5A | pi05_20261113_193712 | 成功 | 1回 | 38.3秒 | 618 | 24.6秒 |
| 12V・5A | pi05_20261113_193939 | 成功 | 0 | 27.4秒 | 645 | 抜けなかった |
| 12V・5A | pi05_20261113_194108 | 成功 | 0 | 26.9秒 | 700 | 抜けなかった |

12V・2A の日は、3回とも途中で力が抜け、3回とも人がゲームパッドで直していました。押している時間が68〜171秒と長いのは、人の直しを待つ時間が入っているためです。12V・5A では、閉じてから箱の上で開くまでが23〜30秒で終わり、4回は一度も抜けませんでした。

- ねらい：本体の求める40W に足りない24W の電源を、60W に替える
- 変わったこと：位置5 の π0.5 は、12V・2A の3回中1回成功から、12V・5A の5回とも成功へ。人の直しは3回中3回から5回中1回へ
- 見込める効果：π0.5 のお手本を撮り足すときに、緩みかけたお手本が混ざりにくくなる（見込み。次にお手本を撮るときの爪の電流で確かめる）

### 12V・5A でも1回だけ、持ち上げた瞬間に爪の電流が落ちた

3回目（pi05_20261113_193712）は、推論9 のあとで人がゲームパッドの方向キー（上）を押し、肩 j1 を54.31° から持ち上げました。その記録は 19:38:07.859 に始まり、爪の電流は 19:38:08.73 ごろに610 から93 へ、そのあと開くまで64〜94 のあいだにとどまりました。ブロックは落ちず、箱に入っています。

12V・2A の日に力が抜けていたのも、アームを動かす指令を送った直後でした（LOG487）。12V・5A でも、ゲームパッドで一気に持ち上げた場面では、同じように爪の電流が落ちることがある、ということです。π0.5 が自分で動かした4回では、一度も落ちていません。持ち上げの速さで決まるのか、電源がまだ足りないのかは、この1回からは分かりません。

### 押している間の電流を出したスクリプト

12V・2A と12V・5A の推論の記録から、上の表の数字を出したコードです。元のデータは読むだけで、結果は `lab/Log34/analysis/hold_2A_vs_5A.json` に書き出しました。

#### hold_analysis.py

```python
"""π0.5 の実機推論で、爪がブロックを押している間の電流を、電源 12V・2A の日（2026-11-11）と 12V・5A の日（2026-11-13）で並べる（LOG504）。

元データ（読むだけ）: /Volumes/KIOXIA/r2r2r-data/runs/pi05_policy/{run}/recording/currents.csv・log.jsonl・{run}.json
押している間 = 爪の電流が 300 を超えてから、開く指令（grip_cmd=0 のチャンク）を送るまで。
「抜けた」= 押している間に電流が 150 未満へ落ちた（開く指令の前に）。
使い方: python3 hold_analysis.py <runs/pi05_policy のフォルダ> <出力 JSON>
"""
import csv
import json
import sys
from pathlib import Path

RUNS = {
    '2A': ['pi05_20261111_160851', 'pi05_20261111_161402', 'pi05_20261111_161743'],
    '5A': ['pi05_20261113_193254', 'pi05_20261113_193542', 'pi05_20261113_193712',
           'pi05_20261113_193939', 'pi05_20261113_194108'],
}
ON, OFF = 300, 150


def one(root, run):
    d = Path(root) / run
    meta = json.loads((d / f'{run}.json').read_text())
    grip_value, open_t, regrips, pads = None, None, 0, 0
    for line in (d / 'log.jsonl').read_text().splitlines():
        j = json.loads(line)
        if j.get('type') == 'model':
            grip_value = j.get('grip_value')
        if j.get('grip_cmd') == 0 and open_t is None and j.get('executed'):
            open_t = j['t']
        if j.get('type') in ('regrip', 'regrip_tighten'):
            regrips += 1
        if j.get('type') in ('pad_correction', 'correction'):
            pads += 1
    rows = [(float(r['ts']), float(r['gripper_current']))
            for r in csv.DictReader(open(d / 'recording/currents.csv')) if r['gripper_current'] not in ('', None)]
    t_on = next((t for t, v in rows if v > ON), None)
    out = {'run': run, 'outcome': meta.get('outcome'), 'grip_value': grip_value,
           'regrips': regrips, 'corrections': meta.get('corrections'), 'closed': t_on is not None}
    if t_on is None:
        return out
    end = open_t if open_t and open_t > t_on else rows[-1][0]
    hold = [(t - t_on, v) for t, v in rows if t_on <= t <= end]
    drop = next((round(t, 1) for t, v in hold if v < OFF), None)
    vals = sorted(v for _, v in hold)
    out.update({'hold_s': round(end - t_on, 1), 'n': len(hold), 'median': vals[len(vals) // 2],
                'min': vals[0], 'dropped_at_s': drop,
                'series': [(round(t, 2), v) for t, v in rows if t_on - 2 <= t <= end + 1 and True]})
    out['series'] = [(round(t - t_on, 2), v) for t, v in rows if t_on - 2 <= t <= end + 1]
    return out


if __name__ == '__main__':
    root, dest = sys.argv[1], sys.argv[2]
    res = {k: [one(root, r) for r in v] for k, v in RUNS.items()}
    Path(dest).write_text(json.dumps(res, ensure_ascii=False))
    for k, v in res.items():
        for r in v:
            print(k, r['run'], r['outcome'], 'grip', r['grip_value'], 'corr', r['corrections'],
                  'hold', r.get('hold_s'), 'median', r.get('median'), 'min', r.get('min'), 'dropped_at', r.get('dropped_at_s'))
```

#### hold_analysis.py の出力

```text
2A pi05_20261111_160851 success grip 25 corr 1 hold 121.4 median 661.0 min 32.0 dropped_at 103.7
2A pi05_20261111_161402 failure grip 25 corr 1 hold 171.1 median 634.0 min -98.0 dropped_at 0.3
2A pi05_20261111_161743 failure grip 25 corr 1 hold 68.1 median 9.0 min -15.0 dropped_at 26.7
5A pi05_20261113_193254 success grip 25 corr 0 hold 23.4 median 724.0 min 423.0 dropped_at None
5A pi05_20261113_193542 success grip 25 corr 0 hold 29.5 median 628.0 min 512.0 dropped_at None
5A pi05_20261113_193712 success grip 25 corr 1 hold 38.3 median 618.0 min 64.0 dropped_at 24.6
5A pi05_20261113_193939 success grip 25 corr 0 hold 27.4 median 645.0 min 315.0 dropped_at None
5A pi05_20261113_194108 success grip 25 corr 0 hold 26.9 median 700.0 min 326.0 dropped_at None
```

「力が抜けた時刻」は、上の出力の dropped_at（150 未満に初めて落ちた時刻）ではなく、1秒以上150 未満が続いた最初の時刻で数え直しました。161402 の dropped_at が0.3秒なのは、閉じた直後に一瞬だけ値が下がったためで、続けて落ちたのは72.4秒です。数え直しに使ったコマンドと出力です。

```text
$ cd /Volumes/KIOXIA/r2r2r-data/lab/Log34/analysis && python3 -c "
import json;d=json.load(open('hold_2A_vs_5A.json'))
for k in d:
  for r in d[k]:
    s=[(t,v) for t,v in r['series'] if 0<=t<=r['hold_s']]
    sus=None
    for i,(t,v) in enumerate(s):
      if v<150 and all(w<150 for tt,w in s if t<=tt<=t+1.0): sus=t;break
    print(k,r['run'][-6:],'sustained_drop',sus)
"
2A 160851 sustained_drop 103.75
2A 161402 sustained_drop 72.36
2A 161743 sustained_drop 26.7
5A 193254 sustained_drop None
5A 193542 sustained_drop None
5A 193712 sustained_drop 24.57
5A 193939 sustained_drop None
5A 194108 sustained_drop None
```

### 位置5 の推論5回のターミナル

Pod の起動から5回の推論までの全部です。Pod の IP とポートは、もとの出力の段階で `<POD_IP>:<SSH_PORT>` に伏せてあります。

#### lab_start.sh（deep1・閉じる値25・Log34）のターミナル

```text
(base) shimazueiichi@shimadzueiichinoMacBook-Pro r2r2r-scripts % cd ~/r2r2r-scripts
./lab_start.sh --model deep1 --grip-value 25 --log Log34
[LOG   ] ターミナルの出力を残します → /Volumes/KIOXIA/r2r2r-data/lab/Log34/lab_start_20261113_192747.txt
[RANGE ] 安全範囲 (学習データ ±10°) は /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_deep_even10_v1/raw_episodes から (--model deep1)
[FRAME ] 写り方の確かめの基準画像は /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_teach_v1_trim2/raw_episodes の最初のエピソードから (位置合わせと同じ trim2. 依頼 137)
[TILT  ] 上カメラの傾きのお手本 (各エピソードの 1 枚目の中央値) は /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_deep_even10_v1/raw_episodes から (安全範囲と同じ. 差だけ画像を回して AI に渡す. 依頼 144)
[GRIP  ] 爪の閉じる値は 25 (--grip-value). 締め直し r はこの値−3 とこの値を交互に送る (依頼 152)
[LAB   ] 2026-11-13 19:27:47  GPU=NVIDIA A40  episode=run_0001_20261019_194818  log=/Volumes/KIOXIA/r2r2r-data/lab/Log34  
[MODEL ] --model deep1: π0.5 base から deep_even10_v1 で新しく学習した 2999 (依頼 133. decay_steps 5000)
         PixelstoMotors/pi05-mecharm-deep-even10-lora-v1 → /workspace/ckpt/deep_v1_2999  設定 pi05_mecharm_deep_even10_lora  assets local/mecharm_redblock_box_deep_even10_v1

=== 1. Pod を作る
[POD   ] 作った: id bjcya1w5ptkb3i  GPU=NVIDIA A40  1時間 0.59 ドル  (記録 /Volumes/KIOXIA/r2r2r-data/lab/Log34/pod/lab_pod.json)
    (2 秒)

=== 2. Pod が立ち上がるまで待つ
[POD   ] SSH の IP とポートを API から受け取った (<POD_IP>:<SSH_PORT>)
[POD   ] 入れた: 6db60f568d43
NVIDIA A40, 46068 MiB
    (17 秒)

=== 3a. スクリプトを送る
    (96 秒)

=== 3b. huggingface_hub を入れ, 鍵を渡す
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning.
Hint: The `hf-cli` skill is not installed. Run `hf skills add -g` to teach your AI agents how to use the `hf` CLI.
✓ Logged in
  user: PixelstoMotors
    (10 秒)

=== 3c. モデルを取る (hf download PixelstoMotors/pi05-mecharm-deep-even10-lora-v1)
Fetching 34 files: 100%|██████████| 34/34 [00:09<00:00,  3.38it/s]✓ Downloaded
  path: /workspace/ckpt/deep_v1_2999
Fetching 34 files: 100%|██████████| 34/34 [00:09<00:00,  3.50it/s]
6.0G	/workspace/ckpt/deep_v1_2999
    (13 秒)

=== 3d. openpi を取る (215abfb)
215abfb docs(droid): fix config search instruction (#1023)
    (14 秒)

=== 3e. uv sync
downloading uv 0.13.8 x86_64-unknown-linux-gnu
WARN: The following commands are shadowed by other commands in your PATH: uv uvx
Using CPython 3.11.13 interpreter at: /usr/bin/python3.11
Creating virtual environment at: .venv
Resolved 279 packages in 4ms
   Building openpi-client @ file:///workspace/openpi/packages/openpi-client
   Building openpi @ file:///workspace/openpi
   Updating https://github.com/huggingface/lerobot (0cf864870cf29f4738d3ade893e6fd13fbd7cdb5)
Downloading polars (34.6MiB)
Downloading sympy (6.0MiB)
Downloading hf-transfer (3.4MiB)
Downloading dm-control (37.5MiB)
Downloading nvidia-cuda-cupti-cu12 (8.5MiB)
Downloading jaxlib (100.2MiB)
Downloading av (34.7MiB)
Downloading cmake (26.6MiB)
Downloading nvidia-cuda-nvrtc-cu12 (22.6MiB)
Downloading nvidia-nvjitlink-cu12 (18.8MiB)
Downloading wandb (20.4MiB)
Downloading pandas (12.5MiB)
Downloading tensorstore (17.5MiB)
Downloading diffusers (3.4MiB)
Downloading jax-cuda12-plugin (15.9MiB)
Downloading numcodecs (8.4MiB)
Downloading torchvision (7.1MiB)
Downloading hf-xet (4.9MiB)
Downloading lxml (4.7MiB)
Downloading labmaze (4.7MiB)
Downloading h5py (4.3MiB)
Downloading mujoco (4.4MiB)
Downloading numba (3.7MiB)
Downloading virtualenv (5.8MiB)
Downloading imageio-ffmpeg (28.1MiB)
Downloading numpy (17.4MiB)
Downloading opencv-python-headless (47.7MiB)
Downloading ruff (11.0MiB)
Downloading transformers (10.3MiB)
Downloading nvidia-cufft-cu12 (190.9MiB)
Downloading opencv-python (60.1MiB)
Downloading pyarrow (40.3MiB)
Downloading pillow (4.4MiB)
Downloading pyopengl (3.0MiB)
Downloading triton (148.5MiB)
Downloading nvidia-cublas-cu12 (374.9MiB)
Downloading nvidia-cudnn-cu12 (544.5MiB)
Downloading matplotlib (8.2MiB)
Downloading llvmlite (40.4MiB)
Downloading fonttools (4.7MiB)
Downloading nvidia-curand-cu12 (53.7MiB)
Downloading rerun-sdk (68.1MiB)
Downloading nvidia-cusparselt-cu12 (149.5MiB)
Downloading nvidia-cusolver-cu12 (150.9MiB)
Downloading nvidia-cusparse-cu12 (206.5MiB)
Downloading nvidia-nccl-cu12 (192.0MiB)
Downloading nvidia-cuda-nvcc-cu12 (38.7MiB)
Downloading jax-cuda12-pjrt (99.8MiB)
Downloading scipy (35.9MiB)
Downloading torch (783.1MiB)
 Downloaded pyopengl
 Downloaded hf-transfer
 Downloaded diffusers
Downloading tokenizers (2.9MiB)
Downloading debugpy (3.0MiB)
Downloading jax (2.3MiB)
 Downloaded numba
Downloading widgetsnbextension (2.1MiB)
 Downloaded pillow
 Downloaded h5py
Downloading ml-dtypes (2.1MiB)
 Downloaded mujoco
Downloading networkx (1.9MiB)
Downloading pydantic-core (1.9MiB)
 Downloaded labmaze
 Downloaded lxml
 Downloaded fonttools
Downloading kiwisolver (1.4MiB)
Downloading jedi (1.5MiB)
Downloading aiohttp (1.6MiB)
 Downloaded hf-xet
Downloading torchcodec (1.3MiB)
 Downloaded virtualenv
Downloading sentencepiece (1.2MiB)
 Downloaded jax
 Downloaded sympy
 Downloaded widgetsnbextension
Downloading pygments (1.2MiB)
Downloading nvidia-cufile-cu12 (1.1MiB)
Downloading setuptools (1.1MiB)
 Downloaded kiwisolver
 Downloaded tokenizers
Downloading pymunk (1.0MiB)
 Downloaded debugpy
 Downloaded torchcodec
 Downloaded aiohttp
 Downloaded networkx
 Downloaded ml-dtypes
 Downloaded pydantic-core
 Downloaded jedi
 Downloaded torchvision
 Downloaded sentencepiece
 Downloaded nvidia-cufile-cu12
 Downloaded pygments
 Downloaded setuptools
 Downloaded pymunk
 Downloaded matplotlib
 Downloaded numcodecs
   Building evdev==1.9.2
 Downloaded nvidia-cuda-cupti-cu12
 Downloaded transformers
 Downloaded ruff
   Building antlr4-python3-runtime==4.9.3
 Downloaded pandas
 Downloaded jax-cuda12-plugin
 Downloaded tensorstore
 Downloaded numpy
      Built openpi-client @ file:///workspace/openpi/packages/openpi-client
 Downloaded nvidia-nvjitlink-cu12
      Built openpi @ file:///workspace/openpi
 Downloaded wandb
 Downloaded nvidia-cuda-nvrtc-cu12
 Downloaded imageio-ffmpeg
      Built antlr4-python3-runtime==4.9.3
 Downloaded cmake
 Downloaded polars
 Downloaded av
 Downloaded scipy
 Downloaded dm-control
 Downloaded nvidia-cuda-nvcc-cu12
 Downloaded pyarrow
 Downloaded llvmlite
 Downloaded opencv-python-headless
 Downloaded nvidia-curand-cu12
 Downloaded opencv-python
 Downloaded rerun-sdk
      Built evdev==1.9.2
 Downloaded jaxlib
 Downloaded jax-cuda12-pjrt
    Updated https://github.com/huggingface/lerobot (0cf864870cf29f4738d3ade893e6fd13fbd7cdb5)
   Building lerobot @ git+https://github.com/huggingface/lerobot@0cf864870cf29f4738d3ade893e6fd13fbd7cdb5
 Downloaded nvidia-cusparselt-cu12
 Downloaded triton
 Downloaded nvidia-cusolver-cu12
      Built lerobot @ git+https://github.com/huggingface/lerobot@0cf864870cf29f4738d3ade893e6fd13fbd7cdb5
 Downloaded nvidia-nccl-cu12
 Downloaded nvidia-cusparse-cu12
 Downloaded nvidia-cufft-cu12
 Downloaded nvidia-cublas-cu12
 Downloaded nvidia-cudnn-cu12
 Downloaded torch
Prepared 240 packages in 14.34s
Installed 240 packages in 1.81s
 + absl-py==2.3.0
 + aiohappyeyeballs==2.6.1
 + aiohttp==3.12.4
 + aiosignal==1.3.2
 + annotated-types==0.7.0
 + antlr4-python3-runtime==4.9.3
 + asttokens==3.0.0
 + attrs==25.3.0
 + augmax==0.4.1
 + av==17.0.0
 + beartype==0.19.0
 + beautifulsoup4==4.13.4
 + blinker==1.9.0
 + cachetools==5.5.2
 + certifi==2025.4.26
 + cffi==1.17.1
 + cfgv==3.4.0
 + charset-normalizer==3.4.2
 + chex==0.1.90
 + click==8.2.1
 + cloudpickle==3.1.1
 + cmake==4.0.2
 + comm==0.2.2
 + contourpy==1.3.2
 + crc32c==2.7.1
 + cycler==0.12.1
 + datasets==3.6.0
 + debugpy==1.8.14
 + decorator==5.2.1
 + deepdiff==8.5.0
 + diffusers==0.33.1
 + dill==0.3.8
 + distlib==0.3.9
 + dm-control==1.0.14
 + dm-env==1.6
 + dm-tree==0.1.9
 + docker-pycreds==0.4.0
 + docstring-parser==0.16
 + donfig==0.8.1.post1
 + draccus==0.10.0
 + einops==0.8.1
 + equinox==0.12.2
 + etils==1.12.2
 + evdev==1.9.2
 + executing==2.2.0
 + farama-notifications==0.0.4
 + filelock==3.18.0
 + flask==3.1.1
 + flatbuffers==25.2.10
 + flax==0.10.2
 + fonttools==4.58.1
 + frozenlist==1.6.0
 + fsspec==2025.3.0
 + gcsfs==2025.3.0
 + gdown==5.2.0
 + gitdb==4.0.12
 + gitpython==3.1.44
 + glfw==2.9.0
 + google-api-core==2.24.2
 + google-auth==2.40.2
 + google-auth-oauthlib==1.2.2
 + google-cloud-core==2.4.3
 + google-cloud-storage==3.1.0
 + google-crc32c==1.7.1
 + google-resumable-media==2.7.2
 + googleapis-common-protos==1.70.0
 + gym-aloha==0.1.1
 + gymnasium==0.29.1
 + h5py==3.13.0
 + hf-transfer==0.1.9
 + hf-xet==1.1.2
 + huggingface-hub==0.32.3
 + humanize==4.12.3
 + identify==2.6.12
 + idna==3.10
 + imageio==2.37.0
 + imageio-ffmpeg==0.6.0
 + importlib-metadata==8.7.0
 + importlib-resources==6.5.2
 + iniconfig==2.1.0
 + inquirerpy==0.3.4
 + ipykernel==6.29.5
 + ipython==9.2.0
 + ipython-pygments-lexers==1.1.1
 + ipywidgets==8.1.7
 + itsdangerous==2.2.0
 + jax==0.5.3
 + jax-cuda12-pjrt==0.5.3
 + jax-cuda12-plugin==0.5.3
 + jaxlib==0.5.3
 + jaxtyping==0.2.36
 + jedi==0.19.2
 + jinja2==3.1.6
 + jsonlines==4.0.0
 + jupyter-client==8.6.3
 + jupyter-core==5.8.1
 + jupyterlab-widgets==3.0.15
 + kiwisolver==1.4.8
 + labmaze==1.0.6
 + lerobot==0.1.0 (from git+https://github.com/huggingface/lerobot@0cf864870cf29f4738d3ade893e6fd13fbd7cdb5)
 + llvmlite==0.44.0
 + lxml==5.4.0
 + markdown-it-py==3.0.0
 + markupsafe==3.0.2
 + matplotlib==3.10.3
 + matplotlib-inline==0.1.7
 + mdurl==0.1.2
 + mergedeep==1.3.4
 + ml-collections==1.0.0
 + ml-dtypes==0.4.1
 + mpmath==1.3.0
 + msgpack==1.1.0
 + mujoco==2.3.7
 + multidict==6.4.4
 + multiprocess==0.70.16
 + mypy-extensions==1.1.0
 + nest-asyncio==1.6.0
 + networkx==3.5
 + nodeenv==1.9.1
 + numba==0.61.2
 + numcodecs==0.16.1
 + numpy==1.26.4
 + numpydantic==1.6.9
 + nvidia-cublas-cu12==12.6.4.1
 + nvidia-cuda-cupti-cu12==12.6.80
 + nvidia-cuda-nvcc-cu12==12.9.41
 + nvidia-cuda-nvrtc-cu12==12.6.77
 + nvidia-cuda-runtime-cu12==12.6.77
 + nvidia-cudnn-cu12==9.5.1.17
 + nvidia-cufft-cu12==11.3.0.4
 + nvidia-cufile-cu12==1.11.1.6
 + nvidia-curand-cu12==10.3.7.77
 + nvidia-cusolver-cu12==11.7.1.2
 + nvidia-cusparse-cu12==12.5.4.2
 + nvidia-cusparselt-cu12==0.6.3
 + nvidia-ml-py==12.575.51
 + nvidia-nccl-cu12==2.26.2
 + nvidia-nvjitlink-cu12==12.6.85
 + nvidia-nvtx-cu12==12.6.77
 + oauthlib==3.2.2
 + omegaconf==2.3.0
 + opencv-python==4.11.0.86
 + opencv-python-headless==4.11.0.86
 + openpi==0.1.0 (from file:///workspace/openpi)
 + openpi-client==0.1.0 (from file:///workspace/openpi/packages/openpi-client)
 + opt-einsum==3.4.0
 + optax==0.2.4
 + orbax-checkpoint==0.11.13
 + orderly-set==5.4.1
 + packaging==25.0
 + pandas==2.2.3
 + parso==0.8.4
 + pexpect==4.9.0
 + pfzy==0.3.4
 + pillow==11.2.1
 + platformdirs==4.3.8
 + pluggy==1.6.0
 + polars==1.30.0
 + pre-commit==4.2.0
 + prompt-toolkit==3.0.51
 + propcache==0.3.1
 + proto-plus==1.26.1
 + protobuf==4.25.8
 + psutil==7.0.0
 + ptyprocess==0.7.0
 + pure-eval==0.2.3
 + pyarrow==20.0.0
 + pyasn1==0.6.1
 + pyasn1-modules==0.4.2
 + pycparser==2.22
 + pydantic==2.11.5
 + pydantic-core==2.33.2
 + pygments==2.19.1
 + pymunk==7.0.0
 + pynput==1.8.1
 + pynvml==12.0.0
 + pyopengl==3.1.9
 + pyparsing==3.2.3
 + pysocks==1.7.1
 + pytest==8.3.5
 + python-dateutil==2.9.0.post0
 + python-xlib==0.33
 + pytz==2025.2
 + pyyaml==6.0.2
 + pyyaml-include==1.4.1
 + pyzmq==26.4.0
 + regex==2024.11.6
 + requests==2.32.3
 + requests-oauthlib==2.0.0
 + rerun-sdk==0.23.1
 + rich==14.0.0
 + rsa==4.9.1
 + ruff==0.11.12
 + safetensors==0.5.3
 + scipy==1.15.3
 + sentencepiece==0.2.0
 + sentry-sdk==2.29.1
 + setproctitle==1.3.6
 + setuptools==80.9.0
 + shtab==1.7.2
 + simplejson==3.20.1
 + six==1.17.0
 + smmap==5.0.2
 + soupsieve==2.7
 + stack-data==0.6.3
 + sympy==1.14.0
 + tensorstore==0.1.74
 + termcolor==3.1.0
 + tokenizers==0.21.1
 + toml==0.10.2
 + toolz==1.0.0
 + torch==2.7.1
 + torchcodec==0.4.0
 + torchvision==0.22.1
 + tornado==6.5.1
 + tqdm==4.67.1
 + tqdm-loggable==0.2
 + traitlets==5.14.3
 + transformers==4.53.2
 + treescope==0.1.9
 + triton==3.3.1
 + typeguard==4.4.2
 + typing-extensions==4.13.2
 + typing-inspect==0.9.0
 + typing-inspection==0.4.1
 + tyro==0.9.22
 + tzdata==2025.2
 + urllib3==2.4.0
 + virtualenv==20.31.2
 + wadler-lindig==0.1.6
 + wandb==0.19.11
 + wcwidth==0.2.13
 + websockets==15.0.1
 + werkzeug==3.1.3
 + widgetsnbextension==4.0.14
 + wrapt==1.14.1
 + xxhash==3.5.0
 + yarl==1.20.0
 + zarr==3.0.8
 + zipp==3.22.0
    (21 秒)

=== 3f. addon・設定・assets (pi05_mecharm_deep_even10_lora)
installed: policies/mecharm_policy.py + config.py (pi05_mecharm_lora)
installed: pi05_mecharm_trim_lora (repo_id=local/mecharm_redblock_box_teach_v1_trim2, 4,000 steps)
installed: pi05_mecharm_deep_even10_lora (repo_id=local/mecharm_redblock_box_deep_even10_v1, 3000 steps, decay_steps 5000, init=π0.5 base)
    (2 秒)

=== 4. サーバーの起動
[SERVE ] --model deep1: --policy.config=pi05_mecharm_deep_even10_lora --policy.dir=/workspace/ckpt/deep_v1_2999
INFO:websockets.server:server listening on 0.0.0.0:8000
    (44 秒)

=== 5. Mac の 8000 番へのトンネル
[TUNNEL] localhost:8000 → Pod の 8000 番 (pid 64636. このスクリプトが終わると閉じる)
    (2 秒)

=== 6. デーモンの状態
--- process
512 /usr/bin/python3 -u /home/ubuntu/mecharm_daemon.py
--- 5555
LISTEN0      1                                 0.0.0.0:5555        0.0.0.0:*    
--- systemd
enabled: enabled
active:  active
    (2 秒)

=== 7. HOME → 爪を開く → 位置合わせ (1 回目)
[INIT] daemon 接続中...
  [Pi] fresh_mode=1
[INIT] fresh_mode=1
[PRE]  現在姿勢: [-0.43, 1.31, 0.79, 0.26, -0.26, -30.23]
[SEND] HOME へ移動指令
  [WARN] daemon_get_angles failed: daemon error: get_angles returned empty/invalid after 12 retries
[WARN] get_angles 失敗 (試行 1/3)
[WAIT] t=3.5s  max_err=210.00°
[WAIT] t=4.1s  max_err=1.31°
[DONE] HOME 到達 max_err=1.31°
[POST] 最終姿勢: [-0.43, 1.31, 0.79, 0.26, -0.26, -30.23]
  [Pi] fresh_mode=0
[EXIT] fresh_mode=0, socket close
  [Pi] GRIPPER: OPEN result= None
[REF   ] 基準画像: /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_teach_v1_trim2/raw_episodes/run_0001_20261019_194818/frames/000000.jpg
[REF   ] お手本 run_0001_20261019_194818 (つかんだ瞬間の j0 = +13.2°)
[REF   ] 重なった画像のブロックに実物のブロックを合わせると, お手本と同じ位置に置ける
[TILT  ] 傾きのお手本: /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_deep_even10_v1/raw_episodes  中央値 -0.61° (測れた 50/50 本. プラス=右下がり)
[TILT  ] 傾きはソフトでそろえる: ライブをお手本の中央値との差だけ回して重ねる (AI に渡す画像と同じ. 回す角度が 3° を超えたら画面の色を変える. 止めない)
[ALIGN ] |dy| <= 20 なら OK. アームは HOME に置いた状態で合わせる. q または Esc で終了 (ファイルには何も書かない)
[ALIGN ] dy= -10.9  dx= -43.2  response=0.688  → ずれ (|dx|=43.2 > 20)  傾き -6.08° → -0.61° にソフトでそろえる (+5.46° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -9.8  dx= -43.3  response=0.696  → ずれ (|dx|=43.3 > 20)  傾き -6.08° → -0.61° にソフトでそろえる (+5.46° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -6.3  dx= -51.0  response=0.629  → ずれ (|dx|=51.0 > 20)  傾き -6.07° → -0.61° にソフトでそろえる (+5.46° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -2.4  dx= -49.6  response=0.768  → ずれ (|dx|=49.6 > 20)  傾き -6.06° → -0.61° にソフトでそろえる (+5.45° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +2.1  dx= -51.0  response=0.152  → 測れない (相関が弱く dx/dy が当てにならない (response=0.152 < 0.20))  傾き -6.08° → -0.61° にソフトでそろえる (+5.47° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +2.4  dx= -49.7  response=0.374  → ずれ (|dx|=49.7 > 20)  傾き -5.91° → -0.61° にソフトでそろえる (+5.30° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -0.5  dx= -50.5  response=0.577  → ずれ (|dx|=50.5 > 20)  傾き -6.05° → -0.61° にソフトでそろえる (+5.43° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -6.3  dx= -48.1  response=0.622  → ずれ (|dx|=48.1 > 20)  傾き -5.99° → -0.61° にソフトでそろえる (+5.38° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy= -10.2  dx= -46.8  response=0.544  → ずれ (|dx|=46.8 > 20)  傾き -6.05° → -0.61° にソフトでそろえる (+5.43° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy= -11.3  dx= -40.1  response=0.794  → ずれ (|dx|=40.1 > 20)  傾き -6.05° → -0.61° にソフトでそろえる (+5.43° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy= -14.0  dx= -29.3  response=0.722  → ずれ (|dx|=29.3 > 20)  傾き -5.96° → -0.61° にソフトでそろえる (+5.35° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy= -15.1  dx= -26.0  response=0.808  → ずれ (|dx|=26.0 > 20)  傾き -5.88° → -0.61° にソフトでそろえる (+5.27° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy= -16.2  dx= -22.8  response=0.836  → ずれ (|dx|=22.8 > 20)  傾き -5.71° → -0.61° にソフトでそろえる (+5.10° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy= -17.4  dx= -17.1  response=0.776  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -5.69° → -0.61° にソフトでそろえる (+5.07° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy= -18.2  dx= -15.6  response=0.819  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -5.43° → -0.61° にソフトでそろえる (+4.82° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy= -19.3  dx= -13.1  response=0.804  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -5.42° → -0.61° にソフトでそろえる (+4.81° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy= -15.3  dx= -19.6  response=0.825  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -5.53° → -0.61° にソフトでそろえる (+4.92° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -7.8  dx= -23.7  response=0.913  → ずれ (|dx|=23.7 > 20)  傾き -5.78° → -0.61° にソフトでそろえる (+5.17° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -0.8  dx= -27.6  response=0.932  → ずれ (|dx|=27.6 > 20)  傾き -6.32° → -0.61° にソフトでそろえる (+5.71° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +4.1  dx= -26.3  response=0.905  → ずれ (|dx|=26.3 > 20)  傾き -6.94° → -0.61° にソフトでそろえる (+6.32° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +5.9  dx= -25.6  response=0.871  → ずれ (|dx|=25.6 > 20)  傾き -6.94° → -0.61° にソフトでそろえる (+6.32° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +3.9  dx= -25.3  response=0.923  → ずれ (|dx|=25.3 > 20)  傾き -6.94° → -0.61° にソフトでそろえる (+6.32° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -0.4  dx= -22.0  response=0.727  → ずれ (|dx|=22.0 > 20)  傾き -6.74° → -0.61° にソフトでそろえる (+6.13° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +3.4  dx= -10.9  response=0.183  → 測れない (相関が弱く dx/dy が当てにならない (response=0.183 < 0.20))  傾き -6.73° → -0.61° にソフトでそろえる (+6.12° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +3.0  dx=  -4.9  response=0.165  → 測れない (相関が弱く dx/dy が当てにならない (response=0.165 < 0.20))  傾き -6.15° → -0.61° にソフトでそろえる (+5.54° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +0.8  dx=  -7.7  response=0.938  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.99° → -0.61° にソフトでそろえる (+4.38° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +1.2  dx=  -4.4  response=1.009  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.50° → -0.61° にソフトでそろえる (+3.89° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -0.3  dx=  -2.5  response=0.984  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.50° → -0.61° にソフトでそろえる (+3.88° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -2.1  dx=  +1.2  response=0.933  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.39° → -0.61° にソフトでそろえる (+3.77° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -2.7  dx=  -1.7  response=0.981  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.67° → -0.61° にソフトでそろえる (+4.05° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -3.4  dx=  -1.5  response=0.989  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.92° → -0.61° にソフトでそろえる (+4.30° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -2.7  dx=  +1.5  response=0.912  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.70° → -0.61° にソフトでそろえる (+4.09° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -2.7  dx=  +1.5  response=0.952  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.46° → -0.61° にソフトでそろえる (+3.85° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -0.9  dx=  +1.6  response=0.918  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.43° → -0.61° にソフトでそろえる (+3.82° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -0.6  dx=  +1.8  response=0.856  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.18° → -0.61° にソフトでそろえる (+3.57° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +1.1  dx=  +2.7  response=0.878  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.05° → -0.61° にソフトでそろえる (+3.44° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +0.4  dx=  +3.7  response=0.913  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -3.85° → -0.61° にソフトでそろえる (+3.24° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +1.5  dx=  +4.9  response=0.250  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -3.85° → -0.61° にソフトでそろえる (+3.24° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +0.5  dx=  +3.6  response=0.986  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -3.84° → -0.61° にソフトでそろえる (+3.23° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +1.7  dx=  +4.0  response=0.272  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.00° → -0.61° にソフトでそろえる (+3.39° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +0.6  dx=  +1.7  response=0.951  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.01° → -0.61° にソフトでそろえる (+3.40° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +1.6  dx=  +4.0  response=0.258  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.01° → -0.61° にソフトでそろえる (+3.40° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +0.6  dx=  +1.8  response=0.929  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.04° → -0.61° にソフトでそろえる (+3.43° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +1.6  dx=  +4.0  response=0.238  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.01° → -0.61° にソフトでそろえる (+3.40° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +0.6  dx=  +1.8  response=0.903  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.01° → -0.61° にソフトでそろえる (+3.40° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +1.7  dx=  +4.0  response=0.256  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -3.97° → -0.61° にソフトでそろえる (+3.35° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +0.5  dx=  +1.8  response=0.890  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.01° → -0.61° にソフトでそろえる (+3.39° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +1.7  dx=  +4.0  response=0.249  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.01° → -0.61° にソフトでそろえる (+3.39° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +0.6  dx=  +1.8  response=0.887  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.01° → -0.61° にソフトでそろえる (+3.39° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +1.7  dx=  +3.9  response=0.259  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.01° → -0.61° にソフトでそろえる (+3.39° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +0.6  dx=  +1.9  response=0.851  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.01° → -0.61° にソフトでそろえる (+3.39° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +4.6  dx=  +6.9  response=0.078  → 測れない (相関が弱く dx/dy が当てにならない (response=0.078 < 0.20))  傾き -8.09° → -0.61° にソフトでそろえる (+7.48° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +0.7  dx=  +1.9  response=0.850  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.01° → -0.61° にソフトでそろえる (+3.39° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +1.8  dx=  +4.1  response=0.269  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.01° → -0.61° にソフトでそろえる (+3.39° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +3.1  dx=  +5.0  response=0.138  → 測れない (相関が弱く dx/dy が当てにならない (response=0.138 < 0.20))  傾き -6.47° → -0.61° にソフトでそろえる (+5.85° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +3.0  dx=  +4.9  response=0.136  → 測れない (相関が弱く dx/dy が当てにならない (response=0.136 < 0.20))  傾き -6.64° → -0.61° にソフトでそろえる (+6.03° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +7.3  dx=  +7.7  response=0.044  → 測れない (相関が弱く dx/dy が当てにならない (response=0.044 < 0.20))  傾き -9.54° → -0.61° にソフトでそろえる (+8.93° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +6.7  dx=  +7.8  response=0.049  → 測れない (相関が弱く dx/dy が当てにならない (response=0.049 < 0.20))  傾き -9.35° → -0.61° にソフトでそろえる (+8.73° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +3.0  dx=  +5.0  response=0.135  → 測れない (相関が弱く dx/dy が当てにならない (response=0.135 < 0.20))  傾き -6.45° → -0.61° にソフトでそろえる (+5.84° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +0.7  dx=  +1.9  response=0.840  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.01° → -0.61° にソフトでそろえる (+3.39° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +1.8  dx=  +4.1  response=0.270  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.01° → -0.61° にソフトでそろえる (+3.39° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +0.7  dx=  +1.9  response=0.829  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.01° → -0.61° にソフトでそろえる (+3.39° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +1.8  dx=  +4.0  response=0.260  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.01° → -0.61° にソフトでそろえる (+3.39° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +0.6  dx=  +1.9  response=0.823  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.01° → -0.61° にソフトでそろえる (+3.39° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +1.8  dx=  +4.1  response=0.261  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.01° → -0.61° にソフトでそろえる (+3.39° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +0.6  dx=  +1.8  response=0.884  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.01° → -0.61° にソフトでそろえる (+3.39° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +6.8  dx=  +6.7  response=0.077  → 測れない (相関が弱く dx/dy が当てにならない (response=0.077 < 0.20))  傾き -12.65° → -0.61° にソフトでそろえる (+12.03° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +8.4  dx=  +6.1  response=0.075  → 測れない (相関が弱く dx/dy が当てにならない (response=0.075 < 0.20))  傾き -12.77° → -0.61° にソフトでそろえる (+12.15° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +6.9  dx=  +6.8  response=0.078  → 測れない (相関が弱く dx/dy が当てにならない (response=0.078 < 0.20))  傾き -12.65° → -0.61° にソフトでそろえる (+12.03° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +8.6  dx=  +6.7  response=0.066  → 測れない (相関が弱く dx/dy が当てにならない (response=0.066 < 0.20))  傾き -12.65° → -0.61° にソフトでそろえる (+12.03° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +6.8  dx=  +6.8  response=0.075  → 測れない (相関が弱く dx/dy が当てにならない (response=0.075 < 0.20))  傾き -12.60° → -0.61° にソフトでそろえる (+11.98° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +0.9  dx=  +2.3  response=0.925  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.00° → -0.61° にソフトでそろえる (+3.38° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +8.5  dx=  +6.3  response=0.071  → 測れない (相関が弱く dx/dy が当てにならない (response=0.071 < 0.20))  傾き -12.77° → -0.61° にソフトでそろえる (+12.15° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +7.3  dx=  +7.2  response=0.069  → 測れない (相関が弱く dx/dy が当てにならない (response=0.069 < 0.20))  傾き -11.04° → -0.61° にソフトでそろえる (+10.43° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +0.6  dx=  +1.8  response=0.931  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.01° → -0.61° にソフトでそろえる (+3.40° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +1.7  dx=  +4.1  response=0.264  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.01° → -0.61° にソフトでそろえる (+3.40° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +0.6  dx=  +2.5  response=1.001  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.01° → -0.61° にソフトでそろえる (+3.39° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -0.5  dx=  +7.4  response=0.257  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -3.89° → -0.61° にソフトでそろえる (+3.27° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -2.5  dx=  +3.8  response=0.848  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -3.88° → -0.61° にソフトでそろえる (+3.27° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -4.3  dx=  +1.7  response=1.000  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -3.88° → -0.61° にソフトでそろえる (+3.27° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -2.5  dx=  -1.3  response=1.066  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.09° → -0.61° にソフトでそろえる (+3.47° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +0.9  dx=  -1.8  response=1.034  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.46° → -0.61° にソフトでそろえる (+3.85° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +4.4  dx=  -1.6  response=0.988  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.50° → -0.61° にソフトでそろえる (+3.89° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +7.1  dx=  -1.4  response=0.886  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.50° → -0.61° にソフトでそろえる (+3.89° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +2.5  dx=  -0.3  response=0.994  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.56° → -0.61° にソフトでそろえる (+3.95° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -5.7  dx=  +0.6  response=0.884  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.47° → -0.61° にソフトでそろえる (+3.86° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -5.0  dx=  +1.5  response=0.881  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.28° → -0.61° にソフトでそろえる (+3.67° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -5.7  dx=  +1.6  response=0.903  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.10° → -0.61° にソフトでそろえる (+3.49° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -5.6  dx=  -1.7  response=1.026  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.26° → -0.61° にソフトでそろえる (+3.65° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -6.1  dx=  -2.4  response=0.969  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.56° → -0.61° にソフトでそろえる (+3.95° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -7.3  dx=  +0.6  response=0.933  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.56° → -0.61° にソフトでそろえる (+3.95° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -6.3  dx=  +3.3  response=0.402  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.39° → -0.61° にソフトでそろえる (+3.78° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -7.4  dx=  +2.5  response=0.945  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.18° → -0.61° にソフトでそろえる (+3.57° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -6.4  dx=  +0.4  response=0.989  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.07° → -0.61° にソフトでそろえる (+3.45° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -5.1  dx=  -1.4  response=0.958  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.07° → -0.61° にソフトでそろえる (+3.45° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -5.1  dx=  -0.9  response=0.957  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.22° → -0.61° にソフトでそろえる (+3.61° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -5.1  dx=  -1.5  response=0.951  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.39° → -0.61° にソフトでそろえる (+3.78° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -3.1  dx=  -4.0  response=0.742  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.47° → -0.61° にソフトでそろえる (+3.86° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -1.2  dx=  -6.3  response=1.099  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.64° → -0.61° にソフトでそろえる (+4.02° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -0.2  dx=  -7.5  response=0.957  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.81° → -0.61° にソフトでそろえる (+4.19° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -0.0  dx=  -5.8  response=0.753  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -5.09° → -0.61° にソフトでそろえる (+4.48° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -1.6  dx=  -3.4  response=0.984  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -5.09° → -0.61° にソフトでそろえる (+4.48° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -3.3  dx=  -0.7  response=0.410  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.72° → -0.61° にソフトでそろえる (+4.11° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -5.1  dx=  -1.6  response=0.900  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.48° → -0.61° にソフトでそろえる (+3.86° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -4.3  dx=  -7.4  response=1.086  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.76° → -0.61° にソフトでそろえる (+4.15° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -5.5  dx=  -2.5  response=0.970  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.89° → -0.61° にソフトでそろえる (+4.27° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -6.5  dx=  +2.0  response=0.451  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.73° → -0.61° にソフトでそろえる (+4.12° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -8.0  dx=  +2.5  response=0.841  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.70° → -0.61° にソフトでそろえる (+4.08° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -5.1  dx=  -0.7  response=0.927  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.65° → -0.61° にソフトでそろえる (+4.04° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -0.5  dx=  -0.6  response=1.047  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.78° → -0.61° にソフトでそろえる (+4.16° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +5.3  dx=  +0.6  response=0.149  → 測れない (相関が弱く dx/dy が当てにならない (response=0.149 < 0.20))  傾き -4.79° → -0.61° にソフトでそろえる (+4.17° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +7.6  dx=  -1.5  response=0.857  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.80° → -0.61° にソフトでそろえる (+4.18° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +6.5  dx=  -1.8  response=0.789  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.82° → -0.61° にソフトでそろえる (+4.20° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +4.8  dx=  -0.1  response=0.312  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.83° → -0.61° にソフトでそろえる (+4.21° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +1.4  dx=  -1.5  response=1.073  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -4.83° → -0.61° にソフトでそろえる (+4.21° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +2.7  dx=  -9.4  response=1.052  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -5.22° → -0.61° にソフトでそろえる (+4.61° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +4.3  dx= -13.6  response=1.072  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -5.39° → -0.61° にソフトでそろえる (+4.78° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +3.1  dx=  -8.9  response=0.633  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -5.48° → -0.61° にソフトでそろえる (+4.87° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +2.6  dx= -10.7  response=0.496  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -5.88° → -0.61° にソフトでそろえる (+5.26° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +0.9  dx=  -6.3  response=0.774  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -5.62° → -0.61° にソフトでそろえる (+5.01° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +0.3  dx=  -4.5  response=1.055  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -5.25° → -0.61° にソフトでそろえる (+4.64° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -0.8  dx=  +0.4  response=0.779  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -5.09° → -0.61° にソフトでそろえる (+4.48° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -1.3  dx=  -2.5  response=1.085  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -5.26° → -0.61° にソフトでそろえる (+4.64° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -1.4  dx=  -3.3  response=1.060  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -5.42° → -0.61° にソフトでそろえる (+4.80° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -1.9  dx=  -2.9  response=0.779  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -5.21° → -0.61° にソフトでそろえる (+4.60° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -3.8  dx=  -1.3  response=0.930  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -5.21° → -0.61° にソフトでそろえる (+4.60° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -2.4  dx=  -1.6  response=1.067  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -5.23° → -0.61° にソフトでそろえる (+4.61° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -1.4  dx=  -2.9  response=1.062  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -5.49° → -0.61° にソフトでそろえる (+4.88° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -1.8  dx=  -3.6  response=1.062  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -5.66° → -0.61° にソフトでそろえる (+5.05° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +0.6  dx=  -5.7  response=1.054  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -5.82° → -0.61° にソフトでそろえる (+5.20° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +5.5  dx=  -9.6  response=1.006  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -5.86° → -0.61° にソフトでそろえる (+5.24° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +7.6  dx= -10.1  response=0.860  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.12° → -0.61° にソフトでそろえる (+5.51° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +5.6  dx=  -7.8  response=0.836  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.71° → -0.61° にソフトでそろえる (+6.10° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +3.6  dx=  -5.3  response=0.731  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.71° → -0.61° にソフトでそろえる (+6.10° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +2.5  dx=  -3.7  response=1.063  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.38° → -0.61° にソフトでそろえる (+5.77° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +3.9  dx=  +1.3  response=0.338  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.26° → -0.61° にソフトでそろえる (+5.65° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +2.3  dx=  -0.4  response=1.041  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.23° → -0.61° にソフトでそろえる (+5.62° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +3.7  dx=  +1.6  response=0.231  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.19° → -0.61° にソフトでそろえる (+5.57° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +2.3  dx=  -0.4  response=1.052  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.19° → -0.61° にソフトでそろえる (+5.57° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +2.1  dx=  +2.4  response=1.014  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.02° → -0.61° にソフトでそろえる (+5.41° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +2.3  dx=  -0.4  response=1.064  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.19° → -0.61° にソフトでそろえる (+5.57° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +3.6  dx=  +2.8  response=0.205  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.19° → -0.61° にソフトでそろえる (+5.57° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +2.1  dx=  +1.5  response=0.998  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.10° → -0.61° にソフトでそろえる (+5.49° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +2.3  dx=  -1.3  response=1.045  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.27° → -0.61° にソフトでそろえる (+5.66° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +3.8  dx=  +0.6  response=0.237  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.23° → -0.61° にソフトでそろえる (+5.62° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +2.4  dx=  -0.5  response=1.074  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.23° → -0.61° にソフトでそろえる (+5.62° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +1.8  dx=  +2.4  response=0.973  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.06° → -0.61° にソフトでそろえる (+5.45° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +1.0  dx=  +4.4  response=0.989  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -5.84° → -0.61° にソフトでそろえる (+5.22° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +1.0  dx=  +1.1  response=1.037  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.09° → -0.61° にソフトでそろえる (+5.48° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +4.2  dx=  -2.5  response=1.042  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.25° → -0.61° にソフトでそろえる (+5.63° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +4.1  dx=  -0.7  response=1.020  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.42° → -0.61° にソフトでそろえる (+5.80° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +2.5  dx=  +9.5  response=0.169  → 測れない (相関が弱く dx/dy が当てにならない (response=0.169 < 0.20))  傾き -6.30° → -0.61° にソフトでそろえる (+5.68° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +0.8  dx=  +4.4  response=0.942  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.22° → -0.61° にソフトでそろえる (+5.61° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +0.7  dx=  +4.7  response=0.927  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -5.97° → -0.61° にソフトでそろえる (+5.36° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +2.5  dx=  +0.8  response=0.965  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -5.97° → -0.61° にソフトでそろえる (+5.36° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +3.4  dx=  +0.6  response=1.036  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.38° → -0.61° にソフトでそろえる (+5.76° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +2.0  dx=  +3.3  response=0.962  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.38° → -0.61° にソフトでそろえる (+5.76° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +1.4  dx=  +3.6  response=0.962  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.13° → -0.61° にソフトでそろえる (+5.52° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +2.5  dx=  +6.1  response=0.206  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.01° → -0.61° にソフトでそろえる (+5.39° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +1.4  dx=  +3.8  response=0.902  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -5.97° → -0.61° にソフトでそろえる (+5.35° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +2.5  dx=  +6.0  response=0.211  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -5.97° → -0.61° にソフトでそろえる (+5.35° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +1.5  dx=  +5.9  response=0.837  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -5.97° → -0.61° にソフトでそろえる (+5.35° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +1.5  dx=  +6.7  response=0.894  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -5.77° → -0.61° にソフトでそろえる (+5.16° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +0.2  dx=  +5.8  response=0.868  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -5.73° → -0.61° にソフトでそろえる (+5.11° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -0.7  dx=  +2.5  response=1.018  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -5.93° → -0.61° にソフトでそろえる (+5.32° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -0.6  dx=  +2.6  response=0.961  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.35° → -0.61° にソフトでそろえる (+5.74° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -0.3  dx=  +0.7  response=0.992  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.55° → -0.61° にソフトでそろえる (+5.93° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +0.7  dx=  +6.2  response=0.297  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.22° → -0.61° にソフトでそろえる (+5.61° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  -0.3  dx=  +3.8  response=0.903  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.21° → -0.61° にソフトでそろえる (+5.60° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +0.7  dx=  -2.3  response=1.089  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.60° → -0.61° にソフトでそろえる (+5.98° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +1.7  dx=  -2.4  response=1.081  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.76° → -0.61° にソフトでそろえる (+6.14° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +2.9  dx=  +2.3  response=0.378  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.76° → -0.61° にソフトでそろえる (+6.14° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +1.8  dx=  +1.4  response=0.974  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.67° → -0.61° にソフトでそろえる (+6.06° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +1.7  dx=  +1.4  response=0.975  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.51° → -0.61° にソフトでそろえる (+5.90° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +2.8  dx=  +2.2  response=0.402  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.55° → -0.61° にソフトでそろえる (+5.94° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[DONE  ] 終了 (何も書いていません)
    (84 秒)

=== 8. 実機推論 (1 回目)
[WAIT  ] 送ったあと 0.0s / 爪のあと 0.8s (開くときの daemon 0.0s) / 止まるのを待つ目安 0.8s
[GRIP  ] 閉じる値 25  締め直し r は 22 と 25 を交互に送る
[SAFE  ] 安全範囲 (学習 50 本 ±10°): j0[-72,+55]  j1[-9,+88]  j2[-45,+52]  j3[-18,+27]  j4[-87,+10]  j5[-51,-15]
[SAFE  ] 肩 j1 の上限は J1_SAFE_MAX=88° で切った (これを超える指令はアームが黙って捨てる / LOG352)  元データ: /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_deep_even10_v1/raw_episodes
[MODE  ] EXECUTE  steps/chunk=10  max_move=20.0°  log=/Volumes/KIOXIA/r2r2r-data/runs/pi05_policy/pi05_20261113_193254
[MODEL ] deep1 (PixelstoMotors/pi05-mecharm-deep-even10-lora-v1)
[CAMERA] 写り方 dy=-4.5 dx=+7.7 response=0.598 → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  回したあとの画像で測った
[CAMERA] 基準: /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_teach_v1_trim2/raw_episodes/run_0001_20261019_183454/frames/000000.jpg
[CAMERA] 傾き -6.59° → -0.61° にそろえて渡す (+5.98° 回す. プラス=右下がり)  ※ 回す角度が 3° を超える (止めない. iPhone の付け方を見直す) (お手本: /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_deep_even10_v1/raw_episodes  測れた 50/50 本・今 5/5 コマ)
[WARN  ] !!!!! 上カメラの傾きが大きくずれている: +5.98° 回して渡す (止めない. 次の試行の前に iPhone の付け方を見直す) !!!!!
[POLICY] 接続 ws://localhost:8000  metadata={}
[RECORD] 上カメラと実測角を 1 秒 10 コマで記録します → /Volumes/KIOXIA/r2r2r-data/runs/pi05_policy/pi05_20261113_193254/recording
[GRIP  ] 開始時のグリッパー開放は, 最初の目標が検査を通ってから行います (爪が閉じていたら手で開けておく)
[STATE ] 実測を渡す (直前に送った目標がない)
[000] 推論 57529ms  10ステップ先  Δ= +2.4 +13.2  +7.2  -1.7 -18.3  +1.5
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[GRIP  ] 開始時にグリッパーを開く
  [Pi] GRIPPER: OPEN result= None
[SEND] pi05_chunk000_via02: send_angles (single) [  +0.01,   +4.33,   +2.22,   +0.14,   -3.91,  -30.13]  speed=20 wait=0.0s  (pre max|Δ|=3.65°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.42° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.4  +3.0  +1.4  -0.1  -3.6  +0.1  着いた
[SEND] pi05_chunk000_via05: send_angles (single) [  +0.70,   +8.35,   +4.26,   -0.14,   -9.59,  -29.72]  speed=20 wait=0.0s  (pre max|Δ|=7.93°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.51° (tol 3.0°)
       [VIA   ] step  5  Δ= +1.1  +3.0  +1.0  -0.4  -7.9  +0.5  着いた
[SEND] pi05_chunk000_via08: send_angles (single) [  +1.78,  +13.30,   +7.26,   -1.15,  -16.83,  -28.88]  speed=20 wait=0.0s  (pre max|Δ|=8.75°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.63° (tol 3.0°)
       [VIA   ] step  8  Δ= +1.3  +3.9  +2.1  -1.4  -8.8  +1.1  着いた
[SEND] pi05_chunk000_via09: send_angles (single) [  +1.93,  +14.50,   +7.98,   -1.42,  -18.56,  -28.68]  speed=20 wait=0.0s  (pre max|Δ|=3.36°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.88° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.4  +0.3  -0.2  -1.0  -3.4  +0.3  着いた
[STATE ] 目標を渡す  目標と実測の最大差 0.88°（関節 j1）
[001] 推論 1838ms  10ステップ先  Δ= +4.4 +12.3  +6.8  -1.6 -19.3  +1.5
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk001_via02: send_angles (single) [  +3.00,  +18.30,   +9.97,   -1.84,  -23.61,  -28.05]  speed=20 wait=0.0s  (pre max|Δ|=5.86°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.94° (tol 3.0°)
       [VIA   ] step  2  Δ= +1.5  +2.9  +1.2  -1.0  -5.9  +0.9  着いた
[SEND] pi05_chunk001_via05: send_angles (single) [  +4.38,  +22.00,  +12.18,   -2.05,  -28.94,  -27.62]  speed=20 wait=0.0s  (pre max|Δ|=6.01°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.85° (tol 3.0°)
       [VIA   ] step  5  Δ= +1.6  +2.6  +1.4  -0.3  -6.0  +0.6  着いた
[SEND] pi05_chunk001_via08: send_angles (single) [  +5.58,  +26.36,  +14.92,   -2.33,  -35.32,  -27.45]  speed=20 wait=0.0s  (pre max|Δ|=7.20°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.97° (tol 3.0°)
       [VIA   ] step  8  Δ= +1.4  +3.5  +2.1  -0.1  -7.2  +0.3  着いた
[SEND] pi05_chunk001_via09: send_angles (single) [  +5.90,  +27.71,  +15.47,   -2.31,  -37.06,  -27.39]  speed=20 wait=0.0s  (pre max|Δ|=2.44°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.03° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.5  +0.4  -0.2  +0.2  -2.4  +0.3  着いた
[STATE ] 目標を渡す  目標と実測の最大差 1.03°（関節 j1）
[002] 推論 626ms  10ステップ先  Δ= +2.9  +7.2  +4.1  +0.3 -11.1  +0.3
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk002_via02: send_angles (single) [  +6.69,  +30.40,  +16.96,   -2.25,  -40.35,  -27.32]  speed=20 wait=0.0s  (pre max|Δ|=3.70°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.80° (tol 3.0°)
       [VIA   ] step  2  Δ= +1.3  +1.7  +1.0  +0.3  -3.7  +0.3  着いた
[SEND] pi05_chunk002_via05: send_angles (single) [  +7.52,  +33.21,  +18.29,   -2.25,  -43.66,  -27.29]  speed=20 wait=0.0s  (pre max|Δ|=3.59°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.97° (tol 3.0°)
       [VIA   ] step  5  Δ= +1.0  +1.8  +0.7  +0.4  -3.6  +0.2  着いた
[SEND] pi05_chunk002_via08: send_angles (single) [  +8.13,  +35.63,  +19.86,   -2.22,  -47.08,  -27.27]  speed=20 wait=0.0s  (pre max|Δ|=3.75°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.84° (tol 3.0°)
       [VIA   ] step  8  Δ= +0.8  +1.4  +1.1  +0.2  -3.7  +0.2  着いた
[SEND] pi05_chunk002_via09: send_angles (single) [  +8.22,  +35.91,  +20.05,   -2.21,  -47.72,  -27.26]  speed=20 wait=0.0s  (pre max|Δ|=0.82°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.82° (tol 3.0°)
       [VIA   ] step  9  Δ= -0.0  -0.8  -0.2  +0.4  -0.8  +0.2  着いた
[STATE ] 目標を渡す  目標と実測の最大差 0.82°（関節 j1）
[003] 推論 637ms  10ステップ先  Δ= +1.8  +6.3  +3.6  +0.6 -10.0  +0.4
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk003_via02: send_angles (single) [  +9.30,  +38.68,  +21.83,   -2.16,  -52.06,  -27.23]  speed=20 wait=0.0s  (pre max|Δ|=5.13°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.87° (tol 3.0°)
       [VIA   ] step  2  Δ= +1.0  +1.9  +1.5  +0.4  -5.1  +0.3  着いた
[SEND] pi05_chunk003_via05: send_angles (single) [  +9.64,  +40.72,  +23.09,   -2.01,  -54.57,  -27.18]  speed=20 wait=0.0s  (pre max|Δ|=2.72°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.94° (tol 3.0°)
       [VIA   ] step  5  Δ= +0.2  +1.0  +0.8  +0.4  -2.7  +0.2  着いた
[SEND] pi05_chunk003_via08: send_angles (single) [  +9.99,  +42.30,  +23.71,   -1.95,  -56.17,  -27.16]  speed=20 wait=0.0s  (pre max|Δ|=1.33°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.11° (tol 3.0°)
       [VIA   ] step  8  Δ= +0.8  +0.6  +0.2  +0.4  -1.3  +0.2  着いた
[SEND] pi05_chunk003_via09: send_angles (single) [ +10.06,  +42.98,  +23.90,   -1.95,  -56.89,  -27.15]  speed=20 wait=0.0s  (pre max|Δ|=0.73°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.96° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.1  -0.4  +0.4  +0.3  -0.7  +0.2  着いた
[STATE ] 目標を渡す  目標と実測の最大差 0.96°（関節 j1）
[004] 推論 587ms  10ステップ先  Δ= +3.7  +5.8  +2.6  +0.1  -7.2  +0.2
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk004_via02: send_angles (single) [ +11.24,  +46.11,  +25.83,   -1.98,  -60.91,  -27.08]  speed=20 wait=0.0s  (pre max|Δ|=4.31°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.82° (tol 3.0°)
       [VIA   ] step  2  Δ= +1.2  +2.2  +2.3  +0.3  -4.3  +0.2  着いた
[SEND] pi05_chunk004_via05: send_angles (single) [ +12.78,  +47.85,  +26.76,   -1.97,  -63.15,  -27.08]  speed=20 wait=0.0s  (pre max|Δ|=2.77°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.92° (tol 3.0°)
       [VIA   ] step  5  Δ= +1.5  +0.8  +0.7  +0.1  -2.8  +0.3  着いた
[SEND] pi05_chunk004_via08: send_angles (single) [ +13.22,  +48.72,  +26.27,   -2.20,  -63.54,  -27.10]  speed=20 wait=0.0s  (pre max|Δ|=0.57°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.93° (tol 3.0°)
       [VIA   ] step  8  Δ= +0.6  -0.0  -0.4  -0.1  -0.4  +0.1  着いた
[SEND] pi05_chunk004_via09: send_angles (single) [ +13.68,  +49.72,  +26.14,   -2.22,  -63.75,  -27.11]  speed=20 wait=0.0s  (pre max|Δ|=1.03°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.03° (tol 3.0°)
       [VIA   ] step  9  Δ= +1.0  +0.1  -0.6  -0.2  -0.4  +0.0  着いた
[STATE ] 目標を渡す  目標と実測の最大差 0.99°（関節 j1）
[005] 推論 657ms  10ステップ先  Δ= +0.1 +10.9  -9.2  +0.0  -0.4  -0.4  グリッパー→閉
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk005_via02: send_angles (single) [ +13.90,  +54.46,  +22.57,   -2.32,  -63.73,  -27.20]  speed=20 wait=0.0s  (pre max|Δ|=4.14°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.91° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.1  +3.7  -4.1  -0.4  -0.0  -0.1  着いた
[SEND] pi05_chunk005_via05: send_angles (single) [ +13.89,  +59.49,  +19.26,   -2.40,  -64.00,  -27.38]  speed=20 wait=0.0s  (pre max|Δ|=4.38°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.53° (tol 3.0°)
       [VIA   ] step  5  Δ= +0.1  +4.0  -4.4  -0.5  -0.1  -0.2  着いた
[SEND] pi05_chunk005_via08: send_angles (single) [ +13.99,  +61.56,  +17.48,   -2.45,  -64.12,  -27.54]  speed=20 wait=0.0s  (pre max|Δ|=2.73°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.68° (tol 3.0°)
       [VIA   ] step  8  Δ= +0.2  +1.3  -2.7  -0.5  +0.1  -0.4  着いた
[SEND] pi05_chunk005_via09: send_angles (single) [ +13.99,  +61.56,  +17.48,   -2.45,  -64.12,  -27.54]  speed=20 wait=0.0s  (pre max|Δ|=1.35°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.35° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.2  -0.7  -0.8  -0.5  +1.4  -0.3  着いた
  [Pi] GRIPPER: VALUE=25 speed=100 result= None
[STATE ] 目標を渡す  目標と実測の最大差 2.23°（関節 j4）
[006] 推論 1621ms  10ステップ先  Δ= +0.8  -9.3  +8.7  -1.4  +2.0  +1.0
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk006_via02: send_angles (single) [ +13.99,  +57.99,  +20.48,   -3.12,  -62.47,  -26.72]  speed=20 wait=0.0s  (pre max|Δ|=4.32°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.77° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.5  -4.3  +2.3  -1.2  +4.0  +0.8  着いた
[SEND] pi05_chunk006_via05: send_angles (single) [ +13.91,  +54.67,  +24.05,   -3.59,  -62.51,  -26.07]  speed=20 wait=0.0s  (pre max|Δ|=4.74°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.84° (tol 3.0°)
       [VIA   ] step  5  Δ= +0.5  -4.8  +4.0  -0.9  +0.9  +1.2  着いた
[SEND] pi05_chunk006_via08: send_angles (single) [ +14.05,  +52.89,  +26.84,   -3.41,  -63.49,  -26.17]  speed=20 wait=0.0s  (pre max|Δ|=3.53°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.77° (tol 3.0°)
       [VIA   ] step  8  Δ= +0.6  -3.5  +3.3  -0.1  -0.4  +0.3  着いた
[SEND] pi05_chunk006_via09: send_angles (single) [ +14.28,  +53.00,  +26.88,   -3.16,  -64.40,  -26.43]  speed=20 wait=0.0s  (pre max|Δ|=1.58°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.58° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.8  -1.6  +0.5  +0.3  -1.3  -0.1  着いた
[STATE ] 目標を渡す  目標と実測の最大差 1.58°（関節 j1）
[007] 推論 621ms  10ステップ先  Δ= +4.5  -0.7  -8.5  +1.1  +0.9  -1.6
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk007_via02: send_angles (single) [ +14.52,  +52.60,  +25.14,   -3.17,  -64.34,  -26.58]  speed=20 wait=0.0s  (pre max|Δ|=1.98°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.98° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.7  -2.0  -1.2  -0.1  -1.1  -0.2  着いた
[SEND] pi05_chunk007_via05: send_angles (single) [ +16.19,  +53.10,  +21.53,   -2.63,  -63.55,  -27.39]  speed=20 wait=0.0s  (pre max|Δ|=4.57°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.48° (tol 3.0°)
       [VIA   ] step  5  Δ= +2.0  -1.5  -4.6  +0.2  -0.3  -1.1  着いた
[SEND] pi05_chunk007_via08: send_angles (single) [ +17.72,  +53.84,  +18.44,   -2.14,  -62.78,  -27.89]  speed=20 wait=0.0s  (pre max|Δ|=3.88°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.42° (tol 3.0°)
       [VIA   ] step  8  Δ= +1.4  -0.7  -3.9  +0.8  +0.5  -1.5  着いた
[SEND] pi05_chunk007_via09: send_angles (single) [ +18.31,  +53.88,  +17.82,   -1.93,  -62.39,  -27.99]  speed=20 wait=0.0s  (pre max|Δ|=1.51°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.51° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.7  -0.8  -1.5  +0.9  +0.9  -1.4  着いた
[STATE ] 目標を渡す  目標と実測の最大差 1.51°（関節 j2）
[008] 推論 607ms  10ステップ先  Δ= +1.0  -0.1  -7.0  +2.4  +1.9  -2.3
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk008_via02: send_angles (single) [ +18.35,  +53.70,  +17.06,   -1.67,  -62.49,  -28.17]  speed=20 wait=0.0s  (pre max|Δ|=2.27°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.30° (tol 3.0°)
       [VIA   ] step  2  Δ= -0.1  -1.0  -2.3  +0.9  +0.7  -0.9  着いた
[SEND] pi05_chunk008_via05: send_angles (single) [ +18.56,  +54.04,  +15.26,   -1.14,  -62.09,  -28.48]  speed=20 wait=0.0s  (pre max|Δ|=3.10°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.08° (tol 3.0°)
       [VIA   ] step  5  Δ= +0.1  -0.6  -3.1  +1.1  +0.9  -1.1  着いた
[SEND] pi05_chunk008_via08: send_angles (single) [ +19.34,  +54.43,  +12.82,   -0.46,  -61.46,  -29.06]  speed=20 wait=0.0s  (pre max|Δ|=3.43°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.24° (tol 3.0°)
       [VIA   ] step  8  Δ= +0.9  -0.6  -3.4  +1.1  +1.0  -1.2  着いた
[SEND] pi05_chunk008_via09: send_angles (single) [ +19.49,  +54.56,  +12.30,   -0.22,  -61.43,  -29.20]  speed=20 wait=0.0s  (pre max|Δ|=1.58°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.58° (tol 3.0°)
       [VIA   ] step  9  Δ= -0.1  -1.0  -1.6  +0.5  +0.5  -0.7  着いた
[STATE ] 目標を渡す  目標と実測の最大差 1.58°（関節 j2）
[009] 推論 1542ms  10ステップ先  Δ= +0.5  -2.4  -7.8  +0.6  +1.8  -0.7
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk009_via02: send_angles (single) [ +19.72,  +54.33,  +10.94,   -0.12,  -61.13,  -29.26]  speed=20 wait=0.0s  (pre max|Δ|=2.94°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.21° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.2  -1.2  -2.9  +0.5  +0.7  -0.5  着いた
[SEND] pi05_chunk009_via05: send_angles (single) [ +19.67,  +53.79,   +9.02,   -0.09,  -60.77,  -29.31]  speed=20 wait=0.0s  (pre max|Δ|=3.10°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.75° (tol 3.0°)
       [VIA   ] step  5  Δ= +0.2  -1.7  -3.1  +0.4  +0.1  -0.5  着いた
[SEND] pi05_chunk009_via08: send_angles (single) [ +19.90,  +53.33,   +6.83,   -0.02,  -60.34,  -29.36]  speed=20 wait=0.0s  (pre max|Δ|=3.27°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.21° (tol 3.0°)
       [VIA   ] step  8  Δ= +0.4  -2.2  -3.3  +0.5  +0.3  -0.4  着いた
[SEND] pi05_chunk009_via09: send_angles (single) [ +20.02,  +53.10,   +6.10,   +0.02,  -60.16,  -29.38]  speed=20 wait=0.0s  (pre max|Δ|=2.44°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.44° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.5  -2.4  -1.8  +0.5  +0.2  -0.4  着いた
[STATE ] 目標を渡す  目標と実測の最大差 2.44°（関節 j1）
[010] 推論 553ms  10ステップ先  Δ=+15.7  -3.5  -6.6  +2.0  +3.6  -1.4
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk010_via02: send_angles (single) [ +24.06,  +52.46,   +3.48,   +0.45,  -58.77,  -29.66]  speed=20 wait=0.0s  (pre max|Δ|=4.55°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.12° (tol 3.0°)
       [VIA   ] step  2  Δ= +4.6  -3.1  -4.3  +0.7  +1.6  -0.6  着いた
[SEND] pi05_chunk010_via05: send_angles (single) [ +28.21,  +52.19,   +1.74,   +0.82,  -57.76,  -29.92]  speed=20 wait=0.0s  (pre max|Δ|=4.13°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.39° (tol 3.0°)
       [VIA   ] step  5  Δ= +4.1  -2.4  -2.8  +0.0  +1.0  -0.6  着いた
[SEND] pi05_chunk010_via08: send_angles (single) [ +33.59,  +52.04,   +1.29,   +1.35,  -57.06,  -30.33]  speed=20 wait=0.0s  (pre max|Δ|=5.38°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.54° (tol 3.0°)
       [VIA   ] step  8  Δ= +5.4  -2.5  -1.8  +0.1  +0.9  -0.7  着いた
[SEND] pi05_chunk010_via09: send_angles (single) [ +35.21,  +52.04,   +1.33,   +1.61,  -56.81,  -30.52]  speed=20 wait=0.0s  (pre max|Δ|=2.54°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.54° (tol 3.0°)
       [VIA   ] step  9  Δ= +1.5  -2.5  -1.7  +0.0  +0.5  -0.4  着いた
[STATE ] 目標を渡す  目標と実測の最大差 2.54°（関節 j1）
[011] 推論 555ms  10ステップ先  Δ= +5.3  +7.4  -3.5  +1.4  -4.3  -1.6  グリッパー→開
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk011_via02: send_angles (single) [ +39.88,  +54.70,   -0.25,   +1.99,  -56.30,  -31.12]  speed=20 wait=0.0s  (pre max|Δ|=4.47°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.30° (tol 3.0°)
       [VIA   ] step  2  Δ= +4.5  +0.1  -3.3  +0.1  +0.7  -0.9  着いた
[SEND] pi05_chunk011_via05: send_angles (single) [ +41.04,  +60.27,   -0.56,   +2.74,  -59.59,  -31.83]  speed=20 wait=0.0s  (pre max|Δ|=4.29°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.76° (tol 3.0°)
       [VIA   ] step  5  Δ= +1.0  +4.3  -1.6  +0.3  -3.6  -1.0  着いた
[SEND] pi05_chunk011_via08: send_angles (single) [ +40.85,  +61.96,   -0.44,   +3.14,  -61.34,  -31.82]  speed=20 wait=0.0s  (pre max|Δ|=3.51°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.40° (tol 3.0°)
       [VIA   ] step  8  Δ= -0.2  +0.7  -1.4  +0.2  -3.5  +0.2  着いた
[SEND] pi05_chunk011_via09: send_angles (single) [ +40.85,  +61.96,   -0.44,   +3.14,  -61.34,  -31.82]  speed=20 wait=0.0s  (pre max|Δ|=1.40°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.40° (tol 3.0°)
       [VIA   ] step  9  Δ= -0.1  -1.0  -1.4  +0.4  -0.9  +0.7  着いた
  [Pi] GRIPPER: OPEN result= None
[STATE ] 目標を渡す  目標と実測の最大差 1.40°（関節 j2）
[012] 推論 856ms  10ステップ先  Δ= -1.1 -15.7  -1.4  -0.1 +13.4  +0.3
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk012_via02: send_angles (single) [ +40.82,  +57.76,   -0.47,   +3.12,  -57.31,  -31.84]  speed=20 wait=0.0s  (pre max|Δ|=5.16°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.26° (tol 3.0°)
       [VIA   ] step  2  Δ= -0.1  -5.2  -1.4  -0.4  +3.2  +0.2  着いた
[SEND] pi05_chunk012_via05: send_angles (single) [ +40.93,  +53.18,   -0.47,   +3.17,  -52.72,  -31.90]  speed=20 wait=0.0s  (pre max|Δ|=6.67°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.36° (tol 3.0°)
       [VIA   ] step  5  Δ= -0.0  -6.7  -1.4  -0.3  +6.3  +0.3  着いた
[SEND] pi05_chunk012_via08: send_angles (single) [ +40.39,  +48.92,   -0.40,   +3.16,  -48.55,  -31.92]  speed=20 wait=0.0s  (pre max|Δ|=6.27°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.49° (tol 3.0°)
       [VIA   ] step  8  Δ= -0.5  -6.3  -1.4  -0.4  +5.8  +0.2  着いた
[SEND] pi05_chunk012_via09: send_angles (single) [ +39.85,  +47.19,   -0.41,   +3.08,  -47.05,  -31.92]  speed=20 wait=0.0s  (pre max|Δ|=3.69°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.46° (tol 3.0°)
       [VIA   ] step  9  Δ= -1.0  -3.7  -1.4  -0.3  +3.0  +0.2  着いた
[STATE ] 目標を渡す  目標と実測の最大差 2.20°（関節 j1）
[013] 推論 1485ms  10ステップ先  Δ=-20.3 -25.3  -0.7  -3.4 +25.6  +0.7
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk013_via02: send_angles (single) [ +35.67,  +41.27,   -0.15,   +2.71,  -41.16,  -31.84]  speed=20 wait=0.0s  (pre max|Δ|=8.12°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.06° (tol 3.0°)
       [VIA   ] step  2  Δ= -4.0  -8.1  -1.1  -1.2  +6.9  +0.2  着いた
[SEND] pi05_chunk013_via05: send_angles (single) [ +29.00,  +34.13,   +0.03,   +1.82,  -33.97,  -31.67]  speed=20 wait=0.0s  (pre max|Δ|=9.20°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.43° (tol 3.0°)
       [VIA   ] step  5  Δ= -6.8  -9.2  -0.9  -1.2  +8.0  +0.4  着いた
[SEND] pi05_chunk013_via08: send_angles (single) [ +21.56,  +26.21,   +0.16,   +0.78,  -25.14,  -31.46]  speed=20 wait=0.0s  (pre max|Δ|=9.91°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.91° (tol 3.0°)
       [VIA   ] step  8  Δ= -7.6  -9.9  -0.8  -1.7  +9.5  +0.6  着いた
[SEND] pi05_chunk013_via09: send_angles (single) [ +19.47,  +24.07,   +0.23,   +0.53,  -22.68,  -31.41]  speed=20 wait=0.0s  (pre max|Δ|=4.05°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.68° (tol 3.0°)
       [VIA   ] step  9  Δ= -2.5  -4.0  -0.7  -0.9  +3.0  +0.4  着いた
[STATE ] 目標を渡す  目標と実測の最大差 1.68°（関節 j1）
[014] 推論 588ms  10ステップ先  Δ=-19.0 -22.5  +0.1  -0.6 +20.5  +0.7
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > h
[SEND] pi05_home: send_angles (single) [  +0.00,   +0.00,   +0.00,   +0.00,   +0.00,  -30.00]  speed=20 wait=0.0s  (pre max|Δ|=25.75°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.49° (tol 2.5°)
[RECORD] 記録終了 コマ 1313 (8.846 fps) 実測角 1368 回 (9.22 Hz)  電流 1372 行 (read_servo)  → /Volumes/KIOXIA/r2r2r-data/runs/pi05_policy/pi05_20261113_193254/recording
       結果: y=成功 / n=失敗 / Enter=記録しない > y
[GRIP  ] 閉じて 1 秒後の爪の電流 (中央値): 1 回目 791 (10 行)  (閉じる値 25)
[DONE  ] 記録: /Volumes/KIOXIA/r2r2r-data/runs/pi05_policy/pi05_20261113_193254
[CLIENT] run_policy_client.py が終わった (終了コード 0. モデル deep1 (PixelstoMotors/pi05-mecharm-deep-even10-lora-v1))
    (154 秒)
もう1回やりますか? y=やる / 他=終わる > y

=== 7. HOME → 爪を開く → 位置合わせ (2 回目)
[INIT] daemon 接続中...
  [Pi] fresh_mode=1
[INIT] fresh_mode=1
[PRE]  現在姿勢: [-0.43, 1.49, 0.96, 0.35, -0.35, -30.32]
[SEND] HOME へ移動指令
  [WARN] daemon_get_angles failed: daemon error: get_angles returned empty/invalid after 12 retries
[WARN] get_angles 失敗 (試行 1/3)
[WAIT] t=3.5s  max_err=210.00°
[WAIT] t=4.1s  max_err=1.49°
[DONE] HOME 到達 max_err=1.49°
[POST] 最終姿勢: [-0.43, 1.49, 0.96, 0.35, -0.26, -30.23]
  [Pi] fresh_mode=0
[EXIT] fresh_mode=0, socket close
  [Pi] GRIPPER: OPEN result= None
[REF   ] 基準画像: /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_teach_v1_trim2/raw_episodes/run_0001_20261019_194818/frames/000000.jpg
[REF   ] お手本 run_0001_20261019_194818 (つかんだ瞬間の j0 = +13.2°)
[REF   ] 重なった画像のブロックに実物のブロックを合わせると, お手本と同じ位置に置ける
[TILT  ] 傾きのお手本: /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_deep_even10_v1/raw_episodes  中央値 -0.61° (測れた 50/50 本. プラス=右下がり)
[TILT  ] 傾きはソフトでそろえる: ライブをお手本の中央値との差だけ回して重ねる (AI に渡す画像と同じ. 回す角度が 3° を超えたら画面の色を変える. 止めない)
[ALIGN ] |dy| <= 20 なら OK. アームは HOME に置いた状態で合わせる. q または Esc で終了 (ファイルには何も書かない)
[ALIGN ] dy=  +3.8  dx=  +2.7  response=0.268  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.58° → -0.61° にソフトでそろえる (+5.96° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[DONE  ] 終了 (何も書いていません)
    (12 秒)

=== 8. 実機推論 (2 回目)
[WAIT  ] 送ったあと 0.0s / 爪のあと 0.8s (開くときの daemon 0.0s) / 止まるのを待つ目安 0.8s
[GRIP  ] 閉じる値 25  締め直し r は 22 と 25 を交互に送る
[SAFE  ] 安全範囲 (学習 50 本 ±10°): j0[-72,+55]  j1[-9,+88]  j2[-45,+52]  j3[-18,+27]  j4[-87,+10]  j5[-51,-15]
[SAFE  ] 肩 j1 の上限は J1_SAFE_MAX=88° で切った (これを超える指令はアームが黙って捨てる / LOG352)  元データ: /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_deep_even10_v1/raw_episodes
[MODE  ] EXECUTE  steps/chunk=10  max_move=20.0°  log=/Volumes/KIOXIA/r2r2r-data/runs/pi05_policy/pi05_20261113_193542
[MODEL ] deep1 (PixelstoMotors/pi05-mecharm-deep-even10-lora-v1)
[CAMERA] 写り方 dy=-4.4 dx=+7.8 response=0.577 → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  回したあとの画像で測った
[CAMERA] 基準: /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_teach_v1_trim2/raw_episodes/run_0001_20261019_183454/frames/000000.jpg
[CAMERA] 傾き -6.51° → -0.61° にそろえて渡す (+5.90° 回す. プラス=右下がり)  ※ 回す角度が 3° を超える (止めない. iPhone の付け方を見直す) (お手本: /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_deep_even10_v1/raw_episodes  測れた 50/50 本・今 5/5 コマ)
[WARN  ] !!!!! 上カメラの傾きが大きくずれている: +5.90° 回して渡す (止めない. 次の試行の前に iPhone の付け方を見直す) !!!!!
[POLICY] 接続 ws://localhost:8000  metadata={}
[RECORD] 上カメラと実測角を 1 秒 10 コマで記録します → /Volumes/KIOXIA/r2r2r-data/runs/pi05_policy/pi05_20261113_193542/recording
[GRIP  ] 開始時のグリッパー開放は, 最初の目標が検査を通ってから行います (爪が閉じていたら手で開けておく)
[STATE ] 実測を渡す (直前に送った目標がない)
[000] 推論 1475ms  10ステップ先  Δ= +2.6 +11.5  +7.3  -2.1 -18.0  +2.0
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[GRIP  ] 開始時にグリッパーを開く
  [Pi] GRIPPER: OPEN result= None
[SEND] pi05_chunk000_via02: send_angles (single) [  +0.13,   +4.33,   +2.84,   -0.23,   -3.81,  -29.74]  speed=20 wait=0.0s  (pre max|Δ|=3.55°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.94° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.6  +2.8  +1.9  -0.5  -3.6  +0.5  着いた
[SEND] pi05_chunk000_via05: send_angles (single) [  +0.80,   +7.40,   +4.84,   -0.73,   -8.91,  -29.21]  speed=20 wait=0.0s  (pre max|Δ|=7.25°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.06° (tol 3.0°)
       [VIA   ] step  5  Δ= +1.2  +2.1  +1.1  -0.9  -7.2  +0.5  着いた
[SEND] pi05_chunk000_via08: send_angles (single) [  +1.79,  +11.46,   +7.30,   -1.49,  -15.79,  -28.51]  speed=20 wait=0.0s  (pre max|Δ|=8.50°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.82° (tol 3.0°)
       [VIA   ] step  8  Δ= +1.4  +3.1  +1.6  -1.1  -8.5  +0.7  着いた
[SEND] pi05_chunk000_via09: send_angles (single) [  +2.21,  +12.99,   +8.22,   -1.80,  -18.22,  -28.26]  speed=20 wait=0.0s  (pre max|Δ|=4.25°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.09° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.7  +0.7  -0.0  -0.7  -4.2  +0.5  着いた
[STATE ] 目標を渡す  目標と実測の最大差 1.09°（関節 j4）
[001] 推論 608ms  10ステップ先  Δ= +4.3 +15.9  +9.3  -1.5 -26.1  +1.7
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk001_via02: send_angles (single) [  +3.63,  +17.14,  +10.59,   -2.63,  -24.25,  -27.43]  speed=20 wait=0.0s  (pre max|Δ|=7.12°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.88° (tol 3.0°)
       [VIA   ] step  2  Δ= +1.5  +3.3  +1.6  -1.1  -7.1  +1.0  着いた
[SEND] pi05_chunk001_via05: send_angles (single) [  +4.91,  +21.72,  +13.49,   -2.97,  -31.24,  -26.94]  speed=20 wait=0.0s  (pre max|Δ|=7.87°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.95° (tol 3.0°)
       [VIA   ] step  5  Δ= +1.7  +3.7  +2.1  -0.1  -7.9  +0.6  着いた
[SEND] pi05_chunk001_via08: send_angles (single) [  +6.21,  +27.58,  +17.09,   -3.00,  -40.38,  -26.81]  speed=20 wait=0.0s  (pre max|Δ|=10.06°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.01° (tol 3.0°)
       [VIA   ] step  8  Δ= +1.6  +4.9  +2.9  +0.4 -10.1  +0.3  着いた
[SEND] pi05_chunk001_via09: send_angles (single) [  +6.44,  +29.65,  +18.31,   -2.99,  -43.22,  -26.79]  speed=20 wait=0.0s  (pre max|Δ|=3.85°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.13° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.6  +1.2  +0.6  +0.5  -3.8  +0.2  着いた
[STATE ] 目標を渡す  目標と実測の最大差 0.93°（関節 j1）
[002] 推論 573ms  10ステップ先  Δ= +3.6 +12.2  +6.5  +0.2 -18.5  +0.3
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk002_via02: send_angles (single) [  +7.56,  +33.82,  +20.81,   -3.07,  -49.70,  -26.73]  speed=20 wait=0.0s  (pre max|Δ|=6.81°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.51° (tol 3.0°)
       [VIA   ] step  2  Δ= +1.1  +3.2  +1.9  +0.4  -6.8  +0.3  着いた
[SEND] pi05_chunk002_via05: send_angles (single) [  +8.94,  +38.96,  +23.53,   -3.27,  -56.89,  -26.70]  speed=20 wait=0.0s  (pre max|Δ|=8.20°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.17° (tol 3.0°)
       [VIA   ] step  5  Δ= +1.2  +4.2  +2.2  +0.2  -8.2  +0.3  着いた
[SEND] pi05_chunk002_via08: send_angles (single) [ +10.04,  +42.50,  +25.37,   -3.26,  -61.40,  -26.69]  speed=20 wait=0.0s  (pre max|Δ|=5.68°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.74° (tol 3.0°)
       [VIA   ] step  8  Δ= +1.3  +2.6  +1.5  -0.0  -5.7  +0.2  着いた
[SEND] pi05_chunk002_via09: send_angles (single) [ +10.21,  +42.74,  +25.41,   -3.24,  -61.36,  -26.69]  speed=20 wait=0.0s  (pre max|Δ|=0.76°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.85° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.2  -0.8  -0.3  -0.2  -0.5  +0.2  着いた
[STATE ] 目標を渡す  目標と実測の最大差 0.85°（関節 j1）
[003] 推論 584ms  10ステップ先  Δ= +1.3  +6.6  +3.0  +0.1  -7.4  +0.2
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk003_via02: send_angles (single) [ +10.73,  +46.17,  +28.15,   -3.18,  -65.20,  -26.68]  speed=20 wait=0.0s  (pre max|Δ|=4.30°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.11° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.8  +2.6  +2.4  -0.1  -4.3  +0.2  着いた
[SEND] pi05_chunk003_via05: send_angles (single) [ +11.08,  +48.20,  +29.35,   -3.05,  -67.32,  -26.67]  speed=20 wait=0.0s  (pre max|Δ|=1.58°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.93° (tol 3.0°)
       [VIA   ] step  5  Δ= +0.3  +0.9  +0.7  -0.1  -1.6  +0.2  着いた
[SEND] pi05_chunk003_via08: send_angles (single) [ +11.06,  +49.43,  +29.00,   -3.00,  -68.15,  -26.65]  speed=20 wait=0.0s  (pre max|Δ|=0.92°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.93° (tol 3.0°)
       [VIA   ] step  8  Δ= +0.3  +0.3  -0.1  -0.2  -0.9  +0.2  着いた
[SEND] pi05_chunk003_via09: send_angles (single) [ +11.24,  +50.19,  +28.79,   -2.96,  -68.33,  -26.65]  speed=20 wait=0.0s  (pre max|Δ|=0.52°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.05° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.5  -0.2  -0.3  -0.1  -0.2  +0.2  着いた
[STATE ] 目標を渡す  目標と実測の最大差 1.05°（関節 j1）
[004] 推論 571ms  10ステップ先  Δ= +0.9  +8.5  -7.6  -0.3  +2.4  +0.0
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk004_via02: send_angles (single) [ +11.55,  +53.71,  +25.74,   -3.00,  -67.05,  -26.61]  speed=20 wait=0.0s  (pre max|Δ|=3.35°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.15° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.8  +2.5  -3.3  -0.2  +1.2  +0.3  着いた
[SEND] pi05_chunk004_via05: send_angles (single) [ +11.59,  +57.26,  +22.90,   -3.04,  -66.37,  -26.65]  speed=20 wait=0.0s  (pre max|Δ|=3.81°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.83° (tol 3.0°)
       [VIA   ] step  5  Δ= +0.1  +2.5  -3.8  -0.4  +1.8  +0.2  着いた
[SEND] pi05_chunk004_via08: send_angles (single) [ +11.60,  +59.41,  +21.65,   -3.12,  -65.89,  -26.78]  speed=20 wait=0.0s  (pre max|Δ|=2.31°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.96° (tol 3.0°)
       [VIA   ] step  8  Δ= +0.1  +1.3  -2.3  -0.5  +2.3  +0.0  着いた
[SEND] pi05_chunk004_via09: send_angles (single) [ +11.65,  +59.76,  +21.46,   -3.12,  -65.79,  -26.86]  speed=20 wait=0.0s  (pre max|Δ|=2.06°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.88° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.1  -0.6  -1.3  -0.5  +2.1  -0.1  着いた
[STATE ] 目標を渡す  目標と実測の最大差 1.88°（関節 j4）
[005] 推論 1519ms  4ステップ先  Δ= +0.3  +0.8  -1.8  -0.6  +2.3  +0.1  グリッパー→閉
       [VIA   ] 中継点 2 点: step 2, 3
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk005_via02: send_angles (single) [ +11.86,  +61.45,  +20.99,   -3.22,  -65.36,  -26.69]  speed=20 wait=0.0s  (pre max|Δ|=1.78°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.96° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.3  +0.8  -1.7  -0.5  +1.8  +0.1  着いた
[SEND] pi05_chunk005_via03: send_angles (single) [ +11.86,  +61.45,  +20.99,   -3.22,  -65.36,  -26.69]  speed=20 wait=0.0s  (pre max|Δ|=2.05°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.05° (tol 3.0°)
       [VIA   ] step  3  Δ= +0.3  -0.6  -0.5  -0.4  +2.1  +0.3  着いた
  [Pi] GRIPPER: VALUE=25 speed=100 result= None
[STATE ] 目標を渡す  目標と実測の最大差 2.14°（関節 j4）
[006] 推論 599ms  10ステップ先  Δ= +1.1  -8.2  +2.5  -1.3  +3.3  +0.5
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk006_via02: send_angles (single) [ +12.15,  +59.68,  +22.04,   -3.25,  -65.18,  -26.78]  speed=20 wait=0.0s  (pre max|Δ|=2.37°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.26° (tol 3.0°)
       [VIA   ] step  2  Δ= +1.0  -2.4  +1.0  -0.6  +2.3  +0.3  着いた
[SEND] pi05_chunk006_via05: send_angles (single) [ +12.14,  +56.74,  +24.22,   -3.62,  -64.91,  -26.67]  speed=20 wait=0.0s  (pre max|Δ|=4.16°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.44° (tol 3.0°)
       [VIA   ] step  5  Δ= +0.7  -4.2  +3.0  -1.0  +1.5  +0.4  着いた
[SEND] pi05_chunk006_via08: send_angles (single) [ +12.22,  +54.18,  +24.14,   -3.85,  -64.32,  -26.56]  speed=20 wait=0.0s  (pre max|Δ|=4.00°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.36° (tol 3.0°)
       [VIA   ] step  8  Δ= +0.7  -4.0  +0.8  -0.4  +0.3  +0.3  着いた
[SEND] pi05_chunk006_via09: send_angles (single) [ +12.24,  +53.80,  +23.77,   -3.88,  -64.19,  -26.55]  speed=20 wait=0.0s  (pre max|Δ|=2.23°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.32° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.7  -2.2  +0.2  -0.4  -2.2  -0.4  着いた
[STATE ] 目標を渡す  目標と実測の最大差 2.32°（関節 j4）
[007] 推論 1721ms  10ステップ先  Δ= +0.5  -6.6  -2.9  -0.3  -1.4  -0.5
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk007_via02: send_angles (single) [ +12.30,  +53.79,  +21.42,   -3.93,  -63.87,  -26.59]  speed=20 wait=0.0s  (pre max|Δ|=2.22°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.00° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.4  -1.8  -2.2  -0.2  -2.0  -0.5  着いた
[SEND] pi05_chunk007_via05: send_angles (single) [ +12.26,  +52.75,  +20.71,   -3.92,  -63.71,  -26.61]  speed=20 wait=0.0s  (pre max|Δ|=2.88°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.09° (tol 3.0°)
       [VIA   ] step  5  Δ= +0.3  -2.9  -1.7  +0.5  -1.8  -0.6  着いた
[SEND] pi05_chunk007_via08: send_angles (single) [ +12.32,  +49.79,  +20.77,   -3.91,  -63.29,  -26.58]  speed=20 wait=0.0s  (pre max|Δ|=5.05°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.88° (tol 3.0°)
       [VIA   ] step  8  Δ= +0.4  -5.0  -1.5  +0.5  -1.4  -0.6  着いた
[SEND] pi05_chunk007_via09: send_angles (single) [ +12.32,  +49.01,  +20.78,   -3.94,  -63.25,  -26.56]  speed=20 wait=0.0s  (pre max|Δ|=2.66°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.40° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.4  -2.7  -1.4  +0.5  -1.4  -0.5  着いた
[STATE ] 目標を渡す  目標と実測の最大差 2.40°（関節 j1）
[008] 推論 910ms  10ステップ先  Δ= +0.6  -7.3  -7.7  +0.6  +0.6  -0.5
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk008_via02: send_angles (single) [ +12.27,  +46.55,  +19.74,   -3.86,  -62.69,  -26.57]  speed=20 wait=0.0s  (pre max|Δ|=4.86°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.96° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.3  -4.9  -2.4  +0.5  -0.8  -0.5  着いた
[SEND] pi05_chunk008_via05: send_angles (single) [ +12.32,  +44.24,  +17.81,   -3.93,  -62.06,  -26.60]  speed=20 wait=0.0s  (pre max|Δ|=4.27°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.81° (tol 3.0°)
       [VIA   ] step  5  Δ= +0.4  -4.3  -3.0  +0.4  -0.2  -0.5  着いた
[SEND] pi05_chunk008_via08: send_angles (single) [ +12.38,  +44.06,  +15.16,   -3.84,  -61.52,  -26.60]  speed=20 wait=0.0s  (pre max|Δ|=3.64°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.99° (tol 3.0°)
       [VIA   ] step  8  Δ= +0.4  -2.0  -3.6  +0.5  +0.4  -0.5  着いた
[SEND] pi05_chunk008_via09: send_angles (single) [ +12.54,  +44.09,  +14.47,   -3.78,  -61.32,  -26.63]  speed=20 wait=0.0s  (pre max|Δ|=1.96°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.96° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.6  -2.0  -1.9  +0.5  +0.6  -0.5  着いた
[STATE ] 目標を渡す  目標と実測の最大差 1.96°（関節 j1）
[009] 推論 805ms  10ステップ先  Δ= +3.6  -3.6  -8.1  +0.6  +2.7  -0.8
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk009_via02: send_angles (single) [ +12.97,  +43.97,  +13.51,   -3.81,  -61.15,  -26.68]  speed=20 wait=0.0s  (pre max|Δ|=2.66°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.08° (tol 3.0°)
       [VIA   ] step  2  Δ= +1.0  -2.1  -2.7  +0.5  +0.7  -0.5  着いた
[SEND] pi05_chunk009_via05: send_angles (single) [ +14.00,  +43.84,  +10.91,   -3.74,  -60.70,  -26.74]  speed=20 wait=0.0s  (pre max|Δ|=3.85°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.21° (tol 3.0°)
       [VIA   ] step  5  Δ= +1.1  -2.2  -3.9  +0.8  +1.2  -0.6  着いた
[SEND] pi05_chunk009_via08: send_angles (single) [ +14.98,  +42.75,   +8.78,   -3.72,  -59.62,  -26.85]  speed=20 wait=0.0s  (pre max|Δ|=3.34°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.33° (tol 3.0°)
       [VIA   ] step  8  Δ= +0.9  -3.3  -3.3  +0.7  +2.2  -0.7  着いた
[SEND] pi05_chunk009_via09: send_angles (single) [ +15.52,  +42.42,   +8.11,   -3.69,  -59.22,  -26.88]  speed=20 wait=0.0s  (pre max|Δ|=2.66°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.58° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.5  -2.7  -1.8  +0.7  +1.2  -0.7  着いた
[STATE ] 目標を渡す  目標と実測の最大差 2.49°（関節 j1）
[010] 推論 558ms  10ステップ先  Δ= +5.8  -7.6  -4.3  +1.7  +2.6  -1.6
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk010_via02: send_angles (single) [ +15.28,  +38.49,   +7.84,   -3.67,  -58.64,  -26.92]  speed=20 wait=0.0s  (pre max|Δ|=6.42°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.37° (tol 3.0°)
       [VIA   ] step  2  Δ= -0.2  -6.4  -2.1  +0.5  +1.3  -0.7  着いた
[SEND] pi05_chunk010_via05: send_angles (single) [ +15.13,  +35.13,   +7.20,   -3.61,  -58.11,  -27.04]  speed=20 wait=0.0s  (pre max|Δ|=5.12°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.39° (tol 3.0°)
       [VIA   ] step  5  Δ= -0.3  -5.1  -2.7  +0.4  +0.9  -0.8  着いた
[SEND] pi05_chunk010_via08: send_angles (single) [ +18.93,  +36.75,   +5.96,   -2.75,  -57.79,  -27.59]  speed=20 wait=0.0s  (pre max|Δ|=3.47°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.03° (tol 3.0°)
       [VIA   ] step  8  Δ= +3.5  -0.3  -2.5  +1.3  +0.8  -1.2  着いた
[SEND] pi05_chunk010_via09: send_angles (single) [ +21.08,  +37.31,   +5.60,   -2.41,  -57.60,  -27.81]  speed=20 wait=0.0s  (pre max|Δ|=2.13°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.78° (tol 3.0°)
       [VIA   ] step  9  Δ= +2.1  -0.6  -2.1  +0.3  +0.7  -0.8  着いた
[STATE ] 目標を渡す  目標と実測の最大差 1.78°（関節 j2）
[011] 推論 549ms  10ステップ先  Δ=+15.0  +5.7  -6.1  +2.1  +1.2  -2.2
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk011_via02: send_angles (single) [ +27.24,  +37.85,   +4.28,   -1.49,  -56.38,  -28.57]  speed=20 wait=0.0s  (pre max|Δ|=6.33°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.52° (tol 3.0°)
       [VIA   ] step  2  Δ= +6.3  -0.5  -3.1  +0.9  +1.6  -1.2  着いた
[SEND] pi05_chunk011_via05: send_angles (single) [ +32.62,  +38.85,   +2.62,   -0.61,  -55.80,  -29.29]  speed=20 wait=0.0s  (pre max|Δ|=5.47°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.57° (tol 3.0°)
       [VIA   ] step  5  Δ= +5.5  -0.2  -3.2  +0.7  +0.8  -1.2  着いた
[SEND] pi05_chunk011_via08: send_angles (single) [ +35.87,  +42.68,   +1.44,   -0.04,  -56.47,  -29.55]  speed=20 wait=0.0s  (pre max|Δ|=3.27°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.81° (tol 3.0°)
       [VIA   ] step  8  Δ= +3.0  +2.9  -2.7  +0.8  -0.3  -0.6  着いた
[SEND] pi05_chunk011_via09: send_angles (single) [ +35.93,  +44.02,   +1.28,   -0.02,  -56.77,  -29.54]  speed=20 wait=0.0s  (pre max|Δ|=1.79°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.79° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.1  +0.1  -1.8  -0.3  -0.6  -0.4  着いた
[STATE ] 目標を渡す  目標と実測の最大差 1.79°（関節 j2）
[012] 推論 583ms  10ステップ先  Δ= +3.5 +12.4  -4.6  +1.2  -4.1  -1.0
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk012_via02: send_angles (single) [ +38.12,  +45.92,   +0.78,   +0.11,  -56.24,  -29.70]  speed=20 wait=0.0s  (pre max|Δ|=2.29°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.41° (tol 3.0°)
       [VIA   ] step  2  Δ= +2.1  +0.7  -2.3  -0.1  -0.1  -0.4  着いた
[SEND] pi05_chunk012_via05: send_angles (single) [ +39.60,  +50.77,   -0.33,   +0.66,  -57.44,  -30.01]  speed=20 wait=0.0s  (pre max|Δ|=3.49°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.08° (tol 3.0°)
       [VIA   ] step  5  Δ= +1.6  +3.5  -2.5  +0.1  -1.4  -0.8  着いた
[SEND] pi05_chunk012_via08: send_angles (single) [ +39.46,  +56.32,   -1.32,   +1.19,  -59.80,  -30.21]  speed=20 wait=0.0s  (pre max|Δ|=4.38°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.59° (tol 3.0°)
       [VIA   ] step  8  Δ= +0.1  +4.4  -2.7  +0.6  -3.7  -0.5  着いた
[SEND] pi05_chunk012_via09: send_angles (single) [ +39.56,  +57.65,   -1.53,   +1.34,  -60.22,  -30.26]  speed=20 wait=0.0s  (pre max|Δ|=2.74°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.53° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.2  +0.2  -1.8  +0.5  -2.7  -0.5  着いた
[STATE ] 目標を渡す  目標と実測の最大差 1.53°（関節 j2）
[013] 推論 559ms  5ステップ先  Δ= +0.0  +2.8  -1.9  +0.6  -5.5  -0.4  グリッパー→開
       [VIA   ] 中継点 2 点: step 2, 4
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk013_via02: send_angles (single) [ +39.49,  +61.56,   -1.77,   +1.69,  -64.11,  -30.33]  speed=20 wait=0.0s  (pre max|Δ|=5.14°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.77° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.0  +2.8  -1.8  +0.6  -5.1  -0.4  着いた
[SEND] pi05_chunk013_via04: send_angles (single) [ +39.50,  +61.60,   -1.87,   +1.77,  -64.47,  -30.35]  speed=20 wait=0.0s  (pre max|Δ|=1.63°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.63° (tol 3.0°)
       [VIA   ] step  4  Δ= +0.0  -1.2  -1.6  +0.4  -1.6  -0.4  着いた
  [Pi] GRIPPER: OPEN result= None
[STATE ] 目標を渡す  目標と実測の最大差 1.61°（関節 j2）
[014] 推論 550ms  10ステップ先  Δ= -0.5 -16.5  -1.5  +0.5 +15.3  -0.7
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk014_via02: send_angles (single) [ +39.54,  +57.46,   -1.88,   +1.85,  -60.60,  -30.48]  speed=20 wait=0.0s  (pre max|Δ|=5.38°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.68° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.1  -5.4  -1.6  +0.3  +3.8  -0.4  着いた
[SEND] pi05_chunk014_via05: send_angles (single) [ +39.82,  +52.62,   -1.77,   +2.01,  -55.97,  -30.59]  speed=20 wait=0.0s  (pre max|Δ|=7.31°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.21° (tol 3.0°)
       [VIA   ] step  5  Δ= +0.4  -6.9  -1.5  +0.4  +7.3  -0.4  着いた
[SEND] pi05_chunk014_via08: send_angles (single) [ +39.40,  +47.76,   -1.72,   +2.01,  -50.83,  -30.67]  speed=20 wait=0.0s  (pre max|Δ|=7.35°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.07° (tol 3.0°)
       [VIA   ] step  8  Δ= -0.1  -6.8  -1.5  +0.3  +7.4  -0.3  着いた
[SEND] pi05_chunk014_via09: send_angles (single) [ +38.99,  +46.37,   -1.74,   +2.05,  -49.17,  -30.72]  speed=20 wait=0.0s  (pre max|Δ|=3.56°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.32° (tol 3.0°)
       [VIA   ] step  9  Δ= -0.5  -3.5  -1.5  +0.3  +3.6  -0.3  着いた
[STATE ] 目標を渡す  目標と実測の最大差 2.32°（関節 j1）
[015] 推論 546ms  10ステップ先  Δ=-18.3 -24.1  -0.9  -1.4 +24.9  -0.3
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk015_via02: send_angles (single) [ +35.18,  +40.71,   -1.71,   +1.68,  -42.68,  -30.78]  speed=20 wait=0.0s  (pre max|Δ|=7.98°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.26° (tol 3.0°)
       [VIA   ] step  2  Δ= -4.3  -8.0  -1.5  -0.2  +7.8  -0.4  着いた
[SEND] pi05_chunk015_via05: send_angles (single) [ +30.09,  +34.34,   -1.47,   +1.21,  -36.19,  -30.77]  speed=20 wait=0.0s  (pre max|Δ|=8.63°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.95° (tol 3.0°)
       [VIA   ] step  5  Δ= -5.7  -8.6  -1.2  -1.1  +7.6  -0.2  着いた
[SEND] pi05_chunk015_via08: send_angles (single) [ +23.10,  +26.72,   -1.22,   +0.54,  -27.96,  -30.74]  speed=20 wait=0.0s  (pre max|Δ|=9.57°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.93° (tol 3.0°)
       [VIA   ] step  8  Δ= -7.0  -9.6  -1.0  -1.5  +9.3  -0.2  着いた
[SEND] pi05_chunk015_via09: send_angles (single) [ +21.13,  +24.60,   -1.20,   +0.41,  -25.69,  -30.72]  speed=20 wait=0.0s  (pre max|Δ|=4.05°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.76° (tol 3.0°)
       [VIA   ] step  9  Δ= -2.4  -4.0  -1.0  -1.1  +3.0  -0.0  着いた
[STATE ] 目標を渡す  目標と実測の最大差 1.76°（関節 j1）
[016] 推論 551ms  10ステップ先  Δ=-17.3 -21.7  -0.5  -1.0 +20.1  -0.0
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > h
[SEND] pi05_home: send_angles (single) [  +0.00,   +0.00,   +0.00,   +0.00,   +0.00,  -30.00]  speed=20 wait=0.0s  (pre max|Δ|=26.36°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.49° (tol 2.5°)
[RECORD] 記録終了 コマ 682 (8.938 fps) 実測角 618 回 (8.1 Hz)  電流 629 行 (read_servo)  → /Volumes/KIOXIA/r2r2r-data/runs/pi05_policy/pi05_20261113_193542/recording
       結果: y=成功 / n=失敗 / Enter=記録しない > y
[GRIP  ] 閉じて 1 秒後の爪の電流 (中央値): 1 回目 778.5 (10 行)  (閉じる値 25)
[DONE  ] 記録: /Volumes/KIOXIA/r2r2r-data/runs/pi05_policy/pi05_20261113_193542
[CLIENT] run_policy_client.py が終わった (終了コード 0. モデル deep1 (PixelstoMotors/pi05-mecharm-deep-even10-lora-v1))
    (81 秒)
もう1回やりますか? y=やる / 他=終わる > y

=== 7. HOME → 爪を開く → 位置合わせ (3 回目)
[INIT] daemon 接続中...
  [Pi] fresh_mode=1
[INIT] fresh_mode=1
[PRE]  現在姿勢: [-0.26, 1.49, 0.70, 0.43, -0.43, -30.67]
[SEND] HOME へ移動指令
[WAIT] t=0.6s  max_err=1.49°
[DONE] HOME 到達 max_err=1.49°
[POST] 最終姿勢: [-0.26, 1.49, 0.70, 0.43, -0.26, -30.58]
  [Pi] fresh_mode=0
[EXIT] fresh_mode=0, socket close
  [Pi] GRIPPER: OPEN result= None
[REF   ] 基準画像: /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_teach_v1_trim2/raw_episodes/run_0001_20261019_194818/frames/000000.jpg
[REF   ] お手本 run_0001_20261019_194818 (つかんだ瞬間の j0 = +13.2°)
[REF   ] 重なった画像のブロックに実物のブロックを合わせると, お手本と同じ位置に置ける
[TILT  ] 傾きのお手本: /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_deep_even10_v1/raw_episodes  中央値 -0.61° (測れた 50/50 本. プラス=右下がり)
[TILT  ] 傾きはソフトでそろえる: ライブをお手本の中央値との差だけ回して重ねる (AI に渡す画像と同じ. 回す角度が 3° を超えたら画面の色を変える. 止めない)
[ALIGN ] |dy| <= 20 なら OK. アームは HOME に置いた状態で合わせる. q または Esc で終了 (ファイルには何も書かない)
[ALIGN ] dy=  +2.4  dx=  +1.7  response=0.966  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.54° → -0.61° にソフトでそろえる (+5.93° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[DONE  ] 終了 (何も書いていません)
    (9 秒)

=== 8. 実機推論 (3 回目)
[WAIT  ] 送ったあと 0.0s / 爪のあと 0.8s (開くときの daemon 0.0s) / 止まるのを待つ目安 0.8s
[GRIP  ] 閉じる値 25  締め直し r は 22 と 25 を交互に送る
[SAFE  ] 安全範囲 (学習 50 本 ±10°): j0[-72,+55]  j1[-9,+88]  j2[-45,+52]  j3[-18,+27]  j4[-87,+10]  j5[-51,-15]
[SAFE  ] 肩 j1 の上限は J1_SAFE_MAX=88° で切った (これを超える指令はアームが黙って捨てる / LOG352)  元データ: /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_deep_even10_v1/raw_episodes
[MODE  ] EXECUTE  steps/chunk=10  max_move=20.0°  log=/Volumes/KIOXIA/r2r2r-data/runs/pi05_policy/pi05_20261113_193712
[MODEL ] deep1 (PixelstoMotors/pi05-mecharm-deep-even10-lora-v1)
[CAMERA] 写り方 dy=-4.1 dx=+8.1 response=0.608 → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  回したあとの画像で測った
[CAMERA] 基準: /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_teach_v1_trim2/raw_episodes/run_0001_20261019_183454/frames/000000.jpg
[CAMERA] 傾き -6.54° → -0.61° にそろえて渡す (+5.93° 回す. プラス=右下がり)  ※ 回す角度が 3° を超える (止めない. iPhone の付け方を見直す) (お手本: /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_deep_even10_v1/raw_episodes  測れた 50/50 本・今 5/5 コマ)
[WARN  ] !!!!! 上カメラの傾きが大きくずれている: +5.93° 回して渡す (止めない. 次の試行の前に iPhone の付け方を見直す) !!!!!
[POLICY] 接続 ws://localhost:8000  metadata={}
[RECORD] 上カメラと実測角を 1 秒 10 コマで記録します → /Volumes/KIOXIA/r2r2r-data/runs/pi05_policy/pi05_20261113_193712/recording
[GRIP  ] 開始時のグリッパー開放は, 最初の目標が検査を通ってから行います (爪が閉じていたら手で開けておく)
[STATE ] 実測を渡す (直前に送った目標がない)
[000] 推論 1538ms  10ステップ先  Δ= +1.7 +13.5  +5.9  -1.8 -19.1  +1.5
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[GRIP  ] 開始時にグリッパーを開く
  [Pi] GRIPPER: OPEN result= None
[SEND] pi05_chunk000_via02: send_angles (single) [  +0.02,   +3.16,   +1.32,   +0.23,   -2.21,  -30.20]  speed=20 wait=0.0s  (pre max|Δ|=1.95°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.86° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.3  +1.7  +0.6  -0.0  -1.9  +0.0  着いた
[SEND] pi05_chunk000_via05: send_angles (single) [  +0.70,   +8.70,   +3.55,   -0.22,   -9.57,  -29.72]  speed=20 wait=0.0s  (pre max|Δ|=9.14°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.49° (tol 3.0°)
       [VIA   ] step  5  Δ= +1.0  +4.6  +1.3  -0.5  -9.1  +0.5  着いた
[SEND] pi05_chunk000_via08: send_angles (single) [  +1.15,  +13.28,   +5.96,   -1.20,  -16.59,  -29.01]  speed=20 wait=0.0s  (pre max|Δ|=8.51°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.57° (tol 3.0°)
       [VIA   ] step  8  Δ= +0.5  +3.7  +1.7  -1.3  -8.5  +1.0  着いた
[SEND] pi05_chunk000_via09: send_angles (single) [  +1.46,  +14.99,   +6.59,   -1.52,  -19.33,  -28.74]  speed=20 wait=0.0s  (pre max|Δ|=4.31°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.05° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.9  +0.8  -0.3  -0.6  -4.3  +0.5  着いた
[STATE ] 目標を渡す  目標と実測の最大差 1.05°（関節 j4）
[001] 推論 551ms  10ステップ先  Δ= +3.4 +13.8  +7.3  -1.1 -25.2  +1.9
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk001_via02: send_angles (single) [  +2.24,  +19.24,   +8.66,   -2.19,  -25.58,  -27.95]  speed=20 wait=0.0s  (pre max|Δ|=7.30°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.12° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.9  +3.3  +1.5  -0.5  -7.3  +1.0  着いた
[SEND] pi05_chunk001_via05: send_angles (single) [  +3.19,  +23.86,  +11.15,   -2.72,  -33.42,  -27.29]  speed=20 wait=0.0s  (pre max|Δ|=8.73°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.93° (tol 3.0°)
       [VIA   ] step  5  Δ= +0.8  +3.7  +1.7  -0.4  -8.7  +0.9  着いた
[SEND] pi05_chunk001_via08: send_angles (single) [  +4.39,  +28.30,  +13.91,   -2.80,  -41.27,  -27.10]  speed=20 wait=0.0s  (pre max|Δ|=8.49°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.96° (tol 3.0°)
       [VIA   ] step  8  Δ= +1.1  +3.5  +2.0  +0.4  -8.5  +0.4  着いた
[SEND] pi05_chunk001_via09: send_angles (single) [  +4.68,  +29.70,  +14.53,   -2.80,  -43.45,  -27.06]  speed=20 wait=0.0s  (pre max|Δ|=3.11°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.97° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.5  +0.4  -0.0  +0.6  -3.1  +0.3  着いた
[STATE ] 目標を渡す  目標と実測の最大差 0.97°（関節 j1）
[002] 推論 563ms  10ステップ先  Δ= +2.9  +6.6  +3.0  +1.1 -10.2  +0.3
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk002_via02: send_angles (single) [  +5.42,  +31.41,  +15.20,   -2.71,  -45.51,  -27.04]  speed=20 wait=0.0s  (pre max|Δ|=2.27°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.02° (tol 3.0°)
       [VIA   ] step  2  Δ= +1.3  +0.7  +0.1  +0.7  -2.3  +0.3  着いた
[SEND] pi05_chunk002_via05: send_angles (single) [  +6.32,  +34.60,  +16.71,   -2.49,  -49.77,  -27.03]  speed=20 wait=0.0s  (pre max|Δ|=4.42°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.70° (tol 3.0°)
       [VIA   ] step  5  Δ= +1.0  +2.2  +0.9  +0.8  -4.4  +0.3  着いた
[SEND] pi05_chunk002_via08: send_angles (single) [  +6.87,  +36.82,  +17.93,   -2.31,  -52.99,  -27.03]  speed=20 wait=0.0s  (pre max|Δ|=4.13°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.88° (tol 3.0°)
       [VIA   ] step  8  Δ= +0.5  +1.3  +0.5  +0.9  -4.1  +0.2  着いた
[SEND] pi05_chunk002_via09: send_angles (single) [  +6.98,  +37.24,  +18.09,   -2.34,  -53.42,  -27.02]  speed=20 wait=0.0s  (pre max|Δ|=1.04°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.99° (tol 3.0°)
       [VIA   ] step  9  Δ= -0.0  -0.5  -0.3  +0.6  -1.0  +0.2  着いた
[STATE ] 目標を渡す  目標と実測の最大差 0.99°（関節 j1）
[003] 推論 638ms  10ステップ先  Δ= +2.6  +9.1  +4.1  +0.8 -10.9  +0.3
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk003_via02: send_angles (single) [  +7.55,  +38.11,  +19.01,   -2.21,  -55.09,  -27.03]  speed=20 wait=0.0s  (pre max|Δ|=2.45°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.00° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.6  -0.1  +0.6  +0.6  -2.4  +0.2  着いた
[SEND] pi05_chunk003_via05: send_angles (single) [  +8.48,  +41.89,  +21.02,   -2.11,  -59.33,  -27.02]  speed=20 wait=0.0s  (pre max|Δ|=4.23°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.57° (tol 3.0°)
       [VIA   ] step  5  Δ= +0.9  +2.8  +1.4  +0.5  -4.2  +0.2  着いた
[SEND] pi05_chunk003_via08: send_angles (single) [  +9.56,  +46.21,  +22.53,   -2.15,  -63.02,  -26.98]  speed=20 wait=0.0s  (pre max|Δ|=3.61°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.86° (tol 3.0°)
       [VIA   ] step  8  Δ= +0.9  +3.2  +1.0  +0.1  -3.6  +0.3  着いた
[SEND] pi05_chunk003_via09: send_angles (single) [  +9.67,  +47.36,  +22.50,   -2.14,  -63.57,  -26.95]  speed=20 wait=0.0s  (pre max|Δ|=0.56°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.06° (tol 3.0°)
       [VIA   ] step  9  Δ= -0.1  +0.1  -0.3  +0.1  -0.6  +0.2  着いた
[STATE ] 目標を渡す  目標と実測の最大差 1.06°（関節 j1）
[004] 推論 1552ms  10ステップ先  Δ= +0.6  -0.6  +1.1  +0.2  -0.4  +0.1
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk004_via02: send_angles (single) [  +9.93,  +47.46,  +22.44,   -2.01,  -63.25,  -26.93]  speed=20 wait=0.0s  (pre max|Δ|=0.96°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.96° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.4  -1.0  -0.4  +0.0  +0.2  +0.1  着いた
[SEND] pi05_chunk004_via05: send_angles (single) [  +9.85,  +47.30,  +22.26,   -1.86,  -62.87,  -26.93]  speed=20 wait=0.0s  (pre max|Δ|=1.12°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.12° (tol 3.0°)
       [VIA   ] step  5  Δ= +0.3  -1.1  -0.6  +0.2  +0.6  +0.1  着いた
[SEND] pi05_chunk004_via08: send_angles (single) [ +10.06,  +47.34,  +23.17,   -1.82,  -63.25,  -26.91]  speed=20 wait=0.0s  (pre max|Δ|=1.08°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.08° (tol 3.0°)
       [VIA   ] step  8  Δ= +0.5  -1.1  +0.3  +0.2  +0.2  +0.2  着いた
[SEND] pi05_chunk004_via09: send_angles (single) [ +10.16,  +47.78,  +23.92,   -1.80,  -63.84,  -26.93]  speed=20 wait=0.0s  (pre max|Δ|=1.07°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.99° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.6  -0.6  +1.1  +0.2  -0.4  +0.1  着いた
[STATE ] 目標を渡す  目標と実測の最大差 0.99°（関節 j1）
[005] 推論 553ms  10ステップ先  Δ= +2.0  +8.3  -3.7  -0.6  -0.2  -0.1  グリッパー→閉
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk005_via02: send_angles (single) [ +11.00,  +48.60,  +23.57,   -1.86,  -63.39,  -26.98]  speed=20 wait=0.0s  (pre max|Δ|=1.42°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.88° (tol 3.0°)
       [VIA   ] step  2  Δ= +1.4  -0.2  -0.7  +0.2  +0.2  +0.1  着いた
[SEND] pi05_chunk005_via05: send_angles (single) [ +11.50,  +53.58,  +22.06,   -2.10,  -63.62,  -27.18]  speed=20 wait=0.0s  (pre max|Δ|=4.10°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.75° (tol 3.0°)
       [VIA   ] step  5  Δ= +0.6  +4.1  -2.2  -0.4  -0.1  -0.1  着いた
[SEND] pi05_chunk005_via08: send_angles (single) [ +11.57,  +57.02,  +20.55,   -2.58,  -63.65,  -27.20]  speed=20 wait=0.0s  (pre max|Δ|=2.74°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.33° (tol 3.0°)
       [VIA   ] step  8  Δ= +0.7  +2.4  -2.7  -0.9  -0.1  -0.1  着いた
[SEND] pi05_chunk005_via09: send_angles (single) [ +11.57,  +57.02,  +20.55,   -2.58,  -63.65,  -27.20]  speed=20 wait=0.0s  (pre max|Δ|=1.15°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.15° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.1  -0.9  -1.1  -0.9  -0.1  -0.1  着いた
  [Pi] GRIPPER: VALUE=25 speed=100 result= None
[STATE ] 目標を渡す  目標と実測の最大差 1.15°（関節 j2）
[006] 推論 561ms  10ステップ先  Δ= +1.0  -7.0  +4.9  -1.3  -0.1  +0.2
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk006_via02: send_angles (single) [ +11.53,  +53.55,  +23.89,   -3.05,  -62.96,  -26.93]  speed=20 wait=0.0s  (pre max|Δ|=4.36°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.82° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.0  -4.4  +2.2  -1.1  +1.2  +0.1  着いた
[SEND] pi05_chunk006_via05: send_angles (single) [ +11.70,  +51.42,  +27.04,   -3.29,  -63.24,  -26.64]  speed=20 wait=0.0s  (pre max|Δ|=3.95°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.84° (tol 3.0°)
       [VIA   ] step  5  Δ= +0.4  -3.9  +2.6  -0.8  +0.9  +0.2  着いた
[SEND] pi05_chunk006_via08: send_angles (single) [ +11.91,  +50.52,  +27.81,   -3.24,  -64.34,  -26.69]  speed=20 wait=0.0s  (pre max|Δ|=2.74°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.03° (tol 3.0°)
       [VIA   ] step  8  Δ= +0.6  -2.7  +0.4  -0.4  -0.2  +0.1  着いた
[SEND] pi05_chunk006_via09: send_angles (single) [ +12.48,  +50.88,  +26.58,   -3.09,  -64.15,  -26.90]  speed=20 wait=0.0s  (pre max|Δ|=1.67°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.67° (tol 3.0°)
       [VIA   ] step  9  Δ= +1.1  -1.7  -0.8  -0.4  +0.0  -0.2  着いた
[STATE ] 目標を渡す  目標と実測の最大差 1.67°（関節 j1）
[007] 推論 655ms  10ステップ先  Δ=+12.3  -3.8 -10.1  +2.4  +6.1  -2.8
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk007_via02: send_angles (single) [ +12.62,  +46.50,  +29.37,   -3.27,  -64.32,  -26.48]  speed=20 wait=0.0s  (pre max|Δ|=6.05°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.19° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.1  -6.0  +2.0  -0.5  -0.2  +0.2  着いた
[SEND] pi05_chunk007_via05: send_angles (single) [ +18.19,  +47.57,  +24.56,   -2.17,  -62.53,  -27.73]  speed=20 wait=0.0s  (pre max|Δ|=5.71°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.89° (tol 3.0°)
       [VIA   ] step  5  Δ= +5.7  -0.6  -5.4  +0.7  +1.9  -1.0  着いた
[SEND] pi05_chunk007_via08: send_angles (single) [ +23.42,  +48.46,  +18.99,   -0.74,  -59.28,  -29.15]  speed=20 wait=0.0s  (pre max|Δ|=6.58°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.71° (tol 3.0°)
       [VIA   ] step  8  Δ= +5.0  +0.0  -6.6  +2.3  +5.1  -2.4  着いた
[SEND] pi05_chunk007_via09: send_angles (single) [ +24.86,  +48.72,  +17.28,   -0.39,  -58.10,  -29.52]  speed=20 wait=0.0s  (pre max|Δ|=2.89°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.26° (tol 3.0°)
       [VIA   ] step  9  Δ= +1.5  -0.6  -2.8  +0.7  +2.9  -1.5  着いた
[STATE ] 目標を渡す  目標と実測の最大差 1.17°（関節 j2）
[008] 推論 1654ms  10ステップ先  Δ= +3.2  +3.4  -8.9  +2.5  +5.3  -2.9
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk008_via02: send_angles (single) [ +26.45,  +49.42,  +14.73,   +0.50,  -56.58,  -30.34]  speed=20 wait=0.0s  (pre max|Δ|=3.72°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.35° (tol 3.0°)
       [VIA   ] step  2  Δ= +1.5  -0.4  -3.7  +1.5  +2.4  -1.5  着いた
[SEND] pi05_chunk008_via05: send_angles (single) [ +27.85,  +50.32,  +11.11,   +1.32,  -54.00,  -31.25]  speed=20 wait=0.0s  (pre max|Δ|=4.71°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.60° (tol 3.0°)
       [VIA   ] step  5  Δ= +1.2  -0.2  -4.7  +0.4  +3.0  -1.4  着いた
[SEND] pi05_chunk008_via08: send_angles (single) [ +28.03,  +52.20,   +9.95,   +1.46,  -53.66,  -31.37]  speed=20 wait=0.0s  (pre max|Δ|=2.26°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.56° (tol 3.0°)
       [VIA   ] step  8  Δ= +0.3  +0.9  -2.3  -0.3  +0.7  -0.6  着いた
[SEND] pi05_chunk008_via09: send_angles (single) [ +28.18,  +53.22,   +9.56,   +1.51,  -53.87,  -31.39]  speed=20 wait=0.0s  (pre max|Δ|=1.95°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.69° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.4  -0.2  -1.9  -0.2  +0.2  -0.5  着いた
[STATE ] 目標を渡す  目標と実測の最大差 1.42°（関節 j2）
[009] 推論 561ms  10ステップ先  Δ= +1.3  -1.1  -7.7  +1.2  -1.5  -1.3
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > p
[PAD   ] 補正 1 (推論 9 のあと). ゲームパッドで直して, □ で推論に戻ります
コントローラーを待っています（5 秒でつながらなければ推論の入力待ちに戻ります）。□ で推論に戻ります。Ctrl-C で補正を抜けます
/opt/homebrew/Caskroom/miniforge/base/lib/python3.12/site-packages/pygame/pkgdata.py:25: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81.
  from pkg_resources import resource_stream, resource_exists
[接続] PS4 Controller  GUID=03008fe54c050000cc09000000016800  軸=6  ボタン=16
[長押し] j1 を +54.31° → +48.16° まで（目標を 1 回送信。止めます）
[PAD   ] 補正 1 を終えました (12.6 秒, 送った目標 2 回). この姿勢から推論に戻ります
[STATE ] 実測を渡す (直前に送った目標がない)
[010] 推論 558ms  10ステップ先  Δ=+10.7 +10.6  -2.1  +1.0  -4.8  -0.2
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk010_via02: send_angles (single) [ +35.17,  +37.22,  +11.14,   +1.92,  -51.29,  -31.07]  speed=20 wait=0.0s  (pre max|Δ|=7.49°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.88° (tol 3.0°)
       [VIA   ] step  2  Δ= +7.5  -0.1  -0.6  +0.2  +1.3  -0.1  着いた
[SEND] pi05_chunk010_via05: send_angles (single) [ +38.12,  +41.10,  +10.50,   +2.15,  -53.25,  -31.12]  speed=20 wait=0.0s  (pre max|Δ|=2.78°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.18° (tol 3.0°)
       [VIA   ] step  5  Δ= +2.6  +2.8  -1.2  +0.3  -0.2  -0.2  着いた
[SEND] pi05_chunk010_via08: send_angles (single) [ +38.49,  +46.56,   +9.86,   +2.60,  -56.70,  -31.09]  speed=20 wait=0.0s  (pre max|Δ|=4.38°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.82° (tol 3.0°)
       [VIA   ] step  8  Δ= +0.3  +4.4  -1.8  +0.5  -3.6  -0.2  着いた
[SEND] pi05_chunk010_via09: send_angles (single) [ +38.42,  +47.99,   +9.66,   +2.73,  -57.34,  -31.09]  speed=20 wait=0.0s  (pre max|Δ|=2.02°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.02° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.3  +0.3  -2.0  +0.6  -1.6  -0.2  着いた
[STATE ] 目標を渡す  目標と実測の最大差 1.85°（関節 j2）
[011] 推論 550ms  10ステップ先  Δ= +0.8 +11.5  -5.6  +1.2 -10.3  -0.5
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk011_via02: send_angles (single) [ +38.66,  +52.09,   +8.28,   +2.83,  -59.93,  -31.23]  speed=20 wait=0.0s  (pre max|Δ|=3.23°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.47° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.5  +3.0  -3.2  +0.6  -2.8  -0.3  着いた
[SEND] pi05_chunk011_via05: send_angles (single) [ +38.82,  +56.79,   +6.97,   +3.00,  -63.75,  -31.37]  speed=20 wait=0.0s  (pre max|Δ|=4.96°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.46° (tol 3.0°)
       [VIA   ] step  5  Δ= +0.7  +3.6  -2.8  +0.5  -5.0  -0.4  着いた
[SEND] pi05_chunk011_via08: send_angles (single) [ +38.80,  +60.27,   +6.07,   +3.33,  -66.89,  -31.41]  speed=20 wait=0.0s  (pre max|Δ|=3.70°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.04° (tol 3.0°)
       [VIA   ] step  8  Δ= +0.6  +2.4  -2.4  +0.7  -3.7  -0.3  着いた
[SEND] pi05_chunk011_via09: send_angles (single) [ +38.89,  +60.53,   +5.93,   +3.41,  -67.39,  -31.42]  speed=20 wait=0.0s  (pre max|Δ|=1.18°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.18° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.7  -0.6  -1.2  +0.5  +0.0  -0.0  着いた
[STATE ] 目標を渡す  目標と実測の最大差 1.18°（関節 j2）
[012] 推論 673ms  5ステップ先  Δ= +0.2  +2.2  -1.4  +0.3  -2.4  -0.0  グリッパー→開
       [VIA   ] 中継点 2 点: step 2, 4
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk012_via02: send_angles (single) [ +38.90,  +63.49,   +5.72,   +3.56,  -69.69,  -31.41]  speed=20 wait=0.0s  (pre max|Δ|=2.24°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.02° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.2  +2.2  -1.4  +0.2  -2.2  -0.0  着いた
[SEND] pi05_chunk012_via04: send_angles (single) [ +38.90,  +63.42,   +5.67,   +3.64,  -69.85,  -31.42]  speed=20 wait=0.0s  (pre max|Δ|=1.86°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.86° (tol 3.0°)
       [VIA   ] step  4  Δ= +0.2  -0.8  -1.0  +0.5  +1.9  +0.2  着いた
  [Pi] GRIPPER: OPEN result= None
[STATE ] 目標を渡す  目標と実測の最大差 1.00°（関節 j2）
[013] 推論 1657ms  10ステップ先  Δ= -1.1 -16.8  -1.2  -0.6 +17.0  -0.4
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk013_via02: send_angles (single) [ +38.80,  +59.10,   +5.55,   +3.52,  -65.37,  -31.48]  speed=20 wait=0.0s  (pre max|Δ|=5.14°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.86° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.0  -5.1  -1.1  -0.6  +5.2  -0.5  着いた
[SEND] pi05_chunk013_via05: send_angles (single) [ +38.64,  +54.18,   +5.43,   +3.38,  -60.05,  -31.52]  speed=20 wait=0.0s  (pre max|Δ|=7.07°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.15° (tol 3.0°)
       [VIA   ] step  5  Δ= -0.1  -7.1  -1.2  -0.9  +5.5  -0.6  着いた
[SEND] pi05_chunk013_via08: send_angles (single) [ +38.06,  +48.99,   +5.41,   +3.41,  -55.27,  -31.57]  speed=20 wait=0.0s  (pre max|Δ|=7.34°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.25° (tol 3.0°)
       [VIA   ] step  8  Δ= -0.7  -7.3  -1.2  -0.9  +5.1  -0.7  着いた
[SEND] pi05_chunk013_via09: send_angles (single) [ +37.62,  +47.43,   +5.44,   +3.42,  -53.71,  -31.59]  speed=20 wait=0.0s  (pre max|Δ|=3.81°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.14° (tol 3.0°)
       [VIA   ] step  9  Δ= -0.4  -3.8  -1.1  -0.8  +1.7  -0.7  着いた
[STATE ] 目標を渡す  目標と実測の最大差 2.14°（関節 j1）
[014] 推論 605ms  10ステップ先  Δ=-12.2 -18.7  -1.4  -2.3 +19.9  -0.5
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk014_via02: send_angles (single) [ +36.86,  +44.47,   +5.38,   +3.31,  -50.44,  -31.64]  speed=20 wait=0.0s  (pre max|Δ|=5.10°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.55° (tol 3.0°)
       [VIA   ] step  2  Δ= -1.2  -5.1  -1.2  -0.6  +3.3  -0.6  着いた
[SEND] pi05_chunk014_via05: send_angles (single) [ +33.05,  +39.08,   +5.34,   +2.86,  -44.23,  -31.62]  speed=20 wait=0.0s  (pre max|Δ|=7.32°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.05° (tol 3.0°)
       [VIA   ] step  5  Δ= -3.7  -7.3  -1.3  -0.9  +6.5  -0.5  着いた
[SEND] pi05_chunk014_via08: send_angles (single) [ +27.44,  +32.74,   +5.26,   +2.04,  -36.34,  -31.55]  speed=20 wait=0.0s  (pre max|Δ|=8.39°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.06° (tol 3.0°)
       [VIA   ] step  8  Δ= -5.6  -8.4  -1.3  -1.1  +8.2  -0.4  着いた
[SEND] pi05_chunk014_via09: send_angles (single) [ +25.83,  +30.89,   +5.23,   +1.82,  -33.76,  -31.52]  speed=20 wait=0.0s  (pre max|Δ|=3.91°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.98° (tol 3.0°)
       [VIA   ] step  9  Δ= -2.0  -3.9  -1.4  -0.6  +2.8  -0.3  着いた
[STATE ] 目標を渡す  目標と実測の最大差 1.98°（関節 j1）
[015] 推論 622ms  10ステップ先  Δ=-14.9 -18.8  -0.9  -1.3 +21.0  -0.0
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > h
[SEND] pi05_home: send_angles (single) [  +0.00,   +0.00,   +0.00,   +0.00,   +0.00,  -30.00]  speed=20 wait=0.0s  (pre max|Δ|=33.92°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.75° (tol 2.5°)
[RECORD] 記録終了 コマ 761 (8.873 fps) 実測角 729 回 (8.5 Hz)  電流 735 行 (read_servo)  → /Volumes/KIOXIA/r2r2r-data/runs/pi05_policy/pi05_20261113_193712/recording
       結果: y=成功 / n=失敗 / Enter=記録しない > y
[GRIP  ] 閉じて 1 秒後の爪の電流 (中央値): 1 回目 676 (9 行)  (閉じる値 25)
[DONE  ] 記録: /Volumes/KIOXIA/r2r2r-data/runs/pi05_policy/pi05_20261113_193712
[CLIENT] run_policy_client.py が終わった (終了コード 0. モデル deep1 (PixelstoMotors/pi05-mecharm-deep-even10-lora-v1))
    (91 秒)
もう1回やりますか? y=やる / 他=終わる > y

=== 7. HOME → 爪を開く → 位置合わせ (4 回目)
[INIT] daemon 接続中...
  [Pi] fresh_mode=1
[INIT] fresh_mode=1
[PRE]  現在姿勢: [-0.17, 1.49, 1.75, 0.26, -0.17, -30.41]
[SEND] HOME へ移動指令
[WAIT] t=0.6s  max_err=1.75°
[DONE] HOME 到達 max_err=1.75°
[POST] 最終姿勢: [-0.17, 1.49, 1.75, 0.26, -0.17, -30.41]
  [Pi] fresh_mode=0
[EXIT] fresh_mode=0, socket close
  [Pi] GRIPPER: OPEN result= None
[REF   ] 基準画像: /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_teach_v1_trim2/raw_episodes/run_0001_20261019_194818/frames/000000.jpg
[REF   ] お手本 run_0001_20261019_194818 (つかんだ瞬間の j0 = +13.2°)
[REF   ] 重なった画像のブロックに実物のブロックを合わせると, お手本と同じ位置に置ける
[TILT  ] 傾きのお手本: /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_deep_even10_v1/raw_episodes  中央値 -0.61° (測れた 50/50 本. プラス=右下がり)
[TILT  ] 傾きはソフトでそろえる: ライブをお手本の中央値との差だけ回して重ねる (AI に渡す画像と同じ. 回す角度が 3° を超えたら画面の色を変える. 止めない)
[ALIGN ] |dy| <= 20 なら OK. アームは HOME に置いた状態で合わせる. q または Esc で終了 (ファイルには何も書かない)
[ALIGN ] dy=  +2.3  dx=  +1.6  response=0.726  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.56° → -0.61° にソフトでそろえる (+5.94° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +3.7  dx=  +3.6  response=0.239  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.58° → -0.61° にソフトでそろえる (+5.97° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +2.5  dx=  +2.4  response=0.664  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.58° → -0.61° にソフトでそろえる (+5.97° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +3.7  dx=  +3.7  response=0.269  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.58° → -0.61° にソフトでそろえる (+5.97° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +2.5  dx=  +2.5  response=0.669  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.59° → -0.61° にソフトでそろえる (+5.98° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +3.7  dx=  +3.7  response=0.243  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.59° → -0.61° にソフトでそろえる (+5.98° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +2.5  dx=  +2.5  response=0.678  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.60° → -0.61° にソフトでそろえる (+5.99° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +3.6  dx=  +3.7  response=0.263  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.63° → -0.61° にソフトでそろえる (+6.01° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +2.4  dx=  +1.7  response=0.767  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.60° → -0.61° にソフトでそろえる (+5.99° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +7.7  dx=  +5.3  response=0.094  → 測れない (相関が弱く dx/dy が当てにならない (response=0.094 < 0.20))  傾き -11.21° → -0.61° にソフトでそろえる (+10.60° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +2.3  dx=  +1.6  response=0.730  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.59° → -0.61° にソフトでそろえる (+5.98° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +3.7  dx=  +3.6  response=0.260  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.63° → -0.61° にソフトでそろえる (+6.01° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +2.4  dx=  +2.5  response=0.748  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.59° → -0.61° にソフトでそろえる (+5.97° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +3.8  dx=  +3.7  response=0.263  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.63° → -0.61° にソフトでそろえる (+6.01° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +2.3  dx=  +1.8  response=0.974  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.58° → -0.61° にソフトでそろえる (+5.97° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +4.0  dx=  +3.6  response=0.250  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.67° → -0.61° にソフトでそろえる (+6.06° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +2.3  dx=  +1.7  response=0.984  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.67° → -0.61° にソフトでそろえる (+6.06° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +3.6  dx=  +3.6  response=0.221  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.60° → -0.61° にソフトでそろえる (+5.99° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[ALIGN ] dy=  +2.3  dx=  +1.6  response=0.715  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.58° → -0.61° にソフトでそろえる (+5.97° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[DONE  ] 終了 (何も書いていません)
    (54 秒)

=== 8. 実機推論 (4 回目)
[WAIT  ] 送ったあと 0.0s / 爪のあと 0.8s (開くときの daemon 0.0s) / 止まるのを待つ目安 0.8s
[GRIP  ] 閉じる値 25  締め直し r は 22 と 25 を交互に送る
[SAFE  ] 安全範囲 (学習 50 本 ±10°): j0[-72,+55]  j1[-9,+88]  j2[-45,+52]  j3[-18,+27]  j4[-87,+10]  j5[-51,-15]
[SAFE  ] 肩 j1 の上限は J1_SAFE_MAX=88° で切った (これを超える指令はアームが黙って捨てる / LOG352)  元データ: /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_deep_even10_v1/raw_episodes
[MODE  ] EXECUTE  steps/chunk=10  max_move=20.0°  log=/Volumes/KIOXIA/r2r2r-data/runs/pi05_policy/pi05_20261113_193939
[MODEL ] deep1 (PixelstoMotors/pi05-mecharm-deep-even10-lora-v1)
[CAMERA] 写り方 dy=-4.5 dx=+8.0 response=0.594 → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  回したあとの画像で測った
[CAMERA] 基準: /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_teach_v1_trim2/raw_episodes/run_0001_20261019_183454/frames/000000.jpg
[CAMERA] 傾き -6.62° → -0.61° にそろえて渡す (+6.01° 回す. プラス=右下がり)  ※ 回す角度が 3° を超える (止めない. iPhone の付け方を見直す) (お手本: /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_deep_even10_v1/raw_episodes  測れた 50/50 本・今 5/5 コマ)
[WARN  ] !!!!! 上カメラの傾きが大きくずれている: +6.01° 回して渡す (止めない. 次の試行の前に iPhone の付け方を見直す) !!!!!
[POLICY] 接続 ws://localhost:8000  metadata={}
[RECORD] 上カメラと実測角を 1 秒 10 コマで記録します → /Volumes/KIOXIA/r2r2r-data/runs/pi05_policy/pi05_20261113_193939/recording
[GRIP  ] 開始時のグリッパー開放は, 最初の目標が検査を通ってから行います (爪が閉じていたら手で開けておく)
[STATE ] 実測を渡す (直前に送った目標がない)
[000] 推論 762ms  10ステップ先  Δ= +2.6 +12.4  +8.9  -2.3 -19.8  +1.9
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[GRIP  ] 開始時にグリッパーを開く
  [Pi] GRIPPER: OPEN result= None
[SEND] pi05_chunk000_via02: send_angles (single) [  +0.18,   +3.74,   +3.31,   +0.13,   -3.26,  -29.86]  speed=20 wait=0.0s  (pre max|Δ|=3.09°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.68° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.4  +2.3  +1.6  -0.1  -3.1  +0.4  着いた
[SEND] pi05_chunk000_via05: send_angles (single) [  +1.44,   +8.81,   +6.93,   -0.89,  -11.36,  -29.02]  speed=20 wait=0.0s  (pre max|Δ|=9.78°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.78° (tol 3.0°)
       [VIA   ] step  5  Δ= +1.7  +4.2  +2.6  -1.1  -9.8  +1.0  着いた
[SEND] pi05_chunk000_via08: send_angles (single) [  +2.40,  +12.78,   +9.98,   -1.80,  -18.56,  -28.42]  speed=20 wait=0.0s  (pre max|Δ|=8.98°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.51° (tol 3.0°)
       [VIA   ] step  8  Δ= +1.5  +3.0  +2.2  -1.2  -9.0  +0.8  着いた
[SEND] pi05_chunk000_via09: send_angles (single) [  +2.35,  +13.87,  +10.62,   -2.00,  -19.93,  -28.34]  speed=20 wait=0.0s  (pre max|Δ|=2.88°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.04° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.4  +0.2  -0.3  -0.5  -2.9  +0.3  着いた
[STATE ] 目標を渡す  目標と実測の最大差 1.04°（関節 j4）
[001] 推論 1546ms  10ステップ先  Δ= +4.8 +15.0  +9.2  -1.5 -25.3  +1.7
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk001_via02: send_angles (single) [  +3.52,  +18.18,  +12.84,   -2.74,  -25.78,  -27.51]  speed=20 wait=0.0s  (pre max|Δ|=6.89°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.23° (tol 3.0°)
       [VIA   ] step  2  Δ= +1.6  +3.4  +2.0  -1.1  -6.9  +1.1  着いた
[SEND] pi05_chunk001_via05: send_angles (single) [  +4.85,  +23.02,  +15.91,   -3.04,  -33.43,  -27.05]  speed=20 wait=0.0s  (pre max|Δ|=8.39°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.79° (tol 3.0°)
       [VIA   ] step  5  Δ= +1.8  +3.9  +2.3  -0.1  -8.4  +0.6  着いた
[SEND] pi05_chunk001_via08: send_angles (single) [  +6.45,  +28.41,  +19.26,   -3.11,  -41.94,  -26.89]  speed=20 wait=0.0s  (pre max|Δ|=8.99°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.03° (tol 3.0°)
       [VIA   ] step  8  Δ= +2.0  +4.6  +2.7  +0.5  -9.0  +0.3  着いた
[SEND] pi05_chunk001_via09: send_angles (single) [  +6.78,  +29.76,  +20.07,   -3.15,  -44.16,  -26.86]  speed=20 wait=0.0s  (pre max|Δ|=2.77°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.91° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.9  +0.3  +0.2  +0.5  -2.8  +0.2  着いた
[STATE ] 目標を渡す  目標と実測の最大差 0.91°（関節 j1）
[002] 推論 636ms  10ステップ先  Δ= +2.9 +10.6  +5.3  +1.2 -14.3  +0.3
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk002_via02: send_angles (single) [  +7.88,  +33.32,  +21.80,   -2.92,  -48.72,  -26.83]  speed=20 wait=0.0s  (pre max|Δ|=4.87°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.35° (tol 3.0°)
       [VIA   ] step  2  Δ= +1.1  +2.7  +1.2  +0.9  -4.9  +0.2  着いた
[SEND] pi05_chunk002_via05: send_angles (single) [  +8.60,  +37.15,  +23.63,   -2.77,  -53.49,  -26.81]  speed=20 wait=0.0s  (pre max|Δ|=5.24°, post-send timeout 8.0s)
  [WARN] daemon_get_angles failed: daemon error: get_angles returned empty/invalid after 12 retries
  [WARN] daemon_get_angles failed: daemon error: get_angles returned empty/invalid after 12 retries
[SEND] arrival OK: max|Δ|=1.08° (tol 3.0°)
       [VIA   ] step  5  Δ= +0.6  +2.8  +1.5  +0.6  -5.3  +0.3  着いた
[SEND] pi05_chunk002_via08: send_angles (single) [  +9.34,  +40.39,  +25.39,   -2.68,  -57.33,  -26.80]  speed=20 wait=0.0s  (pre max|Δ|=4.25°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.74° (tol 3.0°)
       [VIA   ] step  8  Δ= +0.7  +2.2  +1.3  +0.5  -4.3  +0.2  着いた
[SEND] pi05_chunk002_via09: send_angles (single) [  +9.65,  +41.22,  +25.82,   -2.66,  -58.19,  -26.80]  speed=20 wait=0.0s  (pre max|Δ|=0.80°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.87° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.2  -0.2  +0.1  +0.1  -0.8  +0.2  着いた
[STATE ] 目標を渡す  目標と実測の最大差 0.87°（関節 j1）
[003] 推論 1589ms  10ステップ先  Δ= +2.1 +16.4  +0.4  -0.2  -9.3  +0.3
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk003_via02: send_angles (single) [ +10.75,  +45.72,  +28.22,   -2.79,  -62.98,  -26.78]  speed=20 wait=0.0s  (pre max|Δ|=4.80°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.20° (tol 3.0°)
       [VIA   ] step  2  Δ= +1.3  +3.6  +2.5  -0.1  -4.8  +0.2  着いた
[SEND] pi05_chunk003_via05: send_angles (single) [ +11.26,  +50.40,  +28.58,   -2.84,  -65.65,  -26.74]  speed=20 wait=0.0s  (pre max|Δ|=3.56°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.86° (tol 3.0°)
       [VIA   ] step  5  Δ= +0.2  +3.6  +0.3  -0.2  -3.0  +0.2  着いた
[SEND] pi05_chunk003_via08: send_angles (single) [ +11.53,  +56.95,  +26.71,   -2.99,  -67.19,  -26.67]  speed=20 wait=0.0s  (pre max|Δ|=5.54°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.67° (tol 3.0°)
       [VIA   ] step  8  Δ= +0.6  +5.6  -1.7  -0.8  -1.8  +0.3  着いた
[SEND] pi05_chunk003_via09: send_angles (single) [ +11.56,  +58.50,  +26.11,   -2.96,  -67.44,  -26.66]  speed=20 wait=0.0s  (pre max|Δ|=1.75°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.64° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.2  +0.8  -1.7  -0.9  +0.8  +0.3  着いた
[STATE ] 目標を渡す  目標と実測の最大差 1.64°（関節 j4）
[004] 推論 558ms  5ステップ先  Δ= +0.4  +2.0  -3.5  -0.9  +2.6  +0.2  グリッパー→閉
       [VIA   ] 中継点 2 点: step 2, 4
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk004_via02: send_angles (single) [ +11.71,  +61.35,  +23.62,   -3.01,  -66.66,  -26.75]  speed=20 wait=0.0s  (pre max|Δ|=3.36°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.77° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.4  +2.1  -3.4  -0.8  +2.4  +0.2  着いた
[SEND] pi05_chunk004_via04: send_angles (single) [ +11.71,  +61.22,  +23.55,   -3.05,  -66.52,  -26.79]  speed=20 wait=0.0s  (pre max|Δ|=2.91°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.91° (tol 3.0°)
       [VIA   ] step  4  Δ= +0.5  -0.6  -0.4  -0.7  +2.9  +0.3  着いた
  [Pi] GRIPPER: VALUE=25 speed=100 result= None
[STATE ] 目標を渡す  目標と実測の最大差 3.00°（関節 j4）
[005] 推論 577ms  10ステップ先  Δ= +3.6  -5.9  +1.5  -1.4  +4.8  +0.6
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk005_via02: send_angles (single) [ +11.82,  +59.83,  +25.36,   -3.40,  -66.15,  -26.64]  speed=20 wait=0.0s  (pre max|Δ|=3.37°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.49° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.8  -1.9  +1.9  -1.0  +3.4  +0.5  着いた
[SEND] pi05_chunk005_via05: send_angles (single) [ +12.02,  +57.80,  +26.80,   -3.78,  -65.26,  -26.35]  speed=20 wait=0.0s  (pre max|Δ|=3.38°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.53° (tol 3.0°)
       [VIA   ] step  5  Δ= +1.0  -2.9  +2.8  -1.2  +3.4  +0.8  着いた
[SEND] pi05_chunk005_via08: send_angles (single) [ +13.49,  +56.13,  +25.64,   -3.73,  -64.75,  -26.47]  speed=20 wait=0.0s  (pre max|Δ|=2.49°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.17° (tol 3.0°)
       [VIA   ] step  8  Δ= +2.1  -2.5  +0.2  -0.8  +2.0  +0.3  着いた
[SEND] pi05_chunk005_via09: send_angles (single) [ +14.62,  +55.84,  +25.02,   -3.65,  -64.69,  -26.55]  speed=20 wait=0.0s  (pre max|Δ|=1.46°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.37° (tol 3.0°)
       [VIA   ] step  9  Δ= +1.4  -1.5  -0.6  -0.5  +0.7  +0.2  着いた
[STATE ] 目標を渡す  目標と実測の最大差 1.37°（関節 j1）
[006] 推論 554ms  10ステップ先  Δ= +1.6  -8.6  -1.0  -0.1  +2.3  +0.1
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk006_via02: send_angles (single) [ +14.50,  +54.83,  +24.25,   -3.59,  -64.32,  -26.59]  speed=20 wait=0.0s  (pre max|Δ|=2.38°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.33° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.3  -2.4  -1.2  -0.4  +1.0  +0.1  着いた
[SEND] pi05_chunk006_via05: send_angles (single) [ +14.68,  +51.77,  +24.25,   -3.53,  -63.78,  -26.58]  speed=20 wait=0.0s  (pre max|Δ|=4.39°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.84° (tol 3.0°)
       [VIA   ] step  5  Δ= +0.5  -4.4  -0.6  -0.3  -0.6  -0.0  着いた
[SEND] pi05_chunk006_via08: send_angles (single) [ +15.32,  +49.33,  +24.46,   -3.34,  -63.13,  -26.60]  speed=20 wait=0.0s  (pre max|Δ|=4.28°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.73° (tol 3.0°)
       [VIA   ] step  8  Δ= +1.0  -4.3  -0.4  +0.8  -0.7  -0.6  着いた
[SEND] pi05_chunk006_via09: send_angles (single) [ +15.87,  +48.65,  +24.52,   -3.29,  -62.98,  -26.61]  speed=20 wait=0.0s  (pre max|Δ|=2.41°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.41° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.6  -2.4  -0.3  +0.8  -0.5  -0.6  着いた
[STATE ] 目標を渡す  目標と実測の最大差 2.41°（関節 j1）
[007] 推論 558ms  10ステップ先  Δ= +3.0  -2.8  -6.5  +1.3  +0.8  -1.1
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk007_via02: send_angles (single) [ +16.18,  +48.11,  +24.17,   -3.21,  -62.89,  -26.76]  speed=20 wait=0.0s  (pre max|Δ|=2.95°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.16° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.4  -3.0  -0.7  +0.7  -0.4  -0.7  着いた
[SEND] pi05_chunk007_via05: send_angles (single) [ +16.16,  +47.72,  +23.40,   -3.30,  -62.87,  -26.73]  speed=20 wait=0.0s  (pre max|Δ|=2.55°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.55° (tol 3.0°)
       [VIA   ] step  5  Δ= +0.3  -2.5  -1.5  +0.5  -0.4  -0.7  着いた
[SEND] pi05_chunk007_via08: send_angles (single) [ +18.03,  +47.89,  +19.42,   -2.90,  -62.05,  -26.93]  speed=20 wait=0.0s  (pre max|Δ|=5.27°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.38° (tol 3.0°)
       [VIA   ] step  8  Δ= +2.2  -2.4  -5.3  +0.9  +0.5  -0.9  着いた
[SEND] pi05_chunk007_via09: send_angles (single) [ +18.93,  +48.23,  +18.35,   -2.64,  -61.69,  -27.06]  speed=20 wait=0.0s  (pre max|Δ|=2.04°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.04° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.9  -2.0  -1.9  +0.2  +0.9  -1.0  着いた
[STATE ] 目標を渡す  目標と実測の最大差 2.04°（関節 j1）
[008] 推論 586ms  10ステップ先  Δ= +8.3  -1.2 -11.4  +2.9  +5.4  -3.4
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk008_via02: send_angles (single) [ +19.35,  +48.20,  +17.58,   -2.25,  -61.71,  -27.45]  speed=20 wait=0.0s  (pre max|Δ|=2.45°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.07° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.4  -2.1  -2.4  +0.7  +0.9  -1.2  着いた
[SEND] pi05_chunk008_via05: send_angles (single) [ +23.10,  +48.66,  +13.49,   -1.10,  -59.68,  -28.52]  speed=20 wait=0.0s  (pre max|Δ|=5.49°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.33° (tol 3.0°)
       [VIA   ] step  5  Δ= +4.1  -1.6  -5.5  +1.6  +2.9  -1.5  着いた
[SEND] pi05_chunk008_via08: send_angles (single) [ +26.90,  +49.04,   +9.41,   -0.20,  -57.35,  -29.45]  speed=20 wait=0.0s  (pre max|Δ|=5.17°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.23° (tol 3.0°)
       [VIA   ] step  8  Δ= +4.0  -1.2  -5.2  +0.7  +3.3  -1.4  着いた
[SEND] pi05_chunk008_via09: send_angles (single) [ +27.44,  +49.12,   +8.62,   -0.07,  -57.14,  -29.56]  speed=20 wait=0.0s  (pre max|Δ|=1.92°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.75° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.6  -1.2  -1.9  +0.0  +1.1  -0.7  着いた
[STATE ] 目標を渡す  目標と実測の最大差 1.75°（関節 j2）
[009] 推論 780ms  10ステップ先  Δ=+16.4  +1.7 -14.8  +2.5  +7.3  -3.3
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk009_via02: send_angles (single) [ +33.60,  +49.37,   +3.34,   +0.60,  -54.74,  -30.59]  speed=20 wait=0.0s  (pre max|Δ|=7.03°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.23° (tol 3.0°)
       [VIA   ] step  2  Δ= +6.5  -0.9  -7.0  +0.8  +3.1  -1.5  着いた
[SEND] pi05_chunk009_via05: send_angles (single) [ +39.67,  +49.97,   -0.92,   +1.56,  -52.36,  -31.70]  speed=20 wait=0.0s  (pre max|Δ|=5.92°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.27° (tol 3.0°)
       [VIA   ] step  5  Δ= +5.9  -0.3  -5.5  +1.0  +2.8  -1.6  着いた
[SEND] pi05_chunk009_via08: send_angles (single) [ +42.98,  +51.23,   -3.87,   +2.07,  -51.03,  -32.30]  speed=20 wait=0.0s  (pre max|Δ|=4.22°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.85° (tol 3.0°)
       [VIA   ] step  8  Δ= +3.2  +0.2  -4.2  +0.4  +1.7  -0.9  着いた
[SEND] pi05_chunk009_via09: send_angles (single) [ +43.68,  +51.99,   -4.46,   +2.25,  -50.75,  -32.44]  speed=20 wait=0.0s  (pre max|Δ|=1.83°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.83° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.7  -0.5  -1.8  +0.2  +0.2  -0.4  着いた
[STATE ] 目標を渡す  目標と実測の最大差 1.83°（関節 j2）
[010] 推論 1468ms  10ステップ先  Δ= +0.0  +9.8  -2.5  +2.0  -8.6  -1.1  グリッパー→開
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk010_via02: send_angles (single) [ +43.60,  +56.38,   -4.67,   +2.97,  -54.03,  -32.71]  speed=20 wait=0.0s  (pre max|Δ|=3.21°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.18° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.2  +3.2  -2.0  +1.0  -3.1  -0.6  着いた
[SEND] pi05_chunk010_via05: send_angles (single) [ +43.63,  +60.26,   -4.87,   +3.51,  -57.25,  -32.94]  speed=20 wait=0.0s  (pre max|Δ|=5.40°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.06° (tol 3.0°)
       [VIA   ] step  5  Δ= +0.3  +2.6  -2.1  +0.9  -5.4  -0.5  着いた
[SEND] pi05_chunk010_via08: send_angles (single) [ +43.45,  +62.95,   -5.17,   +3.81,  -59.61,  -33.12]  speed=20 wait=0.0s  (pre max|Δ|=4.07°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.57° (tol 3.0°)
       [VIA   ] step  8  Δ= +0.1  +1.4  -2.2  +0.6  -4.1  -0.5  着いた
[SEND] pi05_chunk010_via09: send_angles (single) [ +43.45,  +62.95,   -5.17,   +3.81,  -59.61,  -33.12]  speed=20 wait=0.0s  (pre max|Δ|=1.48°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.48° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.1  -1.2  -1.5  +0.3  -1.4  -0.4  着いた
  [Pi] GRIPPER: OPEN result= None
[STATE ] 目標を渡す  目標と実測の最大差 1.48°（関節 j2）
[011] 推論 553ms  10ステップ先  Δ= -0.9 -15.1  -0.8  +0.4 +12.1  -0.7
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk011_via02: send_angles (single) [ +43.49,  +59.91,   -5.28,   +3.90,  -56.56,  -33.31]  speed=20 wait=0.0s  (pre max|Δ|=4.25°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.59° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.2  -4.2  -1.6  +0.3  +2.6  -0.5  着いた
[SEND] pi05_chunk011_via05: send_angles (single) [ +43.66,  +55.14,   -5.13,   +3.94,  -51.87,  -33.41]  speed=20 wait=0.0s  (pre max|Δ|=7.19°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.18° (tol 3.0°)
       [VIA   ] step  5  Δ= +0.3  -6.9  -1.4  +0.2  +7.2  -0.5  着いた
[SEND] pi05_chunk011_via08: send_angles (single) [ +43.16,  +50.61,   -4.73,   +4.02,  -48.19,  -33.51]  speed=20 wait=0.0s  (pre max|Δ|=6.69°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.91° (tol 3.0°)
       [VIA   ] step  8  Δ= -0.2  -6.7  -1.0  +0.3  +5.9  -0.4  着いた
[SEND] pi05_chunk011_via09: send_angles (single) [ +42.48,  +49.03,   -4.50,   +3.97,  -47.10,  -33.49]  speed=20 wait=0.0s  (pre max|Δ|=3.61°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.29° (tol 3.0°)
       [VIA   ] step  9  Δ= -0.9  -3.6  -0.7  +0.2  +3.0  -0.3  着いた
[STATE ] 目標を渡す  目標と実測の最大差 2.29°（関節 j1）
[012] 推論 554ms  10ステップ先  Δ=-19.1 -25.5  +1.8  -3.6 +25.0  +1.3
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > h
[SEND] pi05_home: send_angles (single) [  +0.00,   +0.00,   +0.00,   +0.00,   +0.00,  -30.00]  speed=20 wait=0.0s  (pre max|Δ|=51.32°, post-send timeout 9.7s)
[SEND] arrival OK: max|Δ|=1.58° (tol 2.5°)
[RECORD] 記録終了 コマ 650 (8.861 fps) 実測角 592 回 (8.07 Hz)  電流 597 行 (read_servo)  → /Volumes/KIOXIA/r2r2r-data/runs/pi05_policy/pi05_20261113_193939/recording
       結果: y=成功 / n=失敗 / Enter=記録しない > y
[GRIP  ] 閉じて 1 秒後の爪の電流 (中央値): 1 回目 722 (11 行)  (閉じる値 25)
[DONE  ] 記録: /Volumes/KIOXIA/r2r2r-data/runs/pi05_policy/pi05_20261113_193939
[CLIENT] run_policy_client.py が終わった (終了コード 0. モデル deep1 (PixelstoMotors/pi05-mecharm-deep-even10-lora-v1))
    (79 秒)
もう1回やりますか? y=やる / 他=終わる > y

=== 7. HOME → 爪を開く → 位置合わせ (5 回目)
[INIT] daemon 接続中...
  [Pi] fresh_mode=1
[INIT] fresh_mode=1
[PRE]  現在姿勢: [-0.26, 1.49, 0.70, 0.43, -0.35, -30.49]
[SEND] HOME へ移動指令
[WAIT] t=0.6s  max_err=1.49°
[DONE] HOME 到達 max_err=1.49°
[POST] 最終姿勢: [-0.26, 1.49, 0.70, 0.35, -0.26, -30.41]
  [Pi] fresh_mode=0
[EXIT] fresh_mode=0, socket close
  [Pi] GRIPPER: OPEN result= None
[REF   ] 基準画像: /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_teach_v1_trim2/raw_episodes/run_0001_20261019_194818/frames/000000.jpg
[REF   ] お手本 run_0001_20261019_194818 (つかんだ瞬間の j0 = +13.2°)
[REF   ] 重なった画像のブロックに実物のブロックを合わせると, お手本と同じ位置に置ける
[TILT  ] 傾きのお手本: /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_deep_even10_v1/raw_episodes  中央値 -0.61° (測れた 50/50 本. プラス=右下がり)
[TILT  ] 傾きはソフトでそろえる: ライブをお手本の中央値との差だけ回して重ねる (AI に渡す画像と同じ. 回す角度が 3° を超えたら画面の色を変える. 止めない)
[ALIGN ] |dy| <= 20 なら OK. アームは HOME に置いた状態で合わせる. q または Esc で終了 (ファイルには何も書かない)
[ALIGN ] dy=  +2.3  dx=  +1.7  response=1.014  → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  傾き -6.54° → -0.61° にソフトでそろえる (+5.93° 回して重ねる. プラス=右下がり) → 回す角度が 3° を超える (TILT DIFFERS. iPhone の付け方を見直す)
[DONE  ] 終了 (何も書いていません)
    (8 秒)

=== 8. 実機推論 (5 回目)
[WAIT  ] 送ったあと 0.0s / 爪のあと 0.8s (開くときの daemon 0.0s) / 止まるのを待つ目安 0.8s
[GRIP  ] 閉じる値 25  締め直し r は 22 と 25 を交互に送る
[SAFE  ] 安全範囲 (学習 50 本 ±10°): j0[-72,+55]  j1[-9,+88]  j2[-45,+52]  j3[-18,+27]  j4[-87,+10]  j5[-51,-15]
[SAFE  ] 肩 j1 の上限は J1_SAFE_MAX=88° で切った (これを超える指令はアームが黙って捨てる / LOG352)  元データ: /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_deep_even10_v1/raw_episodes
[MODE  ] EXECUTE  steps/chunk=10  max_move=20.0°  log=/Volumes/KIOXIA/r2r2r-data/runs/pi05_policy/pi05_20261113_194108
[MODEL ] deep1 (PixelstoMotors/pi05-mecharm-deep-even10-lora-v1)
[CAMERA] 写り方 dy=-4.1 dx=+8.1 response=0.600 → OK (|dy|<=20 / |dx|<=20 / response>=0.20)  回したあとの画像で測った
[CAMERA] 基準: /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_teach_v1_trim2/raw_episodes/run_0001_20261019_183454/frames/000000.jpg
[CAMERA] 傾き -6.54° → -0.61° にそろえて渡す (+5.93° 回す. プラス=右下がり)  ※ 回す角度が 3° を超える (止めない. iPhone の付け方を見直す) (お手本: /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_deep_even10_v1/raw_episodes  測れた 50/50 本・今 5/5 コマ)
[WARN  ] !!!!! 上カメラの傾きが大きくずれている: +5.93° 回して渡す (止めない. 次の試行の前に iPhone の付け方を見直す) !!!!!
[POLICY] 接続 ws://localhost:8000  metadata={}
[RECORD] 上カメラと実測角を 1 秒 10 コマで記録します → /Volumes/KIOXIA/r2r2r-data/runs/pi05_policy/pi05_20261113_194108/recording
[GRIP  ] 開始時のグリッパー開放は, 最初の目標が検査を通ってから行います (爪が閉じていたら手で開けておく)
[STATE ] 実測を渡す (直前に送った目標がない)
[000] 推論 688ms  10ステップ先  Δ= +2.9 +13.4  +7.3  -1.6 -21.4  +2.0
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[GRIP  ] 開始時にグリッパーを開く
  [Pi] GRIPPER: OPEN result= None
[SEND] pi05_chunk000_via02: send_angles (single) [  +0.16,   +3.39,   +1.67,   +0.23,   -2.48,  -30.12]  speed=20 wait=0.0s  (pre max|Δ|=2.22°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.05° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.4  +1.9  +1.0  -0.0  -2.2  +0.1  着いた
[SEND] pi05_chunk000_via05: send_angles (single) [  +1.19,   +8.50,   +4.70,   -0.43,  -10.44,  -29.36]  speed=20 wait=0.0s  (pre max|Δ|=10.01°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.66° (tol 3.0°)
       [VIA   ] step  5  Δ= +1.4  +4.2  +2.1  -0.7 -10.0  +0.9  着いた
[SEND] pi05_chunk000_via08: send_angles (single) [  +2.16,  +13.33,   +7.41,   -1.20,  -18.75,  -28.46]  speed=20 wait=0.0s  (pre max|Δ|=9.88°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.62° (tol 3.0°)
       [VIA   ] step  8  Δ= +1.4  +3.9  +1.8  -1.0  -9.9  +1.1  着いた
[SEND] pi05_chunk000_via09: send_angles (single) [  +2.60,  +14.88,   +8.04,   -1.37,  -21.65,  -28.19]  speed=20 wait=0.0s  (pre max|Δ|=4.52°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.00° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.8  +0.7  -0.2  -0.2  -4.5  +0.5  着いた
[STATE ] 目標を渡す  目標と実測の最大差 0.91°（関節 j4）
[001] 推論 1897ms  10ステップ先  Δ= +3.1 +12.4  +6.8  -0.9 -20.9  +1.1
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk001_via02: send_angles (single) [  +3.45,  +18.87,   +9.77,   -1.87,  -27.36,  -27.69]  speed=20 wait=0.0s  (pre max|Δ|=6.62°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.44° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.9  +3.1  +1.0  -0.6  -6.6  +0.7  着いた
[SEND] pi05_chunk001_via05: send_angles (single) [  +4.61,  +23.36,  +12.36,   -2.10,  -34.30,  -27.41]  speed=20 wait=0.0s  (pre max|Δ|=7.59°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.89° (tol 3.0°)
       [VIA   ] step  5  Δ= +1.1  +3.4  +1.7  +0.2  -7.6  +0.5  着いた
[SEND] pi05_chunk001_via08: send_angles (single) [  +5.54,  +27.31,  +14.98,   -2.14,  -40.53,  -27.31]  speed=20 wait=0.0s  (pre max|Δ|=6.70°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.90° (tol 3.0°)
       [VIA   ] step  8  Δ= +1.0  +3.1  +1.9  +0.6  -6.7  +0.3  着いた
[SEND] pi05_chunk001_via09: send_angles (single) [  +5.70,  +28.11,  +15.60,   -2.12,  -41.64,  -27.29]  speed=20 wait=0.0s  (pre max|Δ|=2.01°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.89° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.3  -0.1  -0.0  +0.7  -2.0  +0.2  着いた
[STATE ] 目標を渡す  目標と実測の最大差 0.98°（関節 j1）
[002] 推論 1160ms  10ステップ先  Δ= +2.9 +10.0  +4.8  +1.2 -14.4  +0.3
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk002_via02: send_angles (single) [  +6.48,  +31.49,  +16.74,   -1.67,  -45.72,  -27.23]  speed=20 wait=0.0s  (pre max|Δ|=4.15°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.67° (tol 3.0°)
       [VIA   ] step  2  Δ= +1.0  +2.4  +0.6  +1.1  -4.1  +0.3  着いた
[SEND] pi05_chunk002_via05: send_angles (single) [  +7.30,  +34.89,  +18.42,   -1.44,  -50.13,  -27.18]  speed=20 wait=0.0s  (pre max|Δ|=4.78°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.83° (tol 3.0°)
       [VIA   ] step  5  Δ= +0.9  +2.5  +1.0  +0.8  -4.8  +0.2  着いた
[SEND] pi05_chunk002_via08: send_angles (single) [  +8.19,  +38.46,  +20.67,   -1.49,  -55.31,  -27.16]  speed=20 wait=0.0s  (pre max|Δ|=5.74°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.70° (tol 3.0°)
       [VIA   ] step  8  Δ= +0.8  +2.6  +1.8  +0.4  -5.7  +0.3  着いた
[SEND] pi05_chunk002_via09: send_angles (single) [  +8.39,  +39.13,  +21.01,   -1.53,  -56.00,  -27.16]  speed=20 wait=0.0s  (pre max|Δ|=1.25°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.94° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.0  -0.3  -0.2  +0.4  -1.2  +0.3  着いた
[STATE ] 目標を渡す  目標と実測の最大差 0.94°（関節 j1）
[003] 推論 924ms  10ステップ先  Δ= +2.5  +3.4  +2.7  +0.3  -5.5  +0.3
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk003_via02: send_angles (single) [  +9.23,  +41.17,  +22.59,   -1.46,  -58.80,  -27.11]  speed=20 wait=0.0s  (pre max|Δ|=3.17°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.92° (tol 3.0°)
       [VIA   ] step  2  Δ= +1.0  +1.1  +1.4  +0.3  -3.2  +0.2  着いた
[SEND] pi05_chunk003_via05: send_angles (single) [ +10.02,  +43.11,  +23.92,   -1.45,  -60.50,  -27.06]  speed=20 wait=0.0s  (pre max|Δ|=1.35°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.01° (tol 3.0°)
       [VIA   ] step  5  Δ= +0.6  +1.0  +0.9  +0.2  -1.4  +0.3  着いた
[SEND] pi05_chunk003_via08: send_angles (single) [ +10.51,  +43.15,  +23.85,   -1.42,  -60.87,  -27.03]  speed=20 wait=0.0s  (pre max|Δ|=0.97°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.97° (tol 3.0°)
       [VIA   ] step  8  Δ= +0.3  -1.0  -0.5  +0.2  -0.6  +0.2  着いた
[SEND] pi05_chunk003_via09: send_angles (single) [ +10.72,  +43.47,  +23.90,   -1.43,  -61.17,  -27.02]  speed=20 wait=0.0s  (pre max|Δ|=0.88°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.91° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.5  -0.6  -0.4  +0.1  -0.9  +0.2  着いた
[STATE ] 目標を渡す  目標と実測の最大差 0.91°（関節 j1）
[004] 推論 739ms  10ステップ先  Δ= +3.1  +3.1  +2.1  +0.1  -3.8  +0.3
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk004_via02: send_angles (single) [ +11.44,  +44.39,  +25.26,   -1.41,  -62.40,  -27.01]  speed=20 wait=0.0s  (pre max|Δ|=2.11°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.96° (tol 3.0°)
       [VIA   ] step  2  Δ= +1.3  +0.0  +0.9  +0.1  -2.1  +0.2  着いた
       [VIA   ] step  5  Δ= +0.3  +0.1  -0.0  -0.1  +0.4  +0.2  送らず (0.5° 以下)
[SEND] pi05_chunk004_via08: send_angles (single) [ +13.03,  +47.20,  +26.46,   -1.44,  -63.99,  -27.00]  speed=20 wait=0.0s  (pre max|Δ|=1.85°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.96° (tol 3.0°)
       [VIA   ] step  8  Δ= +1.4  +1.8  +0.9  -0.1  -0.6  +0.2  着いた
[SEND] pi05_chunk004_via09: send_angles (single) [ +13.25,  +47.47,  +26.41,   -1.40,  -64.14,  -26.99]  speed=20 wait=0.0s  (pre max|Δ|=0.78°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=0.86° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.2  -0.8  -0.2  -0.2  -0.2  +0.3  着いた
[STATE ] 目標を渡す  目標と実測の最大差 0.86°（関節 j1）
[005] 推論 728ms  10ステップ先  Δ= -0.0 +13.9  -9.9  -0.4  +1.4  -0.0
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk005_via02: send_angles (single) [ +13.42,  +53.17,  +22.79,   -1.52,  -63.07,  -26.98]  speed=20 wait=0.0s  (pre max|Δ|=4.84°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.26° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.4  +4.8  -3.8  -0.3  +0.8  +0.1  着いた
[SEND] pi05_chunk005_via05: send_angles (single) [ +13.38,  +58.18,  +19.33,   -1.57,  -62.43,  -27.07]  speed=20 wait=0.0s  (pre max|Δ|=4.57°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.90° (tol 3.0°)
       [VIA   ] step  5  Δ= +0.4  +4.0  -4.6  -0.3  +1.9  +0.0  着いた
[SEND] pi05_chunk005_via08: send_angles (single) [ +13.06,  +61.49,  +17.17,   -1.65,  -62.36,  -27.16]  speed=20 wait=0.0s  (pre max|Δ|=3.13°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.97° (tol 3.0°)
       [VIA   ] step  8  Δ= +0.1  +2.4  -3.1  -0.4  +2.0  -0.1  着いた
[SEND] pi05_chunk005_via09: send_angles (single) [ +12.96,  +62.19,  +16.76,   -1.64,  -62.51,  -27.19]  speed=20 wait=0.0s  (pre max|Δ|=1.82°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.08° (tol 3.0°)
       [VIA   ] step  9  Δ= -0.0  -0.0  -1.1  -0.4  +1.8  +0.1  着いた
[STATE ] 目標を渡す  目標と実測の最大差 2.08°（関節 j4）
[006] 推論 795ms  2ステップ先  Δ= -0.2  -0.6  -1.1  -0.4  +2.1  +0.3  グリッパー→閉
       [VIA   ] 中継点 1 点: step 1
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk006_via01: send_angles (single) [ +12.81,  +62.25,  +16.70,   -1.60,  -62.53,  -27.22]  speed=20 wait=0.0s  (pre max|Δ|=2.06°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.06° (tol 3.0°)
       [VIA   ] step  1  Δ= -0.2  -0.6  -1.1  -0.4  +2.1  +0.3  着いた
  [Pi] GRIPPER: VALUE=25 speed=100 result= None
[STATE ] 目標を渡す  目標と実測の最大差 2.15°（関節 j4）
[007] 推論 673ms  10ステップ先  Δ= +0.6  -8.0  +5.2  -1.5  +0.6  +1.0
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk007_via02: send_angles (single) [ +13.18,  +61.12,  +17.32,   -1.76,  -62.86,  -27.24]  speed=20 wait=0.0s  (pre max|Δ|=1.82°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.73° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.3  -1.7  +0.2  -0.9  +1.8  +0.4  着いた
[SEND] pi05_chunk007_via05: send_angles (single) [ +13.24,  +58.53,  +19.97,   -2.21,  -63.42,  -26.84]  speed=20 wait=0.0s  (pre max|Δ|=3.96°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.32° (tol 3.0°)
       [VIA   ] step  5  Δ= +0.4  -4.0  +2.8  -1.2  +1.2  +0.8  着いた
[SEND] pi05_chunk007_via08: send_angles (single) [ +13.52,  +55.60,  +21.97,   -2.16,  -64.00,  -26.58]  speed=20 wait=0.0s  (pre max|Δ|=4.16°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.31° (tol 3.0°)
       [VIA   ] step  8  Δ= +0.7  -4.2  +2.6  -0.2  -1.4  +0.6  着いた
[SEND] pi05_chunk007_via09: send_angles (single) [ +13.52,  +54.83,  +22.46,   -2.10,  -64.10,  -26.56]  speed=20 wait=0.0s  (pre max|Δ|=2.47°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.41° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.6  -2.5  +0.9  +0.2  -2.4  +0.1  着いた
[STATE ] 目標を渡す  目標と実測の最大差 2.41°（関節 j4）
[008] 推論 1700ms  10ステップ先  Δ= +2.3  -1.2  -2.7  +1.0  -1.9  -1.4
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk008_via02: send_angles (single) [ +13.48,  +54.75,  +22.57,   -2.03,  -64.17,  -26.56]  speed=20 wait=0.0s  (pre max|Δ|=2.39°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.30° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.6  -1.9  +0.5  +0.3  -2.4  -0.5  着いた
[SEND] pi05_chunk008_via05: send_angles (single) [ +13.51,  +54.58,  +23.46,   -1.95,  -64.51,  -26.57]  speed=20 wait=0.0s  (pre max|Δ|=2.64°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.02° (tol 3.0°)
       [VIA   ] step  5  Δ= +0.6  -2.0  +1.4  +0.4  -2.6  -0.6  着いた
[SEND] pi05_chunk008_via08: send_angles (single) [ +14.36,  +55.14,  +20.48,   -1.59,  -63.86,  -27.26]  speed=20 wait=0.0s  (pre max|Δ|=2.81°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.81° (tol 3.0°)
       [VIA   ] step  8  Δ= +1.4  -1.5  -2.8  +0.8  -0.6  -1.2  着いた
[SEND] pi05_chunk008_via09: send_angles (single) [ +15.18,  +55.38,  +19.33,   -1.36,  -63.56,  -27.47]  speed=20 wait=0.0s  (pre max|Δ|=2.11°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.22° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.8  -1.2  -2.1  +1.0  -0.3  -1.2  着いた
[STATE ] 目標を渡す  目標と実測の最大差 1.22°（関節 j1）
[009] 推論 558ms  10ステップ先  Δ= +3.8  +0.3 -12.3  +2.4  +3.7  -3.6
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk009_via02: send_angles (single) [ +15.17,  +55.57,  +17.81,   -1.22,  -63.48,  -27.87]  speed=20 wait=0.0s  (pre max|Δ|=2.66°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.08° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.1  -1.0  -2.7  +0.6  -0.2  -1.4  着いた
[SEND] pi05_chunk009_via05: send_angles (single) [ +16.33,  +56.28,  +13.93,   -0.65,  -62.38,  -28.64]  speed=20 wait=0.0s  (pre max|Δ|=4.87°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.89° (tol 3.0°)
       [VIA   ] step  5  Δ= +1.2  -0.3  -4.9  +1.2  +0.9  -1.6  着いた
[SEND] pi05_chunk009_via08: send_angles (single) [ +18.28,  +56.93,   +9.14,   +0.27,  -60.32,  -29.59]  speed=20 wait=0.0s  (pre max|Δ|=5.71°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.98° (tol 3.0°)
       [VIA   ] step  8  Δ= +2.0  -0.4  -5.7  +1.5  +2.6  -1.8  着いた
[SEND] pi05_chunk009_via09: send_angles (single) [ +18.94,  +56.93,   +8.17,   +0.57,  -59.62,  -29.83]  speed=20 wait=0.0s  (pre max|Δ|=1.93°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.41° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.7  -1.0  -1.9  +0.7  +1.2  -1.0  着いた
[STATE ] 目標を渡す  目標と実測の最大差 1.41°（関節 j2）
[010] 推論 820ms  10ステップ先  Δ= +0.9  -2.2  -6.3  +0.8  +0.5  -0.8
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk010_via02: send_angles (single) [ +19.17,  +56.72,   +7.04,   +0.53,  -59.70,  -29.85]  speed=20 wait=0.0s  (pre max|Δ|=2.54°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.19° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.1  -1.2  -2.5  +0.6  +0.3  -0.6  着いた
[SEND] pi05_chunk010_via05: send_angles (single) [ +19.36,  +56.50,   +5.31,   +0.53,  -59.62,  -29.88]  speed=20 wait=0.0s  (pre max|Δ|=2.86°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.41° (tol 3.0°)
       [VIA   ] step  5  Δ= +0.3  -1.4  -2.9  +0.5  +0.3  -0.6  着いた
[SEND] pi05_chunk010_via08: send_angles (single) [ +19.67,  +55.94,   +3.70,   +0.57,  -59.45,  -29.91]  speed=20 wait=0.0s  (pre max|Δ|=2.80°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.97° (tol 3.0°)
       [VIA   ] step  8  Δ= +0.6  -2.0  -2.8  +0.6  +0.5  -0.6  着いた
[SEND] pi05_chunk010_via09: send_angles (single) [ +20.02,  +55.75,   +3.28,   +0.58,  -59.51,  -29.95]  speed=20 wait=0.0s  (pre max|Δ|=2.16°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.16° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.9  -2.2  -1.5  +0.5  +0.4  -0.5  着いた
[STATE ] 目標を渡す  目標と実測の最大差 2.16°（関節 j1）
[011] 推論 1564ms  10ステップ先  Δ=+12.2  -6.2  -2.8  +1.5  +2.9  -1.3
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk011_via02: send_angles (single) [ +21.27,  +54.44,   +3.13,   +0.89,  -59.19,  -30.03]  speed=20 wait=0.0s  (pre max|Δ|=3.47°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.24° (tol 3.0°)
       [VIA   ] step  2  Δ= +1.2  -3.5  -1.6  +0.5  +0.8  -0.5  着いた
[SEND] pi05_chunk011_via05: send_angles (single) [ +25.99,  +53.00,   +2.74,   +1.30,  -58.31,  -30.25]  speed=20 wait=0.0s  (pre max|Δ|=4.99°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.37° (tol 3.0°)
       [VIA   ] step  5  Δ= +5.0  -3.7  -2.0  +0.3  +0.7  -0.6  着いた
[SEND] pi05_chunk011_via08: send_angles (single) [ +31.10,  +51.95,   +2.12,   +1.77,  -57.27,  -30.63]  speed=20 wait=0.0s  (pre max|Δ|=5.18°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.63° (tol 3.0°)
       [VIA   ] step  8  Δ= +5.3  -3.4  -2.3  +0.1  +1.3  -0.7  着いた
[SEND] pi05_chunk011_via09: send_angles (single) [ +32.34,  +51.67,   +1.96,   +1.88,  -57.04,  -30.79]  speed=20 wait=0.0s  (pre max|Δ|=2.91°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.82° (tol 3.0°)
       [VIA   ] step  9  Δ= +1.1  -2.9  -1.6  -0.1  +0.5  -0.5  着いた
[STATE ] 目標を渡す  目標と実測の最大差 2.82°（関節 j1）
[012] 推論 732ms  10ステップ先  Δ= +8.5  +5.0  -4.1  +1.4  -2.4  -1.7
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk012_via02: send_angles (single) [ +37.62,  +52.03,   +0.05,   +2.25,  -55.74,  -31.42]  speed=20 wait=0.0s  (pre max|Δ|=5.11°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.46° (tol 3.0°)
       [VIA   ] step  2  Δ= +5.1  -2.5  -3.5  +0.2  +1.6  -0.9  着いた
[SEND] pi05_chunk012_via05: send_angles (single) [ +40.56,  +53.28,   -0.75,   +2.58,  -55.47,  -31.96]  speed=20 wait=0.0s  (pre max|Δ|=2.86°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.06° (tol 3.0°)
       [VIA   ] step  5  Δ= +3.0  -1.2  -2.2  -0.1  +0.6  -0.8  着いた
[SEND] pi05_chunk012_via08: send_angles (single) [ +41.07,  +58.14,   -0.61,   +3.20,  -58.63,  -32.12]  speed=20 wait=0.0s  (pre max|Δ|=3.65°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.82° (tol 3.0°)
       [VIA   ] step  8  Δ= +0.6  +3.7  -1.9  +0.4  -2.8  -0.3  着いた
[SEND] pi05_chunk012_via09: send_angles (single) [ +41.03,  +59.53,   -0.56,   +3.41,  -59.70,  -32.17]  speed=20 wait=0.0s  (pre max|Δ|=3.63°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.61° (tol 3.0°)
       [VIA   ] step  9  Δ= +0.4  +0.2  -1.4  +0.6  -3.6  -0.3  着いた
[STATE ] 目標を渡す  目標と実測の最大差 1.61°（関節 j4）
[013] 推論 631ms  5ステップ先  Δ= +0.2  +1.9  -1.7  +0.9  -5.3  -0.5  グリッパー→開
       [VIA   ] 中継点 2 点: step 2, 4
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk013_via02: send_angles (single) [ +40.83,  +62.61,   -0.75,   +3.77,  -62.87,  -32.41]  speed=20 wait=0.0s  (pre max|Δ|=4.78°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.54° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.2  +1.8  -1.5  +0.7  -4.8  -0.5  着いた
[SEND] pi05_chunk013_via04: send_angles (single) [ +40.77,  +62.74,   -0.79,   +3.89,  -63.35,  -32.43]  speed=20 wait=0.0s  (pre max|Δ|=1.58°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=1.58° (tol 3.0°)
       [VIA   ] step  4  Δ= +0.1  -0.9  -1.6  +0.6  -0.9  +0.5  着いた
  [Pi] GRIPPER: OPEN result= None
[STATE ] 目標を渡す  目標と実測の最大差 1.58°（関節 j2）
[014] 推論 653ms  10ステップ先  Δ= -1.5 -15.1  -1.4  -0.6 +13.3  +0.3
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > 
[SEND] pi05_chunk014_via02: send_angles (single) [ +40.80,  +58.33,   -0.88,   +3.84,  -58.35,  -32.42]  speed=20 wait=0.0s  (pre max|Δ|=5.30°, post-send timeout 8.0s)
  [WARN] daemon_get_angles failed: daemon error: get_angles returned empty/invalid after 12 retries
  [WARN] daemon_get_angles failed: daemon error: get_angles returned empty/invalid after 12 retries
  [WARN] daemon_get_angles failed: daemon error: get_angles returned empty/invalid after 12 retries
[SEND] arrival OK: max|Δ|=2.05° (tol 3.0°)
       [VIA   ] step  2  Δ= +0.2  -5.3  -1.7  -0.5  +4.5  +0.3  着いた
[SEND] pi05_chunk014_via05: send_angles (single) [ +40.67,  +54.08,   -0.87,   +3.85,  -53.77,  -32.44]  speed=20 wait=0.0s  (pre max|Δ|=6.30°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.87° (tol 3.0°)
       [VIA   ] step  5  Δ= +0.1  -6.3  -1.7  -0.5  +5.3  +0.3  着いた
[SEND] pi05_chunk014_via08: send_angles (single) [ +39.88,  +49.90,   -0.65,   +3.82,  -50.57,  -32.44]  speed=20 wait=0.0s  (pre max|Δ|=6.26°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.13° (tol 3.0°)
       [VIA   ] step  8  Δ= -0.7  -6.3  -1.4  -0.6  +3.7  +0.3  着いた
[SEND] pi05_chunk014_via09: send_angles (single) [ +39.05,  +48.54,   -0.61,   +3.74,  -49.51,  -32.43]  speed=20 wait=0.0s  (pre max|Δ|=3.49°, post-send timeout 8.0s)
[SEND] arrival OK: max|Δ|=2.34° (tol 3.0°)
       [VIA   ] step  9  Δ= -0.8  -3.5  -1.4  -0.6  +1.5  +0.3  着いた
[STATE ] 目標を渡す  目標と実測の最大差 2.34°（関節 j1）
[015] 推論 1551ms  10ステップ先  Δ=-17.6 -24.2  +0.1  -3.0 +22.1  +1.0
       [VIA   ] 中継点 4 点: step 2, 5, 8, 9
       Enter=実行 / s=送らず次へ / b=巻き戻し / p=ゲームパッドで補正 / c=キーで補正 / r=爪の締め直し / h=HOMEに戻して終了 / q=終了 > h
[SEND] pi05_home: send_angles (single) [  +0.00,   +0.00,   +0.00,   +0.00,   +0.00,  -30.00]  speed=20 wait=0.0s  (pre max|Δ|=50.88°, post-send timeout 9.6s)
[SEND] arrival OK: max|Δ|=1.49° (tol 2.5°)
[RECORD] 記録終了 コマ 752 (8.809 fps) 実測角 667 回 (7.81 Hz)  電流 676 行 (read_servo)  → /Volumes/KIOXIA/r2r2r-data/runs/pi05_policy/pi05_20261113_194108/recording
       結果: y=成功 / n=失敗 / Enter=記録しない > y
[GRIP  ] 閉じて 1 秒後の爪の電流 (中央値): 1 回目 765 (9 行)  (閉じる値 25)
[DONE  ] 記録: /Volumes/KIOXIA/r2r2r-data/runs/pi05_policy/pi05_20261113_194108
[CLIENT] run_policy_client.py が終わった (終了コード 0. モデル deep1 (PixelstoMotors/pi05-mecharm-deep-even10-lora-v1))
    (89 秒)
もう1回やりますか? y=やる / 他=終わる > 

=== かかった時間  モデル deep1 (PixelstoMotors/pi05-mecharm-deep-even10-lora-v1)
  1. Pod を作る                      2 秒
  2. Pod が立ち上がるまで待つ     17 秒
  3a. スクリプトを送る         96 秒
  3b. huggingface_hub を入れ, 鍵を渡す     10 秒
  3c. モデルを取る (hf download PixelstoMotors/pi05-mecharm-deep-even10-lora-v1)     13 秒
  3d. openpi を取る (215abfb)       14 秒
  3e. uv sync                          21 秒
  3f. addon・設定・assets (pi05_mecharm_deep_even10_lora)      2 秒
  4. サーバーの起動             44 秒
  5. Mac の 8000 番へのトンネル      2 秒
  6. デーモンの状態              2 秒
  7. HOME → 爪を開く → 位置合わせ (1 回目)     84 秒
  8. 実機推論 (1 回目)          154 秒
  7. HOME → 爪を開く → 位置合わせ (2 回目)     12 秒
  8. 実機推論 (2 回目)           81 秒
  7. HOME → 爪を開く → 位置合わせ (3 回目)      9 秒
  8. 実機推論 (3 回目)           91 秒
  7. HOME → 爪を開く → 位置合わせ (4 回目)     54 秒
  8. 実機推論 (4 回目)           79 秒
  7. HOME → 爪を開く → 位置合わせ (5 回目)      8 秒
  8. 実機推論 (5 回目)           89 秒

[LAB   ] Pod は残しています (id bjcya1w5ptkb3i). 片付けは ./lab_stop.sh --log Log34
[TUNNEL] 8000 番のトンネルを閉じました
```

#### 1台目の Pod を消した lab_stop.sh

```text
(base) shimazueiichi@shimadzueiichinoMacBook-Pro r2r2r-scripts % ./lab_stop.sh
[STOP  ] Log34 の Pod: id bjcya1w5ptkb3i  GPU=NVIDIA A40  作った時刻 2026-11-13 19:27:49
[LOG   ] serve.log を持ち帰った → /Volumes/KIOXIA/r2r2r-data/lab/Log34/serve.log (33 行)
[STOP  ] Terminate を送った (19:44:54)
[STOP  ] Pod (id bjcya1w5ptkb3i) が消えたことを API で確かめた
[COST  ] 借りていた時間 17 分 5 秒 (0.28 時間) × 1時間 0.59 ドル = 約 0.17 ドル (約 27 円. 1ドル=158円)
[TUNNEL] 8000 番のトンネルは残っていません
```


## 位置2 で教えた動きを12V・5A で再生した

### 推論ではなく、教えた動きの再生で位置2 を見た

位置2 は、前の回までに π0.5 が届かなかった場所です（[LOG484](https://pixelstomotors.com/record/pi05-even-demos-on-arm-misses-position-2)）。はじめは位置2 も π0.5 で試すつもりで、位置2 のお手本 `run_0001_20261019_191541` を位置合わせに重ねる指定で `lab_start.sh` を動かしました。途中で、推論ではなく教えた一連の動きを見ることにして、Ctrl-C で止めました。そこで位置2 の教えた記録 `drag_v2_20221013_230205.json` を再生しました。

測ったブロックの位置は (+215.4, +244.8)mm で、お手本の位置2（215.5, 242.2）とほぼ同じ所でした。再生はつかんで箱に入り、到達の誤差はどの区間も許容の中でした（いちばん大きかったのは PICK の2.99°。許容3.0°）。つかんでいる間の爪の電流は829 から782、爪の位置は1619 のままで、電圧は肩も爪も69〜75 でした。見ていても、お手本どおりの動きでした。

`recorder.py` の `Address already in use` は、前に起動した recorder がまだ動いていたためで、この回の録画はその recorder で取れています。

#### 途中で止めた lab_start.sh と、recorder の二重起動

```text
(base) shimazueiichi@shimadzueiichinoMacBook-Pro r2r2r-scripts % cd ~/r2r2r-scripts
./lab_start.sh --model deep1 --grip-value 25 --log Log34 --episode run_0001_20261019_191541
[LOG   ] ターミナルの出力を残します → /Volumes/KIOXIA/r2r2r-data/lab/Log34/lab_start_20261113_194558.txt
[RANGE ] 安全範囲 (学習データ ±10°) は /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_deep_even10_v1/raw_episodes から (--model deep1)
[FRAME ] 写り方の確かめの基準画像は /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_teach_v1_trim2/raw_episodes の最初のエピソードから (位置合わせと同じ trim2. 依頼 137)
[TILT  ] 上カメラの傾きのお手本 (各エピソードの 1 枚目の中央値) は /Volumes/KIOXIA/r2r2r-data/datasets/mecharm_redblock_box_deep_even10_v1/raw_episodes から (安全範囲と同じ. 差だけ画像を回して AI に渡す. 依頼 144)
[GRIP  ] 爪の閉じる値は 25 (--grip-value). 締め直し r はこの値−3 とこの値を交互に送る (依頼 152)
[LAB   ] 2026-11-13 19:45:58  GPU=NVIDIA A40  episode=run_0001_20261019_191541  log=/Volumes/KIOXIA/r2r2r-data/lab/Log34  
[MODEL ] --model deep1: π0.5 base から deep_even10_v1 で新しく学習した 2999 (依頼 133. decay_steps 5000)
         PixelstoMotors/pi05-mecharm-deep-even10-lora-v1 → /workspace/ckpt/deep_v1_2999  設定 pi05_mecharm_deep_even10_lora  assets local/mecharm_redblock_box_deep_even10_v1

=== 1. Pod を作る
[POD   ] 記録の Pod (id bjcya1w5ptkb3i) は API で見ると残っていない. 新しく作ります
         古い記録は /Volumes/KIOXIA/r2r2r-data/lab/Log34/pod/lab_pod_20261113_194559.json に残しました
[POD   ] 作った: id 9zgeyyvteskg4a  GPU=NVIDIA A40  1時間 0.59 ドル  (記録 /Volumes/KIOXIA/r2r2r-data/lab/Log34/pod/lab_pod.json)
    (3 秒)

=== 2. Pod が立ち上がるまで待つ
[POD   ] SSH の IP とポートを API から受け取った (<POD_IP>:<SSH_PORT>)
[POD   ] 入れた: c00b3dbcfbe9
NVIDIA A40, 46068 MiB
    (30 秒)

=== 3a. スクリプトを送る
^C
[STOP  ] 「3a. スクリプトを送る」で止まりました: Ctrl-C で止めました
[STOP  ] Pod は残っています (id 9zgeyyvteskg4a). 消すなら ./lab_stop.sh --log Log34

=== かかった時間  モデル deep1 (PixelstoMotors/pi05-mecharm-deep-even10-lora-v1)
  1. Pod を作る                      3 秒
  2. Pod が立ち上がるまで待つ     30 秒
(base) shimazueiichi@shimadzueiichinoMacBook-Pro r2r2r-scripts % cd ~/r2r2r-scripts && python3 dynamic_tracking_limits/place/place_modules/recorder.py --top --no-side
Traceback (most recent call last):
  File "/Users/shimazueiichi/r2r2r-scripts/dynamic_tracking_limits/place/place_modules/recorder.py", line 742, in <module>
    sys.exit(main())
             ^^^^^^
  File "/Users/shimazueiichi/r2r2r-scripts/dynamic_tracking_limits/place/place_modules/recorder.py", line 540, in main
    sock.bind((UDP_HOST, UDP_PORT))
OSError: [Errno 48] Address already in use
```

#### 位置2 の measure・ドライラン・再生のターミナル

```text
(base) shimazueiichi@shimadzueiichinoMacBook-Pro r2r2r-scripts % cd ~/r2r2r-scripts
python3 dynamic_tracking_limits/drag_teaching/record_teach_demo.py measure
python3 dynamic_tracking_limits/drag_teaching/record_teach_demo.py run --teach drag_v2_20221013_230205.json --power 5A
python3 dynamic_tracking_limits/drag_teaching/record_teach_demo.py run --teach drag_v2_20221013_230205.json --power 5A --execute
[RTD   ] 到達許容差は本線 run_pick_place.py の stage 値を使います（区間ごと。一律 8.0° は 2026-10-19 にやめた）:
[RTD   ]   HOME                       2.5°  ← rpp.TOL_HOME（stage1_to_home / HOME 復帰）
[RTD   ]   APPROACH_PICK              2.0°  ← rpp.TOL_APPROACH（approach 系）
[RTD   ]   PICK                       3.0°  ← rpp.TOL_PICK_PLACE（stage4_pick）
[RTD   ]   APPROACH_PICK (lift)       3.0°  ← rpp.TOL_LIFT_BACK（lift の残差 2.19° を吸収）
[RTD   ]   APPROACH_PLACE             3.0°  ← rpp.TOL_APPROACH_PLACE（stage7）
[RTD   ]   PLACE                      3.0°  ← rpp.TOL_PICK_PLACE（stage8_place）
[RTD   ]   APPROACH_PLACE (retreat)   3.0°  ← rpp.TOL_LIFT_BACK（stage10_lift_back）
[RTD   ] 到達を待つ最大時間 = clamp(2.0 + max|Δ|/20*3.0, 8.0, 30.0) 秒（本線と同じ wr._compute_arrival_timeout）
[RTD   ] measure: 上カメラで検出します（repeat=5 interval=0.3s）
[CAM] 接続中カメラ一覧:
  index=0  name=FaceTime HDカメラ
  index=1  name=Iriun Camera
  index=2  name=‎iPhone14 Pro MAXのカメラ
[CAM] 上カメラ(iPhone)  index=2
[CAM] 横カメラ(Iriun)   index=1
[DETECT] resolved top index: 2
[Mac] マット四隅検出中... (10フレーム)
[Mac] ✓ マット四隅検出: 10/10 フレーム成功
[Mac] ✓ 動的homography計算完了
[Mac] ✓ マット範囲: X=[251, 1740] Y=[0, 1006]
[06f] TEMPLATES_DIR overridden to: /Users/shimazueiichi/r2r2r-scripts/dynamic_tracking_limits/place/templates
[06f] ROTATION_ANGLES_DEG overridden to: [0, 15, 30, 45, 60, 75]
[06f] SCALES overridden to: [0.85, 1.0, 1.15]
[テンプレ] loading white box templates from: /Users/shimazueiichi/r2r2r-scripts/dynamic_tracking_limits/place/templates
[テンプレ] glob '/Users/shimazueiichi/r2r2r-scripts/dynamic_tracking_limits/place/templates/*.png' → 8 file(s)
[テンプレ]   - white_box_20260520_163829_004.png
[テンプレ]   - white_box_20260520_163838_005.png
[テンプレ]   - white_box_20260520_163846_006.png
[テンプレ]   - white_box_20260520_163905_009.png
[テンプレ]   - white_box_20260520_163912_010.png
[テンプレ]   - white_box_20260520_163918_011.png
[テンプレ]   - white_box_20260520_163923_012.png
[テンプレ]   - white_box_20260520_163929_013.png
[テンプレ] 計 8 枚 (day165=8, auto=0)
[06f] WARN: 輪郭中心とテンプレ中心の距離が閾値超 |Δ|=99.7px > 60px → 輪郭捨てて fallback
[06f] DETECT: center=(1519,520) source=template_fallback score=0.642 angle=0° scale=0.85 size=(167x156) template=white_box_20260520_163838_005.png (eval 5.71s)
[DETECT][1/5] box Unity=(-0.217,+0.183) score=0.6419143080711365
  赤ブロック pixel=(567, 722) → Unity=(0.2154, 0.2448)
[DETECT][1/5] block Unity=(+0.215,+0.245) score=null
[06f] WARN: 輪郭中心とテンプレ中心の距離が閾値超 |Δ|=100.7px > 60px → 輪郭捨てて fallback
[06f] DETECT: center=(1519,519) source=template_fallback score=0.642 angle=0° scale=0.85 size=(167x156) template=white_box_20260520_163838_005.png (eval 5.69s)
[DETECT][2/5] box Unity=(-0.217,+0.182) score=0.642386257648468
  赤ブロック pixel=(567, 723) → Unity=(0.2154, 0.2453)
[DETECT][2/5] block Unity=(+0.215,+0.245) score=null
[06f] WARN: 輪郭中心とテンプレ中心の距離が閾値超 |Δ|=100.7px > 60px → 輪郭捨てて fallback
[06f] DETECT: center=(1519,519) source=template_fallback score=0.642 angle=0° scale=0.85 size=(167x156) template=white_box_20260520_163838_005.png (eval 5.96s)
[DETECT][3/5] box Unity=(-0.217,+0.182) score=0.6423200964927673
  赤ブロック pixel=(567, 722) → Unity=(0.2154, 0.2448)
[DETECT][3/5] block Unity=(+0.215,+0.245) score=null
[06f] WARN: 輪郭中心とテンプレ中心の距離が閾値超 |Δ|=100.7px > 60px → 輪郭捨てて fallback
[06f] DETECT: center=(1519,519) source=template_fallback score=0.642 angle=0° scale=0.85 size=(167x156) template=white_box_20260520_163838_005.png (eval 5.77s)
[DETECT][4/5] box Unity=(-0.217,+0.182) score=0.6422635912895203
  赤ブロック pixel=(567, 722) → Unity=(0.2154, 0.2448)
[DETECT][4/5] block Unity=(+0.215,+0.245) score=null
[06f] WARN: 輪郭中心とテンプレ中心の距離が閾値超 |Δ|=100.7px > 60px → 輪郭捨てて fallback
[06f] DETECT: center=(1519,519) source=template_fallback score=0.642 angle=0° scale=0.85 size=(167x156) template=white_box_20260520_163838_005.png (eval 5.66s)
[DETECT][5/5] box Unity=(-0.217,+0.182) score=0.6420366764068604
  赤ブロック pixel=(567, 723) → Unity=(0.2154, 0.2453)
[DETECT][5/5] block Unity=(+0.215,+0.245) score=null
[RTD   ] measure: block = (+215.4, +244.8) mm
[RTD   ] measure: box   = (-216.9, +182.3) mm  score=0.6422635912895203
[RTD   ] 確認画像: /Volumes/KIOXIA/r2r2r-data/mecharm_calibration/teach_poses_20261113/measure_20261113_194805.jpg
[RTD   ] homography のもとになった四隅と、測り直した四隅の差: 最大 0.57px（上限 15.0px・やり直し 1 回）
[RTD   ] ブロックのばらつき: 1.4px = 0.60mm（5 枚・上限 4.0mm）
[RTD   ] 元の検出と測り直しの差: 0.91mm（上限 3.0mm）
[RTD   ] 保存しました: /Volumes/KIOXIA/r2r2r-data/mecharm_calibration/teach_poses_20261113/measure_20261113_194805.json
[RTD   ] 次は Pi で教示 → daemon 起動 → recorder.py --top --no-side 常駐 → run --teach <file> --execute
[RTD   ] 到達許容差は本線 run_pick_place.py の stage 値を使います（区間ごと。一律 8.0° は 2026-10-19 にやめた）:
[RTD   ]   HOME                       2.5°  ← rpp.TOL_HOME（stage1_to_home / HOME 復帰）
[RTD   ]   APPROACH_PICK              2.0°  ← rpp.TOL_APPROACH（approach 系）
[RTD   ]   PICK                       3.0°  ← rpp.TOL_PICK_PLACE（stage4_pick）
[RTD   ]   APPROACH_PICK (lift)       3.0°  ← rpp.TOL_LIFT_BACK（lift の残差 2.19° を吸収）
[RTD   ]   APPROACH_PLACE             3.0°  ← rpp.TOL_APPROACH_PLACE（stage7）
[RTD   ]   PLACE                      3.0°  ← rpp.TOL_PICK_PLACE（stage8_place）
[RTD   ]   APPROACH_PLACE (retreat)   3.0°  ← rpp.TOL_LIFT_BACK（stage10_lift_back）
[RTD   ] 到達を待つ最大時間 = clamp(2.0 + max|Δ|/20*3.0, 8.0, 30.0) 秒（本線と同じ wr._compute_arrival_timeout）
[RTD   ] 爪の閉じる値: 20（既定）
[RTD   ] 電源: 5A（--power。試行 JSON の power に残し、爪の位置と電圧も読みます）
[RTD   ] モード: ドライラン（アームに何も送りません）
[RTD   ] Pi から教えた記録を取得します: ubuntu@192.168.2.1:r2r2r-scripts/dynamic_tracking_limits/drag_teaching/drag_v2_20221013_230205.json
[RTD   ] 取得しました → /var/folders/5w/2q2mc64n6yv63gfh31h34w6h0000gn/T/record_teach_demo_r45_hhwc/drag_v2_20221013_230205.json
[RTD   ] 入力ファイル: drag_v2_20221013_230205.json
[RTD   ] 抽出ウェイポイント:
  APPROACH_PICK  <- phase APPROACH_PICK argmax_idx=197 (start=197 end=282, gap=20.48°)
                    angles = [ -35.94,  +66.79,  -15.73,   +6.41,  -58.27,  -33.83]
  PICK           <- gripper close mark idx=309（PICK phase 範囲内）
                    angles = [ -35.15,  +87.27,  -34.80,   +6.41,  -43.59,  -35.24]
  APPROACH_PLACE <- phase APPROACH_PLACE argmax_idx=388 (start=388 end=424, gap=21.97°)
                    angles = [ +44.82,  +47.19,   -9.05,  +16.34,  -47.46,  -41.22]
  PLACE          <- gripper open mark idx=452（PLACE phase 範囲内）
                    angles = [ +45.00,  +69.16,   -9.22,  +11.07,  -66.88,  -38.40]
[RTD   ] JOINT_LIMITS 一括検証 OK（全 endpoint + HOME）
[RTD   ] 姿勢検査 OK（全 148 姿勢が 有限値 + JOINT_LIMITS + J4_SAFE [-90.0, +60.0] 内）
[RTD   ] j4 の余裕は最小 23.12°（しきい値 3.0° 以上）
==============================================================================
[RTD   ] 実行プラン（daemon 経由・区間ごとに 1 回送信 → 到達待ち）
==============================================================================
  [STEP  1] MOVE → HOME (single send + settle)  speed=20
            current = 未取得（ドライラン・daemon に接続していない）
            to HOME = [  +0.00,   +0.00,   +0.00,   +0.00,   +0.00,  -30.00]
  [STEP  2] GRIPPER OPEN  daemon_set_gripper(0, 50, wait=0) ×1 回（daemon 事前 2.0s + 事後 2.0s + 待ち 2.0s）= 計 6.0s
            開いたかは確認しません（gv を使わず・開始前の y/n も無し。判定は終了後の y/n と動画）
  [STEP  3] MOVE → APPROACH_PICK  segment HOME → APPROACH_PICK  tol=2.0°  [rpp.TOL_APPROACH（approach 系）]
            from    = [  +0.00,   +0.00,   +0.00,   +0.00,   +0.00,  -30.00]
            to      = [ -35.94,  +66.79,  -15.73,   +6.41,  -58.27,  -33.83]
            max |Δ| = 66.79°  1 回送信 speed=20  (~ 3.3s @ 20°/s 目安・到達待ち 最大 12.0s)
  [STEP  4] MOVE → PICK  segment APPROACH_PICK → PICK  [critical]  tol=3.0°  [rpp.TOL_PICK_PLACE（stage4_pick）]
            from    = [ -35.94,  +66.79,  -15.73,   +6.41,  -58.27,  -33.83]
            to      = [ -35.15,  +87.27,  -34.80,   +6.41,  -43.59,  -35.24]
            max |Δ| = 20.48°  1 回送信 speed=20  (~ 1.0s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP  5] GRIPPER CLOSE  daemon_set_gripper_value(20, 50) + sleep(2.0s)
  [STEP  6] MOVE → APPROACH_PICK (lift)  segment PICK → APPROACH_PICK (lift)  tol=3.0°  [rpp.TOL_LIFT_BACK（lift の残差 2.19° を吸収）]
            from    = [ -35.15,  +87.27,  -34.80,   +6.41,  -43.59,  -35.24]
            to      = [ -35.94,  +66.79,  -15.73,   +6.41,  -58.27,  -33.83]
            max |Δ| = 20.48°  1 回送信 speed=20  (~ 1.0s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP  7] MOVE → APPROACH_PLACE  segment APPROACH_PICK → APPROACH_PLACE  tol=3.0°  [rpp.TOL_APPROACH_PLACE（stage7）]
            from    = [ -35.94,  +66.79,  -15.73,   +6.41,  -58.27,  -33.83]
            to      = [ +44.82,  +47.19,   -9.05,  +16.34,  -47.46,  -41.22]
            max |Δ| = 80.76°  1 回送信 speed=20  (~ 4.0s @ 20°/s 目安・到達待ち 最大 14.1s)
  [STEP  8] MOVE → PLACE  segment APPROACH_PLACE → PLACE  [critical]  tol=3.0°  [rpp.TOL_PICK_PLACE（stage8_place）]
            from    = [ +44.82,  +47.19,   -9.05,  +16.34,  -47.46,  -41.22]
            to      = [ +45.00,  +69.16,   -9.22,  +11.07,  -66.88,  -38.40]
            max |Δ| = 21.97°  1 回送信 speed=20  (~ 1.1s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP  9] GRIPPER OPEN  daemon_set_gripper(0, 50, wait=0) ×1 回（daemon 事前 2.0s + 事後 2.0s + 待ち 2.0s）= 計 6.0s
            開いたかは確認しません（gv を使わず・開始前の y/n も無し。判定は終了後の y/n と動画）
  [STEP 10] MOVE → APPROACH_PLACE (retreat)  segment PLACE → APPROACH_PLACE (retreat)  tol=3.0°  [rpp.TOL_LIFT_BACK（stage10_lift_back）]
            from    = [ +45.00,  +69.16,   -9.22,  +11.07,  -66.88,  -38.40]
            to      = [ +44.82,  +47.19,   -9.05,  +16.34,  -47.46,  -41.22]
            max |Δ| = 21.97°  1 回送信 speed=20  (~ 1.1s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP 11] MOVE → HOME  segment APPROACH_PLACE → HOME  tol=2.5°  [rpp.TOL_HOME（stage1_to_home / HOME 復帰）]
            from    = [ +44.82,  +47.19,   -9.05,  +16.34,  -47.46,  -41.22]
            to      = [  +0.00,   +0.00,   +0.00,   +0.00,   +0.00,  -30.00]
            max |Δ| = 47.46°  1 回送信 speed=20  (~ 2.4s @ 20°/s 目安・到達待ち 最大 9.1s)
==============================================================================
[RTD   ] 送信 = 8 回（STEP 1 + move 7 区間）, 想定所要時間 ≈ 31.0s（最悪 73.0s）
[RTD   ]   内訳: 先頭 settle 3.0s + 移動 14.0s（max|Δ| 合計 279.9° @ 20°/s 目安） + gripper 14.0s
[RTD   ]   到達確認: 許容は区間ごと（本線 run_pick_place.py の stage 値）/ 最大は clamp(2.0 + max|Δ|/20*3.0, 8.0, 30.0) 秒
[RTD   ]   届かないとき: 送信前から 1.0° 未満しか動いていなければ 5.0s 待って**同じ目標へ 1 回だけ**再送（本線と同じ）。それでも届かなければ ABORT（HOME へ自動で戻らない）
[RTD   ]   実測 j4: [-90.0, +60.0] の外は WARN / [-98.0, +68.0] の外は ABORT
==============================================================================
[RTD   ] measure: /Volumes/KIOXIA/r2r2r-data/mecharm_calibration/teach_poses_20261113/measure_20261113_194805.json
[RTD   ]   measured_at = 2026-11-13T19:48:07.521700  block = (+215.4, +244.8) mm  box = (-216.9, +182.3) mm
[RTD   ] 再生直前: 上カメラでマット四隅とブロック画素を確認します
[RTD   ] 再生直前: block = (+215.4, +245.3) mm（measure の homography で換算）
[RTD   ] 確認画像: /Volumes/KIOXIA/r2r2r-data/mecharm_calibration/teach_poses_20261113/prerun_20261113_194809.jpg
[RTD   ] ブロック位置の照合 OK（画素の差 1.0px <= 許容 11.0px = 5.0mm / mm 換算の差 0.45mm）
[RTD   ] マット四隅のずれ 最大 0.4px（上限 15.0px・やり直し 1 回）
[RTD   ] ドライランなので、ここで終了します（アームには何も送っていません）
[RTD   ] Pi 版と比べる点: 抽出ウェイポイント 4 姿勢と各区間の max|Δ| は同じ。送り方は単発（Pi 版は 0.1s 補間ストリーミング）なので n_steps / ticks は比較対象外。送信 8 回 / 想定所要 ≈ 31.0s
[RTD   ] 到達許容差は本線 run_pick_place.py の stage 値を使います（区間ごと。一律 8.0° は 2026-10-19 にやめた）:
[RTD   ]   HOME                       2.5°  ← rpp.TOL_HOME（stage1_to_home / HOME 復帰）
[RTD   ]   APPROACH_PICK              2.0°  ← rpp.TOL_APPROACH（approach 系）
[RTD   ]   PICK                       3.0°  ← rpp.TOL_PICK_PLACE（stage4_pick）
[RTD   ]   APPROACH_PICK (lift)       3.0°  ← rpp.TOL_LIFT_BACK（lift の残差 2.19° を吸収）
[RTD   ]   APPROACH_PLACE             3.0°  ← rpp.TOL_APPROACH_PLACE（stage7）
[RTD   ]   PLACE                      3.0°  ← rpp.TOL_PICK_PLACE（stage8_place）
[RTD   ]   APPROACH_PLACE (retreat)   3.0°  ← rpp.TOL_LIFT_BACK（stage10_lift_back）
[RTD   ] 到達を待つ最大時間 = clamp(2.0 + max|Δ|/20*3.0, 8.0, 30.0) 秒（本線と同じ wr._compute_arrival_timeout）
[RTD   ] 爪の閉じる値: 20（既定）
[RTD   ] 電源: 5A（--power。試行 JSON の power に残し、爪の位置と電圧も読みます）
[RTD   ] モード: EXECUTE（実機）  記録: ON
[RTD   ] Pi から教えた記録を取得します: ubuntu@192.168.2.1:r2r2r-scripts/dynamic_tracking_limits/drag_teaching/drag_v2_20221013_230205.json
[RTD   ] 取得しました → /var/folders/5w/2q2mc64n6yv63gfh31h34w6h0000gn/T/record_teach_demo_a4stpjw4/drag_v2_20221013_230205.json
[RTD   ] 入力ファイル: drag_v2_20221013_230205.json
[RTD   ] 抽出ウェイポイント:
  APPROACH_PICK  <- phase APPROACH_PICK argmax_idx=197 (start=197 end=282, gap=20.48°)
                    angles = [ -35.94,  +66.79,  -15.73,   +6.41,  -58.27,  -33.83]
  PICK           <- gripper close mark idx=309（PICK phase 範囲内）
                    angles = [ -35.15,  +87.27,  -34.80,   +6.41,  -43.59,  -35.24]
  APPROACH_PLACE <- phase APPROACH_PLACE argmax_idx=388 (start=388 end=424, gap=21.97°)
                    angles = [ +44.82,  +47.19,   -9.05,  +16.34,  -47.46,  -41.22]
  PLACE          <- gripper open mark idx=452（PLACE phase 範囲内）
                    angles = [ +45.00,  +69.16,   -9.22,  +11.07,  -66.88,  -38.40]
[RTD   ] JOINT_LIMITS 一括検証 OK（全 endpoint + HOME）
[RTD   ] 姿勢検査 OK（全 148 姿勢が 有限値 + JOINT_LIMITS + J4_SAFE [-90.0, +60.0] 内）
[RTD   ] j4 の余裕は最小 23.12°（しきい値 3.0° 以上）
[RTD   ] 現在姿勢を daemon から取得します
[RTD   ] 現在姿勢 = [  +0.26,   +1.49,   +0.79,   +0.35,   -0.35,  -30.23]
==============================================================================
[RTD   ] 実行プラン（daemon 経由・区間ごとに 1 回送信 → 到達待ち）
==============================================================================
  [STEP  1] MOVE → HOME (single send + settle)  speed=20
            current = [  +0.26,   +1.49,   +0.79,   +0.35,   -0.35,  -30.23]
            to HOME = [  +0.00,   +0.00,   +0.00,   +0.00,   +0.00,  -30.00]
            max |Δ| = 1.49°  (settle 3.0s)
  [STEP  2] GRIPPER OPEN  daemon_set_gripper(0, 50, wait=0) ×1 回（daemon 事前 2.0s + 事後 2.0s + 待ち 2.0s）= 計 6.0s
            開いたかは確認しません（gv を使わず・開始前の y/n も無し。判定は終了後の y/n と動画）
  [STEP  3] MOVE → APPROACH_PICK  segment HOME → APPROACH_PICK  tol=2.0°  [rpp.TOL_APPROACH（approach 系）]
            from    = [  +0.00,   +0.00,   +0.00,   +0.00,   +0.00,  -30.00]
            to      = [ -35.94,  +66.79,  -15.73,   +6.41,  -58.27,  -33.83]
            max |Δ| = 66.79°  1 回送信 speed=20  (~ 3.3s @ 20°/s 目安・到達待ち 最大 12.0s)
  [STEP  4] MOVE → PICK  segment APPROACH_PICK → PICK  [critical]  tol=3.0°  [rpp.TOL_PICK_PLACE（stage4_pick）]
            from    = [ -35.94,  +66.79,  -15.73,   +6.41,  -58.27,  -33.83]
            to      = [ -35.15,  +87.27,  -34.80,   +6.41,  -43.59,  -35.24]
            max |Δ| = 20.48°  1 回送信 speed=20  (~ 1.0s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP  5] GRIPPER CLOSE  daemon_set_gripper_value(20, 50) + sleep(2.0s)
  [STEP  6] MOVE → APPROACH_PICK (lift)  segment PICK → APPROACH_PICK (lift)  tol=3.0°  [rpp.TOL_LIFT_BACK（lift の残差 2.19° を吸収）]
            from    = [ -35.15,  +87.27,  -34.80,   +6.41,  -43.59,  -35.24]
            to      = [ -35.94,  +66.79,  -15.73,   +6.41,  -58.27,  -33.83]
            max |Δ| = 20.48°  1 回送信 speed=20  (~ 1.0s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP  7] MOVE → APPROACH_PLACE  segment APPROACH_PICK → APPROACH_PLACE  tol=3.0°  [rpp.TOL_APPROACH_PLACE（stage7）]
            from    = [ -35.94,  +66.79,  -15.73,   +6.41,  -58.27,  -33.83]
            to      = [ +44.82,  +47.19,   -9.05,  +16.34,  -47.46,  -41.22]
            max |Δ| = 80.76°  1 回送信 speed=20  (~ 4.0s @ 20°/s 目安・到達待ち 最大 14.1s)
  [STEP  8] MOVE → PLACE  segment APPROACH_PLACE → PLACE  [critical]  tol=3.0°  [rpp.TOL_PICK_PLACE（stage8_place）]
            from    = [ +44.82,  +47.19,   -9.05,  +16.34,  -47.46,  -41.22]
            to      = [ +45.00,  +69.16,   -9.22,  +11.07,  -66.88,  -38.40]
            max |Δ| = 21.97°  1 回送信 speed=20  (~ 1.1s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP  9] GRIPPER OPEN  daemon_set_gripper(0, 50, wait=0) ×1 回（daemon 事前 2.0s + 事後 2.0s + 待ち 2.0s）= 計 6.0s
            開いたかは確認しません（gv を使わず・開始前の y/n も無し。判定は終了後の y/n と動画）
  [STEP 10] MOVE → APPROACH_PLACE (retreat)  segment PLACE → APPROACH_PLACE (retreat)  tol=3.0°  [rpp.TOL_LIFT_BACK（stage10_lift_back）]
            from    = [ +45.00,  +69.16,   -9.22,  +11.07,  -66.88,  -38.40]
            to      = [ +44.82,  +47.19,   -9.05,  +16.34,  -47.46,  -41.22]
            max |Δ| = 21.97°  1 回送信 speed=20  (~ 1.1s @ 20°/s 目安・到達待ち 最大 8.0s)
  [STEP 11] MOVE → HOME  segment APPROACH_PLACE → HOME  tol=2.5°  [rpp.TOL_HOME（stage1_to_home / HOME 復帰）]
            from    = [ +44.82,  +47.19,   -9.05,  +16.34,  -47.46,  -41.22]
            to      = [  +0.00,   +0.00,   +0.00,   +0.00,   +0.00,  -30.00]
            max |Δ| = 47.46°  1 回送信 speed=20  (~ 2.4s @ 20°/s 目安・到達待ち 最大 9.1s)
==============================================================================
[RTD   ] 送信 = 8 回（STEP 1 + move 7 区間）, 想定所要時間 ≈ 31.0s（最悪 73.0s）
[RTD   ]   内訳: 先頭 settle 3.0s + 移動 14.0s（max|Δ| 合計 279.9° @ 20°/s 目安） + gripper 14.0s
[RTD   ]   到達確認: 許容は区間ごと（本線 run_pick_place.py の stage 値）/ 最大は clamp(2.0 + max|Δ|/20*3.0, 8.0, 30.0) 秒
[RTD   ]   届かないとき: 送信前から 1.0° 未満しか動いていなければ 5.0s 待って**同じ目標へ 1 回だけ**再送（本線と同じ）。それでも届かなければ ABORT（HOME へ自動で戻らない）
[RTD   ]   実測 j4: [-90.0, +60.0] の外は WARN / [-98.0, +68.0] の外は ABORT
==============================================================================
[RTD   ] measure: /Volumes/KIOXIA/r2r2r-data/mecharm_calibration/teach_poses_20261113/measure_20261113_194805.json
[RTD   ]   measured_at = 2026-11-13T19:48:07.521700  block = (+215.4, +244.8) mm  box = (-216.9, +182.3) mm
[RTD   ] 再生直前: 上カメラでマット四隅とブロック画素を確認します
[RTD   ] 再生直前: block = (+215.4, +245.3) mm（measure の homography で換算）
[RTD   ] 確認画像: /Volumes/KIOXIA/r2r2r-data/mecharm_calibration/teach_poses_20261113/prerun_20261113_194814.jpg
[RTD   ] ブロック位置の照合 OK（画素の差 1.0px <= 許容 11.0px = 5.0mm / mm 換算の差 0.45mm）
[RTD   ] マット四隅のずれ 最大 0.7px（上限 15.0px・やり直し 1 回）
[RTD   ] [SAFETY] 再生中はグリッパーが実機で開閉します。爪に指を挟まないこと。
[RTD   ] [SAFETY] 止めるときはアームの電源を切ること。Ctrl-C は新しい送信をやめるだけで、進行中の移動は止まりません。
[RTD   ] [SAFETY] 開いたかの自動確認はしません（gv は使わない）。STEP 2 で open を送ってから PICK へ降ります。
[RTD   ] 周囲に手・物が無いか確認してください。OK なら Enter で開始

[RTD   ] 試行フォルダ: /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_194820
[RTD   ] 教えた記録のコピー: /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_194820/teach/drag_v2_20221013_230205.json
[RTD   ] recorder に trial_start を送りました。1.0s 待ってから動き出します（mp4 writer が開くまで）
[RTD   ] 爪と肩の電流を 1 秒 10 回で記録します（爪を動かしている間は読みません）→ /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_194820/recording/currents.csv
[RTD   ] 電源 5A: 爪の位置（番地 7:56/57）と電圧（2:62・7:62）も読みます（生の値・未確認の番地）→ /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_194820/recording/power_regs.csv
  [Pi] fresh_mode=1
[RTD   ] daemon_set_fresh_mode(1)（最新コマンド優先・本線 run_pick_place.py L3976 と同じ。647 試行の実績はこの状態）
[STEP  1] MOVE → HOME  daemon_send_angles(HOME, 20)
[STEP  1] 到達待ち 許容 2.5°[TOL_HOME（stage1_to_home / HOME 復帰）] / 最大 8.0s
[RTD   ] 先頭移動: 送信直前の実測で max|Δ| = 1.49° / 到達待ち 最大 8.0s
[STEP  1] 3.0s 待ちます（settle）
[RTD   ] arrival OK (current → HOME, max|Δ|=1.49° <= tol 2.5°)
[STEP  2] GRIPPER OPEN → daemon_set_gripper(0, 50, wait=0)
[RTD   ] 静止確認 OK（step2_open: 連続 3 回・連続差 最大 0.00° <= 1.0°）
  [Pi] GRIPPER: OPEN result= None
[RTD   ] gripper open (1/1 回目) の daemon 往復 = 2.003s
[STEP  2] open 後 2.0s 待ちます（本線の daemon wait=2 相当・読み取りなし）
[STEP  2] gripper dwell 2.0s（読み取りなし）
[STEP  3] MOVE → APPROACH_PICK  segment HOME → APPROACH_PICK  (1 回送信 speed=20 → 到達待ち 許容 2.0°[TOL_APPROACH（approach 系）] / 最大 12.0s)
[RTD   ] 送信 OK（daemon 往復 1.029s）
[RTD   ] arrival OK (HOME → APPROACH_PICK, max|Δ|=1.67° <= tol 2.0°)
[STEP  4] MOVE → PICK  segment APPROACH_PICK → PICK  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_PICK_PLACE（stage4_pick）] / 最大 8.0s)  [critical]
[RTD   ] 送信 OK（daemon 往復 1.031s）
[RTD   ] arrival OK (APPROACH_PICK → PICK, max|Δ|=2.99° <= tol 3.0°)
[STEP  5] GRIPPER CLOSE → daemon_set_gripper_value(20, 50)
[RTD   ] 静止確認 OK（step5_close: 連続 3 回・連続差 最大 0.18° <= 1.0°）
  [Pi] GRIPPER: VALUE=20 speed=50 result= None
[RTD   ] gripper close (1/1 回目) の daemon 往復 = 0.013s
[STEP  5] gripper dwell 2.0s（読み取りなし）
[STEP  6] MOVE → APPROACH_PICK (lift)  segment PICK → APPROACH_PICK (lift)  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_LIFT_BACK（lift の残差 2.19° を吸収）] / 最大 8.0s)
[RTD   ] 送信 OK（daemon 往復 1.039s）
[RTD   ] arrival OK (PICK → APPROACH_PICK (lift), max|Δ|=2.73° <= tol 3.0°)
[STEP  7] MOVE → APPROACH_PLACE  segment APPROACH_PICK → APPROACH_PLACE  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_APPROACH_PLACE（stage7）] / 最大 14.1s)
[RTD   ] 送信 OK（daemon 往復 1.050s）
[RTD   ] arrival OK (APPROACH_PICK → APPROACH_PLACE, max|Δ|=2.55° <= tol 3.0°)
[STEP  8] MOVE → PLACE  segment APPROACH_PLACE → PLACE  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_PICK_PLACE（stage8_place）] / 最大 8.0s)  [critical]
[RTD   ] 送信 OK（daemon 往復 1.041s）
[RTD   ] arrival OK (APPROACH_PLACE → PLACE, max|Δ|=2.20° <= tol 3.0°)
[STEP  9] GRIPPER OPEN → daemon_set_gripper(0, 50, wait=0)
[RTD   ] 静止確認 OK（step9_open: 連続 3 回・連続差 最大 0.09° <= 1.0°）
  [Pi] GRIPPER: OPEN result= None
[RTD   ] gripper open (1/1 回目) の daemon 往復 = 2.013s
[STEP  9] open 後 2.0s 待ちます（本線の daemon wait=2 相当・読み取りなし）
[STEP  9] gripper dwell 2.0s（読み取りなし）
[STEP 10] MOVE → APPROACH_PLACE (retreat)  segment PLACE → APPROACH_PLACE (retreat)  (1 回送信 speed=20 → 到達待ち 許容 3.0°[TOL_LIFT_BACK（stage10_lift_back）] / 最大 8.0s)
[RTD   ] 送信 OK（daemon 往復 1.032s）
[RTD   ] arrival OK (PLACE → APPROACH_PLACE (retreat), max|Δ|=2.54° <= tol 3.0°)
[STEP 11] MOVE → HOME  segment APPROACH_PLACE → HOME  (1 回送信 speed=20 → 到達待ち 許容 2.5°[TOL_HOME（stage1_to_home / HOME 復帰）] / 最大 9.1s)
[RTD   ] 送信 OK（daemon 往復 1.049s）
[RTD   ] arrival OK (APPROACH_PLACE → HOME, max|Δ|=2.28° <= tol 2.5°)
  [Pi] fresh_mode=0
[RTD   ] daemon_set_fresh_mode(0) 完了
[RTD   ] 実測角の読み取り: ok 63/63 回, 実効 1.69 Hz（目標 3.0 Hz 以上）
[RTD   ] [WARN] 実測角の読み取りが目標 3.0 Hz を下回りました（1.69 Hz）。学習データの state 密度が 19 本より薄くなります
[RTD   ] send_angles の daemon 往復 (7 回): 平均 1.038s / p50 1.039s / 最大 1.050s（timeout 6.0s）
[RTD   ] [WARN] 送信 1 回に 1.050s かかった回があります。daemon は送信後に角度を読み直すので、動き始めで読めないと伸びます（単発送信なので試行全体への影響は小さい）
[RTD   ] 区間の所要（送信→到達確認まで）(8 区間): 平均 2.55s / 最大 4.44s
[RECORD] 電流の記録終了 59 行 (1.58 行/秒. 本体が眠っている間だけ読む. 爪の間 14.051 秒は読まない. 見込み超え 0 回. read_servo)  → /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_194820/recording/currents.csv
[RECORD] 爪の位置と電圧 47 行 (読めた数 {'7:56': 24, '7:57': 24, '2:62': 23, '7:62': 23})  → /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_194820/recording/power_regs.csv
==============================================================================
[RTD   ] 再生 完了
==============================================================================
[RTD   ] つかめたか (y/n) > y
[RTD   ] 箱に入ったか (y/n) > y
[RTD   ] 試行 JSON: /Volumes/KIOXIA/r2r2r-data/runs/run_pick_place/run_0001_20261113_194820/run_0001_20261113_194820.json
[LEDGER] append OK: /Volumes/KIOXIA/r2r2r-data/runs/pick_place_ledger_v3.csv (pick=yes place=yes recording_status=ok)
[RTD   ] 次に進むには: python3 /Users/shimazueiichi/r2r2r-scripts/pi05/build_demo_episodes.py --run run_0001_20261113_194820 --dataset mecharm_redblock_box_teach_v1
```

### Ctrl-C で止めたあとに残った Pod を消した

`lab_start.sh` を Ctrl-C で止めたとき、作ったばかりの Pod（9zgeyyvteskg4a）は消えずに残ります。`lab_stop.sh --log Log34` で消しました。推論サーバーを起動する前に止めたので `serve.log` がまだなく、持ち帰りに3回失敗してから、そのまま消しています。借りていたのは4分49秒、約7円でした。1台目の Pod（17分5秒、約27円）と合わせて、この回の GPU は約34円です。

```text
(base) shimazueiichi@shimadzueiichinoMacBook-Pro r2r2r-scripts % ./lab_stop.sh --log Log34
[STOP  ] Log34 の Pod: id 9zgeyyvteskg4a  GPU=NVIDIA A40  作った時刻 2026-11-13 19:46:01
scp: /workspace/logs/serve.log: No such file or directory
[LOG   ] (1/3) serve.log の scp に失敗
[LOG   ] 10 秒待ってやり直します
scp: /workspace/logs/serve.log: No such file or directory
[LOG   ] (2/3) serve.log の scp に失敗
[LOG   ] 10 秒待ってやり直します
scp: /workspace/logs/serve.log: No such file or directory
[LOG   ] (3/3) serve.log の scp に失敗
[WARN  ] serve.log を持ち帰れなかった (3 回試した). Pod はこのまま Terminate まで消します
[STOP  ] Terminate を送った (19:50:50)
[STOP  ] Pod (id 9zgeyyvteskg4a) が消えたことを API で確かめた
[COST  ] 借りていた時間 4 分 49 秒 (0.08 時間) × 1時間 0.59 ドル = 約 0.05 ドル (約 7 円. 1ドル=158円)
[TUNNEL] 8000 番のトンネルは残っていません
(base) shimazueiichi@shimadzueiichinoMacBook-Pro r2r2r-scripts %
```


## 次に見ること：上カメラの傾きと、持ち上げの速さ

推論の5回とも、上カメラの傾きが -6.5° 前後あり、ソフトで +5.9° 回してから π0.5 に渡していました。手順書の目安の3° を大きく超えています。measure でマットの四隅が大きくずれて見えたのも、これと関係があるかもしれません。次に実機を動かす前に、iPhone の付け方を見直します。

12V・5A でも、ゲームパッドで一気に持ち上げた1回だけ爪の電流が落ちました。π0.5 のお手本を撮り足すときは、持ち上げで爪の電流が落ちないかを、今回足した爪の位置の列と合わせて見ていきます。
