artivis/manif
A small C++11 header-only library for Lie theory.
What it solves
manif 是一個為機器人狀態估計而設計的 Lie 理論函式庫。它提供了在 2D 與 3D 空間中處理旋轉、平移與速度的數學嚴謹方法,這對於計算機器人的姿態與運動至關重要。
How it works
此函式庫實作了多種 Lie 群,以表示不同類型的運動與空間:
- Euclidean space (ℝ(n)):n 維空間中的基本加法。
- SO(2) and SO(3):2D 與 3D 空間中的旋轉。
- SE(2) and SE(3):2D 與 3D 空間中的剛體運動(旋轉與平移)。
- SE_2(3):擴展姿態,包含 3D 的旋轉、平移與速度。
- SGal(3):特殊伽利略群(旋轉、平移、速度與時間),適用於 3D。
- Bundle<>:將流形束視為單一 Lie 群的方式。
它使用笛卡爾表示法來描述切空間,意即切向元素被視為 $ mathbb{R}^n$ 中的普通向量。函式庫亦提供對局部切空間擾動的右雅可比矩陣之解析計算。
Who it’s for
適合從事狀態估計、控制與學習演算法的機器人工程師與開發者,這些工作需要精確的 3D 運動與幾何數學表示。
Highlights
- Header-only C++11 library with Python 3 wrappers.
- Comprehensive Lie group support: Covers everything from simple rotations to complex Galilean groups.
- Analytical Jacobians: Provides built-in computation of Jacobians for all core operations.
- Auto-diff compatible: Works with
ceres::Jet,autodiff::Dual, andautodiff::Realfor non-linear solvers. - Rigorous mathematical foundation: Based on a specific academic paper tailored for roboticists.