CASE STUDY / DYNAMIC TRACKING

動きの質が変わった瞬間 — 二重の壁を越えた追従収束

Log#5/#6 → Log#7 / DESCEND 把持失敗の根因が、Z符号反転と Pi 常駐デーモンの二段で初めて解けた

01
Z符号反転
仮定 vs 実測
02
Pi常駐デーモン
SSH vs TCP
03
追従収束
壁が割れた瞬間
CASE 01 / SIGN INVERSION
「j1+, j2+, j4-」は Z+ ではなく Z- 方向だった
ケースsigndZmm/deg
A: j1単独+1-5.80mm-2.902
A: j1単独-1+7.70mm-3.849
B: j2単独+1-3.27mm-1.634
B: j2単独-1+6.03mm-3.016
C: j4単独+1-2.00mm-1.000
C: j4単独-1+2.59mm-1.297
D: 連動 (j1+,j2+,j4-)+1-12.64mm-6.320
D: 連動 (j1-,j2-,j4+)-1+10.82mm-5.412

設計時の仮定「j1+, j2+, j4- でリーチが伸びて Z+ 方向に動く」は実機計測と完全に逆だった。 4日間「diff_z が縮まらない」を SSH オーバーヘッドのせいにしていた背後で、本当の原因は方向そのものだった。 仮説で詰める前に、測れる手段を持つこと。

CASE 02 / DAEMON ARCHITECTURE
SSH 1コマンドごとに python3 + import + serial open が走っていた
BEFORE / SSH 経由
Pi python3 = 4 → 13+
1コマンドごとに python3 起動・pymycobot import・MyCobot init・/dev/ttyAMA0 open。 500-1000ms/cmd の Pi 側オーバーヘッドで滞留が積み上がる。
AFTER / TCP 永続デーモン
Pi python3 = 5 安定
mecharm_daemon.py が MyCobot を1個保持。Mac から TCP 5555 番に JSON コマンドを永続接続で送る。 1コマンド数msで応答。
Mac
→
TCP 5555
→
daemon
→
MyCobot
→
arm

Z符号修正だけでは収束しなかった。デーモン化だけでも収束しなかった。 両方を入れて初めて、ループが本来のレートで動き始めた。

CASE 03 / CONVERGENCE
追従ループが Log#4 以降初めて収束した
LOG#5 / LOG#6(前セッション群)
収束せず
1ループ 6-8s → 0.13s(軽量化後)/Connect failed をスロットルで抑止/diff_z=-53.6mm のまま動かず/把持移行できない
LOG#7(本セッション)
t=1.7s / 2D=2.9mm
LOOP_TIME 0.094-0.207s /Connect failed 構造的にゼロ/[STABLE+CONVERGED] 発火/動きの質が変わった
観察項目Log#5 / Log#6Log#7
追従収束起きないt=1.7s で 2D=2.9mm
LOOP_TIME6-8s → 0.13s0.094-0.207 s
Connect failed頻発/スロットル抑止構造的にゼロ
Pi python3 数4 → 13+5 で安定
動きの質探索が暴走スッと寄って止まる

残課題: DESCEND 前後の get_angles が空リストを返し IndexError で停止。pymycobot の既知挙動。 daemon 側にリトライ追加と空リスト耐性を持たせて次セッションに引き継ぐ。