Cerse入门(一)Helloword解析与自动求导

   日期:2024-12-27    作者:1we5k 移动:http://ljhr2012.riyuangf.com/mobile/quote/58128.html

Ceres是谷歌开发的广泛使用的最小二乘问题求解库。用户只需要按照一定的步骤定义待解的优化问题然后交给求解器计算。最小二乘问题一般格式如下

Cerse入门(一)Helloword解析与自动求导

使用Ceres求解非线性优化问题,一共分为三个部分
1、 第一部分:构建cost fuction,即代价函数,也就是寻优的目标式。这个部分需要使用仿函数(functor)这一技巧来实现,做法是定义一个cost function的结构体,在结构体内重载)运算符,具体实现方法后续介绍。
2、 第二部分:通过代价函数构建待求解的优化问题。
3、 第三部分:配置求解器参数并求解问题,这个步骤就是设置方程怎么求解、求解过程是否输出等,然后调用一下Solve方法。
 

也就是寻优的目标式。这个部分需要使用仿函数(functor)这一技巧来实现,做法是定义一个cost function的结构体,在结构体内重载)运算符,具体实现方法后续介绍

假设代价函数为

仿函数参考

C++ 仿函数_Dablelv的博客专栏-CSDN博客_c++仿函数

 
 
 
 
 

 第一个参数1:代价函数的维度,在本例中为1,第二个参数为参数块的维度本例中只有一个x也为1。分别对应之前结构体中的residual和x。

将第一部分创建的代价函数CostFunctor传入到此处

优化过程中,求导方式有三种分别为,自动求导,数值求导,解析求导。

 

 这一部分很好理解,创建一个Option,配置一下求解器的配置,创建一个Summary。最后调用Solve方法,求解。

 
 
 
 

解析求导即我们自己输入雅克比矩阵,不再使用优化库的自动求导方式,速度上会比自动求导的方式快一些。

形式上稍有不同

 
 
 

只有在声明优化函数时与自动求导稍有不同,因为已经知道了雅可比,所以直接创建优化对象即可。

第三部分与解析求导相同

 
 
 
 

深蓝学院多传感器融合第三节课件

slam十四讲

C++ 仿函数_Dablelv的博客专栏-CSDN博客_c++仿函数

一文助你Ceres 入门——Ceres Solver新手向全攻略_福尔摩睿的工作站-CSDN博客_ceres solver


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号