Open Source Robotics

精選高品質的開源機器人專案、工具與軟體,推動機器人社群向前發展。

Inverse Kinematics

  • 又稱: IK
  • 類別: Foundations & spatial maths › Kinematics
  • 標籤: kinematics, control

以數學計算達到末端執行器目標位置所需的關節角度。

定義

逆向運動學(IK)計算將末端執行器放到期望位置與姿態所需的關節角度。它是順向運動學的反問題。是機器手臂控制與運動規劃不可或缺的基礎。

為何重要

逆向運動學回答的是每個實際機器人任務一開始的問題:已知我想讓工具在哪裡,每個關節應該保持什麼角度?正是它讓我們可以說「移到物體上方的這一點」,而不必親手指定六個關節值。它也比正向問題更困難,這深刻地影響了機器人軟體:解可能有好幾個、不存在,或在某些配置附近不穩定,所以逆向運動學求解器不只要找出一個答案,同樣重要的是在答案之間做出合理的選擇。

主要應用

  • 笛卡兒運動指令:把工具移到某個姿態,而不是移到某組關節角度
  • 遠端操作,把人手或主導手臂的姿態對應到跟隨手臂上
  • 視覺伺服,把攝影機看到的目標轉換成關節運動
  • 軌跡跟隨,沿著焊道或噴漆路徑等路徑反覆求解逆向運動學
  • 抓取執行,取得規劃好的抓取姿態,並找出能到達它的手臂配置
  • 工作範圍與可達性分析,測試哪些姿態究竟有有效的解

實際應用

在 6 自由度手臂上,MoveIt 通常會呼叫 KDL 之類的數值求解器,或 IKFast 這類自動生成的解析求解器,而實務上的差異會立刻顯現。解析求解器很快,而且會回傳所有的解,讓規劃器能挑出最接近目前姿態的解,手臂就不會突然翻轉手肘;數值求解器較通用,但只回傳一個答案,而且這個答案取決於起始猜測值。新手最常遇到的意外,是一個在幾何上可到達的姿態卻沒有解,因為關節限制或自我碰撞把它排除了。

常見誤解

  • 逆向運動學一定會回傳答案:看似可到達的姿態,常因關節限制、自我碰撞或奇異點而被排除
  • 只有一個正確的解:手肘朝上與手肘朝下的配置都能到達同一點,選得不好會讓手臂大幅甩動
  • 逆向運動學會處理路徑:它只求解單一姿態;安全地到達那裡是運動規劃的工作
  • 更強大的求解器能消除困難:在奇異點附近,數學本身就會變得病態,任何求解器都逃不掉

誰需要了解

  • 任何以笛卡兒座標指揮手臂的人
  • 設定 MoveIt 或同類規劃堆疊的開發者
  • 排查手臂以令人擔憂的路線到達姿態之問題的工程師
  • 把主導端姿態對應到跟隨手臂的遠端操作開發者
  • 初次接觸正向與逆向問題差異的學生

相關技術

  • 正向運動學
  • 雅可比矩陣
  • Denavit-Hartenberg 參數
  • 奇異點
  • 冗餘解析
  • 運動規劃
  • 數值最佳化
  • Robot Operating System(ROS)MoveIt

相關術語

  • DOF
  • End Effector
  • Motion Planning

相關專案

  • Drake: MIT robotics toolbox for model-based dynamics, optimization, and control system design
  • MoveIt 2: Motion planning framework for ROS 2 robot arms, with kinematics and collision checking
  • PyRoki: Modular Python toolkit for kinematic optimization across CPU, GPU, and TPU via JAX
  • MuJoCo MPC: DeepMind's interactive real-time model predictive control framework for MuJoCo
  • PyPose: PyTorch library for differentiable robotics with deep learning and Lie group optimization
  • DART: C++ physics engine for articulated rigid body dynamics and robotics simulation

影片

  • How Robots Use Maths to Move - Inverse Kinematics: James Bruton

維基百科

  • 逆运动学

本網站需要 JavaScript 才能正常運作。請啟用 JavaScript 以瀏覽我們的開源機器人專案。