随着人工智能技术的迅猛发展,智能无人机在多个领域取得了显著的应用成果,从日常消费生活到文体娱乐,再到军事领域,无人机的身影日益增多。
然而,我国无人机的发展仍面临诸多挑战。尤其是在实际飞行过程中,无人机遇到的主要问题集中在定位和场景重构上。这些问题涉及无人机领域的一项热门研究——同时定位与地图创建(Simultaneous Localization and Mapping, SLAM)。视觉SLAM利用相机作为传感器,为无人机提供三个关键的导航信息:“我在哪里?”“周围环境是什么样的?”以及“我要去哪里?”这些信息具体可以归结为定位、建图和路径规划问题。这些参数在许多实际系统和应用中都起着重要作用,例如扫地机器人、无人驾驶汽车、虚拟现实技术和智能机器人等领域。
根据相机类型的不同,视觉SLAM有不同的实现方案。最常见的相机是单目相机,智能手机通常配备的就是这种相机,它具有结构简单、成本低和扩展性强的优点。另一种是双目相机,类似于人类的双眼,通过计算两幅图像的视差来确定距离,对三维重建有很好的支持作用。
根据位姿解算方式的不同,视觉SLAM可分为特征法和直接法。特征法主要通过提取和匹配图像中的特征来估计形状变量,可使用的特征包括点、线、面等。直接法则通过优化图像间的光度误差来计算位姿,省去了耗时的特征提取过程。
然而,单一传感器的使用往往会导致系统存在缺陷,因此各种相机组合导航方案应运而生。这些方案包括惯性测量单元(Inertial Measurement Unit, IMU)、轮式里程计和磁强计等多种传感器与相机的组合。其中,相机与IMU的组合方案效果尤为显著,原因如下:
相机在快速运动时难以持续获得清晰图像,而IMU在这种情况下仍能正常工作。IMU对短时间内运动的估计效果良好,在相机失效时仍能提供准确的估计,从而保证系统的稳定运行。
相比于IMU,相机的输入基本不会产生漂移。即使相机没有移动,SLAM估计的位姿变化也为零。但IMU由于测量惯性数据,长时间工作后会产生漂移,累积较大的误差。
当图像发生变化时,相机难以判断是自身运动还是周围环境变化。而IMU可以感知自身的运动信息,从而对相机进行补偿。
综上所述,视觉-惯性里程计(Visual Inertial Odometry, VIO)的研究取得了显著进展,但当长期工作于低纹理区域时,相机难以实现精确的跟踪定位,系统精度难以保障。
此外,考虑到现实场景中除了点特征外还存在大量结构化的线特征,结合这两种特征形式的VIO系统逐渐受到关注。这种VIO系统能够更稳健地提取场景中的点和线,有效避免了因特征缺失导致的精度下降。在建图方面,稀疏的特征点地图难以有效恢复环境信息,而加入线特征约束的VIO系统则可以更详细地还原周围场景,这对于导航、避障和场景重构具有重要意义。
通过上述简要了解,我们对VIO有了初步的认识。那么,VIO的研究现状和发展如何呢?让我们一起来看看:
相机的数据输入频率一般为几十赫兹,而IMU的输入频率可高达几百到几千赫兹。为了获得高精度的导航信息,需要解决数据频率对齐的问题。对此,Christian Forster在2016年发表的文章中提出了一种名为预积分的数据处理方法,这种方法的核心思想是将两关键帧间的IMU数据整合,以得到频率一致的传感器输入。在此基础上,越来越多的学者对VIO进行了研究。
根据是否将相机和IMU的形状构建到一个形状变量中,VIO可分为紧耦合方式和松耦合方式;根据后端的数据解算方式,VIO又可分为基于滤波和优化方法的两种。MSCKF是紧耦合滤波方法的经典系统,通过构建滑动窗口的方法保证窗口内各个图像帧的位姿被它们共同观测到的特征点所约束,并在此基础上使用扩展卡尔曼滤波器(Extended Kalman Filter, EKF)预测和更新系统的完整形状变量,从而提升系统精度和稳定性。
ROVIO同样是紧耦合的EKF方法,通过计算图像块的像素强度误差来完成定位,是直接法VIO的成功实现。SSF方法则是松耦合的滤波方法,系统将两个传感器划分为不同的模块,分别对应VIO的运动方程和观测方程,之后使用扩展卡尔曼滤波器将两模块的数据融合。然而,基于滤波方法的VIO设计方法都默认当前时刻状态只与上一时刻相关,隐含了一阶马尔科夫性,这在一定程度上导致了系统误差的累积,不利于长期作业。
得益于21世纪以来SLAM稀疏性的发现以及计算机硬件性能的提高,学者们开始将研究重点转向基于优化方法的VIO系统。松耦合优化方法的VIO将IMU和相机视为两个独立的模块分别解算导航信息,之后将SLAM解算的姿态送入IMU模块进行优化求解。紧耦合框架下的VIO系统考虑了形状变量间的内部关系,因此在定位精度上具有明显优势。Leutenegger等人提出的OKVIS给出了紧耦合优化VIO系统的完整理论推导和工程实现,采用基于特征点法的前端跟踪稳定的图像位姿,后端使用ceres库进行优化,具体推导了形状边缘化的理论,设计了基于滑动窗口优化法的系统运行策略。
国内学者在VIO系统的研究上也取得了丰硕的成果。香港科技大学开发并开源的VINS系统采用低成本的IMU与相机组合,提出了一种鲁棒的初始化方法并给出了重启方案,该系统无论是在无人机导航、大规模场景的定位还是移动设备上的增强实现都达到了实时表现。百度开源的ICE-BA对VIO的后端优化进行了改进,拆分优化方程的增量矩阵以允许使用更多的观测量来提高系统精度并保证求解效率。还有一些研究团队,在位姿图优化的基础上提出了一种改进的回环检测算法,降低了错误匹配的概率,增强了系统的鲁棒性。
尽管视觉SLAM和其组合导航系统VIO的发展迅速,但该领域的完善程度不断提高,优秀系统层出不穷。然而,考虑到运行环境中存在的各种挑战和困难,VIO系统也面临着自身的局限性。例如,在EUROC数据集中,MH03medium序列拍摄于苏黎世联邦理工学院的一个厂房内,可以看到在同时运用点线特征提取方法对图像进行特征采集时,在纹理缺失严重的平面上很难提取到特征点,而线特征的采集效果更好。这说明在该环境下单纯依赖点特征约束相机运动未必能达到最佳效果。基于线特征的SLAM和VIO系统逐渐完善。
早在1997年,J.Neira就利用竖直的直线特征构建了一种基于线特征的SLAM系统,使用扩展卡尔曼滤波器(EKF)框架执行后端的形状估计与更新并维护2D环地步图。Paul Smith用两个端点表示特征线段,在小规模场景下有不错的效果。基于线特征的SLAM与传统的点特征SLAM有许多相似之处。Vakhitov对此进行了描述和推导,类似于特征点SLAM解算帧间位姿变换的方法,将3D-2D帧间位姿计算方法PNP算法推广至特征线SLAM中的PNL算法。这种方法可以自然地将OPNP和EPNP转化为线特征的情况,在仿真结果中可以看出,加入线特征约束的SLAM定位方法相比纯特征点SLAM具有更高的精度。
目前,国内学者也在点线VIO的研究上取得了显著进展。中科院自动化研究团队首次提出了PL-VIO系统,通过LSD(Line Segment Detector)方法检测图像中的线特征信息,使用紧耦合的优化方法进行信息融合并建立滑动窗口模型,通过滑动窗口内的IMU预积分约束和点线约束高效地执行计算。与当前先进的VIO系统相比,PL-VIO在定位精度上有出色表现。后来有专家提出了SVIPL-SLAM,这是一种在双目相机上实现的VIO系统,该系统基于ORB-SLAM2构建,采用了非常精细的关键帧选择机制以保证系统性能。
接下来,我们来谈谈VIO与VO的区别。VO系统中只有摄像机一个传感器,摄像机在快速运动、光照变化等情况下容易失效,难以捕捉到有效的图像特征。如果使用的是单目相机,还会遇到以下问题: 1. 无法获得环境的深度信息,获取的物体信息并非实际物理尺寸。当相机进行近似旋转运动时,三角化算法会退化,导致特征点跟踪丢失。 2. 估计出的位姿是相对于第一帧图像的位姿,而非相对于地球水平面的位姿,而后者才是导航中真正需要的位姿。这意味着这种位姿估计方法无法与重力方向对齐。
相比之下,惯性测量单元可以高频地获得智能设备内部的运动信息,并且不受周围环境的影响,从而弥补了单摄像机传感器的不足。引入惯性测量单元可以很好地解决上述问题: 1. 将IMU估计的位姿序列与相机估计的位姿序列对齐,可以估计出相机轨迹的真实尺度。 2. IMU可以很好地预测图像帧的位姿以及上一时刻特征点在下一帧图像的位置,提高特征跟踪算法的匹配速度和应对快速旋转的算法鲁棒性。 3. 最后,IMU中的加速度计提供的重力向量可以将估计的位置转换为实际导航所需的地球水平面位置。
这两个传感器之间具有互补性。相机可以获取丰富的环境信息,通过视觉匹配完成回环检测与校正,从而有效修正惯性测量单元的累计漂移误差。
除了VIO系统的摄像机与IMU融合技术,还可以考虑多传感器融合方案,以解决因传感器不足而产生的问题。例如,可以考虑使用GPS/北斗+IMU+摄像头+激光雷达的方案,多传感器融合可以提供更多更准确的信息。
随着人工智能技术的崛起,我们对视觉SLAM的研究越来越深入,对相关工具的需求也越来越大。一些企业经过深入调研和研究,开发出了一套非常适合教学和研究开发人员使用的双目视觉SLAM平台。
该平台由视觉开发平台、信息交互与任务控制平台、无人机系统等组成。视觉SLAM的位姿估计模块实时获取双目相机的图像信息和IMU的位姿信息,然后通过视觉惯性融合算法计算出相机的深度信息、位置信息和运动姿态信息,并转换为实时位姿信息。最后,通过无人机位姿解算算法将相机的位姿信息转换为无人机的位姿发送给无人机,实现无人机的自主定位。该平台支持GPU加速技术,大幅提升运算速度与精度。基于词袋技术构建视觉SLAM回环检测模块,使视觉SLAM计算出的位姿信息更加准确。相机发布的三维点云信息可用于获取无人机与障碍物之间的距离,并通过自主导航避障算法生成可执行路径,实现无人机自主导航避障功能。
平台操作简单,提供了完整的开发框架和实例,如完整的无人平台控制、通信链路、视觉图像采集、图像识别、三维重建、定位解算等软件算法解决方案。此外,它还提供了VIO、LocalPlanner等多种实例程序,用户只需简单配置即可完成完整的自主定位、自主建图、自主导航、自主避障等功能。
平台完全从用户角度出发,以提高用户开发效率为主要目标,省去了用户从头搭建开发平台的繁琐工作。所提供的硬件均提供完善的二次开发接口和实例代码,并支持C++、Python、ROS、Matlab等多种开发接口。
平台提供了一整套基于机器视觉的无人平台自主导航避障系统软件开发体系,包括我们之前提到的VIO定位开发框架、MAVROS无人机二次开发SDK、自主导航避障框架、视觉仿真环境等。
对于教研工作者而言,这套平台在实际教学中也能发挥重要作用。从教学角度来看,该平台不仅包含硬件平台,还包括软件平台,可以完成SLAM理论教学和硬件实操。它还配备了全套基于该平台的SLAM原理讲解教材和实验指导书,包括课程PPT及操作指导视频,相关示例算法等,可快速展开相关课程设计,进行实践教学。
在该平台上,可以开设以下实验课程: 1. SLAM教学; 2. 视觉SLAM硬件平台介绍; 3. 视觉SLAM软件平台介绍; 4. 相机原理、点云原理、GPU加速原理简介; 5. 飞思视觉SLAM平台支持的视觉SLAM架构,包括VINS、ORB_SLAM和Rovio,降低学校教师或学生学习SLAM的门槛; 6. 视觉SLAM主流技术介绍,包括多传感器融合算法、KLT光流算法、双目VIO; 7. 视觉词袋技术介绍; 8. 回环检测技术介绍,包括重定位技术、全局位姿估计技术; 9. 无人机通信技术,包括Mavlink和Mavros介绍; 10. 自主导航避障算法介绍; 11. 飞思视觉SLAM平台应用实例介绍; 12. 航线飞行实例,自主导航避障实例。
SLAM技术源于1986年,当时Peter Cheesman首次提出了基于概率统计学的机器人定位与建图方法,这种方法运用贝叶斯理论估计机器人位置的最大后验概率。许多学者在会议上积极讨论这一方案后,认为基于概率的定位方法具有很高的研究价值。此后,一些重要的研究成果相继发表,确立了基于概率方法的机器人定位技术的重要地位。与此同时,计算机视觉技术迅速崛起,SLAM问题从早期使用里程计、超声波和激光雷达的方案逐步转向基于相机的视觉SLAM方向,一些具有代表性的方案也随之出现。关于SLAM的研究成果相信也将不断涌现。