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的性能远超微信。今天这里小编给大家总结几款常用的视频转换器,希…

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

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

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

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

windows下配置opencv

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

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

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

NoSQL-MongoDB with python

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

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 $ $< : …

跨域问题

一、为什么会有跨域问题&#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…

php审计学习:xdcms2.0.8注入

注入点Fields: 注册页面会引用如下方法: $fields 变量是从 $fields$_POST[fields]; 这里获取&#xff0c; 在代码里没有过滤。 打印 fields 数据查看: 从代码上看 $field_sql.",{$k}{$f_value}"; 最终会变成: ,truename111111,email12345 因为 $field_sql 最终会引入…

windows下安装python和Python-opencv

背景&#xff1a;目前基于python的图像处理和机器视觉的研究还挺多&#xff0c;最近不是在研究目标检测和目标跟踪的算法&#xff0c;由于检测和跟踪的环境比较简单所以从不带学习的跟踪方法&#xff0c;在搜索资料时搜到这个网站&#xff0c;是对opencv中的目标跟踪算法的一个…

捋一捋js面向对象的继承问题

说到面向对象这个破玩意&#xff0c;曾经一度我都处于很懵逼的状态&#xff0c;那么面向对象究竟是什么呢&#xff1f;其实说白了&#xff0c;所谓面向对象&#xff0c;就是基于类这个概念&#xff0c;来实现封装、继承和多态的一种编程思想罢了。今天我们就来说一下这其中继承…

java8简单入门

1、介绍 本片文章会从一下几个知识点进行介绍&#xff1a; 函数式接口 FunctionalInterfaceLambda 表达式函数引用 Function ReferenceStream看了几篇关于 java8 入门的例子&#xff0c;其中引入了许多令人期待已久的特性&#xff08;虽然我没有过这样的体会&#xff09;&#…

玩转带外触发的单目相机之一

背景&#xff1a;去年开始研究vins,但是只是用了普通的相机&#xff0c;然后将IMU和相机粘在一起&#xff0c;然后就是联合标定相机和IMU。VINS使用的相机是带有外触发的&#xff0c;还进行了相机和IMU的硬件时间同步。当时我特别想买个带外触发的相机&#xff0c;一直没找到资…

基于django的视频点播网站开发-step11-后台用户管理功能...

用户管理功能&#xff0c;包含用户添加、列表展示、编辑、删除四大功能。下面我们一一揭晓。 用户添加 我们先实现用户添加功能&#xff0c;我们现在urls.py下添加相关的路由 path(user_add/, views.UserAddView.as_view(), nameuser_add), path(user_list/, views.UserListVie…

分布式之数据库和缓存双写一致性方案解析

先做一个说明&#xff0c;从理论上来说&#xff0c;给缓存设置过期时间&#xff0c;是保证最终一致性的解决方案。这种方案下&#xff0c;我们可以对存入缓存的数据设置过期时间&#xff0c;所有的写操作以数据库为准&#xff0c;对缓存操作只是尽最大努力即可。也就是说如果数…

‘(‘:illegal token on right side of ‘::‘

背景&#xff1a;想整理升级一下代码&#xff0c;添加了两个类&#xff0c;再一编译代码&#xff0c;出现了好多这样的错误提示“(:illegal token on right side of ::”&#xff0c;我很纳闷这是啥问题&#xff0c;我就使用“注释法”来定位出错的位置&#xff0c;我发现把所有…

虹软免费人脸识别SDK注册指南

2019独角兽企业重金招聘Python工程师标准>>> 成为开发者三步完成账号的基本注册与认证&#xff1a; STEP1:点击注册虹软AI开放平台右上角注册选项&#xff0c;完成注册流程。 STEP2:首次使用&#xff0c;登录后进入开发者中心&#xff0c;点击账号管理完成企业或者个…

C++中的类加多线程代码修炼

背景&#xff1a;现在在做一个目标跟踪的项目&#xff0c;需要实时的从工业相机中获取图像&#xff0c;然后再跟踪图像上的目标物&#xff0c;由于起初为了测试跟踪算法&#xff0c;就把“从相机获取图像”和“跟踪处理”都放在了主线程中&#xff0c;在实际测试时&#xff0c;…

vue的鼠标移入和移出

vue的鼠标移入和移出 需求&#xff08;鼠标到预约二维码显示&#xff0c;预约添加背景色&#xff09; 实现 <!--html部分--> <ul class"person_list"> //五个li标签皆是循环渲染出来的<li class"item" v-for"(n,index) in 5">…