VINS 初始化 ceres计算重投影误差

本文详细解析VINS系统在初始化阶段如何利用ceres求解器计算并最小化重投影误差,涉及ReprojectionError3D仿函数的定义、优化问题构建、配置求解过程,并探讨了在VINS中为何需要显式添加参数块。
摘要由CSDN通过智能技术生成

详细分析一下VINS在初始化的时候对计算出的相机位姿和特征点的3D坐标用ceres进行最小化重投影误差的操作。

参考资料:

【1】https://www.jianshu.com/p/e5b03cf22c80

【2】http://www.ceres-solver.org/index.html

【3】http://www.cnblogs.com/decade-dnbc66/p/5347088.html

推荐先看一下【1】中开头的小例子。

VINS的这部分代码在“initial_sfm.cpp” “initial_sfm.h”中。

(1)构建代价函数。不按照代码的顺序来,先分析最重要的部分:定义重投影误差的costfunction。VINS定义了一个名为ReprojectionError3D的仿函数,即在结构体内对“()”进行了重载,也就是说ReprojectionError3D()可以当做一个函数去使用,而且可以方便的传递参数,具体细节参考【3】。在这个结构体内,

        //"operator()" is ONE name
bool operator()(const T* const camera_R, const T* const camera_T, const T* point, T* residuals) const
	{
	T p[3];
        //Pc=Rw2c*Pw+Tw2c	
        ceres::QuaternionRotatePoint(camera_R, point, p); //Rotates a point pt by a quaternion q, pose is the result
	p[0] += camera_T[0]; p[1] += camer
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值