ceres-solver学习笔记

前一段时间总有一个想法,那就是,我只直到视觉slam是远远不够的,激光slam仍然是一个比较稳妥的技术,好落地,应用广泛,我想着,如果我学会了会大大增加自己的核心竞争力,所以我抽时间开始看关于激光slam和无人驾驶的相关内容,我也只是看个大概,由于没有项目支撑,所以我理解和明白的,接触的东西非常有限,由于没有很强的外部驱动力,我的进度很慢,并且学习质量也很差,代码看不下去,就这样陷入的恶性循环,我开始迷茫,感觉自己到达了瓶颈期,但又明白,我必须尽快的突破它,要不然结果很不好。

之前的想法就是从宏观上把控自己的认知,想着多接触框架,多学习更加广泛的知识,殊不知,我没有一个擅长的领域,很难在这样的强竞争力的技术领域站稳脚,我开始思考,我想要的事一种解决问题的能力,这种能力,不被不同的种类限制,就比如说,视觉slam里我可以,激光slam里我也可以,抛开slam领域,其他的地方我也有用武之地,这样思考起来,发现,一个东西很符合这样的标准,那不就是,编程能力嘛,当然这个有些宽泛了,再细化一些,但从slam领域,一个很突出的问题就是,优化问题,这是一个很关键的问题,如果没有优化,可想而知,一个slam系统将会有多糟糕,而解决优化问题,目前我们常用的是g2o和ceres两个库,当然,沈韶杰老师说,对于新进课题组的学生,它都会安排一个,手写优化器的任务,并且最多只能使用eigen库,好吧,咱们这里先降低难度,怎么使用现成的优化库,来解决现实中的问题,具有这样的能力,其实已经是很不错了。

上面的这种思维的转变,让我豁然开朗,我们需要积累的不是一个一个具体的问题,而是慢慢去掌握解决更多问题的通用方法只有这样,才能实现我们的真正的价值。

不啰嗦了,不过把上面的思路捯饬清楚了,自己的目标也就清晰了,干起活来也不会再犹豫不定,瞻前顾后了。

学习第一步:当然是临摹

就是先学会ceres-solver中给的examples中的例子。别怕麻烦,如果有时间可以自己敲一遍代码,从0开始构建起来你的优化库。

example中关于2d-slam和3d-slam的优化问题。我直接编译example没有成功,于是我创建了一个独立的工程,然后将slam_2d和slam_3d的代码重新写了一遍,然后调试通过,代码我放到了我的github上,https://github.com/Serena2018/ceres-solver

需要使用的数据集可以在下面这个链接上下载,https://lucacarlone.mit.edu/datasets/

下面分别是2d和3d数据优化前后效果的对比。

代码调试通只是第一步,更重要的是要理解代码,并且总结出,如何将实际问题抽象成一个在ceres-solver可以解决的问题。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252342.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

几款常见的视频格式转换器

在短视频占半壁江山的时候,关于体积、格式等成了困扰人们的因素,视频太大不利于传播,比如微信里就限制了传输的大小不得超过20M,所以其实说起来工作上QQ的性能远超微信。今天这里小编给大家总结几款常用的视频转换器,希…

PHP Shell生成工具Weevely

PHP Shell生成工具WeevelyWeevely是一款模拟Telnet连接的PHP Shell工具。它不提供网页形式的接口,而是提供一个命令形式的终端。渗透测试人员首先使用该工具生成对应的PHP网页。然后,将该网页上传到目标Web服务器上。渗透人员就可以在终端连接该页面&…

ceres学习之平面拟合

背景:orb-slam2最终保存的轨迹形成的平面是一个倾斜的,这个与相机初始化位置有关,但是有些时候,我们需要的是一个2d的轨迹的试图,直接将轨迹向某一个平面投影的话。 得到的估计是失真的,所以我们需要对轨迹…

二维树状数组模板(区间修改+区间查询)

二维树状数组模板(区间修改区间查询) 例题:JOIOI上帝造题的七分钟 一共两种操作: \(L\ x_1\ y_1\ x_2\ y_2\ d\):把\((x_1,y_1)\),\((x_2,y_2)\)这个矩形内所有元素加\(d\)。\(k\ x_1\ y_1\ x_2\ y_2\):查询\((x_1,y_1…

egg(110,111,112)--egg之微信支付

微信支付前的准备工作 准备工作 准备工作:个体工商户、企业、政府及事业单位。需要获取内容 appid:应用 APPID(必须配置,开户邮件中可查看)MCHID:微信支付商户号(必须配置,开户邮件中…

解决图片跨域问题

var imgs new Image(); imgs.crossOrigin "Anonymous"; //注意存放顺序 imgs.src "http://192.168.0.107/ZHCX/CGZSIMG/1.jpg"; imgs.onload function () { var canvas document.createElement(canvas); canvas.width imgs.width; canvas.height i…

旋转三维平面与某一坐标平面平行

在上一篇文章(https://blog.csdn.net/weixin_38636815/article/details/109495227)中我写了如何使用ceres,根据一系列的点来拟合一个平面,很难保证ORB-SLAM输出的轨迹严格与某一个坐标平面平行,所以这篇文章我我将说一…

elasticsearch的插件安装

目前使用的是2.4.5版本的es 安装的时候注意以下几点 : 1.如果想所有的ip都能访问es,需要修改config下的elasticsearch.yml.修改如下 network.host0.0.0.02.安装查询插件 : 进入es的安装目录,执行以下命令 ./bin/plugin install mobz/elasticsearch-head3.安装删除插件 目前不支…

let const缓存for循环的中间变量

es5中使用在for-in for循环中注册异步事件,异步事件中的i总是最后一个值。使用es6的let const可以解决 let obj {a: 1,b: 1,c: 1 }// es5 for循环中 var声明 i let funcs [] for (var key in obj) {funcs.push(() > {console.log(key)}) } funcs.forEach(func …

BZOJ1439 : YY的问题

考虑容斥&#xff0c;枚举哪些不存在的边选中了&#xff0c;剩下的不管&#xff0c;则可以用组合数计算方案数。 时间复杂度$O(m2^mnm)$。 #include<cstdio> const int N550,B10000,MAXL350; int n,m,S,i,j,e[N][2],g[N],f[N]; inline int max(int a,int b){return a>…

windows下配置opencv

我的windows下是使用的一个镜像安装的vs2015&#xff0c;然后在vs上编译工程需要使用opencv时&#xff0c;需要在工程中配置opencv 新建一个C工程&#xff0c;按照下面的步骤进行配置。 设置opencv的环境变量 “此电脑”右键点击“属性”-->选择“高级系统设置”-->选…

关于spring MVC中加载多个validator的方法。

首先讲下什么叫做validator&#xff1a; validator是验证器&#xff0c;可以验证后台接受的数据&#xff0c;对数据做校验。 SpringMVC服务器验证有两种方式,一种是基于Validator接口,一种是使用Annotaion JSR-303标准的验证。 1.使用Annotaion JSR-303标准的验证 使用这个需要…

面试时,面试官到底在考察什么?

作者&#xff1a;白海飞出处&#xff1a;极客时间《面试现场》专栏 先看一段面试对话&#xff0c;“大面”是一位久经沙场的面试官&#xff0c;小明就是今天的应聘者。一通面试下来&#xff0c;前面的技术问题小明都对答如流&#xff0c;双方相谈甚欢&#xff0c;接下来面试官“…

NoSQL-MongoDB with python

前言&#xff1a; MongoDB&#xff0c;文档存储型数据库&#xff08;document store&#xff09;。NoSQL数据库中&#xff0c;它独占鳌头&#xff0c;碾压其他的NoSQL数据库。 使用C开发的&#xff0c;性能仅次C。与redis一样&#xff0c;开源、高扩展、高可用。 基于分布式文件…

RHCS

云计算与大数据 黑洞 RHCS(概念篇) 一、 什么是RHCS RHCS是Red Hat Cluster Suite的缩写&#xff0c;也就是红帽子集群套件&#xff0c;RHCS是一个能够提供高可用性、高可靠性、负载均衡、存储共享且经济廉价的集群工具集合&#xff0c;它将集群系统中三大集群架构融合一体&…

深度图压缩之-高低8位拆分保存

使用kinect相机保存数据&#xff0c;为了减少保存的数据集量&#xff0c;对图像进行压缩。将彩色图像直接压缩成.mp4格式&#xff0c;此时图像上的一些高频信息会被损失掉。 为了能够让深度图有比较高的保真度&#xff0c;减少深度图上高频信息的损失&#xff0c;我们将16位的…

linux 一个超简单的makefile

2019独角兽企业重金招聘Python工程师标准>>> makefile 自动化变量&#xff1a; $ : 规则的目标文件名 例如&#xff1a;main:main.o test.o g -Wall -g main.o test.o -o main 可以写成&#xff1a; main:main.o test.o g -Wall -g main.o test.o -o $ $< : …

poj2480(利用欧拉函数的积性求解)

题目链接: http://poj.org/problem?id2480 题意&#xff1a;∑gcd(i, N) 1<i <N&#xff0c;就这个公式&#xff0c;给你一个n&#xff0c;让你求sumgcd(1,n)gcd(2,n)gcd(3,n)…………gcd(n-1,n)gcd(n,n),&#xff08;1<n<2^31&#xff09;是多少&#xff1f; 放…

跨域问题

一、为什么会有跨域问题&#xff1f; 是因为浏览器的同源策略是对ajax请求进行阻拦了&#xff0c;但是不是所有的请求都给做跨域&#xff0c;像是一般的href属性&#xff0c;a标签什么的都不拦截。 二、解决跨域问题的两种方式 JSONPCORS 三、JSONP 先简单来说一下JSONP&#x…

PAT A1052

这个需要注意的是相关的string转整数或者double的函数&#xff1b;详见这个链接blog #include <iostream> #include <string> using namespace std; bool isPrime(int n) {if (n 0 || n 1) return false;for (int i 2; i * i < n; i)if (n % i 0) return fa…