前言

机器人的“绑架”问题是指在缺少它之前的位置信息情况下,去确定机器人的当前位姿,例如当机器人被安置在一个已经构建好地图的环境中,但是并不知道它在地图中的相对位置,或者在移动过程中,由于传感器的暂时性功能故障或相机的快速移动,都导致机器人先前的位置信息的丢失,就像人质的眼睛被蒙上黑布条,拉上集装箱被运送到了未知的地方,此时,人质就无法给自己定位了。

        "绑架问题"可以分为初始化绑架和追踪丢失状态绑架。初始化绑架可以阐述为一种通常状况初始化问题,可使用蒙特卡洛估计器,即粒子滤波方法,重新分散粒子到三维位形空间里面,被里程信息和随机扰动不断更新,初始化粒子聚集到/收敛到可解释观察结果的区域。追踪丢失状态绑架,即在绑架发生之前,系统已经保存当前状态,则可以使用除视觉传感器之外的其他的传感器作为候补测量设备。

IMU-惯性传感器

惯性传感器是检测和测量加速度、倾斜、冲击、振动、旋转和多自由度( DoF )运动的传感器。惯性传感器是解决导航、定向和运动载体控制的重要部件。

惯性传感器包括加速度计(或加速度传感计)和角速度传感器(陀螺仪)以及它们的单、双、三轴组合IMU(惯性测量单元),AHRS(包括磁传感器的姿态参考系统)。MEMS加速度计是利用传感质量的惯性力测量的传感器,通常由标准质量块(传感元件)和检测电路组成。IMU主要由三个MEMS加速度传感器及三个陀螺和解算电路组成,即九轴传感器。

惯性传感器能够测量本体的角速度和线性加速度,可以通过标定+积分的方法辅助其他传感器得到进一步的测量信息。

IMU与视觉的对比

使用视觉的方式,不管是稠密的、半稠密的、还是稀疏的,在相机位姿变化过快的时候都必然存在无法匹配的情景,导致先前的位置丢失,简称追踪失败。

IMU可以测得角速度和加速度,由于物理理论基础和物理结构本身的原因,测得量都存在一定的误差。在短时间内能得到较为准确的位姿积分,但长时间积误差会逐渐累积,造成明显的漂移。

相机的位姿转换是基于世界坐标系的,观察到的路标也会在世界坐标系中不断收敛,若不是计算错误,基本上不会产生漂移。而IMU是自身坐标系标定的,在转换到世界坐标系时候一定会产生误差,时序累积必定产生漂移。两种方式的优缺点互补,这就引发视觉SLAM的融合思想,既是SensorFusion。

SensorFusion松绑定和紧绑定

对IMU在视觉融合中所占有的位置和状态变量的耦合程度,可以在算法中设定不同的观测和更新方式。

松绑定:或许可以使用额外的同步时钟,对IMU进行特定短的时间进行积分,获取位姿转换。作为相机转换的初始位姿或者作为"绑架时间"内的视觉补充。在AR眼睛的SLAM算法中,我们使用了松绑定的方法。主要在策略层面进行改进,IMU的位姿积分作为相机的初始优化和转换位姿,并在“绑架时间”内进行单独位姿计算。

紧绑定:或许可以使用另外的同步时钟,把IMU的状态和视觉状态参数进行融合,同步观测和更新。基于滤波的方式典型的紧绑定算法有著名的MSCKF算法。

MSCKF算法

如有不适,请移步原文,或者联系删除

参考文章:MSCKF算法流程框架

1. 初始化

1.1 摄像机参数、噪声方差(图像噪声、IMU噪声、IMU的bias)、初始的IMU协方差、IMU和摄像机的外参数*、IMU和摄像机的时间偏移量*

1.2 MSCKF参数:状态向量里滑动窗口大小的范围、空间点三角化误差阈值、是否做零空间矩阵构造和QR分解

1.3 构造MSCKF状态向量

2.读取IMU数据,估计新的MSCKF状态变量和对应的协方差矩阵

3.图像数据处理

3.1 MSCKF状态向量中增加当前帧的摄像机位姿;若位姿数大于滑动窗口大小的范围,去除状态变量中最早的视图对应的摄像机位姿

3.2提取图像特征并匹配,去除外点。

3.3 处理所有提取的特征。判断当前特征是否是之前视图中已经观察到的特征

是:

3.3.1 如果当前帧还可以观测到该特征,则加入该特征的track列表

3.3.2 如果当前帧观测不到该特征(Out_of_View),将该特征的track加入到featureTracksToResidualize,用于更新MSCKF的状态变量

否:

3.3.4 给该特征分配新的featureID,并加入到当前视图可观测特征的集合

3.4 循环遍历featureTracksToResidualize中的track,用于更新MSCKF的状态变量

3.4.1 计算每个track对应的三维空间点坐标(利用第一幅视图和最后一幅视图计算两视图三角化,使用逆深度参数化和高斯牛顿优化求解),若三角化误差小于设置的阈值,则加入map集合

3.4.2 计算视觉观测(即图像特征)的估计残差,并计算图像特征的雅克比矩阵

3.4.3 计算图像特征雅克比矩阵的左零空间矩阵和QR分解,构造新的雅克比矩阵

3.5 计算新的MSCKF状态向量的协方差矩阵

3.5.1 计算Kalman增益

3.5.2 状态矫正

3.5.3 计算新的协方差矩阵

3.6 状态变量管理

3.6.1 查找所有无feature track可见的视图集合deleteIdx

3.6.2 将deleteIdx中的视图对应的MSCKF中的状态去除掉

3.6.3 绘制运动轨迹

简单分析补充:

1. IMU读取数据时尽量接近当前摄像机图像获取的时间(额外的同步时钟),最好先离线标定IMU的bias(一般是这样的,工程化时应该使用相同批次标定的IMU)

2. 离线标定好摄像机内参数,必要的话把畸变因子也标定出来(内参矫正是必须的)。算法运行时,利用摄像机内参数将图像特征归一化到摄像机坐标系。(PNP)

3. 图像特征选择ORB之类的(提取和匹配速度快,且具有旋转尺度不变性),特征匹配时使用快速鲁棒的方法去除外点(RANSAC)

4. 若当前视角下场景纹理不丰富,提取的特征较少,则调用另一个函数,只利用IMU的读数做EKF更新(绑架问题备选方案-只使用IMU作为追踪方案)

5. 根据摄像机能观察到的track个数,摄像机之间的base长度、角度,确定关键帧,并构造摄像机视图的graph,根据摄像机之间的关系,利用g2o等工具优化摄像机轨迹。(平差方法)。

6. 可以利用并行线程,实时构建地图,并构造DBOW,用于回环检测和重定位(场景识别—模式识别)。

后记

在整个场景重建中,不同尺度的SLAM有不同的意义。SLAM在局部的改进可以使用多传感器融合的思路,在更为宽广的范围内,语义SLAM变得重要,SLAM本身又成为一个小比例的问题。

1. VIO算法总结:视觉惯性里程综述。有代码、有图表、逻辑清晰。MSCKF、VINS、

2. VIO开源框架:VIO目前实现比较好的有vinsmono,okvis,MSCKF。前两个是基于非线性优化的方案而且框架比较相似,后者是基于滤波优化的方案,也是Google Tango上使用的方法,MSCKF目前并没有开源,不过宾夕法尼亚的Kumar实验室18年有一个相似的工作,目前已经开源。此外还有ROVIO。VINS-Mono分析。

三维重建6:绑架问题/SensorFusion/IMU+CV-小尺度SLAM相关推荐

  1. 小R SLAM机器人树莓派3b+ ROS kinetic 环境搭建笔记

    上位机环境搭建基本应该没什么难的,装一个Ubuntu16.04,然后根据ros官方指导来操作即可 http://wiki.ros.org/kinetic/Installation/Ubuntu 树莓派 ...

  2. 无线通信信道的衰落特性(大尺度衰落和小尺度衰落)

    一.为什么会有衰落 相比于有线信道来说,无线信道较为恶劣:移动台既可以处于城市建筑群之间,也可以处于山川.森林和海洋等地形复杂的区域,且由于移动台的移动性,无线电波的衰落特性就更为复杂,具有很大的随机 ...

  3. 信道建模(大尺度、小尺度、莱斯衰落、瑞利衰落、莱斯信道、瑞利信道)

    一.大尺度衰落与小尺度衰落 大尺度衰落由收发两端的距离决定,功率上建模为: 小尺度衰落由收发两端的环境决定,比如是否有遮挡,场景有室内.室外.平原.山村.城镇等,这些环境影响到收发两端是否有直达链路, ...

  4. 大尺度衰落与小尺度衰落

    一. 大尺度衰落 无线电磁波信号在收发天线长距离(远大于传输波长)或长时间范围发生的功率变化,称为大尺度衰落,一般可以用路径损耗模型来描述,路径损耗是由发射功率在空间中的辐射扩散造成的,根据功率传输F ...

  5. 平均路径损耗、小尺度衰落、大尺度衰落的区别

    转:https://blog.csdn.net/zj18066528661/article/details/84236166 https://zhidao.baidu.com/question/541 ...

  6. 无线通信中的小尺度衰落

    以下是自己看书以及从CNTTR等各种网络资源中得到信息,理解过后的观点. 在无线通信中,存在两种衰落,1,大尺度衰落,即由于移动台和基站空间上的距离以及无线电波传播过程中受到建筑物阻挡:2,小尺度衰落 ...

  7. 快衰落,慢衰落,大尺度衰落,小尺度衰落的关系

    引言 学习<无线通信原理>和<移动通信>两门课程的时候一直对各种衰落理不清楚关系,现在闲下来仔细梳理一下,以便后续研究,也供大家参考.指正! 在无线通信中,无线传播是指无线电波 ...

  8. 无线信道衰落(大尺度衰落,小尺度衰落;路径损失,阴影衰落,多径效应,多普勒效应;快衰落,慢衰落)

    无线信道的衰落真是极其容易晕头转向的一点,先求把基础框架理清楚! 一.无线电波传播效应 无线通信信道是一种时变信道,无线电信号通过信道时会遭受来自不同途径的衰落,接收信号总功率表现为路径损失,阴影衰落 ...

  9. 无线信道之小尺度衰落中的快衰落和慢衰落(六)

    从时域上看,无线信道的小尺度衰落可分为慢衰落和快衰落. l 定义 慢衰落和快衰落的定义与信道的相干时间强相关.信道的相干时间是一时间范围,在该范围内两个到达的时域冲击信号具有近似相同的增益.如果信号周 ...

最新文章

  1. 浅析epoll – epoll例子以及分析 - C++爱好者博客
  2. internetreadfile读取数据长度为0_Hadoop 读取数据
  3. EasyUI学习总结(五)——EasyUI组件使用
  4. MyBatis的foreach语句详解
  5. [视频教程] docker端口映射与目录共享运行PHP
  6. Linux文件目录命名规则
  7. django URL路由基础
  8. 高仿蓝奏云单页下载页面源码
  9. 富爸爸系列 -- 《财务自由》学习笔记之三
  10. date在java的那个包_Java—包装类、Date和SimpleDateFormat、Calendar类
  11. 收藏一些web应用,留作DzzOffice日后添加web应用时使用。
  12. 2022 WTM 女性开发者大会邀你开启心旅程
  13. QComboBox选项置灰、不可选择、文本颜色(汉字颜色)
  14. 广域网的基本概念和技术特点
  15. 一个定制CFileDialog对话框的实例
  16. 京东2016春招(实习)笔试+编程题
  17. css3的书本翻页效果
  18. 巴斯卡三角形(Pascal)
  19. 一种基于滑动平均的时间序列滤波方法(Java实现)
  20. 使用第三方软件设置在线客服系统——iBangKF网站免费在线客服系统

热门文章

  1. SpringBoot基础篇AOP之基本使用姿势小结
  2. visitor-访问模式
  3. 企业架构 - ADM方法概要介绍
  4. 【机器学习实战】第4章 朴素贝叶斯(Naive Bayes)
  5. RxJS Functional Programming
  6. Javascript 装载和执行
  7. 第二版全新博客园win phone 客户端
  8. linux vim 配置文件(高亮+自动缩进+行号+折叠+优化)
  9. 1/2 数据获取:本地数据的获取
  10. C# 读取指定目录中的所有文件,并按规则生成SQL语句!