IKPy
直接從 URDF 建立運動鏈的純 Python 逆向運動學函式庫
授權條款
Apache-2.0
概述
IKPy 是由 Pierre Manceron 開發的輕量、純 Python 逆向運動學函式庫。它直接從 URDF 檔案解析運動鏈,以建構在 SciPy 上的數值最佳化器求解正向與逆向運動學,並內含以 Matplotlib 為基礎的簡易 3D 視覺化。由於沒有需要編譯的相依套件,任何能執行 Python 的地方都能安裝它,因此在教育、業餘手臂,以及它最初所源自的 Poppy 人形機器人生態系中廣受喜愛。
IKPy 將機器人建模為從 URDF 解析而來、由連桿組成的 Chain(另有協助以 DH 風格手動定義的工具)。正向運動學是一串矩陣連乘;逆向運動學則以對關節值進行的有界最小平方最佳化執行,支援位置與姿態目標、主動連桿遮罩與關節極限。函式庫附有在 Matplotlib 3D 中繪出運動鏈與目標的繪圖工具,以及從雙連桿手臂一路到 Baxter 等完整機器人的教學。它刻意以原始速度換取可攜性與可修改性:一切都是 NumPy/SciPy,沒有需要建置的 C 擴充,而運動鏈只是一個可以繼承的普通 Python 物件。這樣的設計讓 IKPy 成為 Poppy 開源人形機器人生態系的運動學層,也是教授 IK、快速原型開發,以及驅動用完整 MoveIt 堆疊太過大材小用之業餘手臂時的常見選擇。
為何重要
IKPy 是 Python 機器人世界中標準的「五行程式搞定 IK」函式庫:十年來,它一直是從 URDF 檔案到可運作之逆向運動學阻力最小的途徑,被廣泛用於教育、Poppy 人形機器人社群,以及無數業餘手臂專案。
解決的問題
當你只是需要某個目標位姿的關節角度時,完整的運動規劃堆疊是過於笨重的機器。IKPy 只需 pip install,就能讓任何 Python 程式取得與 URDF 一致的正向與逆向運動學,不需要 ROS、不需要編譯過的求解器,也不需要繁瑣的設定。
重點
- 直接從 URDF 檔案建立運動鏈(也可以 DH 風格手動定義)
- 數值 IK,支援關節極限、主動連桿遮罩、位置與姿態目標
- 建構在 NumPy/SciPy 上的純 Python:隨處可安裝,沒有需要編譯的相依套件
- 內建以 Matplotlib 3D 視覺化運動鏈與目標
- Poppy 人形機器人生態系的運動學層;廣泛用於教學
適用對象
- 學習運動學的機器人學生
- 業餘機器手臂自造者
- 以腳本撰寫機器人動作的 Python 開發者
- 建立機器人課程的教育者
限制
- 數值最佳化比解析式或編譯過的 IK 求解器慢,不適合高頻率的控制迴圈
- 沒有碰撞檢查或運動規劃,只提供關節解
- 有姿態約束的 IK 可能需要調整(初始位置、主動連桿)才能良好收斂