☰
如何快速接入 PX4 距离传感器:22 款驱动从使能、启动到调优的完整指南
2026/11/3 9:41:15 网站建设 项目流程

如何快速接入 PX4 距离传感器:22 款驱动从使能、启动到调优的完整指南

【免费下载链接】PX4-AutopilotPX4 Autopilot Software项目地址: https://gitcode.com/gh_mirrors/px/PX4-Autopilot

本文基于 PX4-Autopilot 源码,覆盖src/drivers/distance_sensor下全部 22 款距离传感器驱动(激光、ToF、超声波、雷达、红外)的命令语法、默认地址、使能参数与调优方法,帮你在真实飞控上完成"选型 → 使能 → 启动 → 校准 → 验证 → 排障"全流程。

一、能力总览:先认清你的传感器走哪条路

所有驱动的能力差异集中在四个维度:通信总线、默认地址、是否需要参数使能、能否自动启动。下表一次看全(源码依据:src/drivers/distance_sensor/ 各驱动 Kconfig 与parameters.yaml):

驱动总线默认地址/串口使能参数(默认值)自动启动
afbrs50S2PI(SPI 协议栈)—无否
vl53l0x / vl53l1xI2C0x29(41)SENS_EN_VL53L0X/SENS_EN_VL53L1X(关)否
lightware_laser_i2cI2C0x66(102)SENS_EN_SF1XX选型号否
ll40lsI2C0x62(98),兼容 0x42SENS_EN_LL40LS=2(默认关)否
ll40ls_pwmPWM—SENS_EN_LL40LS=1否
tf02proI2C0x10(16)SENS_EN_TF02PRO(关)否
terarangerI2C0x30(48)SENS_EN_TRANGER=0(默认关,1=自动检测)否
mappydotI2C扫描SENS_EN_MPDT=0(关,1=自动检测)否
gy_us42I2C0x70(112)无否
srf02I2C0x70(112)无否
mb12xxI2C112 起自动扫描SENS_EN_MB12XX(关)否
srf05GPIO 触发/回显—SENS_EN_SR05(关)否
pga460UART需指定SENS_EN_PGA460(关)否
cm8jl65UART需指定SENS_CM8JL65_CFG(0=关)是
leddar_oneUART需指定SENS_LEDDAR1_CFG(0=关)是
tfminiUART需指定SENS_TFMINI_CFG(0=关)是
lightware_laser_serialUART需指定SENS_EN_SF0X=1 +SENS_SF0X_CFG是
lightware_grf_serialUART需指定GRF_SENS_MODEL=0(默认关)+SENS_EN_GRF_CFG是
lightware_sf45_serialUART需指定SENS_EN_SF45_CFG(0=关)是
sony_asdt1UART需指定SENS_ASDT1_CFG(0=关)是
ulanding_radarUART默认/dev/ttyS3SENS_ULAND_CFG(0=关)是

两点说明:

  • "自动启动"指驱动在 module.yaml 中声明了serial_config:PX4 启动脚本发现SENS_*_CFG指向某串口后,自动执行start -d <该串口>。串口类驱动基本都不需要手动start。
  • 编译开关:src/drivers/distance_sensor/Kconfig 提供COMMON_DISTANCE_SENSOR一键选项,默认选中 Lightware I2C/串行、LL40LS、TF02PRO、TFMINI、uLanding 雷达、VL53L0X/L1X 八项常用驱动;afbrs50、cm8jl65、pga460、sony 等其余驱动需各自勾选DRIVERS_DISTANCE_SENSOR_<名称>。

二、统一抽象层:一套命令 + 一条消息

2.1 三类命令语法

所有驱动共有:start、stop、status三个子命令,status打印驱动运行状态,是排障第一入口。

I2C 类通用参数(vl53l0x、teraranger、tf02pro 等几乎一致):

start [-I] 内部 I2C 总线(板载传感器) [-X] 外部 I2C 总线(连接器/共享总线) [-b <val>] 指定某条板级总线(默认全部) [-f <val>] 总线频率,单位 kHz [-q] 静默启动:没找到设备也不报错 [-a <val>] I2C 地址(各驱动默认值不同,见速查卡) [-R <val>] 安装朝向,默认 25(朝下)

为什么-I/-X分开?因为多数飞控的板载传感器和外部扩展传感器挂在不同 I2C 总线上,-I只扫内部总线可避免误扫到扩展口上的其它设备。

UART 类通用参数:

start -d /dev/ttyS1 [-R 25]

例外有两处,别踩坑:

  • leddar_one的朝向参数是小写-r;
  • pga460不用-d,设备路径直接跟在start后面:pga460 start /dev/ttyS6;
  • lightware_grf_serial不支持-R,朝向靠其它参数或默认。

2.2 统一输出消息

除少数例外(下文会标出),每个驱动都是把原始读数换算成标准距离后,发布 uORB 主题distance_sensor,定义在 msg/DistanceSensor.msg。EKF2 高度融合、避障、地形跟随消费的都是这条消息,所以驱动层与上层算法完全解耦——换传感器不改上层代码。

两个例外:

  • sony_asdt1与lightware_sf45_serial额外发布obstacle_distance(多区域测距,带扇区角度信息),前者见 sony/sony_asdt1.cpp 中的_obstacle_distance;
  • cm8jl65发布的是obstacle_distance(红外多区域),见 CM8JL65.cpp。

三、接入三要素:接线、编译开关、启动

按传感器类型走对应路线,三要素缺一不可:

路线 A:I2C 传感器(vl53l0x/1x、tf02pro、teraranger、ll40ls、lightware I2C、srf02、mb12xx、gy_us42、mappydot)

  1. 接线到飞控 I2C 口(或经扩展器),确认上拉电阻与电平兼容;
  2. menuconfig 勾选对应DRIVERS_DISTANCE_SENSOR_*(COMMON_DISTANCE_SENSOR已覆盖常用款),编译烧录;
  3. 若驱动有使能参数(见能力总览表),置为启用并重启生效——所有SENS_EN_*参数都是reboot_required;
  4. 手动验证:vl53l0x start -I -a 41,然后vl53l0x status看是否识别到器件。

路线 B:UART 传感器(tfmini、leddar_one、GRF/SF45、AS-DT1、uLanding、cm8jl65、pga460)

  1. 接线到空闲串口,注意 TX/RX 交叉;
  2. menuconfig 勾选编译开关,编译烧录;
  3. 把SENS_*_CFG设为目标串口(QGC 参数里选SERIAL1/SERIAL2等对应的端口编号,而非设备路径);
  4. 重启后驱动自动启动,用tfmini status之类确认。无需手动 start。

路线 C:特殊接口

  • ll40ls_pwm:PWM 信号线接飞控,SENS_EN_LL40LS=1使能;
  • srf05(HC-SR04/HC-SR05):GPIO 触发/回显两脚,SENS_EN_SR05=1使能;
  • afbrs50:S2PI 接口(SPI 协议栈),afbrs50 start手动启动,另有cal校准子命令(见第五章)。
# I2C 最小命令集 vl53l0x start -I -a 41 -R 25 vl53l0x status # UART 手动命令集(通常自动启动,无需执行) tfmini start -d /dev/ttyS1 tfmini status

四、逐驱动速查卡

以下卡片格式统一:一句话定位 / 总线与默认地址 / 使能参数 / 启动示例 / 关键参数 / 特殊能力 / 源码路径。

afbrs50

  • 定位:Broadcom AFBR-S50 长距 ToF 激光测距仪,PX4 中精度调优参数最全的驱动。
  • 总线与地址:S2PI(SPI 协议栈),无 I2C 地址概念。
  • 使能参数:无。
  • 启动示例:afbrs50 start
  • 关键参数:
参数含义默认取值
SENS_AFBR_MODE测量模式(短距/长距/高速短距/高速长距/高精度短距)-1(自动)-1~4
SENS_AFBR_RATE测量速率,越低曝光预算越大、辐射量程越远;低于 5 Hz 会被钳制0(模块默认)0~100
SENS_AFBR_DFM双频模式,将基础无歧义量程×4 或×8-1(自动,LV85D/LX85D 选 4X)-1~2
SENS_AFBR_SNM散粒噪声监测模式3(动态增强)0~3
SENS_AFBR_PROF性能档:0=保量程(20/15 Hz),1=高帧率(50/25 Hz)00~1
SENS_AFBR_QMIN最低信号质量门槛00~100
SENS_AFBR_OFS_LO/HI低/高激光功率级距离偏移(米),由 cal 写入0.0float
  • 特殊能力:绝对距离偏移校准,afbrs50 cal start 0.3(对准 0.3 m 目标)→afbrs50 cal status查看结果,偏移持久化到SENS_AFBR_OFS_*并在每次启动时叠加在出厂校准之上。
  • 源码:src/drivers/distance_sensor/broadcom/afbrs50/,参数定义见 parameters.yaml。

vl53l0x / vl53l1x

  • 定位:ST 低成本 ToF 测距,几十厘米量程,适合定高与近距避障。
  • 总线与地址:I2C,默认 0x29(十进制 41,见 VL53L0X.hpp 中VL53L0X_BASEADDR)。多模块同总线需-a改址(利用 XSHUT 逐台上电)。
  • 使能参数:SENS_EN_VL53L0X/SENS_EN_VL53L1X,布尔,默认关。
  • 启动示例:vl53l0x start -I -a 41 -R 25
  • 关键参数:仅使能参数,无其它可调项。
  • 源码:src/drivers/distance_sensor/vl53l0x/、src/drivers/distance_sensor/vl53l1x/。

lightware_laser_i2c

  • 定位:Lightware SF10 系列、LW20/LW30、GRF250/500 的 I2C 版。
  • 总线与地址:I2C,默认 0x66(102,见 lightware_laser_i2c.cpp)。
  • 使能参数:SENS_EN_SF1XX选择硬件型号。
  • 启动示例:lightware_laser_i2c start -I -a 102
  • 源码:src/drivers/distance_sensor/lightware_laser_i2c/。

ll40ls / ll40ls_pwm

  • 定位:LidarLite V3/V3HP,I2C 与 PWM 两种接口各一个驱动。
  • 总线与地址:I2C 默认 0x62(98),旧版板卡 0x42 也会尝试(见 LidarLiteI2C.h 双地址表);PWM 版无地址。
  • 使能参数:SENS_EN_LL40LS:0=关(默认)、1=PWM、2=I2C——一个参数决定跑哪个驱动。
  • 启动示例:ll40ls start -I -a 98 -R 25;PWM 版ll40ls_pwm start -R 25。
  • 关键参数:SENS_LL40LS_SMIN(V3HP 最低信号强度,默认 70,0~254),用于过滤弱回波。
  • 特殊能力:ll40ls regdump可导出寄存器快照辅助调试。
  • 源码:src/drivers/distance_sensor/ll40ls/、src/drivers/distance_sensor/ll40ls_pwm/。

tf02pro

  • 定位:Benewake TF02 Pro,小型 I2C 激光测距。
  • 总线与地址:I2C,默认 0x10(16,见 TF02PRO.hpp)。
  • 使能参数:SENS_EN_TF02PRO,默认关。
  • 启动示例:tf02pro start -I -a 16 -R 25
  • 源码:src/drivers/distance_sensor/tf02pro/。

teraranger

  • 定位:Bosch TeraRanger 系列(TROne / TREvo),中距激光。
  • 总线与地址:I2C,默认 0x30(48,见 TERARANGER.hpp)。
  • 使能参数:SENS_EN_TRANGER:0=关(默认)、1=自动检测、2~5=TROne/TREvo60m/TREvo600Hz/TREvo3m。
  • 启动示例:teraranger start -I -a 48 -R 25
  • 源码:src/drivers/distance_sensor/teraranger/。

mappydot

  • 定位:MappyDot 光学测距模块。
  • 总线与地址:I2C,无固定默认地址,靠检测逻辑扫描。
  • 使能参数:SENS_EN_MPDT:0=关(默认)、1=自动检测。
  • 启动示例:mappydot start -I -q
  • 源码:src/drivers/distance_sensor/mappydot/。

gy_us42

  • 定位:GY-US42 超声波模块,I2C 接口。
  • 总线与地址:I2C,默认 0x70(112,见 GY_US42.hpp)。
  • 使能参数:无。
  • 启动示例:gy_us42 start -I -R 25
  • 源码:src/drivers/distance_sensor/gy_us42/。

srf02

  • 定位:Pololu SRF02 超声波。
  • 总线与地址:I2C,默认 0x70(112,见 SRF02.hpp)。
  • 使能参数:无。
  • 启动示例:srf02 start -I -a 112 -R 25
  • 源码:src/drivers/distance_sensor/srf02/。

mb12xx

  • 定位:MaxBotix mb12xx 超声波,支持最多 12 个实例。
  • 总线与地址:I2C,默认 112,但启动时从 112 向 90 逐地址扫描,自动发现多个传感器(见 mb12xx.cpp 扫描循环)。
  • 使能参数:SENS_EN_MB12XX,默认关。
  • 启动示例:mb12xx start -I(不支持-R)
  • 关键参数:SENS_MB12_0_ROT~SENS_MB12_11_ROT逐实例设置朝向(0~7 仅 Yaw 方向)。
  • 特殊能力:set_address -a <val>子命令改写传感器地址(默认 112),解决多设备地址冲突。
  • 源码:src/drivers/distance_sensor/mb12xx/。

srf05

  • 定位:HY-SRF05 / HC-SR05、HC-SR04,GPIO 触发/回显式超声波。
  • 总线与地址:GPIO 两线(触发+回显),无总线参数。
  • 使能参数:SENS_EN_SR05,默认关。
  • 启动示例:srf05 start -R 25
  • 源码:src/drivers/distance_sensor/srf05/。

pga460

  • 定位:TI PGA460 超声波,以 NuttX task 而非 work_queue 运行——因为驱动需要阻塞式 UART 轮询,工作队列不支持。
  • 总线与地址:UART,需指定设备路径。
  • 使能参数:SENS_EN_PGA460,默认关。
  • 启动示例:pga460 start /dev/ttyS6
  • 特殊能力:驱动内置假读数检测,数据无效或不稳定时完全不发布该帧,保证输出质量。
  • 源码:src/drivers/distance_sensor/pga460/。

cm8jl65

  • 定位:兰宝 PSK-CM8JL65-CC5 红外多区域测距,发布obstacle_distance多扇区数据。
  • 总线与地址:UART,自动启动。
  • 使能参数:SENS_CM8JL65_CFG(0=关,选串口)。
  • 启动示例(自动):等效于cm8jl65 start -d <串口> -R 25
  • 关键参数:SENS_CM8JL65_R_0安装朝向(默认 25 朝下,支持朝前/后/左/右/上)。
  • 源码:src/drivers/distance_sensor/cm8jl65/,配置见 module.yaml。

leddar_one

  • 定位:LeddarOne 长距激光(数百米),常用于测地物距离。
  • 总线与地址:UART,自动启动。
  • 使能参数:SENS_LEDDAR1_CFG(0=关,选串口)。
  • 启动示例:leddar_one start -d /dev/ttyS1 -r 25(注意小写-r)。
  • 源码:src/drivers/distance_sensor/leddar_one/。

tfmini

  • 定位:Benewake TFmini 低成本串口激光,40 m 级量程,入门首选。
  • 总线与地址:UART,自动启动。
  • 使能参数:SENS_TFMINI_CFG(0=关,选串口)。
  • 启动示例:tfmini start -d /dev/ttyS1 -R 25
  • 关键参数:SENS_TFMINI_HW:1=TFmini、2=IstrA24、3=IstrA24-100m(量程与视场不同,默认 1)。
  • 源码:src/drivers/distance_sensor/tfmini/。

lightware_laser_serial

  • 定位:Lightware SF02/F、SF10、SF11、SF30、LW20/c 的串口版。
  • 总线与地址:UART,自动启动。
  • 使能参数:SENS_EN_SF0X选型号(1=SF02、2=SF10/a、3=SF10/b、4=SF10/c、5=SF11/c、6/7=SF30/b/c、8=LW20/c,默认 1)+SENS_SF0X_CFG选串口。
  • 启动示例:lightware_laser_serial start -d /dev/ttyS1 -R 25
  • 源码:src/drivers/distance_sensor/lightware_laser_serial/,帧解析逻辑与单元测试在同目录parser.cpp。

lightware_grf_serial

  • 定位:Lightware GRF250/GRF500 长距激光串口版。
  • 总线与地址:UART,自动启动。
  • 使能参数:GRF_SENS_MODEL:0=关(默认)、1=GRF250、2=GRF500;SENS_EN_GRF_CFG选串口。
  • 启动示例:lightware_grf_serial start -d /dev/ttyS1
  • 关键参数:GRF_RATE_CFG输出速率 1~50 Hz(默认 4=5 Hz)。
  • 源码:src/drivers/distance_sensor/lightware_grf_serial/。

lightware_sf45_serial

  • 定位:Lightware SF45/b 超高帧率激光(最高 5000 Hz)。
  • 总线与地址:UART,自动启动。
  • 使能参数:SENS_EN_SF45_CFG(0=关,选串口)。
  • 启动示例:lightware_sf45_serial start -d /dev/ttyS1
  • 关键参数:SF45_UPDATE_CFG(50 Hz~5000 Hz,默认 5=500 Hz);SF45_ORIENT_CFG(24 朝上/25 朝下,默认 24);SF45_YAW_CFG(0/2/4/6 对应前/右/后/左,默认 0)。
  • 特殊能力:额外发布obstacle_distance主题。
  • 源码:src/drivers/distance_sensor/lightware_sf45_serial/。

sony_asdt1

  • 定位:Sony AS-DT1 多点多段激光,同时输出多方向距离与方位。
  • 总线与地址:UART,自动启动;驱动会探测 921600 与 115200 两种波特率并把传感器配置为二进制流模式(见 sony_asdt1.cpp)。
  • 使能参数:SENS_ASDT1_CFG(0=关,选串口)。
  • 启动示例:sony_asdt1 start -d /dev/ttyS4;调试用sony_asdt1 start -d /dev/ttyS4 -s(只发 flshow 命令打印响应,不开始测量)。
  • 关键参数:SENS_ASDT1_MODE:0=30MSTD、1=30M15F、2=30M30F、3=20M、4=40M(默认 0);SENS_ASDT1_ROT传感器相对机体前向的 Yaw 偏移角,单位度(默认 0,-360~360)。
  • 源码:src/drivers/distance_sensor/sony/。

ulanding_radar

  • 定位:Aerotenna uLanding 毫米波雷达,雨天穿透性好,发布RADAR类型。
  • 总线与地址:UART,自动启动;-d默认值/dev/ttyS3。
  • 使能参数:SENS_ULAND_CFG(0=关,选串口)。
  • 启动示例:ulanding_radar start -d /dev/ttyS1 -R 25
  • 源码:src/drivers/distance_sensor/ulanding_radar/。

五、朝向与坐标系:为什么默认值是 25

距离读数本身是标量,下游估计器需要知道"这个距离朝哪个方向"才能把它变成机体坐标系里的矢量。PX4 用MAV_SENSOR_ORIENTATION枚举表达朝向,定义直接写在 msg/DistanceSensor.msg:

常量值含义
ROTATION_YAW_0~YAW_3150~7水平面内每 45° 一档(0=朝前,2=朝右,4=朝后,6=朝左)
ROTATION_UPWARD_FACING24朝上(Pitch 90°)
ROTATION_DOWNWARD_FACING25朝下(Pitch 270°)
ROTATION_CUSTOM100自定义,配合消息里的四元数q字段

设置途径按优先级:启动参数-R <val>(或 leddar_one 的-r)> 驱动专属参数(SENS_AFBR_ROT、SENS_MB12_x_ROT、SF45_ORIENT_CFG、SENS_CM8JL65_R_0等)> 默认 25。

三个常见场景:

  • 传感器水平朝前安装(如前视避障):-R 0;朝后-R 4;
  • 机顶朝上安装(测净空高度):-R 24;
  • 非正交安装(如斜装 45°):-R 1(Yaw 45°)等档位;再特殊的情况由部分驱动经orientation=ROTATION_CUSTOM加四元数描述。

mb12xx的逐实例SENS_MB12_x_ROT只给了 0~7(水平 Yaw),因为它的传感器安装面默认朝下,只需转水平角;若你的 mb12xx 装得不朝下,这个驱动就表达不了,应换用支持 24/25 的驱动或参数。

六、校准与调优

6.1 校准命令

目前只有 afbrs50 提供正式校准流程——绝对距离偏移校准,原理是把读数与已知真实距离的差值存为偏移量,下次启动叠加在出厂校准上:

afbrs50 cal start 0.3 # 对准 0.3 m 的平面目标 afbrs50 cal status # 查看结果 afbrs50 cal stop

校准结果写入SENS_AFBR_OFS_LO/SENS_AFBR_OFS_HI(低/高激光功率级各一个偏移),置 0 即恢复出厂。其余驱动依赖出厂校准 + 朝向参数,无在线校准命令;I2C 类驱动可用status、ll40ls 可用regdump辅助确认硬件状态。

6.2 信号质量门槛

signal_quality字段(0~100%)是"读数可信度"的统一表达。afbrs50 的SENS_AFBR_QMIN是唯一在驱动层做门槛过滤的参数:低于门槛的测量会以质量 0(无效)发布——消费方丢弃该帧但仍认为传感器在线。调高它会拒绝抖动读数,但远距弱回波恰好是低质量的,也会被一并滤掉,需按场景权衡。ll40ls 的SENS_LL40LS_SMIN对 V3HP 起类似作用。

6.3 帧率与量程的权衡

这是长距 ToF 的普遍矛盾:单帧曝光时间越长,信噪比越高,可探测距离越远,但更新率越低。

  • afbrs50:SENS_AFBR_PROF一档搞定——Range 档在 LV85D/LX85D 上取 20/15 Hz 保量程,Fast 档取原生 50/25 Hz 供光流与近地地形跟随;也可用SENS_AFBR_RATE/SENS_AFBR_DFM细调(显式设置会覆盖 profile)。DFM 开启后基础无歧义量程(LV85D 12.5 m、LX85D 25 m)×4 或 ×8,代价是帧时间变长。
  • GRF:GRF_RATE_CFG1~50 Hz 可选,默认 5 Hz——长距激光不必追求高帧率,提高速率换取的是时间分辨率。
  • SF45:SF45_UPDATE_CFG最高 5000 Hz,是 PX4 中帧率上限最高的距离驱动,适合需要密集时序的场景。

七、DistanceSensor.msg 字段逐项解读

结合 msg/DistanceSensor.msg 源码,各字段含义与消费方关注点:

字段类型含义下游怎么用
timestampuint64系统启动以来的微秒时间戳多传感器时间对齐
device_iduint32器件唯一 ID(总线类型+总线号+器件类型编码)区分同总线多传感器,重启后不变
min_distance/max_distancefloat32可测量程上下限(米)读数越界时判定为无效
current_distancefloat32当前距离(米)EKF2 高度融合、定高、地形跟随的直接输入
variancefloat32测量方差(m²);0 表示未知/无效融合时的权重依据
signal_qualityint80~100%,0=无效,-1=未知消费方据此丢帧,如SENS_AFBR_QMIN配合它工作
typeuint80=LASER、1=ULTRASOUND、2=INFRARED、3=RADAR不同物理原理的量程特性差异,估计器可区别对待
h_fov/v_fovfloat32水平/垂直视场角(弧度)光流融合、覆盖范围计算
orientation+quint8 + float32[4]朝向枚举或自定义四元数把标量距离变换到机体坐标系的方向向量来源
modeuint81=启用、2=禁用、0=未知健康状态上报

每个驱动在初始化时通过set_rangefinder_type()声明自己的type(如 AerotennaULanding.cpp 声明 RADAR、SRF02.cpp 声明 ULTRASOUND),下游无需关心具体硬件。

八、故障诊断:按症状找原因

症状可能原因排查动作
start报找不到设备总线选错(-I/-X 与实际挂载不符);地址错换-X/-b <总线号>重试;确认-a与硬件地址一致;I2C 工具(如i2c扫描命令)列出总线上实际器件
启动即退出、无提示非静默模式下驱动未检测到器件就退出加-q静默启动后再status查看内部状态;确认驱动 Kconfig 开关已编入固件
地址冲突(读到别人的数据/总线错误)同总线多 I2C 器件地址相同-a指定正确地址;mb12xx 用set_address改写传感器自身地址;VL53 系列利用 XSHUT 逐台改址
读数方向反了/偏了 90°安装朝向没设核对-R/SENS_*_ROT;朝下=25、朝前=0、朝上=24(见第五章)
串口驱动不自动启动SENS_*_CFG未设置或指向的串口被占用QGC 参数里确认该 CFG 参数选了正确端口编号;log查看启动脚本是否执行了对应 start 命令
数据抖动、频繁跳变目标表面弱反射/吸波(超声波尤其敏感);质量门槛过低提高SENS_AFBR_QMIN或SENS_LL40LS_SMIN;检查安装面下方是否有遮挡、格栅;雷达类确认目标材质
读数恒为最大量程超出物理量程或信号过弱用标准距离验证:靠近目标后读数应下降;afbrs50 可调SENS_AFBR_MODE/SENS_AFBR_PROF换量程模式
参数改完没反应绝大多数SENS_EN_*与朝向参数reboot_required改参后重启,或reboot后再验证

九、选型决策清单

你的需求推荐理由
预算有限、入门定高/简单避障tfmini(串口)或 vl53l1x(I2C)价格最低,自动启动省心,驱动最活跃
20 m 内中距定高,I2C 总线teraranger(TREvo 系列)自动检测型号,48 默认地址,量程覆盖好
长距(百米级)激光测地leddar_one 或 lightware_grf_serial量程数百米,GRF 支持 50 Hz
需要最高帧率时序lightware_sf45_serial最高 5000 Hz,且额外发布 obstacle_distance
雨天/低能见度探测ulanding_radar毫米波穿透雨雾,RADAR 类型,自动启动
多方向/扇区测距sony_asdt1 或 cm8jl65前者激光多点,后者红外多区域,均发布 obstacle_distance
近距(<10 m)超声波,抗强光mb12xx / srf02 / pga460声波不受光照影响;mb12xx 支持 12 实例环绕布阵,pga460 自带假读数过滤
PWM 接口老机型ll40ls(PWM 模式)一个SENS_EN_LL40LS=1切换
需要绝对精度、可调优空间最大afbrs50唯一带在线校准命令,参数族覆盖模式/帧率/DFM/质量门槛
前视避障(水平安装)GRF / sf45 / tfmini +-R 0支持水平朝向档位,量程满足前视需求

结语

PX4 用"统一 CLI + 统一 uORB 消息"把 22 款物理原理各异的距离传感器收敛成一套可预期的接入流程:接对线、开对 Kconfig、设对使能与朝向参数,剩下的调优空间就藏在几个质量门槛与帧率量程参数里。

【免费下载链接】PX4-AutopilotPX4 Autopilot Software项目地址: https://gitcode.com/gh_mirrors/px/PX4-Autopilot

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询