距离传感器(测距仪)
参考:Distance Sensors (Rangefinders) | PX4 Guide (v1.15)
距离传感器可提供距离测量数据,这些数据可用于地形跟踪、地形保持(例如用于摄影的精确悬停)、改善着陆性能(条件测距辅助)、警示规定高度限制、预防碰撞等。
本节列出了 PX4 支持的距离传感器(并链接到更详细的文档),所有测距仪所需的通用配置、测试方法以及 Gazebo-Classic 仿真信息。在下面链接的主题(以及侧边栏)中提供了更详细的设置和配置信息。
- Lidar Lite V3
- LightWare SF11/C Lidar
- ARK Flow
支持的测距仪
ARK Flow
ARK Flow 是一款开源的飞行时间(ToF)和光流传感器模块,能够测量 8 厘米至 30 米的距离。它可以通过其 CAN1 端口连接到飞行控制器,其 CAN2 端口还允许连接额外的传感器。它支持 DroneCAN 协议,运行 PX4 DroneCAN 固件,且外形小巧。
Holybro ST VL53L1X 激光雷达
VL53L1X 是一款先进的飞行时间(ToF)激光测距传感器,属于意法半导体 FlightSense™产品系列的增强版。它是市场上最快的微型 ToF 传感器,测距精度可达 4 米,测距频率最高可达 50Hz。
它配备了一个 JST GHR 4 针连接器,与 Pixhawk 4、Pixhawk 5X 以及其他遵循 Pixhawk 连接器标准的飞行控制器上的 I2C 端口兼容。
Lidar-Lite
Lidar-Lite 是一款紧凑的高性能光学测距仪。其传感器测距范围为(5 厘米 - 40 米),可连接到 PWM 或 I2C 端口。
MaxBotix I2CXL-MaxSonar-EZ
MaxBotix I2CXL-MaxSonar-EZ 系列有多种相对短距离的基于声纳的测距仪,适用于辅助起飞 / 着陆和避障。这些测距仪可通过 I2C 端口连接。
通过设置参数 “SENS_EN_MB12XX” 来启用这些测距仪。
Lightware 激光雷达
Lightware SFxx 激光雷达提供了一系列适用于多种无人机应用的轻型 “激光高度计”。
PX4 支持:SF11/c 和 SF/LW20。PX4 也可与以下已停产的型号配合使用:SF02、SF10/a、SF10/b、SF10/c。
PX4 还支持用于防撞应用的 LightWare 激光雷达 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
兰宝 PSK-CM8JL65-CC5 飞行时间红外测距传感器非常小巧(38 毫米 ×18 毫米 ×7 毫米,重量小于 10 克),是一款红外测距传感器,测距范围为 0.17 米 - 8 米,具有毫米级分辨率。它必须连接到 UART / 串行总线。
Avionics Anonymous UAVCAN 激光高度计接口
Avionics Anonymous UAVCAN 激光高度计接口允许将多种常见的测距仪(例如 Lightware SF11/c、SF30/D 等)通过 DroneCAN 连接到 CAN 总线,DroneCAN 是一种比 I2C 更可靠的接口。
配置 / 设置
测距仪通常连接到串行(PWM)或 I2C 端口(取决于设备驱动程序),并通过设置特定参数在端口上启用。
每个距离传感器特定的硬件和软件设置在其各自的主题中介绍。
下面给出所有距离传感器通用的配置,涵盖物理设置和使用方法。
通用配置
通用的测距仪配置使用 EKF2_RNG_* 参数进行指定。这些参数包括(但不限于):
- EKF2_RNG_POS_X、EKF2_RNG_POS_Y、EKF2_RNG_POS_Z - 测距仪在 X、Y、Z 方向上相对于飞行器重心的偏移量。
- EKF2_RNG_PITCH - 值为 0 度(默认)时,表示测距仪与飞行器垂直轴完全对齐(即垂直向下),而 90 度表示测距仪指向前方。如果使用非零的俯仰角,则使用简单的三角函数来计算到地面的距离。
- EKF2_RNG_DELAY - 数据从传感器到达估计器的大致延迟时间。
- EKF2_RNG_SFE - 与测距仪测距范围相关的噪声缩放因子。
- EKF2_RNG_NOISE - 用于测距仪数据融合的测量噪声。
测试
测试测距仪最简单的方法是改变测距范围,并将测量值与 PX4 检测到的值进行比较。以下部分展示了一些获取测量距离的方法。
QGroundControl MAVLink 检查器
QGroundControl MAVLink 检查器可让您查看飞行器发送的消息,包括来自测距仪的 DISTANCE_SENSOR 信息。这些工具的主要区别在于,分析工具可以在图表中绘制数值。
注意事项
发送的消息取决于飞行器的配置。只有在连接的飞行器安装了测距仪并正在发布传感器值时,您才会收到 DISTANCE_SENSOR 消息。
要查看测距仪的输出:
- 打开菜单 “Q> 选择工具 > 分析工具”:
(此处应有一张名为 “Menu for QGC Analyze Tool” 的图,展示 QGC 分析工具的菜单) - 选择 “DISTANCE_SENSOR” 消息,然后勾选 “current_distance” 对应的绘图复选框。该工具将绘制结果:
(此处应有一张名为 “QGC Analyze DISTANCE_SENSOR value” 的图,展示 QGC 分析 DISTANCE_SENSOR 值的界面)
QGroundControl MAVLink 控制台
您还可以使用 QGroundControl MAVLink 控制台观察 distance_sensor uORB 主题:
bash
listener distance_sensor 5
注意事项
QGroundControl MAVLink 控制台在连接到 Pixhawk 或其他 NuttX 目标时可用,但在模拟器上不可用。在模拟器上,您可以直接在终端中运行命令。
更多信息,请参阅:开发 > 调试 / 日志记录 > 使用监听器命令进行传感器 / 主题调试。
Gazebo-Classic 仿真
激光雷达和声纳测距仪可在 Gazebo Classic 模拟器中使用。要实现这一点,您必须使用包含测距仪的飞行器模型启动模拟器。
iris optical flow 模型包含一个激光雷达测距仪:
bash
make px4_sitl gazebo-classic_iris_opt_flow
typhoon_h480 模型包含一个声纳测距仪:
bash
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>