Skip to content

距离传感器(测距仪)

距离传感器提供距离测量数据,可用于地形跟随地形保持(即用于摄影的精确悬停)、改进着陆性能(条件距离辅助)、监管高度限制预警、防撞等功能。

本节列出了PX4支持的距离传感器(并链接到更详细的文档),并提供了所有测距仪所需的通用配置测试,以及使用GazeboGazebo-Classic进行模拟的相关信息。更详细的设置和配置信息在下方(和侧边栏)的主题链接中提供。

Lidar Lite V3LightWare SF11/C LidarARK Flow

支持的测距仪

ARK光流

ARK Flow是一款开源的飞行时间(ToF)和光流传感器模块,能够测量8厘米至30米的距离。它可以通过CAN1接口连接至飞控,并允许通过CAN2接口添加传感器。该传感器支持DroneCAN,运行PX4 DroneCAN固件,且外形小巧。

Holybro ST VL53L1X激光雷达

VL53L1X是一款先进的飞行时间(ToF)激光测距传感器,隶属于ST FlightSense™产品系列。它是市场上速度最快的微型ToF传感器,精确测距可达4米,快速测距频率可达50Hz。该传感器配备JST GHR 4针连接器,与Pixhawk 4Pixhawk 5X以及其他遵循Pixhawk连接器标准的飞行控制器上的I2C端口兼容。

Lidar-Lite

Lidar-Lite是一款紧凑、高性能的光学测距仪。其传感器量程为(5厘米 - 40米),可连接到PWM或I2C端口。

MaxBotix I2CXL - MaxSonar - EZ

MaxBotix的I2CXL - MaxSonar - EZ系列中有许多相对短距离的基于声纳的测距仪,适用于辅助起飞/着陆和避障。这些测距仪可通过I2C端口连接,并使用参数SENS_EN_MB12XX启用。

Lightware LIDARs

Lightware SFxx Lidar提供了一系列适用于多种无人机应用的轻型“激光高度计”。PX4支持SF11/c和SF/LW20,也可用于以下已停产的型号:SF02、SF10/a、SF10/b、SF10/c。其他型号可能通过下文所述的RaccoonLab Cyphal和DroneCAN测距仪适配器得到支持。PX4还支持用于防撞应用的LightWare LiDAR SF45旋转激光雷达

TeraRanger测距仪

TeraRanger提供了一些基于红外飞行时间(ToF)技术的轻型距离测量传感器。它们通常比声纳更快、量程更大,且比基于激光的系统更小、更轻。PX4支持以下通过I2C总线连接的型号:TeraRanger One、TeraRanger Evo 60m和TeraRanger Evo 600Hz。

Ainstein US - D1标准雷达高度计

_Ainstein_的US - D1标准雷达高度计是一款紧凑的微波测距仪,专为无人机使用而优化。它的感测范围约为50米。该产品的一个显著优势是能够在所有天气条件下以及所有地形类型(包括水面)上有效运行。

LeddarOne

LeddarOne是一款小型激光雷达模块,其光束窄且漫射,在坚固、可靠且经济高效的封装中提供出色的整体检测范围和性能。它的感测范围为1厘米至40米,需要连接到UART/串行总线。

TFmini

Benewake TFmini激光雷达是一款体积小巧、成本低且功耗低的激光雷达,量程为12米。

PSK - CM8JL65 - CC5

已停产

Lanbao PSK - CM8JL65 - CC5 ToF红外测距传感器是一款非常小巧(38毫米×18毫米×7毫米,小于10克)的红外距离传感器,量程为0.17米 - 8米,分辨率达毫米级。它必须连接到UART/串行总线。

Avionics Anonymous UAVCAN激光高度计接口

Avionics Anonymous UAVCAN激光高度计接口允许将几种常见的测距仪(例如Lightware SF11/c、SF30/D等)通过DroneCAN连接到CAN总线,这是一种比I2C更可靠的接口。

RaccoonLab Cyphal和DroneCAN测距仪适配器

RaccoonLab Cyphal和DroneCAN测距仪适配器允许将几种常见的测距仪通过Cyphal或DroneCAN连接到CAN总线,提供了一种比I2C或UART更可靠的接口。该适配器通过I2C或UART高效读取测量数据,并以米为单位发布距离数据,使其成为无人机、机器人和技术文档应用的通用解决方案。支持的测距仪包括:

  • LightWare LW20/C
  • TF - Luna
  • Garmin Lite V3
  • VL53L1CB

RaccoonLab Cyphal和DroneCAN µRANGEFINDER

RaccoonLab µRANGEFINDER旨在测量距离并通过Cyphal/DroneCAN协议发布数据。它可用于估计精确着陆或避障。其特点包括:

配置/设置

测距仪通常连接到串行(PWM)或I2C端口(取决于设备驱动),并通过设置特定参数在端口上启用。每个距离传感器特定的硬件和软件设置在其各自的主题中介绍。下面给出所有距离传感器通用的配置,涵盖物理设置和使用方法。

通用配置

通用的测距仪配置使用EKF2_RNG_*参数指定。其中包括(但不限于):

  • EKF2_RNG_POS_XEKF2_RNG_POS_YEKF2_RNG_POS_Z - 测距仪相对于飞行器重心在X、Y、Z方向上的偏移。
  • EKF2_RNG_PITCH - 0度(默认值)表示测距仪与飞行器垂直轴完全对齐(即垂直向下),90度表示测距仪指向前方。若使用非零俯仰角,则使用简单三角学计算到地面的距离。
  • EKF2_RNG_DELAY - 数据从传感器到达估计器的近似延迟。
  • EKF2_RNG_SFE - 测距仪与量程相关的噪声缩放因子。
  • EKF2_RNG_NOISE - 用于测距仪融合的测量噪声。

测试

测试测距仪最简单的方法是改变距离,并与PX4检测到的值进行比较。以下部分介绍了一些获取测量距离的方法。

QGroundControl MAVLink Inspector 可让您查看飞行器发送的消息,包括来自测距仪的DISTANCE_SENSOR信息。这些工具的主要区别在于“分析”工具可以将值绘制成图表。

INFO

发送的消息取决于飞行器的配置。只有当连接的飞行器安装了测距仪并发布传感器值时,您才会收到DISTANCE_SENSOR消息。

要查看测距仪输出:

  1. 打开菜单 Q > 选择工具 > 分析工具QGC分析工具菜单
  2. 选择消息DISTANCE_SENSOR,然后勾选current_distance对应的绘图复选框。该工具将绘制结果: QGC分析DISTANCESENSOR值

QGroundControl MAVLink控制台

您还可以使用_QGroundControl MAVLink控制台_观察distance_sensor uORB主题:

sh
listener distance_sensor 5

INFO

QGroundControl MAVLink控制台 在连接到Pixhawk或其他NuttX目标时可用,但不适用于模拟器。在模拟器上,您可以直接在终端中运行命令。

更多信息请参阅:开发 > 调试/日志记录 > 使用监听器命令进行传感器/主题调试

仿真

Gazebo仿真

激光雷达和声纳测距仪可在Gazebo模拟器中使用。为此,您必须使用包含测距仪的飞行器模型启动模拟器。向下的传感器会写入DistanceSensor UORB主题,可用于测试诸如着陆地形跟随等用例:

  • [配备1D激光雷达(向下)的四旋翼飞行器(x500)](../sim_gazebo_gz/vehicles.md#x500 - 四旋翼飞行器 - 配备 - 1d - 激光雷达 - 向下)
    sh
    make px4_sitl gz_x500_lidar_down

向前的传感器会写入ObstacleDistance,可用于测试[防撞](../computer_vision/collision_prevention.md#gazebo - 仿真):

  • [配备2D激光雷达的四旋翼飞行器(x500)](../sim_gazebo_gz/vehicles.md#x500 - 四旋翼飞行器 - 配备 - 2d - 激光雷达)
    sh
    make px4_sitl gz_x500_lidar_2d
  • [配备1D激光雷达(向前)的四旋翼飞行器(x500)](../sim_gazebo_gz/vehicles.md#x500 - 四旋翼飞行器 - 配备 - 1d - 激光雷达 - 向前)
    sh
    make px4_sitl gz_x500_lidar_front

Gazebo - Classic仿真

激光雷达和声纳测距仪可在Gazebo Classic模拟器中使用。为此,您必须使用包含测距仪的飞行器模型启动模拟器。iris光流模型包含一个激光雷达测距仪:

sh
make px4_sitl gazebo-classic_iris_opt_flow

typhoon_h480包含一个声纳测距仪:

sh
make px4_sitl gazebo-classic_typhoon_h480

如果您需要使用其他飞行器,可以在其配置文件中包含该模型。您可以在相应的Iris和Typhoon配置文件中查看具体方法:

  • iris_opt_flow.sdf
    xml
      <include>
        <uri>model://lidar</uri>
        <pose>-0.12 0 0 0 3.1415 0</pose>
      </include>
      <joint name="lidar_joint" type="revolute">
        <child>lidar::link</child>
        <parent>iris::base_link</parent>
        <axis>
          <xyz>0 0 1</xyz>
          <limit>
            <upper>0</upper>
            <lower>0</lower>
          </limit>
        </axis>
      </joint>
  • typhoon_h480.sdf
    xml
      <include>
        <uri>model://sonar</uri>
      </include>
      <joint name="sonar_joint" type="revolute">
        <child>sonar_model::link</child>
        <parent>typhoon_h480::base_link</parent>
        <axis>
          <xyz>0 0 1</xyz>
          <limit>
            <upper>0</upper>
            <lower>0</lower>
          </limit>
        </axis>
      </joint>