karto slam的整体流程图
2017-08-11 18:01:57 0 举报
自研slam代码流程
作者其他创作
大纲/内容
是否为第一帧激光
否
在另外一张流程图上对扫描匹配进行详细分析!!!
karto slam代码阅读流程图
获取上一帧激光pLastScan判断其是否为NULL?
根据上一帧位姿和本帧的里程计位姿来初始化本帧的correctedPose位姿pLocalizedObject-SetCorrectedPose(lastTransform.TransformPose(pLocalizedObject-GetOdometricPose()))
创建基于G2O的后端优化对象G2oSolver* solver=new G2oSolver();
返回
将本关键帧加入到局部维护的runningscan帧链中m_pMapperSenaorManager-AddRunningScan(pScan)
是
将本关键帧做为顶点加入到位姿图m_pGraph-AddVertex(pScan)
将本帧加入到传感器管理器m_pMapperSensorManager-AddLocalizedObject(pLocalizedObject)
在另外一张流程图上对回环检测进行详细分析!!!
将本帧设置为上一帧m_pMapperSensorManager-SetLasScan(pScan)
设置后端优化对象到mapper对象mapper-settScanSolver(solver);
获得当前激光帧的里程计位姿laserScan-SetOdometricPose(kartoPose);
创建一个MuYeMapper对象MuYeMapper* mapper=new MuYeMapper();
初始化Initialize(pLaserRangeFinder-GetRangeThreshold());分别创建了ScanMatcher对象,传感器管理器对象,以及位姿图对象
激光回调函数receiveLaserScan
处理当前激光帧success=muye_Mapper-Process(laserScan);
更正当前激光帧的正确位姿pScan-SetSensorPose(bestPose)
等待下一帧激光
进入构造函数
开始
创建一个OpenMapper对象new karto::OpenMapper(true);本对象主要包含了扫描匹配器ScanMatcher、传感器管理器MapperSensorManager、后端优化ScanSolver以及位姿图Graph
success成功与否?
处理创建好的激光传感器设备muye_Mapper-Process(mLaser);
do nothing!等待下一帧激光
收藏
0 条评论
下一页