Stereo Visual Simultaneous Localization and Mapping

链接:

Stereo Visual Simultaneous Localization and Mapping - MATLAB & Simulink - MathWorks 中国

摘要

视觉同时定位与地图构建(vSLAM)是指在构建环境地图的同时,计算相机相对于其周围环境的位置和方向的过程。该过程仅使用相机的视觉输入。vSLAM的应用包括增强现实、机器人技术和自动驾驶。

vSLAM可以通过仅使用单目相机来实现。然而,由于单目相机无法准确计算深度,地图的尺度和估计的轨迹在时间上会不断漂移。此外,为了引导系统,需要多个视角来生成初始地图,因为它无法从第一帧进行三角测量。使用立体相机可以解决这些问题,并提供更可靠的vSLAM解决方案。

本示例演示了如何从立体相机处理图像数据,构建室外环境的地图,并估计相机的轨迹。示例使用ORB-SLAM2 [1]算法的一个版本,该算法基于特征,并支持立体相机。

Overview of Processing Pipeline

双目vSLAM的流程与单目vSLAM的流程在“单目视觉同时定位与地图构建”示例中非常相似。主要区别在于,在地图初始化阶段,3D地图点是从同一立体图像对的一对立体图像中创建的,而不是来自不同帧的两个图像

  • Map Initialization: 流程首先通过使用视差图从一对立体图像中初始化3D点的地图。左图像被保存为第一个关键帧。
  • Tracking: 一旦地图初始化完成,对于每一对新的立体图像,通过将左图像中的特征与最近的关键帧中的特征进行匹配,估计相机的姿态。估计的相机姿态通过跟踪局部地图进行细化。
  • Local Mapping: 如果当前的左图像被识别为关键帧,新的3D地图点将通过立体图像对的视差计算得到。在这个阶段,使用束调整来通过调整相机姿态和3D点来最小化再投影误差。
  • Loop Closure: 通过使用特征包的方法,将每个关键帧与所有之前的关键帧进行比较,检测回环。一旦检测到回环闭合,将优化位姿图以细化所有关键帧的相机姿态。

Download and Explore the Input Stereo Image Sequence

本示例中使用的数据来自多伦多大学航空航天研究所提供的UTIAS长期定位和建图数据集。您可以通过Web浏览器下载数据到一个目录,或者通过运行以下代码来获取数据:

dataFolder   = [fullfile(pwd), filesep, 'stereoImageData'];
zipFileName  = [dataFolder, filesep, 'run_000005.zip'];
folderExists = exist(dataFolder, 'dir');

% Create a folder in the current directory to save the downloaded file
if ~folderExists  
    mkdir(dataFolder); 
    disp('Downloading run_000005.zip (818 MB). This download can take a few minutes.') 
    !wget ftp://asrl3.utias.utoronto.ca/2020-vtr-dataset/UTIAS-In-The-Dark/run_000005.zip -P ./stereoImageData -nv

    % Extract contents of the downloaded file
    disp('Extracting run_000005.zip (818 MB) ...') 
    unzip(zipFileName, dataFolder); 
end

--------------------------------------------

多伦多大学航空航天研究所在2020年公开的双目SLAM数据集

UTIAS Long-Term Localization and Mapping Dataset

--------------------------------------------

连接:ASRL // In the Dark and Multiseason (utoronto.ca)

Hardware

这两个数据集是在Clearpath Robotics Grizzly机器人实用车辆上进行的采集。一台Point Grey Bumblebee XB3立体相机被刚性地安装在Grizzly车辆上的支架上。XB3相机提供了0.24米的基线和512 x 384的分辨率。完整的立体图像流以16 Hz的频率采集,但已经进行了降采样,约每0.2米行驶提供一个立体关键帧。在黑暗数据集的夜间穿越过程中,车辆下方刚性安装了前灯,用于照亮场景。部分黑暗数据集的运行期间,GPS设备记录了低精度的GPS数据(尽管未用于辅助自主穿越)。

相机参数可以在camera_parameters.txt文件中找到。

描述车辆坐标系到相机坐标系的刚性变换矩阵,T_camera_vehicle,在transform_camera_vehicle.txt文件中给出。

描述车辆坐标系到GPS坐标系的刚性变换矩阵,T_gps_vehicle,在transform_gps_vehicle.txt文件中给出。

 Description of Data Products

POSE GRAPH(位姿图)

要想使用数据集,首先下载Teach runrun_000000以及其他所需的重复运行。Teach run中的关键帧已经通过视觉里程计定位到下一个Teach run的关键帧。所有重复运行的关键帧都通过视觉定位回到Teach run。数据集中任意两个顶点之间的相对变换可以通过穿过Teach run的位姿链来找到。

注意:在位姿图中拓扑上相近的顶点之间的变换可以被认为是非常准确的,但是在远离的顶点之间的变换不应被依赖。

下图展示了位姿图的形式,其中点表示顶点,箭头表示变换。顶点ID元组中的第一个数字表示运行编号,第二个数字表示在该运行中的位姿编号。

Example pose graph

Helpful Tools

本节为每个运行提供单独的压缩文件,其中包含立体图像以及转换、时间戳和GPS测量(如果有的话)的文本文件。还提供了Python下载脚本,以帮助下载大量数据集。在下载之前,还提供了每个运行的视频预览,以快速查看天气和光照条件。注意:Multiseason数据集中的一些运行不构成完整的循环。

重要提示:此数据集提供ftp下载链接。一些浏览器不再默认启用ftp链接,如果您想使用浏览器下载,需要更改浏览器的设置。使用wget命令或下载脚本是避免使用浏览器下载的替代方法。

跳转到Multiseason(多季节数据集)。

场景类型序列起止号备注
IN THE DARK
000000-000038黑暗的场景
MULTISEASON
000000-000135包含春、夏、秋、冬和上午、中午、下午的组合

示例图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
基于无迹二重四元数滤波的立体视觉SLAM 立体视觉SLAM是一种通过使用多个相机来同时感知环境并计算相机位姿和地图的技术。其中,无迹二重四元数滤波是一种用于姿态估计的滤波方法。 无迹二重四元数滤波是一种扩展了基于四元数的卡尔曼滤波的方法,用于在立体视觉SLAM中对相机的位姿进行估计。它通过将姿态表示为一个实部和一个虚部四元数来进行计算。其中实部表示旋转的主轴,并且虚部表示旋转的偏差。这种扩展的滤波方法可以同时估计旋转和平移分量,对于立体视觉SLAM中的运动估计非常有用。 在使用无迹二重四元数滤波进行立体视觉SLAM时,我们基于视觉传感器获取的立体图像来提取特征点,并使用这些特征点来计算相机的运动。然后,通过使用无迹二重四元数滤波来对相机的位姿进行估计,并递推地构建地图。这个过程根据特征点间的匹配和相机的移动来估计相机的轨迹,并同时估计地图的三维结构。 无迹二重四元数滤波在立体视觉SLAM中有着许多优点。首先,它能够同时估计相机的旋转和平移,提高了位姿的准确性。其次,它能够通过使用四元数来表示姿态,减少了计算量。最后, 通过对滤波器进行适当的观测噪声建模和状态转移噪声建模,可以提高系统的鲁棒性和稳定性。 总而言之,基于无迹二重四元数滤波的立体视觉SLAM可以准确估计相机的位姿和三维地图,并在许多应用领域中有着广泛的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值