ロボットアームの順運動学・逆運動学(FK / IK)
多関節ロボットアームの「関節角 ↔ エンドエフェクタ位置・姿勢」を相互変換する運動学の理論。SO101(6自由度)を題材に、同次変換・Rodrigues の公式・ヤコビアン・減衰最小二乗法を整理する。応用としての軌跡データ拡張は so101-trajectory-augmentation を参照。
順運動学(Forward Kinematics, FK)
関節角からエンドエフェクタの位置・姿勢を求める。各ジョイントの同次変換行列を順次積算する:
各ジョイント変換は URDF から構成される 3 要素の積:
T_translation: ジョイント原点の並進 (xyz)R_fixed: 固定回転。URDF の RPY(固定軸 XYZ 規約) からR_joint: 関節角による回転
単位行列から始めて T = T @ T_joint を連鎖し、T[:3,3] が位置、T[:3,:3] が姿勢。
任意軸回転(Rodrigues の公式)
回転軸 、角度 に対し、歪対称行列 を用いて:
逆運動学(Inverse Kinematics, IK)
目標エンドエフェクタ位置から必要な関節角を逆算する。一般に非線形最適化問題で、閉形式解を持たないことが多い。
減衰最小二乗法(Damped Least Squares / Levenberg-Marquardt)
目標 と現在 の誤差 を、関節更新 のノルム正則化込みで最小化:
- : ヤコビアン(位置のみなら 3×n)。解析解でなく有限差分で数値計算することも多い。
- 減衰係数 : 大きいほど安定だが収束が遅い/小さいほど速いが特異点近傍で不安定。実装例では 。正則化項 が逆行列の悪条件化(特異点)を回避する。
この減衰最小二乗の構造は newtons-method-cpp の準ニュートン法(ヘッセ近似を解く線形系)と同様、「ヤコビアン/ヘッセ系の正則化付き線形求解を反復する」という最適化の共通形に属する。
正規化値とラジアン
データセットの関節角は正規化されている(SO101: アーム関節 1–5 が [-100,100]、グリッパー 6 が [0,100])ため、線形写像でラジアンと相互変換する。
グリッパーオフセット補正
FK/IK が扱うのは gripperframe の位置で、実把持点はそこからオフセット(例 [0.040,-0.058,0.030] m)がある。FK 後に姿勢回転込みで actual = fk_pos + R @ GRIPPER_OFFSET と補正する。
SO101 の構成
6 自由度・全 revolute(Z 軸): shoulder_pan / shoulder_lift / elbow_flex / wrist_flex / wrist_roll / gripper。キネマティックチェーンは base → shoulder → upper_arm → lower_arm → wrist → gripper → moving_jaw → gripperframe。
関連
- so101-trajectory-augmentation(FK/IK を使った軌跡データ拡張)
- newtons-method-cpp(非線形最適化・正則化付き線形求解)
- so101-lerobot-setup / vla
- _moc-ml-robotics(ml-robotics クラスタの atomic ノート群)