一、前言
视觉SLAM是计算摄像机相对于周围环境的位置和方向,同时映射环境的过程。开发可视化 SLAM 算法并评估其在不同条件下的性能是一项具有挑战性的任务。最大的挑战之一是生成相机传感器的地面实况,尤其是在户外环境中。使用仿真可以在各种场景和相机配置下进行测试,同时提供精确的地面实况。
此示例演示了如何使用虚幻引®模拟为城市街区场景中配备立体摄像机的无人机开发视觉SLAM算法。
二、设置模拟环境
首先,在模拟环境中设置可用于测试视觉 SLAM 算法的方案。使用描绘典型城市街区的场景,将无人机作为被测车辆。
接下来,选择无人机在场景中要遵循的轨迹。你可以按照为虚幻引擎模拟选择航点(自动驾驶工具箱)示例,以交互方式选择一系列航点,然后使用该函数为无人机生成参考轨迹。此示例使用记录的参考轨迹。
UAVVisual Simulink模型使用模拟 3D 场景配置(UAV 工具箱)模块配置了美国城市街区场景。该模型使用模拟 3D 无人机车辆(无人机工具箱)块将无人机放置在场景中。由两个模拟3D相机(UAV工具箱)块组成的立体相机连接到无人机。在“模拟 3D 相机(UAV 工具箱)”块的对话框中,使用“安装”选项卡调整相机的位置。使用“参数”选项卡配置相机的属性以模拟不同的相机。若要估计要模拟的立体相机的内部功能,请使用使用立体相机校准器应用。
三、实现立体视觉 SLAM 算法
立体视觉 SLAM 系统块实现立体视觉 SLAM 管道,包括以下步骤:
-
地图初始化:管道首先使用视差图从立体相机生成的一对图像初始化 3-D 点的地图。左侧图像存储为第一个关键帧。
-
跟踪:初始化地图后,对于每个新的立体对,通过将左图中的特征与最后一个关键帧中的特征进行匹配来估计相机的姿势。通过跟踪本地地图来优化估计的相机姿势。
-
局部映射:如果将当前左侧图像标识为关键帧,则会根据立体对的视差计算新的 3-D 地图点。在此阶段,使用束调整通过调整相机姿势和 3D 点来最小化重投影错误。
-
闭环:通过使用功能袋方法将每个关键帧与所有先前的关键帧进行比较来检测每个关键帧的循环。一旦检测到闭环,就会优化姿势图以优化所有关键帧的相机姿势。
四、运行立体视觉 SLAM 模拟
模拟模型并可视化结果。视频查看器块显示立体图像输出。点云播放器显示重建的 3D 地图以及估计的摄像机轨迹。
五、程序
使用Matlab R2022b版本,点击打开。(版本过低,运行该程序可能会报错)
程序有偿获取:评论区下留言,博主看到会私信你。