参考网址

【泡泡机器人公开课】第五十六课:gtsam_tutorial-董靖_哔哩哔哩_bilibili

T5 - 图优化 (第一节课)_哔哩哔哩_bilibili

战疫时期的算法课 - 知乎 (zhihu.com)

(164条消息) 【GTSAM】GTSAM/iSAM1/2资源整理_guoqiang_sunshine的博客-CSDN博客_gtsam isam

dongjing3309/minisam: A general and flexible factor graph non-linear least square optimization framework (github.com)

写一个简单的因子图库

peitianyu/factor_graph (github.com)

简介

1
2
3
4
5
6
此程序主要学习了mini_sam思路,讲真mini_sam库真心清晰,明了,干净.
程序包含
Core: 主函数在graph_optimize进行优化,然后通过sparsity_pattern保存稀疏矩阵缓存,variable与factor构造虚函数
types: 构造二维空间下的variable与factor
slam: 简单的写了几个在二维下做的因子图
test: 测试主函数

架构

1
2
3
4
5
variable: 			相当于图优化里边的顶点
factor: 通过variable构造成一元边或者二元边, 并且将求解Jacobian也放在此类中(用的是数值求解雅各比)
factor_graph: 将构造好的variable与factor添加入因子图,由于之后的优化
graph_optimize: 优化构造好的因子图,这里由于稀疏化技巧所以分出一个sparsity_pattern稀疏缓存器模块
sparsity_pattern: 包含两个部分一个是variable搜索引导一个是H与b稀疏矩阵缓存

测试

1
2
3
4
主要测试了:
1. 纯2d_point的优化
2. 2d环境下point与pose的优化(比如, 反光板与里程计)
3. 纯2d_pose的优化,(主要展示了读取g2o文件,并优化的效果)

BUG

1
1. 加入sqr_info后发现优化速度明显变慢,没找的什么原因

TODO

1
2
1. 边缘化操作
2. 如果H并不是稀疏矩阵,通过近似最小度排序变为稀疏矩阵

Build

1
2
3
4
cd factor_graph_optimize && mkdir build
cd build && cmake ..
make -j
./g2o_slam2d