关于英特尔实感技术Visual SLAM和T265追踪摄像头的介绍
来源:映维网 作者 颜昳华
英特尔于2019年正式推出了实感追踪摄像头T265。这款最新的内向外追踪设备采用了专有的V-SLAM视觉技术(视觉惯性测距即时定位与地图构建;visual inertial odometry simultaneous localization and mapping),可在边缘执行计算任务,并为需要高精度低延迟追踪解决方案的用例提供强大的基础,如增强现实和虚拟现实,以及机器人和无人机。
英特尔实感追踪摄像头T265采用了Movidius Myriad 2视觉处理单元(VPU),可直接在设备上处理追踪所需的数据。这使得T265成为一种尺寸小、功耗低的解决方案,可帮助开发者轻松利用现有的设计或自行构建需要丰富视觉智能的产品。
英特尔实感追踪摄像头T265适用于需要精确位置追踪的用例,尤其是缺乏GPS服务的地方,如仓库或远程室外区域。T265的设计同时考虑了灵活的实施应用,可轻松添加至机器人和无人机等小型设备,以及支持移动设备或AR头显。
下面这篇博文将向大家介绍关于Visual SLAM技术和T265追踪摄像头。
1.介绍
位置感知可以说是在3D世界中生存和导航所需的最基本和最重要的感觉之一。移动,觅食以及回巢的能力深深植根于所有动物的基因之中,所以机器人技术面临的挑战是:“我们如何以电子方式模仿,甚至增强这种先天能力?”在计算机科学领域,这项研究通常称为“即时定位与地图构建”或SLAM。它涵盖了对仪器和算法的研究,尝试解析代理(机器人或自动驾驶 汽车 )在3D空间中的位置和方向,同时创建和更新未知周遭环境的“心理”映射。有人会将其称为对环境的“内向外”追踪,将其与“内向外”的动捕(mo-cap)或通过周围固定摄像头阵列实现的对象追踪区别开来要。对于大多数应用而言,SLAM最重要的方面之一是能够完全追踪所有六个自由度,这意味着一个人自己的空间位置(X,Y,Z),以及角度方向(纵摇/Pitch、横摇/Roll和垂摇/Yaw)。
今天市场确实存在针对受限映射问题的成熟解决方案。例如,全球定位系统(GPS)和辅助导航现已十分普及,几乎每台移动设备都嵌入了接收器,从根本上消除了学习如何阅读和导航地图的需求。但GPS的精度目前限制在大约10米。另外,更新速率相当慢,大约是10Hz,并且只能支持户外,因为它们需要接收来自GPS卫星的电子三角测量信号,同时山脉和建筑物的反射会造成多径干扰。近年来,另一个真正取得了惊人发展的传感器是惯性测量单元,即IMU。它由陀螺仪和加速度计组成,通常包含微小的集成MEMS(微机电系统)组件,能够快速测量其自身方向和加速度的变化。这种组件现在已经融入至每台移动设备之中,而你可以单独购买,价格约为1美元。在价格,功率和尺寸频谱的其他范围内,激光雷达(LiDAR)在开发全自动驾驶汽车的竞赛中变得非常受欢迎。LiDAR通常由旋转/扫描激光束组成,它们采用短光脉冲或频率调制,以毫米级精度测量到周围对象的距离。
我们今天重点关注的技术称为视觉惯性里程计(VIO),它实际是最接近大多数动物感知世界方式的电子等效方案:将CMOS传感器充当感知周围环境的眼睛;IMU作为内耳来感知平衡和方向;以及一个充当大脑,将信息融合到瞬时位置和映射中的计算组件。VIO已成为近年来最有前景的SLAM技术之一,并且算法和变体正在不断发展和改进。例如,当今大多数增强现实/虚拟现实头显(包括微软HoloLens,Oculus Quest或Magic Leap One)和智能( 苹果 AR Kit和谷歌AR Core)都通过自家的VIO版本来精确且低延迟地追踪设备的完整六自由度。另外,VIO现在开始在机器人技术中获得越来越广泛的采用。与现有的激光雷达解决方案相比,VIO系统体积更小,成本和功耗更低,并且它们可以通过根据视觉特征来识别并重新定位其在大范围映射中的位置,从而提供了卓越的重新定位潜力。
在接下来的章节中,我们将进一步探讨VIO的工作原理,并将介绍旨在作为AR/ VR 头显,机器人和无人机等用例的完整交钥匙嵌入式SLAM传感器解决方案的英特尔实感摄像头T265和追踪模块T261。我们将解释关键的SLAM系统性能指标,并且将展示如何轻松通过Intel RealSense Viewer入门T265摄像头,并使用开源的Intel RealSense SDK实现程序接口。这份本白皮书旨在作为简要的介绍和综述,而深入的细节则交由其他技术文档。
图1:经验丰富的水手曾经根据星星进行航行(A)。视觉惯性测距法尝试实现低延迟,高速,稳定和准确的完整六自由度追踪,并将其用于机器人(B)和AR/VR头显(C)。
2.关于视觉惯性里程计的初学者指南
学习视觉惯性测距法的最佳方法是首先理解“视觉”方面。这个核心概念可以追溯到指南针和GPS之前的时代,亦即人类按照星星进行导航的日子,如图1A所示。通过识别特殊的星星,人们通常可以使用查找表来确定北面(即方向)并计算自己的纬度和经度(即位置)。
在计算机视觉中,我们努力以最快,最可靠的方式完成相同的任务。我们首先拍摄周围环境的电子照片。它通常包含数百万个像素,所以我们使用“特征检测算法”将信息内容立即压缩到基本只剩下几百个命名点的程度。换句话说,现在图像替换为包含数个白点的黑色图片,而每个白点都有相同的标识,就如同在晚上看向天空一样。什么是“特征”呢?例如,特征可以是“图像的所有边角”。实际上,这是一个非常活跃的研究领域,特征检测算法比比皆是:SIFT,LIFT,Harris Corner,Shi-Tomasi corner,ORB,BLOB,SURF,KAZE,FAST等。一旦检测到特征,算法将为每个特征赋予“描述符”或“特征向量”,从而实现“命名”。我们对接收到的每个新图像帧重复这一过程,并使用特征追踪算法比较并追踪连续帧(或特定关键帧)中的特征。我们强调每个特征都映射到3D空间,不仅仅只是二维。图2是包含检测特征的图像示例。
图2:Harris Corner Features的示例。
其效果十分出色,但行业正在不断带来先进的解决方案。例如,单个摄像头(Mono-SLAM)的问题之一是它无法合理地解决缩放问题。如果将摄像头向前移动1米,则无法将观察到的运动与1米相关联,因为它可能恰好为1厘米。两种最常见解决方案是使用校准的立体摄像头或IMU。另一个重大挑战是如何实现高帧速率和低延迟追踪。尽管可以以更高帧速率运行摄像头传感器,但相关算法的计算成本非常高昂,而且运行速度越快,所能获得的光线就越少。事实证明,一种更好的工程设计方法是采用一种能够在短时间内(10毫秒内)追踪速度和方向的高速IMU,但如果长时间运行,严重的漂移就会出现,达数秒钟之多。IMU的纳入实际上是VIO中出现“I”/“惯性”的原因。表1总结了视觉里程计和IMU里程计的互补。另外,如果传感器是接入到提供里程计读数(如速度)机器,则里程计读数可以用来提高追踪精度。最后,由于追踪的主要前提是能够看到特征,所以大多数系统都会使用具有非常宽视场的光学传感器,以便可以看到尽可能多的特征。当传感器靠近本身没有任何特征的白墙时,这特别有用。利用鱼眼镜头,即便是非常靠近无特征物体,系统都应该可以追踪视觉外围的特征。
表1:视觉里程计和IMU里程计技术相互补充。特别是,IMU数据的可用频率高于视觉里程计。另一方面,单纯的IMU数据会随着时间推移而产生大量的汇总漂移,而这可以通过视觉里程计的不频繁更新进行校正。再者,视觉里程计依赖于场景中的特征存在,IMU则相对独立于环境。
总而言之,当前最好的解决方案倾向于将来自多个鱼眼成像器的信息,以及来自IMU和/或设备里程计的传感器读数(若存在)结合起来。然后实时融合所有信息,并以极低的延迟追踪传感器的六自由度。图1B和1C是分别采用这类嵌入式传感器来对机器人和AR/VR头显进行六自由度自我追踪的示例。
图3:英特尔实感追踪摄像头T265是一个完整的嵌入式SLAM解决方案,它使用视觉惯性里程计来计算其在3D空间中的方向和位置,亦即六自由度。
如图3所示,英特尔实感追踪摄像头T265是一个完整的独立解决方案,它根据VIO并利用最新的算法来输出六自由度追踪。硬件设计包括一组宽视场的立体鱼眼镜头,其中165度左右的圆形视场可通过大约800像素直径的单色全局快门摄像头捕获。它同时集成了硬件同步的Bosch BMI055 200Hz陀螺仪和62.5Hz加速度计,以及功能强大的英特尔Movidius Myriad 2视觉处理单元(VPU)。嵌入式处理器可运行整个SLAM算法,分析立体图像,以及将所有传感器信息融合到六自由度追踪中,并且仅消耗不到1.5W的功率。摄像头姿态信息通过USB以200Hz的速率提供,并且可以利用开源Intel RealSense SDK轻松地接入几乎任何的主机平台(我们将在第4节进行叙述)。
这款设备适用于寻求省心的独立SLAM系统的客户。对于希望自行开发或部署追踪算法的客户,你可以从T265获取原始数据(摄像头和IMU),或者以英特尔实感深度摄像头D400系列作为基础,后者可提供类似的传感器功能(但视场较小),并输出深度映射。但需要注意的是,任何SLAM算法都需要在主机平台运行,不属于嵌入式,而这会增加目标平台的重量,功耗预算和成本。
3.性能指标
要对六自由度追踪器的性能进行基准测试,最广泛使用的关键性能指标(KPI)是“Drift(漂移)”和“Floor Position Error(地面位置误差)”。漂移是未激活重新定位时在“未知”环境中的累积误差。我们将其计算为每行进路径长度的错误百分比。地面位置误差是在激活重新定位时地面报告位置与已知环境中的实际位置相比的均方根误差。我们以厘米为单位。
图4.:SLAM运动轨迹误差示例,你可以看到Ground Truth和估计位置(2D)。我们可以从这种类型的数据记录中测量诸如地面位置误差和漂移之类的KPI。
对于优秀的SLAM系统而言,一个极其重要的特点是它能够重新定位到已知或预先生成的映射。有时这会称为解决“绑架机器人问题(Kidnapped Robot Problem)”。当机器人初次通电时,或者如果断电,又或者在运动过程中长时间遮挡其视线,传感器可能会失去对位置的追踪。如果它里面存在映射,则重新定位错误描述系统识别先前环境并将自身重新放置在所述映射的能力。这对于大规模运动追踪或跨多个房间的运动追踪尤为重要。一个优秀的系统能够以厘米的绝对精度进行重新定位,并选择以预定的节奏频繁地重新定位。特征映射生成的另一个重要方面是,映射是否可以在多个代理之间共享。例如,理想情况是允许任何机器人或自动驾驶汽车都可以受益于另一个机器人为所述区域生成的映射。所以,每个机器人不仅必须能够捕获映射,而且需要能够导出和共享映射。更重要的是,每个机器人所检测到的特征应该看起来相同。T265允许这种协作映射。
另外两个性能标准是主机CPU使用率和内存使用率。由于T265 SLAM算法是由设备本身运行(即嵌入式视觉处理器),所以即便是运行在性能较弱的平台,它都很少使用这两种算法,从而为其他应用程序保留空间和计算能力。
有关目标KPI,请参考T265数据表。
4. T265入门
4.1 校准与初始化
T265追踪摄像头已在制造工厂进行过校准,你可以从Intel RealSense SDK中获取所述参数。或许会有参数在启动时发生变化,所以T265中的算法会在启动时对其进行估算。它假定设备在启动时没有移动,并且仅在设备已充分移动时返回“高”置信度,从而帮助估算内部参数。非常慢和非常快的移动都会阻碍初始化,所以应该予以避免。
4.1a 安装注意事项
设备应牢固地安装在目标平台。为了方便操作,外壳背面提供两个M3螺孔。在传感器可能会经受高振动(如无人机)或临时性冲击(例如机器人)的用例中,最好将T265固定在减振支架之上。
为了牢固地接到Micro USV 3数据线,T265同时提供了M2螺孔,所以你应该尽可能使用所述螺孔以防止USB断开连接。
4.1b 坐标系
T265提供的姿态是相对于两个摄像头的中心进行提供,如图4b所示。然后,所述姿态从这一参考系转换到以起始位置为中心的重力对齐参考系,Y指向上方,-Z相对于初始摄像头轴指向前方,X指向右方(参见图4c)。
对于一项应用,你通常需要知晓T265以外的其他对象的姿势。例如在VR头显中,你或许希望知道渲染中心的位置。T265和目标坐标系之间的转换应仔细测量并应用。
应用或许同时希望在未来的某个时间点知晓位置信息,如计划渲染VR场景的下一帧时。Intel RealSense SDK提供了一个称为“pose-predict(姿态预测)”的示例,它说明了如何使用T265的速度和加速度估算来预测将来的设备位置。
图4b:T265的坐标系。Intel RealSense SDK可以提供传感器之间的精确转换。
图4c:T265的原点坐标系
4.1c 时间戳
T265以RS2_TIMESTAMP_DOMAIN_GLOBAL_TIME报告所有传感器的时间。这采用了主机和T265之间的时间同步机制,以毫秒为单位的精确主机时钟时间提供所有传感器数据时间戳。
4.2 Intel RealSense Viewer
熟悉T265追踪摄像头的最佳方法是运行包含在Intel RealSense SDK 2.0中包含的Intel RealSense Viewer应用。它通过图形用户界面可视化姿态输出。有关更多信息和代码示例,请参阅Tracking Camera页面和T265的GitHub页面。
图5A:Intel RealSense Viewer是熟悉英特尔实感追踪摄像头T265的一个优秀起点。在“2D”视图中,你可以看到不同的原始传感器输入。
图5B:在Intel RealSense Viewer中,你可以通过用户界面切换到3D视图。所述点云视图可以3D旋转。
图5C:在Intel RealSense Viewer中,你可以调整参数以查看其效果。另外,你可以启用重新定位和映射。
4.3 Intel RealSense SDK API
T265的主要软件接口是Intel RealSense SDK 2.0,你可以从开发者官网获取。
Intel RealSense SDK 2.0支持跨平台且开源,同时可以用于驱动其他英特尔实感产品,如D400系列深度摄像头。最好选择Windows和Linux平台,因为Mac的支持功能有所减少。
SDK 2.0同时包含各种其他示例应用(包含源代码和文档),其说明了应如何使用包括T265在内的英特尔实感设备。ROS(机器人操作系统)同样可以用于与英特尔实感设备进行交互。Intel RealSense ROS的Github页面包含基于Intel RealSense SDK 2.0构建的ROS集成,工具和示例应用。所有代码示例都可以直接用于测试,并根据测试目的进行修改,或者可以作为用户构建新应用的灵感。
对于T265,你可以在“pose”和“pose-predict”文件夹中发现最基本的示例应用。这两个示例展示了如何分别通过轮询和回调接口获取姿态数据。对于Intel RealSense ROS repository,T265RealsenseNode类是一个优秀的起点,你同时可以在这里发现如何通过ROS驱动T265的示例。
4.4挑战
英特尔团队正在不断提高T265的稳定性,鲁棒性和追踪性能。你始终可以通过更新Intel RealSense SDK来获取固件的最新迭代。下面是所有SLAM系统都需要面临的挑战,包括T265:
场景外观和几何形状:SLAM算法通常会创建一个依赖于“标记”或其传感器检测特征的相对配置的世界模型。例如,T265部分依赖于其摄像头看到的“有趣”视觉特征。如果场景的特征太少,比方说当摄像头面对白墙或空荡荡的房间且表面没有纹理时,传感器可能难以创建映射。另一方面,视觉纹理过多或视觉模式重复的场景有时会导致映射和导航混乱。动态场景:如果存在大量对象(如人)在场景中四处移动,SLAM系统可能难以创建保持静止的标记映射。照明:若没有足够的光线,T265可能根本无法检测到任何视觉特征。在中等弱光情况中,传感器噪点会影响图像质量,较长的曝光时间会导致图像模糊。非常强的全局照明,或将摄像头对准光源都会导致部分或全部图像饱和。饱和图像区域内无法检测到视觉特征,并且可能会沿着所述区域的边缘创建虚假特征。反射:场景中的镜面可能会导致看似位于错误3D位置的“鬼影”标记。设备运动:在以高速移动时,运动模糊会造成大量无用的数据。位置或方向的突然加速可能会超出IMU的测量极限,或者破坏视觉惯性传感器融合算法的基础假设。时序和计算资源:实时视觉惯性融合算法对其输入信号的相对时序非常敏感,所以,如果涉及多个设备时钟,任何未正确处理的异步都会对结果产生极大的负面影响。同样,计算资源中的临时不足或中断同样可能导致数据丢失或跳过关键算法步骤。与大多数其他SLAM系统相比,T265的架构解决了大多数这种问题,但客户在将其与主机应用集成时依然需要小心。
4.5 SLAM之外
开发自动导航系统时,你至少应考虑两个其他重要方面。在3D世界中移动时,除了映射之外,下一个最重要的任务是避免碰撞。这通常需要连续测量到路径中所有障碍物的精确3D距离。尽管VIO系统是确实通过追踪特征点来创建“稀疏”深度映射,但通常不足以实现可靠的碰撞避免。所以,通常建议将T265与Intel RealSense深度摄像头(例如D435或D415型)配合使用,这将能提供非常密集且精确的深度映射,并可用于3D重建以构建完整的环境3D模型。Intel RealSense Viewer是查看相关传感器配合工作的优秀工具。更多信息请参阅这个页面 。
要考虑的另一个方面是如何导航大空间。T265原生得支持的一种方法是“April Tag”追踪。这是一种开源2D条形码(或基准标记),可在3D空间中提供位置标签或代理相对于标签的位置和方向。April Tag非常具有吸引力,因为它们属于旋转,剪切,光照,比例和平移不变。由于存在大量独特的代码,所以这为系统提供了一个基于不同于Visual SLAM的模式进行重新定位的选项。另外,用户可以轻松打印出April Tag并标记不同的区域或对象。相关代码示例请点击这个页面。
图六:追踪April Tag的示例。T265包含April Tag追踪。
5.总结
通过对六自由度位置和方向进行精确,高速,低延迟的“内向外”追踪,这可以开启一系列新颖而激动人心的应用。凭借低功耗,小巧外形,以及优秀的开环追踪功能,T265可以附接到头显并用于AR/VR,或者用于机器人的位置追踪。对于重新定位到映射的功能,大范围覆盖,甚至可以在多个代理之间共享映射,T265追踪摄像头是一款出色的即装即用解决方案,你可以使用Intel RealSense Viewer应用和SDK进行快速原型设计,并熟悉性能和编程。T261摄像头模块可用于更多定制集成。
原文链接:https://yivian.com/news/72896.html