电子书

第 3 章

感知


根据融合的传感器数据识别周围环境时,需要识别目标的形状和大小,可能还要对目标分类(比如识别门和椅子)。自主移动机器人 (AMR) 会使用这些信息进行后续的动作规划和决策。图像识别和点云处理可以帮助进行目标检测。

节

使用图像处理和深度学习进行目标检测

近年来,深度学习在人工智能 (AI) 领域大受关注,用于图像处理的深度学习方法在机器人应用领域发展成效卓著。使用 Deep Learning Toolbox™ 并借助用于卷积神经网络 (ConvNet, CNN) 和长短期记忆 (LSTM) 网络的参考示例,您可以对图像和时间序列数据执行分类和回归。

除了图像分类,深度学习还提供了用于目标检测和分割的算法。AMR 通常使用高处理速度和检测准确度的目标检测算法。例如,YOLO 就是一种兼具速度和准确度的算法,能给出理想的结果。

使用 YOLO v2 进行目标检测。

使用 YOLO v2 进行目标检测。

YOLO 是一个实时目标检测算法,属于单阶段目标检测器。YOLO 的执行速度比 Faster R-CNN 等两阶段目标检测器快,因为 YOLO 可以对候选区域同步执行提取和分类。Deep Learning Toolbox 和 Computer Vision Toolbox 支持使用 YOLO v2 和 YOLO v3 进行实时目标检测。您还可以使用这些工具箱中提供的单步多框检测器 (SSD)。目标检测器通常需要训练数据,您可以自己创建这类训练数据,也可以使用可公开获得的数据集。Computer Vision Toolbox 提供图像标注器,用于标注(也称为标记或注释)训练数据。

如果要构建一个更加复杂而灵活的深度神经网络,您可以使用 Deep Learning Toolbox 中的低级接口。该接口提供了一个称为 dlarray 的专用数据类用于自动微分,您可以用它构建复杂的网络,无需执行反向传播函数实现等繁琐步骤。您还可以用该接口创建生成式对抗网络 (GAN) 和变分自编码器 (VAE) 等高级网络。

节

使用点云处理进行目标检测

激光检测和测距(激光雷达)是 AMR 中一种重要的传感器。激光雷达测量距离的原理是将激光投射到目标,然后记录光线被目标反射并回到发送端所用的时间。这是一种有源测量方法,因此激光雷达能够非常准确地测量移动的机器人与其周围目标之间的距离。此外,如果采用 360 度激光旋转,只要目标出现在激光旋转的平面范围内,就能对机器人周围任何位置的目标进行距离测量。二维激光雷达使用单个激光发射元,会生成环境的二维激光雷达扫描;三维激光雷达使用多个激光发射元,会生成三维点云。除了估计距离外,您还可以处理激光雷达点云,以确定目标的方向和类型。

Lidar Toolbox 和 Computer Vision Toolbox 提供了不同的点云处理方法,例如下采样和匹配点云,形状拟合以及激光雷达配准。您还可以使用深度学习和机器学习算法(例如 PointSeg、PointPillars 和 SqueezeSegV2)训练自定义检测和语义分割模型。

使用点云处理进行目标检测。

使用点云处理进行目标检测。

节

跟踪检测到的目标

机器人周围环境中的目标并不总是静止不动。当存在人或宠物等移动目标时,融合来自相机和激光雷达等多个传感器的检测结果可以提供更准确的结果。这种传感器融合需要状态估计滤波器(例如卡尔曼滤波器)和用于管理多个跟踪分配的算法。

借助 Sensor Fusion and Tracking Toolbox™,您可以探索各种状态估计滤波器和目标跟踪算法。该工具箱提供了诸多算法,用于融合来自真实传感器的数据,包括有源和无源雷达、声呐、激光雷达、EO/IR、IMU 和 GPS。这可以让每个传感器的优缺点形成互补,改进位置预测准确性,这一点对于 AMR 安全导航很重要。

使用传感器融合进行目标跟踪。

使用传感器融合进行目标跟踪。

节

同步定位与地图构建 (SLAM)

设想一下使用二维激光雷达探索未知空间。您可以对从激光雷达获得的点云进行匹配,以迭代方式生成地图。得到地图后,还需要机器人相对地图的位姿(位置和方向)信息。但是,对位置进行连续估计会导致误差累积,因此,估计位置可能与实际位置有非常大的偏差。这种偏差称为漂移,而要想自主移动机器人 (AMR) 安全运行,在生成地图时必须进行漂移修正。SLAM 会在构建环境地图时估计 AMR 的位姿,两者同时进行可以补偿位置漂移。执行 SLAM 的方法有多种,包括使用激光雷达传感器的激光雷达 SLAM 和使用相机的视觉 SLAM。

激光雷达测量距离的准确度要高于相机和其他飞行时间 (ToF) 传感器,因此广泛应用于自动驾驶汽车和无人机等快速移动目标。在激光雷达 SLAM 中,可以通过点云匹配来连续估计移动量,通过整合点云数据来估计自身位置。迭代最近点 (ICP) 和正态分布变换 (NDT) 算法可用于匹配来自激光雷达的点云。激光雷达 SLAM 管理的地图表示见下图所示,其中第一行显示二维占据栅格,第二行显示三维点云。点云地图是来自激光雷达传感器的原始输出。虽然点云包含详细的环境信息,但是并不适用于碰撞检测。栅格地图会基于等距栅格对点云采样,可用于障碍检测和运动规划。

二维和三维激光雷达 SLAM。

二维和三维激光雷达 SLAM。

激光雷达 SLAM 面临的一个挑战是当点云密度较粗时,可能无法获得足够多的特征用于点云匹配。例如,在障碍较少的地方,点云匹配可能会失败,移动目标的位置可能会丢失。此外,点云匹配的处理负荷通常较高,您可能需要想办法来提高速度。

另一种方法是视觉 SLAM,它使用来自相机和图像传感器的图像。用于视觉 SLAM 的相机类型包括单目相机(广角相机、鱼眼相机和全天相机)、复眼相机(立体相机和多相机)以及 RGB-D 相机(深度相机和 ToF 相机)。视觉 SLAM 算法可以大致分为两种类型。稀疏方法使用 PTAM 和 ORB-SLAM 等算法匹配图像特征点。稠密方法利用整个图像的亮度,并使用 DTAM、LSD-SLAM、DSO 和 SVO 算法。

使用单目相机的视觉 SLAM (ORB-SLAM)。

使用单目相机的视觉 SLAM (ORB-SLAM)。

视觉 SLAM 与运动重建 (SfM)、视觉测距和捆绑调整等技术关联紧密。视觉 SLAM 的主要优势在于实现成本大大低于激光雷达 SLAM,因为相机的成本相对较低。相机还可以存储大量信息,因此它们能够将之前观察到的位置存储为路标供后续检测使用。但是,使用单目相机时,单凭相机几何来计算到目标的距离可能存在困难。

激光雷达 SLAM 和视觉 SLAM 都会累积漂移误差,从而导致定位不准。作为对策,可以使用位姿图帮助纠正误差。位姿图是一个图结构,由节点和连接节点的边构成。每个估计的节点都会通过边约束连接到图,边约束定义节点之间的相对位姿以及该测量数据的不确定性。位姿图可以包括增强现实标记和棋盘格等已知目标。这些图还可以融合来自可直接测量位姿的惯性测量单元 (IMU) 等传感器的输出。

Navigation Toolbox™ 中提供的位姿图可以针对任何传感器数据进行扩展。SLAM 前端会根据传感器采用特定流程来估计 AMR 的移动和障碍位置,例如使用卡尔曼滤波器整合多个传感器来估计位置。相对地,构建和优化后端位姿图是一个独立于传感器的过程。后端组件可以应用到不同的 SLAM 算法。位姿图优化有时也称为捆绑调整。

SLAM 前端和后端。

SLAM 前端和后端。

在已知地图上定位

借助 SLAM,您可以在构建环境地图的同时定位机器人。不过有些情况下,您可能已使用某种建图算法构建了地图,只需估计给定地图中的相对位姿。蒙特卡罗定位等状态估计方法使用粒子滤波器,基于 AMR 的移动和传感来估计 AMR 在已知地图内的位姿。蒙特卡罗定位算法使用分布的粒子来表示不同的机器人状态。随着 AMR 在环境中移动,其距离传感器会探测环境的不同部分,这些分布的粒子就会围绕一个位置收敛。AMR 移动也可以使用测距传感器检测到。您可以使用概率分布表示 AMR 位姿,从而在动态环境中执行稳健的位姿估计,将传感器测量误差考虑在内。Navigation Toolbox 中包括一个该算法的变体,称为自适应蒙特卡罗定位 (AMCL)。

车辆位置估计(定位)。

车辆位置估计(定位)。

进一步了解感知