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.