一、前言
本示例展示了如何使用虚幻引擎模拟环境中的合成图像数据开发视觉定位系统。
获取基本事实以评估定位算法在不同条件下的性能是一项具有挑战性的任务。与使用高精度惯性导航系统或差分GPS等更昂贵的方法相比,不同场景下的虚拟仿真是一种经济高效的方法来获得地面真相。使用仿真可以在各种场景和传感器配置下进行测试。它还支持快速算法开发,并提供精确的地面事实。
本示例使用虚幻引擎模拟环境来开发和评估停车场场景中的视觉定位算法。
二、概述
视觉定位是估计捕获图像相对于已知场景的视觉表示的相机姿势的过程。它是增强现实、机器人和自动驾驶等应用的关键技术。视觉本地化的管道包括以下内容:
-
地图加载:加载预构建的地图 3-D 地图,其中包含世界点位置以及地图点与关键帧之间的 3-D 到 2-D 对应关系。此外。对于每个关键帧,加载与 3-D 地图点对应的要素描述符。
-
全局初始化:从第一个图像帧中提取要素,并将其与对应于所有 3-D 地图点的要素进行匹配。获得 3D 到 2-D 对应关系后,通过求解透视点 (PnP) 问题来估计世界坐标中第一帧的相机位姿。使用仅运动束调整来优化姿势。与第一帧共享最可重视的三维地图点的关键帧被标识为参考关键帧。
-
跟踪: 定位第一帧后,对于每个新帧,将新帧中的要素与参考关键帧中具有已知三维世界点的要素进行匹配。使用与全局初始化步骤中相同的方法估计和优化相机姿势。通过跟踪与附近关键帧关联的要素,可以进一步优化相机姿势。
三、创建场景
引导车辆进入停车位是一项具有挑战性的操作,依赖于准确的定位。该模型模拟了使用停车场场景中的视觉定位系统。
-
模拟 3D 场景配置(自动驾驶工具箱)模块设置大型停车场场景。子系统将停放的汽车添加到停车场。
-
具有地面跟随功能的模拟3D车辆(自动驾驶工具箱)块控制自我车辆的运动。
-
模拟3D摄像头(自动驾驶工具箱)模块对固定在车顶中心的单眼摄像头进行建模。您可以使用相机校准器应用来估计要模拟的实际相机的内部结构。
-
MATLAB 系统模块实现了视觉定位算法。相对于地图的初始相机姿势是使用函数估计的。随后的相机姿势使用函数估计,并使用函数进行优化。此块还提供预构建地图中估计相机轨迹的可视化。您可以在块对话框中指定预构建的地图数据和照相机内部参数。
四、加载地图数据
预构建的地图数据是使用使用虚幻引擎模拟开发视觉SLAM算法(自动驾驶工具箱)示例中的立体摄像头生成的。数据由三个对象组成,这些对象通常用于管理可视 SLAM 的图像和地图数据:
-
vSetKeyFrame
:一个图像视图集
对象,用于存储关键帧的相机姿势以及 中每个三维地图点的关联特征点。mapPointSet
-
mapPointSet
:一个世界点集
对象,用于存储 3-D 地图点位置以及关键帧中 3-D 点和 2-D 特征点之间的对应关系。三维地图点提供环境的稀疏表示。
五、设置自我车辆和摄像头传感器
你可以按照为虚幻引擎模拟选择航点(自动驾驶工具箱),选择一系列航点,并为飞行器生成参考轨迹。此示例使用记录的参考轨迹。
六、运行模拟
运行模拟并在预构建的地图中可视化估计的相机轨迹。白点表示当前帧中追踪的三维地图点。您可以将估计的轨迹与模拟 3D 摄像机模块提供的地面实况进行比较,以评估定位精度。
七、结论
通过此设置,您可以快速迭代不同的场景、传感器配置或参考轨迹,并在进入实际测试之前优化视觉定位算法。
八、程序
使用Matlab R2022b版本,点击打开。(版本过低,运行该程序可能会报错)
程序有偿获取:评论区下留言,博主看到会私信你。