Factor Graph
- 类别: State estimation & navigation › Localisation
- 标签: state-estimation, slam, probabilistic-inference, optimization, sensor-fusion
一种二部图,把概率分布表示为因子的乘积,把位姿和路标等未知变量与约束它们的测量和先验联系起来。
定义
因子图(Factor graph)有两类节点。变量节点代表待估计的未知量,例如机器人位姿、速度、传感器偏置或路标位置。因子节点代表关于这些未知量的信息,例如一个先验、两个位姿之间的一次里程计测量,或一次相机对路标的观测,每个因子只连接到它所涉及的变量。该图描述了一个联合分布,它等于所有因子的乘积,这使问题的结构变得明确:哪些未知量相互关联,哪些测量是稀疏的局部约束。
因子图由 Kschischang、Frey 和 Loeliger(2001)提出,作为一个通用的推断框架,并在机器人学中得到广泛采用,这在很大程度上得益于 Dellaert 和 Kaess 在平滑与建图方面的工作。在高斯噪声模型下,给定所有因子求所有变量的最可能取值,是一个非线性最小二乘问题:每个因子贡献一个由其信息矩阵加权的残差。求解器把残差线性化,利用图的稀疏性高效地分解所得的线性系统,并用 Gauss-Newton 或 Levenberg-Marquardt 方法迭代。iSAM2 等增量求解器在新因子到来时更新解,而无需从头重新求解。GTSAM 直接实现了因子图,而 g2o 和 Ceres 等通用最小二乘库也用于同类问题。
它在实践中的主要吸引力是模块化。一个新的传感器就成为一种新的因子类型,有自己的残差和噪声模型,因此 IMU 预积分、GPS、轮式里程计、激光雷达扫描匹配、回环以及学习得到的测量模型都可以放在同一个估计器中。位姿图优化是一个特例,其中每个变量都是位姿,每个因子都是相对位姿约束;而一般的因子图还可以容纳路标、速度、偏置和标定参数。固定滞后平滑器把旧变量边缘化以限制计算量,代价是冻结了部分线性化点。错误回环等离群值需要鲁棒代价函数或可切换约束,因为单个错误因子就可能把普通的最小二乘解拉偏很远。
为何重要
因子图是现代 SLAM 和多传感器状态估计的通用语言。它让工程师无需重新设计估计器就能加入传感器、先验和约束,并明确每个测量所带有的噪声假设和独立性假设。
主要应用
- 激光雷达、视觉和视觉惯性系统的 SLAM 后端
- IMU、GPS、轮式里程计和视觉的多传感器融合
- 相机、激光雷达和 IMU 外参的标定
- 运动恢复结构与光束法平差
- 以概率推断形式表述的轨迹优化
- 带有共享约束的多机器人建图
实际应用
一辆地面车辆利用探地雷达(GPR),依据一张事先记录的地下地图进行定位。每个时间步加入一个位姿变量;惯性或轮式里程计在相邻位姿之间加入一个因子;雷达与先验地图的匹配在当前位姿上加入一个因子。测量因子不必为雷达手写传感器模型,而可以从数据中学习,正如关于用于 GPR 定位的学习式因子图模型的工作那样。团队运行一个增量平滑器,使最新位姿能够实时获得,并在每次测试行驶后检查因子残差,找出噪声模型设得过紧或过松的测量类型。
常见误解
- 因子图是一种求解器 — 它是问题的一种表示;求解器(例如批量 Gauss-Newton 或增量平滑)是另一项选择
- 因子图只能描述位姿图 — 它可以容纳路标、速度、偏置、标定参数和任意测量模型
- 加入更多因子总能改进估计 — 除非使用鲁棒代价,否则噪声模型错误的因子或离群测量可能破坏整个解
谁需要了解
- SLAM 和状态估计工程师
- 传感器融合和导航开发者
- 研究机器人学中概率推断的研究人员
- 自动驾驶车辆定位团队
相关技术
- GTSAM
- iSAM2
- g2o
- Ceres Solver
- 光束法平差(Bundle Adjustment)
- Levenberg-Marquardt 算法
相关术语
相关项目
- LingBot-Map: Streaming 3D reconstruction from one camera: pose and depth for every frame, live
- oomwoo: Open-source DIY robot vacuum: 3D-printed, ROS2 + 2D LiDAR, fully local.
- Cartographer: Google's real-time 2D and 3D SLAM system for multi-platform robotics
- FAST-LIVO2: Fast, direct LiDAR-inertial-visual odometry from HKU-MARS, published in IEEE T-RO
- DimOS: Python robotics runtime with agents, SLAM and teleop, no ROS required
- evo: De-facto standard tool for evaluating and plotting odometry/SLAM trajectories
视频
- Factor Graph - 5 Minutes with Cyrill: Cyrill Stachniss
- MIT Robotics - Frank Dellaert - Factor Graphs for Perception and Action: MIT Robotics