(base) shimazueiichi@shimadzueiichinoMacBook-Pro r2r2r-scripts % cd ~/r2r2r-scripts && python3 dynamic_tracking_limits/drag_teaching/record_teach_demo.py run --teach drag_v2_20221013_144348.json [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 ] モード: ドライラン(アームに何も送りません) [RTD ] Pi から教えた記録を取得します: ubuntu@192.168.2.1:r2r2r-scripts/dynamic_tracking_limits/drag_teaching/drag_v2_20221013_144348.json [RTD ] 取得しました → /var/folders/5w/2q2mc64n6yv63gfh31h34w6h0000gn/T/record_teach_demo_dw9gijsg/drag_v2_20221013_144348.json [RTD ] 入力ファイル: drag_v2_20221013_144348.json [RTD ] 抽出ウェイポイント: APPROACH_PICK <- phase APPROACH_PICK argmax_idx=240 (start=240 end=290, gap=14.76°) angles = [ -36.12, +65.83, +16.78, +4.39, -86.74, -29.61] PICK <- gripper close mark idx=355(PICK phase 範囲内) angles = [ -35.94, +80.59, +7.11, +3.16, -88.68, -30.32] APPROACH_PLACE <- phase APPROACH_PLACE argmax_idx=470 (start=470 end=512, gap=27.86°) angles = [ +43.41, +31.81, +18.54, +6.24, -56.95, -29.88] PLACE <- gripper open mark idx=552(PLACE phase 範囲内) angles = [ +44.20, +59.67, +6.15, +10.54, -74.88, -30.84] [RTD ] JOINT_LIMITS 一括検証 OK(全 endpoint + HOME) [RTD ] 姿勢検査 OK(全 162 姿勢が 有限値 + JOINT_LIMITS + J4_SAFE [-90.0, +60.0] 内) [RTD ] [WARN] j4 の余裕が最小 1.32°(< 3.0°)です: APPROACH_PICK → PICK 経路上の点 8 j4=-88.68。実測が安全範囲の外に振れる可能性があります(実測では止めません。試行 JSON に WARN として残します) ============================================================================== [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 = [ -36.12, +65.83, +16.78, +4.39, -86.74, -29.61] max |Δ| = 86.74° 1 回送信 speed=20 (~ 4.3s @ 20°/s 目安・到達待ち 最大 15.0s) [STEP 4] MOVE → PICK segment APPROACH_PICK → PICK [critical] tol=3.0° [rpp.TOL_PICK_PLACE(stage4_pick)] from = [ -36.12, +65.83, +16.78, +4.39, -86.74, -29.61] to = [ -35.94, +80.59, +7.11, +3.16, -88.68, -30.32] max |Δ| = 14.76° 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 = [ -35.94, +80.59, +7.11, +3.16, -88.68, -30.32] to = [ -36.12, +65.83, +16.78, +4.39, -86.74, -29.61] max |Δ| = 14.76° 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 = [ -36.12, +65.83, +16.78, +4.39, -86.74, -29.61] to = [ +43.41, +31.81, +18.54, +6.24, -56.95, -29.88] max |Δ| = 79.53° 1 回送信 speed=20 (~ 4.0s @ 20°/s 目安・到達待ち 最大 13.9s) [STEP 8] MOVE → PLACE segment APPROACH_PLACE → PLACE [critical] tol=3.0° [rpp.TOL_PICK_PLACE(stage8_place)] from = [ +43.41, +31.81, +18.54, +6.24, -56.95, -29.88] to = [ +44.20, +59.67, +6.15, +10.54, -74.88, -30.84] max |Δ| = 27.86° 1 回送信 speed=20 (~ 1.4s @ 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 = [ +44.20, +59.67, +6.15, +10.54, -74.88, -30.84] to = [ +43.41, +31.81, +18.54, +6.24, -56.95, -29.88] max |Δ| = 27.86° 1 回送信 speed=20 (~ 1.4s @ 20°/s 目安・到達待ち 最大 8.0s) [STEP 11] MOVE → HOME segment APPROACH_PLACE → HOME tol=2.5° [rpp.TOL_HOME(stage1_to_home / HOME 復帰)] from = [ +43.41, +31.81, +18.54, +6.24, -56.95, -29.88] to = [ +0.00, +0.00, +0.00, +0.00, +0.00, -30.00] max |Δ| = 56.95° 1 回送信 speed=20 (~ 2.8s @ 20°/s 目安・到達待ち 最大 10.5s) ============================================================================== [RTD ] 送信 = 8 回(STEP 1 + move 7 区間), 想定所要時間 ≈ 32.4s(最悪 73.0s) [RTD ] 内訳: 先頭 settle 3.0s + 移動 15.4s(max|Δ| 合計 308.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_20261109/measure_20261109_092616.json [RTD ] measured_at = 2026-11-09T09:26:18.245166 block = (+200.0, +191.4) mm box = (-219.8, +188.8) mm [RTD ] 再生直前: 上カメラでマット四隅とブロック画素を確認します [RTD ] [WARN] 再生直前: 四隅が最大 62.6px ずれています(1 回目 / 上限 15.0px)。測り直します [RTD ] [WARN] 再生直前: 四隅が最大 62.0px ずれています(2 回目 / 上限 15.0px)。測り直します [RTD ] [WARN] 再生直前: 四隅が最大 62.5px ずれています(3 回目 / 上限 15.0px)。やり直しの上限に達しました [RTD ] 再生直前: block = (+199.2, +201.6) mm(measure の homography で換算) [RTD ] 確認画像: /Volumes/KIOXIA/r2r2r-data/mecharm_calibration/teach_poses_20261109/prerun_20261109_092939.jpg [RTD ] 弾いた理由と各回の記録を残しました: /Volumes/KIOXIA/r2r2r-data/mecharm_calibration/teach_poses_20261109/prerun_20261109_092939_rejected.json [RTD ] [WARN] マット四隅が measure 時から最大 62.5px ずれています(上限 15.0px・最大 3 回やり直しても収まらず)。カメラが動いた可能性があるので止めます。measure を取り直してください(各隅のずれ: 9.0, 1.0, 62.5, 42.1)(**止めません**・WARN のみ) [RTD ] ドライランなので、ここで終了します(アームには何も送っていません) [RTD ] Pi 版と比べる点: 抽出ウェイポイント 4 姿勢と各区間の max|Δ| は同じ。送り方は単発(Pi 版は 0.1s 補間ストリーミング)なので n_steps / ticks は比較対象外。送信 8 回 / 想定所要 ≈ 32.4s