加载中…
个人资料
SlowlyThinking
SlowlyThinking
  • 博客等级:
  • 博客积分:0
  • 博客访问:515,373
  • 关注人气:86
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
正文 字体大小:

SVO代码学习

(2016-06-22 15:04:22)
分类: 图像三维重建
看SVO代码,SVO也是将一帧图像处理成多层图像金字塔形式,跟踪过程,也就是通过灰度残差最小来算相机位姿,这部分都在FrameHandlerMono类的addImage方法中,addImage方法完成初始化过程和相机位姿跟踪的部分,跟踪部分中存在四个系统状态第一帧,第二帧,其他帧,relocalizing (这个状态要干什么还不是特别清楚),一二帧是初始化(算单应矩阵分解求位姿),其他帧就是有了初始地图之后的跟踪过程,具体函数为FrameHandlerMono类的processFrame函数,这个函数中的跟踪过程与论文中基本一样,也包括几个步骤:图像配准(alignment)求位姿,优化特征点的二维坐标,同时优化位姿和特征点坐标(BA)。
建图部分的主要函数在depthfilter类中,流程是首先在ros节点调用的时候会调用这个类的startThread函数,新开线程,线程里运行depthfiler类中的updateSeedsLoop方法,大致过程也就是等tracking部分向一个vector或者list中填充它选择的关键帧,如果有,就进行概率化建图,这个部分还没仔细看。
另外李群中的SE3在PTAM,SVO中都会出现,应该是表示T,相机位姿,但是感觉需要找点中文资料再看看SE3的具体含义。

对应SVO论文中跟踪部分的三个过程,一是通过当前帧和上一帧的特征点对应的patch之间的灰度残差最小来求当前帧的位姿(即SE(3) T),一个函数完成,这是一个粗略估计,有了这个粗略估计就可以进行下一步:把地图中已有的在当前帧可见的特征点重投影到当前帧,一个重投影函数完成,这个重投影过程完成之后会分析重投影的质量,也就是匹配到的特征点对的个数,当点对太少的时候就会直接把当前帧的位姿设置为上一帧的位姿,并报错匹配特征点过少,这也是我常遇到的问题。最后是优化两个部分:一是之前粗略估计出的T,这一步叫做pose优化;二是投影到当前帧的点在世界坐标系下的坐标点,这一步叫做structure优化。最后是可选的BA算法同时对位姿和三维点坐标进行优化。


以下分析均在rpg_svo文件夹下:
first:在svo_ros/src中vo_node文件中包含了了节点类vo_node的相关声明,并包含一个main函数
vo_node.cpp的main中:
1.包含一些ros节点的基本操作,在vo_node的构造函数中,实例化了一个FrameHandlerMono的对象vo_,并运行vo_->start
2.使用subscribe(cam_topic, 5, &svo::VoNode::imgCb, &vo_node),每次获得图像时使用VoNode中的imgCb方法处理
3.在imgCb方法中,运行了FrameHandlerMono对象vo_的成员函数addImage,此方法中其他的部分是关于显示的,即Visualizer类的一些操作。
3.当ros::ok()为真,且vo_node.quit_为假时,循环ros::spinOnce()

----------------------------------------------------------------------------------------------
FrameHandlerMono类继承自FrameHandlerBase类:
1.其构造函数中运行FrameHandlerMono.initialize()
2.initialize()函数中实例化DepthFilter类的一个对象,运行此对象的startThread()函数,此函数使用boost的thread方法新建了一个线程,并在此线程中运行DepthFilter.updateSeedsLoop函数。
3.在updateSeedsLoop函数中,会检查frame_queue_队列中是否有FramePtr存在,FramePtr在global.h中定义为boost::shared_ptr

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有