SLAM
SLAM_masterFei
这个作者很懒,什么都没留下…
展开
-
pcl点云的一些学习认识
博主最近在做三维重建,之前就了解过pcl库,俗话说,二维处理靠opencv,三维处理靠pcl,那么这个点云库到底有什么神奇功能呢?博主才疏学浅,现在就学了如何将三维点显示和一些简单的滤波,在这里,对自己,也是对广大初学者都可以做个复习和简单的介绍。首先如何将已有的三维点显示,博主这里是利用深度相机直接测得的深度,帧之间通过icp获得世界坐标系下的空间位姿,在这里,我们简单来看从深度照片中提取点云。...原创 2018-03-15 17:53:25 · 1518 阅读 · 1 评论 -
如何用ba进行小规模场景恢复
博主轰轰烈烈的想要妄图利用自家的kinect进行场景的重构失败了,画面惨不忍睹,物体均有明显的位移,思考很久,总结原因有这样几点:1.选用了三维了旋转矩阵,而机器人是做二维移动的,有了误差.2.kinect可能没有进行深度图与色彩图的匹配,这一点我感觉应该不存在的,因为我调用的是opencv里的videocapture类,并且调用了grab和retrieve两个函数,但是,深度和彩色有一些时差(约...原创 2018-03-19 18:31:01 · 650 阅读 · 0 评论 -
如何通过opennni用opencv3.0读取kinect数据
博主弱鸡一个,最近想利用kinect实现一个rgbd的稠密重建,但又不想基于ros(其实是还没怎么系统学),那咋办,就把kinect单独抽离出来呗。网上搜了一下,发现大部分都是kinect2的,关于1的比较少,由于博主装这个也花了一天的时间(确实是个弱鸡啊QAQ),现在就来把里面的坑和步骤都说一下,以便后来人参考。首先,你需要安装openni,sensor和NITE这三个包,博主一开始也是在网上找...原创 2018-03-14 10:08:55 · 923 阅读 · 1 评论 -
如何用ceres进行两帧之间的BA优化
学习高博的书已有很长一段时间了,一直看理论,看代码,而没有自己亲自上手,最近在做BA优化,大部分SLAM是用g2o进行的,而对于ceres用的很少,由于博主根本看不懂g2o的代码风格,个人觉得很无语(其实是博主zz),那咋办?,于是就想干脆用ceres实现BA优化吧。而关于ceres,其实主要还是残差的定义了,然后求解过程都是大同小异,直接上我写的代码struct cost_function_de...原创 2018-03-14 10:48:46 · 7175 阅读 · 4 评论 -
ceres做slam全局优化的一些体会
之前讲到了如何用ceres做相邻两帧的ba优化,是用重投影误差来做的,对于连续的数据流,无论你在前端采用什么样的代数算法pnp或者icp其实都只能算出一个粗略的解,博主亲自做实验来比较代数解和非线性优化解的区别,发现无论怎样,即使我ba给的初值相当垃圾,优化出来的结果一样好于代数解。那么对于长时间的slam问题来说,如何保证可以减少随时间产生的累计误差,一种主流的做法是把我所以看到的关键帧中的ma...原创 2018-04-04 11:16:46 · 5882 阅读 · 10 评论 -
ubuntu14.04编译opencv3.3.1和contrib3.3.1
很久没跟新啦,给大家带来一篇关于ubuntu14.04编译opencv3.3.1和contrib3.3.1的安装。有几个坑,博主踩过,所以来和大家分享一下。1.首先就是版本得对应,具体可以去opencv的github去找相关的版本https://github.com/opencv2.下载好相应的文件,然后分为解压3.将解压好的contrib文件放到opencv中,然后新建build,进入build...原创 2018-05-14 11:40:01 · 681 阅读 · 2 评论 -
ubuntu14.04配置caffe无GPU
首先呢,博主是想搞tensorflow的,但是呢,博主的机子是32位的,tensorflow支持64位的,所以呢,只能玩玩caffe了,然后呢,博主肯定首先是想搞GPU的,但是呢,驱动么去官网下,安装提示内核不对,可是没有很早以前的驱动了呀,其次呢,CUDA7.5现阶段下载不了,原因你去问英伟达。。。所以只能搞无GPU加速的caffe了,这也好,省去了一大片的雷区。。。首先,你需要下载anacon...原创 2018-05-16 15:52:44 · 349 阅读 · 0 评论 -
pcl点云库实时显示点云变化
最近有需要用到pcl点云库来显示点云,并且还要根据时间来实时显示它的变化,实时显示主要是要用到CloudViewer这个类,它创建一个显示器用来显示点云,一般来讲动态显示点云就在这个显示器中不断地添加或者删除一些点来达到动态实时的功能。废话不多说,一般用法如下,即新建一个点云指针用来存放点云,然后显示void show(vector<Point3d>& pt5,pcl...原创 2018-12-02 16:22:39 · 6969 阅读 · 10 评论