ORBSLAM总结.pptx

上传人:b****1 文档编号:1383994 上传时间:2022-10-21 格式:PPTX 页数:33 大小:2.34MB
下载 相关 举报
ORBSLAM总结.pptx_第1页
第1页 / 共33页
ORBSLAM总结.pptx_第2页
第2页 / 共33页
ORBSLAM总结.pptx_第3页
第3页 / 共33页
ORBSLAM总结.pptx_第4页
第4页 / 共33页
ORBSLAM总结.pptx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

ORBSLAM总结.pptx

《ORBSLAM总结.pptx》由会员分享,可在线阅读,更多相关《ORBSLAM总结.pptx(33页珍藏版)》请在冰豆网上搜索。

ORBSLAM总结.pptx

ORBSLAM,杨肖寒,01,02,目录,PartOne,ORB-SLAM介绍,01,介绍,ORB-SLAM是由RaulMur-Artal,J.M.M.Montiel和JuanD.Tardos于2015年发表在IEEETransactionsonRobotics。

项目主页网址为:

http:

/webdiis.unizar.es/raulmur/orbslam/。

ORB-SLAM是一款适用于单目,立体和RGB-D摄像机的多功能精确SLAM解决方案。

在大小场景、室内室外环境下都可以实时操作的一种基于特征的单目SLAM系统。

SLAM系统对复杂的剧烈运动具有鲁棒性,支持宽基线的闭环检测和重定位,包括全自动初始化,它包括从平面和非平面场景进行自动且稳健的初始化。

它能够在各种环境中实时计算摄像机轨迹和场景的稀疏3D重建,范围从桌面的小型手持序列到围绕几个城市街区行驶的汽车。

ORB-SLAM包含了所有SLAM系统共有的模块:

跟踪(Tracking)、建图(Mapping)、闭环检测(Loopclosing)、重定位(Relocalization)。

ORB是属于特征点法的特征提取与匹配的算法之一。

贡献,1.使用ORB特征描述,不用GPU加速就可以实时,具有视点不变性和光照不变性(ORB(OrientedFASTandRotatedBRIEF)是一种快速提取特征点和描述子的算法。

其特征检测基于FAST,采用BRIEF描述子并加以改进。

)2.使用CovisibiltyGraph,使跟踪和建图聚焦在局部共视区域(CovisibilityGraph是一个无向有权图(graph),每个node就是关键帧,edge的权重就是两个关键帧找到足够多的相同的3d点的数目。

)3.使用theEssentialGraph来优化位姿实现回环检测(为了在优化阶段减小计算量,能够连接所有的node,但是edge会减少很多。

可以认为是CovisibityGraph的最小生成树(MST)。

)4.相机重定位,视点和光照改变都适用5.根据对平面和非平面选择不同模型,实现自动初始化6.舍弃多余的关键帧,提高跟踪鲁棒性,加强长时间操作,系统架构,系统架构,系统架构,

(1)跟踪(Tracking)前端位姿跟踪线程采用恒速模型,并通过优化重投影误差优化位姿。

这一部分主要工作是从图像中提取ORB特征,根据上一帧进行姿态估计,或者通过全局重定位初始化位姿,然后跟踪已经重建的局部地图,优化位姿,再根据一些规则确定新的关键帧。

(2)建图(LocalMapping)通过MapPoints维护关键帧之间的共视关系,通过局部BA优化共视关键帧位姿和MapPoints。

这一部分主要完成局部地图构建。

包括对关键帧的插入,验证最近生成的地图点并进行筛选,然后生成新的地图点,使用局部捆集调整(LocalBA),最后再对插入的关键帧进行筛选,去除多余的关键帧。

(3)闭环检测(LoopClosing)这一部分主要分为两个过程,分别是闭环探测和闭环校正。

闭环检测先通过bag-of-words模型加速闭环匹配帧的筛选、探测,然后通过Sim3算法计算相似变换。

闭环校正,主要是闭环融合和EssentialGraph的图优化。

(4)使用bag-of-words加速匹配帧的筛选,并使用EPnP算法完成重定位中的位姿估计。

ORB_SLAM节点的topic,Publishedtopics:

*/ORB_SLAM/Mapvisualization_msgs/Marker1publisher*/ORB_SLAM/Framesensor_msgs/Image1publisher*/rosoutrosgraph_msgs/Log1publisher*/tftf2_msgs/TFMessage1publisher*/rosout_aggrosgraph_msgs/Log1publisherSubscribedtopics:

*/camera/image_rawsensor_msgs/Image1subscriber*/rosoutrosgraph_msgs/Log1subscriberrosrunimage_viewimage_viewimage:

=/ORB_SLAM/Frame_autosize:

=true订阅/camera/image_raw这个topic,然后被ORB_SLALM节点处理后的图像帧被发布到话题ORB_SLAM/Frame中,可以通过使用image_view功能包来查看rosrunrvizrviz-dData/rviz.rvizORB_SLAM节点处理得到的地图被发布到话题/ORB_SLAM/Map中,摄像机当前位姿和地图全局坐标原点通过/tf功能包分别发布到话题/ORB_SLAM/Camera和话题/ORB_SLAM/World中,通过运行rviz功能包来查看地图,入口,Tracking线程,LocalMapping线程,Tracking线程,Tracking线程,Tracking线程,Tracking线程,PartTwo,相机标定,02,相机标定,相机标定的目的:

获取摄像机的内参和外参矩阵(同时也会得到每一幅标定图像的选择和平移矩阵),内参和外参系数可以对之后相机拍摄的图像就进行矫正,得到畸变相对很小的图像。

相机标定的输入:

标定图像上所有内角点的图像坐标,标定板图像上所有内角点的空间三维坐标(一般情况下假定图像位于Z=0平面上)。

相机标定的输出:

摄像机的内参、外参系数。

相机标定,过程:

1.准备标定图片2.对每一张标定图片,提取角点信息3.对每一张标定图片,进一步提取亚像素角点信息4.在棋盘标定图上绘制找到的内角点(非必须,仅为了显示)5.相机标定6.对标定结果进行评价7.查看标定效果利用标定结果对棋盘图进行矫正,相机标定,1.准备标定图片标定图片需要使用标定板在不同位置、不同角度、不同姿态下拍摄,最少需要3张,以1020张为宜。

标定板需要是黑白相间的矩形构成的棋盘图,制作精度要求较高,如下图所示:

相机标定,2.对每一张标定图片,提取角点信息需要使用findChessboardCorners函数提取角点,这里的角点专指的是标定板上的内角点,这些角点与标定板的边缘不接触。

第一个参数Image,传入拍摄的棋盘图Mat图像,必须是8位的灰度或者彩色图像;第二个参数patternSize,每个棋盘图上内角点的行列数,一般情况下,行列数不要相同,便于后续标定程序识别标定板的方向;第三个参数corners,用于存储检测到的内角点图像坐标位置,一般用元素是Point2f的向量来表示:

vectorimage_points_buf;第四个参数flage:

用于定义棋盘图上内角点查找的不同处理方式,有默认值。

CV_EXPORTS_WboolfindChessboardCorners(InputArrayimage,SizepatternSize,OutputArraycorners,intflags=CALIB_CB_ADAPTIVE_THRESH+CALIB_CB_NORMALIZE_IMAGE);,相机标定,3.对每一张标定图片,进一步提取亚像素角点信息为了提高标定精度,需要在初步提取的角点信息上进一步提取亚像素信息,降低相机标定偏差,常用的方法是cornerSubPix。

第一个参数image,输入的Mat矩阵,最好是8位灰度图像,检测效率更高;第二个参数corners,初始的角点坐标向量,同时作为亚像素坐标位置的输出,所以需要是浮点型数据,一般用元素是Pointf2f/Point2d的向量来表示:

vectoriamgePointsBuf;第三个参数winSize,大小为搜索窗口的一半;第四个参数zeroZone,死区的一半尺寸,死区为不对搜索区的中央位置做求和运算的区域。

它是用来避免自相关矩阵出现某些可能的奇异性。

当值为(-1,-1)时表示没有死区;第五个参数criteria,定义求角点的迭代过程的终止条件,可以为迭代次数和角点精度两者的组合;,CV_EXPORTS_WvoidcornerSubPix(InputArrayimage,InputOutputArraycorners,SizewinSize,SizezeroZone,TermCriteriacriteria);,相机标定,4.在棋盘标定图上绘制找到的内角点(非必须,仅为了显示)第一个参数image,8位灰度或者彩色图像;第二个参数patternSize,每张标定棋盘上内角点的行列数;第三个参数corners,初始的角点坐标向量,同时作为亚像素坐标位置的输出,所以需要是浮点型数据,一般用元素是Pointf2f/Point2d的向量来表示:

vectoriamgePointsBuf;第四个参数patternWasFound,标志位,用来指示定义的棋盘内角点是否被完整的探测到,true表示别完整的探测到,函数会用直线依次连接所有的内角点,作为一个整体,false表示有未被探测到的内角点,这时候函数会以(红色)圆圈标记处检测到的内角点;,CV_EXPORTS_WvoiddrawChessboardCorners(InputOutputArrayimage,SizepatternSize,InputArraycorners,boolpatternWasFound);,相机标定,5.相机标定获取到棋盘标定图的内角点图像坐标之后,就可以使用calibrateCamera函数进行标定,计算相机内参和外参系数。

第一个参数objectPoints,为世界坐标系中的三维点。

在使用时,应该输入一个三维坐标点的向量的向量,即vectorobject_points。

需要依据棋盘上单个黑白矩阵的大小,计算出(初始化)每一个内角点的世界坐标。

第二个参数imagePoints,为每一个内角点对应的图像坐标点。

和objectPoints一样,应该输入vectorimage_points_seq形式的变量;第三个参数imageSize,为图像的像素尺寸大小,在计算相机的内参和畸变矩阵时需要使用到该参数;第四个参数cameraMatrix为相机的内参矩阵。

输入一个MatcameraMatrix即可,如MatcameraMatrix=Mat(3,3,CV_32FC1,Scalar:

all(0);第五个参数distCoeffs为畸变矩阵。

输入一个MatdistCoeffs=Mat(1,5,CV_32FC1,Scalar:

all(0)即可;第六个参数rvecs为旋转向量;应该输入一个Mat类型的vector,即vectorrvecs;第七个参数tvecs为位移向量,和rvecs一样,应该为vectortvecs;第八个参数flags为标定时所采用的算法。

有如下几个参数:

CV_CALIB_USE_INTRINSIC_GUESS:

使用该参数时,在cameraMatrix矩阵中应该有fx,fy,u0,v0的估计值。

否则的话,将初始化(u0,v0)图像的中心点,使用最小二乘估算出fx,fy。

CV_CALIB_FIX_PRINCIPAL_POINT:

在进行优化时会固定光轴点。

当CV_CALIB_USE_INTRINSIC_GUESS参数被设置,光轴点将保持在中心或者某个输入的值。

CV_CALIB_FIX_ASPECT_RATIO:

固定fx/fy的比值,只将fy作为可变量,进行优化计算。

当CV_CALIB_USE_INTRINSIC_GUESS没有被设置,fx和fy将会被忽略。

只有fx/fy的比值在计算中会被用到。

CV_CALIB_ZERO_TANGENT_DIST:

设定切向畸变参数(p1,p2)为零。

CV_CALIB_FIX_K1,CV_CALIB_FIX_K6:

对应的径向畸变在优化中保持不变。

CV_CALIB_RATION

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1