Skip to content

计算机视觉 (光流,MoCap, VIO,避障)

Computer vision 技术使计算机能够使用视觉数据来理解其环境.

PX4使用计算机视觉系统 (primarily running on Companion Computers) 为了支持以下特性:

  • Optical Flow 提供2D速度估计(使用面向下的相机和面向下的距离传感器)。
  • Motion Capture 使用车辆外部的视觉系统提供3D姿态估计。 它主要用于室内导航。
  • Visual Inertial Odometry 使用机载视觉系统和IMU提供3D姿态和速度估计。 用于在 GNSS 位置信息不存在或不可靠时的导航。
  • Collision Prevention 用于在车辆撞上障碍物之前停止车辆(主要是在手动模式下飞行时)。

TIP

The PX4 Vision Autonomy Development Kit (Holybro) 对于在PX4上使用计算机视觉的开发人员来说,这是一个强大而廉价的工具包。

运动捕捉

运动捕捉(MoCap)是一种使用车辆外部的定位机制来估计车辆三维位置和方向的技术。 MoCap 系统最常使用红外相机检测运动,但也可以使用其他类型的相机,激光雷达或者超宽带 (UWB)。

INFO

MoCap通常用于在没有GPS的情况下(例如室内)导航车辆,并提供相对于_local_坐标系的位置。

有关 MoCap 的信息,请参阅:

Visual Inertial Odometry (VIO)

视觉惯性里程法(VIO)用于估计移动车辆相对于起始位置的3D方向和速度。 它通常用于在 GPS 不存在(例如室内)或不可靠的情况下(例如在桥下飞行时)给载具导航。

VIO uses Visual Odometry 根据视觉信息,结合IMU的惯性测量,估计车辆的位置(以校正与车辆快速运动相关的误差,从而导致图像捕获不佳)。

INFO

VIO和 MoCap VIO摄像头/IMU是基于车辆的,并且还提供速度信息。

关于在 PX4 上配置 VIO 的信息,请参阅:

光流

Optical Flow 提供2D速度估计(使用面向下的相机和面向下的距离传感器)。

有关光流的信息,请参阅:

比较

本地位置估计 光学流 对 VIO

这两种技术都使用照相机并测量帧之间的差异。 光学流使用向下照相机,而VIO则使用立体照相机或45度跟踪照相机。 假定两者的校准都很好,哪个对本地地位置估计更好?

The consensus appears to be:

Optical flow:

  • 向下光学流使得你能够通过陀螺仪的角速度来校正角平面速度。
  • 需要准确的地面距离并假定地面为平面。 在这种情况下,它可能与VIO一样准确可靠(例如室内飞行)
  • 它比VIO更健壮,因为它的状态较少。
  • 更便宜和更容易设置,因为它只需要一个流传感器,一个范围探测器。 并设置几个参数(可以连接到飞行控制器)。

VIO

  • 购买更加昂贵,设置更加困难。 它需要一台单独的配套计算机、校准、软件、配置等等。
  • 如果没有可跟踪的点特征(实际上现实世界一般有点特征),效果将会减弱。
  • 较为灵活,可以增加诸如避免障碍和制图等其他功能。

组合(两者兼用)可能是最可靠的,但在大多数现实世界的情景中并不必要。 通常您将选择适合您的运行环境、所需功能和成本限制的系统:

  • 如果您打算在没有GPS的情况下在室外飞行(或室外和室内飞行),请使用 VIO 或者如果您需要支持避障碍和其他计算机视觉特性。
  • 如果您只计划在室内飞行(不使用 GPS),且成本是一个重要的考虑因素,使用Optical Flow。

外部资源

  • XTDrone - ROS + PX4 simulation environment for computer vision. The XTDrone Manual has everything you need to get started!