多模态传感器校准对于实现机器人、自动驾驶汽车、地图构建和其他感知驱动应用的传感器融合至关重要。传统的校准方法依赖于带有棋盘格或目标的结构化环境,复杂、昂贵、耗时且无法扩展。
Main Street Autonomy Calibration Anywhere 软件是一种可简化校准问题的自动传感器校准解决方案。Main Street Autonomy 是一家采用先进技术为机器人和自动驾驶汽车领域提供传感器校准、本地化和地图解决方案的自动驾驶软件和服务公司。
在本博文中,您将学习如何使用 Calibration Anywhere 解决方案生成可集成到 NVIDIA Isaac Perceptor 工作流程中的校准文件。Isaac Perceptor 基于 NVIDIA Isaac ROS 构建,是 NVIDIA 加速库和 AI 模型的参考工作流程,可帮助您快速构建强大的自主移动机器人 (AMR)。本教程面向负责传感器校准的工程师以及感知系统相关人员,例如感知工程师。
传感器校准概述
校准可确保不同模式的感知传感器生成一致的传感器数据,这些数据在感知环境时彼此一致。感知传感器包括激光雷达、雷达、摄像头、深度摄像头、IMU、车轮编码器和 GPS/GNSS,并且能够捕获范围、反射率、图像、深度和运动数据等各种信息。
例如,当自动叉车靠近托盘时,3D 激光雷达会识别托盘和货物的形状、大小和距离,而运行机器学习(ML)工作流程的立体摄像头会识别货叉孔。通过适当的校正,摄像头确定的货叉孔位置将与激光雷达确定的托盘和货物轮廓正确对齐。如果没有适当的校正,传感器数据可能会不对齐,导致不准确的解释,例如物体检测不正确、深度估计错误或导航错误。
传统的传感器校正是确定 传感器内部参数 和 传感器外部参数 的手动过程。传感器内部参数包括对单个传感器的传感器数据进行校正,例如摄像头的镜头失真和焦距。传感器外部参数包括共享坐标系统中彼此相对的位置和方向,这通常是与运动帧相关的参考点,用于运动规划和控制。
将两个摄像头校准在一起的过程相对简单,需要一个名为棋盘格的印刷目标,工程师可能需要一个小时才能完成。校准更多摄像头,或摄像头与激光雷达、摄像头与 IMU,或激光雷达与 IMU,都会逐渐变得更加困难,并且需要额外的目标和工程工作。
Main Street Autonomy 的 Calibration Anywhere 软件是一种自动传感器校准解决方案,可在任何非结构化环境中与任意数量、组合和布局的感知传感器一起使用。无需棋盘格或目标,校准几乎可以在任何地方执行,无需设置或环境更改。校准过程可能需要不到 10 分钟的时间才能完成,无需工程师或技术人员。该解决方案一次即可为所有感知传感器生成传感器内部函数、外部函数和时间偏移。
教程预备知识
如需缩短首次校准的周转时间,下面列出了理想的配置。
环境包括:
- 附近有纹理的静态结构。没有什么特别的要求。例如办公室环境、装卸码头或停车场。校准指向海洋的摄像头很复杂。
- 足够的光照进行观察。
- 湿度足够低(雾、雨、雪尽皆宜),以便观察。
- 第三方搬运工,例如人员、移动车辆或其他移动机器人,它们不靠近传感器或代表大多数观察结果。
传感器系统包括:
- One of the following:
- 3D 激光雷达
- 2D 激光雷达
- 具有已知基准的立体摄像头
- IMU
- Sensor system layout:
- 如果存在 3D 激光雷达,摄像头视野(FOV)应与激光雷达的 FOV 至少重叠 50%。深度摄像头应能够看到 3D 激光雷达可以看到的世界部分。不需要重叠,但在机器人四处移动后,深度摄像头应能看到激光雷达看到的物体。
- 在校准期间,所有传感器都是刚性连接的。
- 传感器数据存储在 ROS1 或 ROS2 包中,包含标准主题和消息,在所有摄像头和深度图像、单个激光雷达和雷达点、IMU 和 GPS 测量以及车轮编码器刻度或速度上都带有准确的时间戳。
- Sensor data captured while:
- 传感器通过远程操作手动移动,或以不会导致车轮过度滑移或运动模糊的方式自动移动。
- 传感器以两个 8 字形图移动,其中单个圆圈不重叠,圆圈的直径大于 1 米。
- 传感器在 1 米范围内接近纹理静态结构,其中的结构占据了每个摄像头的视野的大部分。
- 记录长度相对较短。数据采集目标为 60 秒,记录时间不超过 5 分钟。
不符合这些要求的传感器系统仍然可以进行校准,但会有更长的周转时间。非 ROS 格式的传感器数据需要转换,并将有更长的周转时间。对于大型机器人或运动受限的机器人,可以选择其他移动程序。 如需了解更多信息,请联系 MSA。
评估程序
评估 Calibration Anywhere 的过程非常简单,涉及五个步骤,概述如下,并在以下各节中详细介绍。
- 与 MSA 联系 并描述您的系统。
- 在传感器移动时捕获传感器数据。
- 将传感器数据上传至 MSA 数据门户 。
- 接收与 NVIDIA Isaac Perceptor 兼容的 URDF 输出校准包。
- 将 URDF 导入 Isaac Perceptor 工作流中。
MSA 为您的系统配置 Calibration Anywhere 后,您可以使用 calibration-as-a -service 解决方案。这包括上传传感器数据和下载校准。您还可以在 Docker 容器中部署 Calibration Anywhere,并在本地运行,而无需发送数据。
第 1 步:连接 MSA 并描述您的系统
访问 MSA 演示页面 并填写表单。MSA 会与您联系,并发送使用 MSA 数据门户的凭据。
第 2 步:在传感器移动时捕获传感器数据
如前所述,移动传感器系统并捕获传感器数据。可以使用多个 ROS 包,但要确保持续记录。
为确保数据质量(这对于校准成功至关重要),请检查以下内容:
- 数据不包含差距或丢弃。检查计算、网络和磁盘缓冲区是否超载,以及数据是否在装袋过程中丢失。
- 其中包含主题和消息。检查系统上所有传感器的主题是否存在
- 包含准确的时间戳。3D 激光雷达需要逐点时间戳,所有其他传感器数据需要时间戳。
第 3 步:将传感器数据上传至 MSA 数据门户
访问 MSA 上传页面 ,使用 MSA 提供的凭据进行身份验证。单击“管理机器人”按钮,然后创建一个平台和一个实例。平台是传感器的特定排列,可能是类似于 DeliveryBotGen5 的东西。实例是属于平台的特定机器人,如果您使用名称,可能是类似于 12 或 Mocha 的东西。
在“Dashboard”页面中,输入传感器数据的标签,选择收集数据的机器人实例,然后上传您的传感器数据。发送至 MSA 的数据作为机密信息受到 MSA 隐私政策 的保护。
第 4 步:接收包含与 Isaac Perceptor 兼容的 URDF 输出的校准包
MSA 将使用 Calibration Anywhere 解决方案来校准用于捕获传感器数据的传感器。对于复杂的设置,此过程可能需要几天或更长时间。完成校正后,您可以从 Data Portal 下载校正,如图 1 所示。上传数据的用户将收到电子邮件通知。
校正输出包括以下内容:
兼容 NVIDIA Isaac Perceptor 的 URDF:extrinsics.urdf
传感器外设:extrinsics.yaml
- 包括摄像头、3D 激光雷达、成像雷达和 IMU 的参考点和 6DoF 姿态、2D 激光雷达的 3DoF 姿态以及 GPS/GNSS 单元的 3D 位置之间的位置 [x,y,z] 和四元数 [x,y,z,w] 变换。
传感器外设:wheels_cal.yaml
- 包括车轴履带估算值 (以米为单位)。
- 包括左右驱动轮速度(或每滴答数米)的校正增益系数。
传感器内部构造:<sensor_name>.intrinsics.yaml
- Includes OpenCV-compatible intrinsics for each imaging sensor: a model that includes a projection matrix and a distortion model.
- 支持鱼眼、等距、ftheta3、有理多项式和 plumbob 模型。
- 包括滚动快门相机的读取时间。
地面检测:ground.yaml
- 包括相对于传感器的地面。
时间更正:time_offsets.yaml
- 包括通过摄像头、激光雷达、雷达、IMU、车轮编码器和 GPS/GNSS 单位的时间戳校正模型计算出的时间偏移。
第 5 步:将 URDF 导入 Isaac Perceptor 工作流
将 extrinsics.urdf
文件复制到 /etc/nova/calibration/isaac_calibration.urdf
、
这是 Isaac Perceptor 使用的默认 URDF 路径。图 3 显示了工作流程。
结束语
使用 MSA Calibration Anywhere 软件校准传感器,并将结果与 NVIDIA Isaac Perceptor 工作流程集成,需要仔细注意传感器设置和数据收集。确保传感器系统满足上述先决条件对于快速成功的校准至关重要。
通过遵循本教程并利用提到的资源,您将做好充分准备,为您的机器人或自主系统项目执行精确的传感器校准。