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, and autodiff::Real for non-linear solvers.
  • Rigorous mathematical foundation: Based on a specific academic paper tailored for roboticists.