SLAM代码(设计模式2)

本文深入探讨SLAM系统的设计,重点解析跟踪器(定位过程)和地图优化(BA)的实现细节。跟踪器通过匹配点计算相机运动,初始化状态涉及相对位姿计算。地图优化涉及位姿和路标点的全局优化,使用BA提升精度。
摘要由CSDN通过智能技术生成

上一个博客中,我们介绍了一些关于slam的前端的设计思想的内容,这里我们继续完成slam的前后端的设计
首先我们给出slam程序中各模块的主要组成部分。

我们先理清楚到底他们干了些什么,然后再说他们怎么实现的。其实吧,现代的CPU对多线程的代码支持的越来越好,因为木法提速,只能多个人(CPU核)干。所以在PTAM把Tracking 和 Maping 分开完之后,大家一下子就觉得这样玩真的不错,一窝蜂都转成这种玩法。

所以按照国际惯例,我们还是把前后端分开处理,前端是一个跟踪器,后端干的事还挺多的,什么建图啊,BA,闭环啊,各种,看着都累。

跟踪器(定位的过程)

跟踪顾名思义就是上一帧里边的点我们特别关心他们现在在哪里,然后呢,怎么直到他们去哪里呢?我们在上一个博客中介绍了有两种方法,一种使用局部范围的直接搜索,另外只用是使用特征描述子进行匹配。匹配正确的点用来计算他们的几何关系,根绝几何关系可以恢复出相机的运动,进而重建出世界中的三维点。这样到来新的一帧之后我们都可以提取到一些新的三维点。另外我们可以对应三维点和图像中的点进行计算相机的姿态。这就是跟踪器的主要目的。

以上内容是假设更踪器在顺利跟踪的时候要干的事,那么问题来了,如果跟踪不顺利或者这就是第一帧那怎么办?
所以我们把跟踪分为三种状态,一种是第一帧,叫做初始状态,其实在单目中第二帧也属于这个状态,因为第一帧什么也干不了,就只能提特征,第二帧来了才有匹配等等。

如果如果跟踪失败,那么这个状态我们成为lost,然后对应的措施是relocalization。 我们看到的那篇posenet就是干这个的。

在跟踪中初始化的时候,计算匹配点的集合关系使用的是的一般是单应矩阵和基础矩阵。
在跟踪时候匹配当前帧和路标点,一个图像中的点,一个三维空间中的点,因此用的是PnP,优化Pose,路标点这里是假设为静止的,只有pose被优化。

那么优化完了,我们可以得到测量数据了,但是为了完成下一次的跟踪,我们还有一些工作要做。
1. update Local KeyFra

SLAM地图构建与定位算法,含有卡尔曼滤波和粒子滤波器的程序 SLAM算法的技术文档合集(含37篇文档) slam算法的MATLAB源代码,国外的代码 基于角点检测的单目视觉SLAM程序,开发平台VS2003 本程序包设计了一个利用Visual C++编写的基于EKF的SLAM仿真器 Slam Algorithm with data association Joan Solà编写6自由度扩展卡尔曼滤波slam算法工具包 实时定位与建图(SLAM),用激光传感器采集周围环境信息 概率机器人基于卡尔曼滤波器实现实时定位和地图创建(SLAM)算法 机器人地图创建新算法,DP-SLAM源程序 利用Matlab编写的基于EKF的SLAM仿真器源码 机器人定位中的EKF-SLAM算法,实现同时定位和地图构建 基于直线特征的slam机器人定位算法实现和优化 SLAM工具箱,很多有价值的SLAM算法 EKF-SLAM算法对运动机器人和周围环境进行同步定位和环境识别仿真 SLAM using Monocular Vision RT-SLAM机器人摄像头定位,运用多种图像处理的算法 slam(simultaneous localization and mapping)仿真很好的入门 SLAM自定位导航的一个小程序,适合初学者以及入门者使用 slam算法仿真 slam仿真工具箱:含slam的matlab仿真源程序以及slam学习程序 移动机器人栅格地图创建,SLAM方法,可以采用多种地图进行创建 SLAM算法程序,来自悉尼大学的作品,主要功能是实现SLAM算法 对SLAM算法中的EKF-SLAM算法进行改进,并实现仿真程序 SLAM的讲解资料,机器人导航热门方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值