SLAM中后端优化求解上ceres库位姿图优化有非常多的应用,这里记录一下自己的学习内容,主要参考B站的视频和CSDN的博客,推荐以下资料:
【非线性优化器ceres的使用20221125】 https://www.bilibili.com/video/BV1p24y1y7BL/?share_source=copy_web&vd_source=24db73a73cddacddda48febd1ffc28ef
【SLAM】Ceres优化库超详细解析,https://blog.csdn.net/qq_38410730/article/details/131439027
[代码实践] Ceres 学习记录(一):2D 位姿图优化,https://xiaotaoguo.com/p/ceres-usage/
ceres位姿图优化,https://blog.csdn.net/weixin_42099090/article/details/106907271
slam14(1) v3_3 后端优化 BA位姿图优化,https://www.cnblogs.com/gooutlook/p/16646439.html
使用 Ceres Solver求解非线性优化问题,主要包括以下几部分:
1、构建代价函数(cost function)或残差(residual)
2、构建优化问题(ceres::Problem):通过 AddResidualBlock 添加代价函数(cost function)、损失函数(loss function核函数) 和 待优化状态量
3、配置求解器(ceres::Solver::Options)
4、运行求解器(ceres::Solve(options, &problem, &summary))
例子1:求解根号2的值是多少
例子2:slambook2/ch10g2o位姿图优化实践例子改成使用ceres进行位姿图优化。
CMakeLists.txt:
在 优化位姿 时,其思想是构造一个关于位姿变化的误差函数,当这个误差函数最小时,认为此时估计的位姿最优。视觉SLAM主要分为 直接法 和 特征点法,但无论是直接法还是特征点法,位姿的迭代优化都是求解一个最小二乘问题。
优化问题:
Cere库在SLAM中的使用非常广泛,需要更多地结合代码来看,还需要补充图优化的相关理论知识,进行理论实践。目前我对于位姿图优化中的信息矩阵还有点迷糊,要补充图优化知识的学习!