逆向運動學(Inverse Kinematics)

定義

逆向運動學(Inverse Kinematics, IK)是給定末端執行器想要到達的位置與姿態,反推每個關節應該轉到多少角度。它是機械手臂「伸手去拿東西」時最核心的計算。

數學表示

求解 θ\boldsymbol{\theta} 使得 FK(θ)=TtargetFK(\boldsymbol{\theta}) = T_{target}。常見的數值迭代(阻尼最小平方法):

Δθ=JT(JJT+λ2I)−1e\Delta\boldsymbol{\theta} = J^{T}\left(JJ^{T} + \lambda^{2}I\right)^{-1}\mathbf{e}

其中 JJ 是雅可比矩陣、e\mathbf{e} 是目前末端與目標的誤差、λ\lambda 是阻尼係數,用來避免接近奇異點時解爆掉。

為什麼比正向運動學難

  • 多解:同一個目標可能有多組關節角。
  • 無解:目標超出工作空間、或姿態做不到。
  • 奇異點:在運動學奇異點附近,微小的末端移動需要極大的關節速度。

使用情境

  • 抓取與放置:視覺算出物體位姿後,用 IK 求出手臂要擺的關節角。
  • MoveIt 2 運動規劃:規劃前先用 IK 確認目標姿態可達。
  • 人形機器人與動畫:腳掌踩在指定位置、手伸向目標。

延伸閱讀

常見問題

faq_01.log
為什麼六軸手臂的逆運動學會有多組解?
同一個末端位姿,手臂可以用「手肘朝上或朝下」「手腕翻轉或不翻」等不同組態達成。典型的六軸工業手臂最多可有 8 組解析解,實務上會挑最接近目前關節角、或不超出關節限制的那一組。
faq_02.log
解析解和數值解該怎麼選?
解析解速度快、能列出所有解,但只適用於特定幾何結構(例如腕部三軸交於一點);數值解(雅可比迭代、最佳化)適用任意結構,但需要初始值、可能收斂到局部解。MoveIt 預設的 KDL 是數值解,IKFast 則是自動產生解析解。

相關文章

相關術語