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.