SESSION TIMELINE / 6 HOURS
4 walls, 21 loops, 1 grip
視覚サーボでブロックを掴むまでに外した壁は 4 つ。最後の壁を抜けたのは複雑なアルゴリズム改修ではなく、閾値を 1 行書き換えた判断だった。
6h
DURATION
21
LOOPS TO GRIP
4
WALLS BROKEN
▼ TAP TO INSPECT EACH WALL
WALL 01
15:55
アームが指令通り動かない
WALL 02
21:55
Y 補正が呼ばれない
WALL 03
22:00
勝手に HOME 復帰する
WALL 04
22:10
Z 閾値 8mm に届かない
↑
SELECT A WALL TO INSPECT
WALL 01 — 15:55 / アームが指令通り動かない pymycobot
SYMPTOM
daemon が send_angles を投げても result=0 が返るだけで、実機の measured 値が毎ループ同じ。アームは目視で動かない。
[DAEMON] sync_send_angles 後の現在角度: target = [-3.35, 91.00, -15.62, ...] measured= [-2.02, 90.79, -16.69, ...] result = 0 ← timeout で抜けた
DIAGNOSIS
sync_send_angles(timeout=3) がブロッキングで完了待ちしている。pymycobot のキュー仕様で、新指令が前指令の完了を待ってしまい、視覚サーボのような連続更新に追従できない。LOG204 引き継ぎ書 P3 で「set_fresh_mode 代替」が候補に挙がっていた。
BEFORE
sync_send_angles
(timeout=3)
+ デフォルトキュー
→
AFTER
send_angles
(non-blocking)
+ set_fresh_mode(1)
WALL 02 — 21:55 / Y 補正が呼ばれない 軸選択ロジック
SYMPTOM
X が 6mm 以内、Z が 8〜10mm。Y_pix は +200 で全く縮まない。軸選択ロジックの y_allowed=False で、Y 補正が永遠に呼ばれない。
[LOOP 10] diff_x=+3.75mm diff_z=+7.38mm diff_y=+225pix [MODE] single-axis: Z only y_allowed=False ← Z>6 なので Y がスキップ
DIAGNOSIS
Y 補正開始条件が「X≤4 AND Z≤6」になっていて、Z が縮みきらないと Y が走らない。しかし Z は j2 が動作限界に達して縮まない。X が GRIP_READY 領域に入っているなら Z を待たず Y に進ませる判断に変更。
BEFORE
y_allowed =
(X≤4 AND Z≤6)
→
AFTER
y_allowed =
(X≤6)
WALL 03 — 22:00 / 勝手に HOME 復帰する セーフティ過保護
SYMPTOM
no_motion 3 回連続検知で自動 ABORT、HOME 復帰。pymycobot のキュー特性で「動かないと思ったら次の瞬間に動き出す」ことがあるのに、その前に止めてしまう。
[WARN] max_step=0.00° (3/3) [ABORT] 指令を出しても実測角度が変化しません [CLEANUP] HOME 復帰... ← ここで打ち切られる
DIAGNOSIS
自動 ABORT を完全に廃止。GRIP_READY 成立まで止まらない。停止判断はユーザーが Ctrl+C で行う。「固まったら自分で止める」という判断を素直にコードに落とした。
BEFORE
no_motion 3 回
→ 自動 ABORT
→ HOME 復帰
→
AFTER
no_motion 3 回
→ WARN だけ
→ ループ継続
WALL 04 — 22:10 / Z 閾値 8mm に届かない 閾値判断
SYMPTOM
X≤6 OK、Y=0pix で完璧、Z=+10.34mm で詰まる。j2 を回しても max_step=0.00° で動かない。サイドカメラ画像では TIP と BLOCK がほぼ完全一致、爪は物理的に掴める位置にいる。
[LOOP 19] diff_x=+2.5mm diff_z=+10.34mm diff_y=+0pix side cam: TIP(667,861) BLOCK(660,861) ほぼ一致 phys: 爪はブロックを挟める範囲にいる
DECISION
システムの限界精度(±10mm)と把持に必要な精度(±10mm)が同じオーダー。閾値の方が物理現実より厳しすぎた。閾値を実力に合わせる。GRIP_READY_Z_MM を 8.0 → 12.0 に変更。たった 1 行。
BEFORE
GRIP_READY_Z_MM
= 8.0
(永遠に届かない)
→
AFTER
GRIP_READY_Z_MM
= 12.0
(物理に整合)
22:13
CLOSE result = None / GRIPPED
精度より体験の成立を優先する。
精度は後から金で解決できる。
+2.78
DIFF X (mm)
+11.34
DIFF Z (mm)
+6
DIFF Y (pix)
21 LOOPS · 4 WALLS · 1 LINE OF CODE · 1 GRIP