視覚サーボ
キャリブ係数
Trial結果
API限界

Visual Servo Loop — X方向追従の設計

1 trial の制御フロー(クリックで詳細)
Step 1
赤ブロック検出 → FK lookup
カメラからHSV赤検出→homography変換でUnity座標取得。512,087点のFKテーブルを最近傍探索して初期APPROACH_PICK角度を算出。姿勢制約(j2,j3,j4,j5のToleranceフィルタ)後の候補数は172点。
Step 2
APPROACH_PICK 姿勢へ移動
lookup結果のj0 + APPROACH_PICK_BASEのj1〜j5で姿勢を構成。SSH経由でPiへ送信。SPEED=20、動作完了まで4秒待機。
Step 3 — Loop
TIP検出 → X差分計算 → j0更新
① 青シール3点検出(HSV)→ 爪先端2点の中点をTIPとする ② ブロックX座標とTIP X座標の差分を計算 ③ 差分 ÷ MM_PER_DEG_J0_X(-6.63)で角度更新量を算出 ④ ±2度にクランプ ⑤ j0が±30度を超えたらABORT ⑥ 収束判定:差分 ≤ 10mm なら終了 ⑦ 最大20ループで強制終了
Step 4
PICK動作 → HOME復帰
収束後(or ABORT後)の最終j0 + lookupのj1〜j5でPICK姿勢へ。グリッパーを閉じる。HOME へ戻る。評価のため最終TIP位置を測定して目標との差分をログに記録。
CSV保存
trial / converged / loop_count / final_diff → CSV
← 次の trial へ(n / q で終了)
設計上の制約(確定)
Z方向追従:APPROACH_PICK姿勢(j1≈88度、アームほぼ垂直)ではどのジョイントも Z方向に効かない。j0は-6.63mm/deg でX方向に強く効く一方、Z方向は+0.61mm/deg と無視できるレベル。

j0 範囲制限(±30度絶対値):初回lookup で j0 が-45度になる位置へのブロック配置では、視覚サーボ開始前に既に範囲外となる設計ミス。相対範囲(初期j0から±10度)にすべきだった。

Calibration Coefficients — 3回実行の実測値

MM_PER_DEG_J0_X
-6.63
mm / deg — j0 → X方向(主軸)
MM_PER_DEG_J0_Z
+0.61
mm / deg — j0 → Z方向(無視可)
MM_PER_DEG_J12_X
+1.91
mm / deg — j1+j2逆方向 → X
MM_PER_DEG_J12_Z
-0.29
mm / deg — j1+j2逆方向 → Z(極小)
3回実行の再現性
係数 1回目 2回目 3回目
J0_X -6.49 -6.30 -6.63
J0_Z +0.55 +0.52 +0.61
J12_X +1.81 +2.02 +1.91
J12_Z -0.25 -0.36 -0.29
Z方向制御が不可能な構造的理由
APPROACH_PICK姿勢(j1=87.74度)はアームがほぼ垂直に立っている。j0の回転は水平面内の円弧運動であり、マット平面上ではX方向への変位に収束する。j1+j2を逆方向に動かしても、リンク長と姿勢の幾何学的関係から、やはりX方向に大きく効く。Z方向を動かすには姿勢そのものを変える必要がある。

Trial Results — 6回実行ログ

mechArm 270 Pi — 動的制御API調査

公式が認めている限界(エレファントロボティクス顔追従プロジェクト)
「ラズパイの計算能力(400MHz)が不足するため、認識アルゴリズムを簡略化した。複雑なハンドアイキャリブレーションを諦め、相対位置移動とサンプリング移動メカニズムで1制御サイクル内に処理した。」

公式デモでの同期率:70〜80%。これが現在のハードウェアの現実的な上限。