- 嵌入式
- 物联网
- 机器人
- 自动驾驶
- 智能硬件
【免费下载链接】PX4-Autopilot
PX4 Autopilot Software
ARK DIST SR 是 ARK Electronics 出品的一款开源硬件短距离(8 cm ~ 30 m)DroneCAN 测距传感器(rangefinder),在 PX4 Autopilot 中可直接通过 CAN 总线以 DroneCAN 协议接入,也可以退化为 UART + MAVLink 方式连接。本文以仓库内 ARK DIST SR 官方文档 为主线,完整梳理其硬件规格、两种接线方式、PX4 参数配置清单,并结合仓库中的 uORB/DroneCAN 驱动与 EKF2 源码,讲清楚从"传感器测量值"到"EKF 高度融合"的完整数据链路,帮助你快速完成硬件选型、接线、参数调校与故障排查。
一、ARK DIST SR 是什么
ARK DIST SR 是一款低量程(low range)、开源设计的 DroneCAN 距离传感器,典型测量范围约为8 cm 到 30 m。它基于 Broadcom 的 Time-of-Flight(ToF)激光测距方案,在 PX4 生态中主要服务于:
- 地形跟随 / 地形保持(terrain following / terrain hold);
- 辅助起降时的"条件测距辅助"(conditional range aiding)高度融合;
- 近地悬停测距、高度限制告警等。
在 距离传感器总览文档 的支持列表里,ARK DIST SR 与 ARK DIST MR 被并列列出:SR 版本量程为8 cm ~ 约 30 m,MR 版本为8 cm ~ 约 50 m,二者均支持 DroneCAN 与 UART 两种连接方式,且均符合 NDAA 合规要求。本文聚焦 SR 版本,其配置方法同样适用于 MR 版本(仅需把最大量程相关参数从 30 改为 50,参见 ARK DIST MR 文档)。
二、硬件规格速览
ARK DIST SR 的完整硬件设计(原理图与 BOM)以开源形式发布,传感器核心为Broadcom AFBR-S50LV85D ToF 距离传感器,其关键特性如下:
| 项目 | 规格 |
|---|---|
| 测量原理 | 850 nm 激光 Time-of-Flight(ToF) |
| 典型量程 | 约 8 cm ~ 30 m |
| 视场角(FoV) | 12.4° × 6.2°,32 像素 |
| 抗环境光 | 最高 200k Lux 环境光下可工作 |
| 健康监测 | 内置 Reference Pixel,用于系统健康监控 |
| 表面适应性 | 官方声称在各种表面条件下表现良好 |
| 发射光束 | 2° × 2°,可照亮 1 ~ 3 个像素 |
连接器与物理形态:
- 2 个 Pixhawk 标准 CAN 连接器(4 Pin JST GH)——支持菊花链冗余接线;
- 1 个 Pixhawk 标准 UART 连接器(6 Pin JST SH);
- 1 个 Pixhawk 标准 Debug 连接器(6 Pin JST SH);
- 小体积:2.0 cm × 2.8 cm × 1.4 cm,重约 4 g;
- 带 LED 指示灯;
- 美国制造,符合 NDAA 合规要求。
电源需求:
| 电压 | 平均电流 | 最大电流 |
|---|---|---|
| 5 V | 84 mA | 86 mA |
低功耗特性使其非常适合小型无人机与载板供电受限的场景;4 g 的重量也几乎可以忽略对整机重心的影响。
三、两种连接方式:CAN(DroneCAN)与 UART(MAVLink)
ARK DIST SR 支持两条接入 PX4 的通道,对应两种不同的数据协议:
- CAN 总线 + DroneCAN 协议:这是推荐的主接入方式,传感器作为 DroneCAN 节点挂到 CAN 总线上,PX4 通过 DroneCAN 订阅测距数据;
- UART 串口 + MAVLink 协议:传感器通过串口直接输出 MAVLink 的 DISTANCE_SENSOR 消息(
current_distance字段即为测量值),适合没有可用 CAN 接口或希望独占一条串口的场景。
两种方式在 PX4 侧的参数配置完全不同,下文分别给出完整的配置清单。
四、硬件接线(Wiring)
4.1 CAN 接线
ARK DIST SR 通过一根 Pixhawk 标准的4 Pin JST GH CAN 线缆接入 CAN 总线。PX4 侧 CAN 网络的物理接线规范参见 CAN 接线文档:
- CAN 设备按"菊花链"(daisy-chain)方式串接,顺序无关;
- 不要把每个外设单独接到不同的 CAN 端口(
CAN2等端口用于冗余接线); - 在链路的两端需要接入 120 Ω 终端电阻;部分飞控和 GNSS 模块内置终端电阻,应分别放在链路两端;
- ARK DIST SR 自带两个 CAN 连接器,因此可以很方便地作为链路的中间节点,让其他设备继续从另一个 CAN 口串接出去。
4.2 UART 接线
若选择 UART 方式,则将传感器通过 6 Pin JST SH 的 Pixhawk 标准 UART 连接器接到飞控的串口(例如GPS2/TELEM2等空闲串口),随后按下文 UART/MAVLink 配置 进行参数设置。
五、PX4 配置:DroneCAN 通道
5.1 第一步:启用 DroneCAN 驱动
在 QGroundControl 中(参数修改方法见 查找/更新参数):
- 将参数 UAVCAN_ENABLE 设为
2(若同时使用 DroneCAN 电调 则设为3),然后重启飞控; - 将 ARK DIST SR 的 CAN 口连接到 Pixhawk 的 CAN 端口。
UAVCAN_ENABLE的取值含义(来自 参数参考 与 DroneCAN 总览):
| 取值 | 含义 | 默认值 |
|---|---|---|
0 | DroneCAN 驱动禁用 | 默认 |
1 | 启用传感器,但关闭动态节点分配(DNA)服务器 | |
2 | 启用传感器,并开启 DNA 服务器 | |
3 | 启用传感器与电调(ESC)输出,并开启 DNA 服务器 |
启用后,模块会在启动时被自动检测到,测距数据将以40 Hz的速率到达。
5.2 第二步:订阅测距消息并设置量程
在 QGroundControl 中设置以下参数:
| 参数 | 推荐值 | 说明 |
|---|---|---|
| UAVCAN_ENABLE | 2 | 启用 DroneCAN + 动态节点分配 |
| UAVCAN_SUB_RNG | 启用 | 订阅 DroneCAN 测距消息 |
| EKF2_RNG_A_HMAX | 30 | 条件测距辅助模式允许的最大离地高度(m) |
| EKF2_RNG_QLTY_T | 0.2 | 测距信号有效性的最短持续判定时间(s) |
| UAVCAN_RNG_MIN | 0.08 | DroneCAN 测距最小有效量程(m),对应 8 cm |
| UAVCAN_RNG_MAX | 30 | DroneCAN 测距最大有效量程(m) |
参数背后的源码依据
- UAVCAN_SUB_RNG 在驱动参数文件中定义为布尔类型,默认值为
0(未启用),修改后需要重启。它使 PX4 订阅uavcan::equipment::range_sensor::Measurement消息——这与 DroneCAN 总览中"PX4 默认不会订阅所有可能用到的消息,以避免污染 CAN 总线"的设计一致(参见 DroneCAN 订阅与发布)。 - UAVCAN_RNG_MIN / UAVCAN_RNG_MAX 的默认值分别为
0.0与999.0(单位 m),即不设置时驱动几乎不做量程裁剪。在 rangefinder 驱动 的init()中,会通过param_get(param_find("UAVCAN_RNG_MIN"), ...)与param_get(param_find("UAVCAN_RNG_MAX"), ...)读取这两个参数,作为测距值的有效范围过滤依据。将UAVCAN_RNG_MIN设为 0.08、UAVCAN_RNG_MAX设为 30,即把有效量程精确对齐到该传感器的 8 cm ~ 30 m 物理能力。
EKF 高度融合参数说明
- EKF2_RNG_A_HMAX 属于"条件测距辅助"(conditional range aid)参数:当
EKF2_RNG_CTRL = 1(默认值即 1,条件模式)时,仅当飞行器离地高度低于该阈值、且水平速度低于 EKF2_RNG_A_VMAX(默认 1.0 m/s)时,EKF 才会融合测距数据估计高度,适合起降阶段气压计受旋翼洗流干扰的场景。 - EKF2_RNG_QLTY_T 是"最小测距有效性时长"(默认 1.0 s,范围 0.1 ~ 5 s):只有测距信号质量(signal quality)连续非零的时间达到该值,测量才被判定为有效,用于过滤瞬时噪声。ARK DIST SR 文档推荐 0.2 s,即对信号质量要求更宽松。
提示:在 参数参考文档 中,
EKF2_RNG_A_HMAX的数值范围为 1.0 ~ 10.0 m(默认 5.0 m),而 ARK DIST SR 文档推荐设置为 30 m 以覆盖传感器全量程。二者存在差异,请以你所使用固件版本中的实际参数上限为准(超出上限时以固件允许的最大值近似即可),EKF 高度融合本身不会因为阈值略高而失效。
可选:安装位置补偿
若测距传感器未安装在飞行器重心(CoG)处,可进一步设置 EKF2_RNG_POS_X、EKF2_RNG_POS_Y、EKF2_RNG_POS_Z 进行三维位置补偿;若传感器并非严格垂直朝下安装,还需要设置 EKF2_RNG_PITCH(单位 rad,默认 0 表示垂直朝下)。这些参数的更完整清单见 距离传感器通用配置。
六、UART/MAVLink 配置
如果不走 CAN,而是通过 UART 串口连接 ARK DIST SR,则在 QGroundControl 中设置:
| 参数 | 推荐值 | 说明 |
|---|---|---|
| MAV_X_CONFIG | 传感器所接的串口 | 把该串口配置为 MAVLink 通道(X为通道号,如MAV_0_CONFIG对应通道 0) |
| MAV_X_FORWARD | 0(关闭) | 关闭该通道的 MAVLink 转发,减少多余流量 |
| MAV_X_MODE | 7或13 | 7为 Minimal、13为 Low Bandwidth,均可显著降低内存/带宽占用 |
SER_XXX_BAUD | 115200 | 串口波特率,XXX为具体端口名,例如 SER_GPS2_BAUD |
| EKF2_RNG_A_HMAX | 30 | 同上,条件测距辅助最大高度 |
| EKF2_RNG_QLTY_T | 0.2 | 同上,信号有效性判定时长 |
连接成功后,传感器通过 MAVLink 上报DISTANCE_SENSOR消息,PX4 会将其转换为内部distance_sensoruORB 主题(DistanceSensor消息定义见 DistanceSensor.msg),供 EKF2 等模块消费。
七、固件与节点管理:PX4 DroneCAN Firmware
ARK DIST SR 运行的是PX4 DroneCAN Firmware(详见 PX4 DroneCAN 固件文档),因此天然具备两项能力:
- 支持通过 CAN 总线远程升级固件:PX4 在启动时会扫描 SD 卡上
/fs/microsd/根目录或/fs/microsd/ufw_staging/暂存目录中的固件.bin文件,依据文件中内嵌的APDescriptor(包含目标板 ID、固件版本与校验和)匹配对应节点并自动刷写,具体流程见 DroneCAN 固件更新; - 支持动态节点分配(Dynamic Node Allocation, DNA):当
UAVCAN_ENABLE设为2或3时,PX4 会启动内置的节点分配服务器,在系统启动时为检测到的外设自动分配唯一节点 ID,无需手动配置(详见 Node ID Allocation)。
注意:PX4 进行动态节点分配需要SD 卡(飞行中不使用 SD 卡);另外 PX4 目前不在 CAN2 端口运行节点分配服务器,因此仅连接 CAN2(且无 CAN1 冗余)的设备需要手动配置节点 ID。
从固件构建角度,此类 CAN 外设的固件目标位于仓库boards/目录下,构建时会同时产出用于 CAN 刷写的.uavcan.bin应用固件与 SWD 刷写的canbootloader引导固件;驱动侧的核心实现位于 src/drivers/uavcannode(外设端生产者)与 src/drivers/uavcan(飞控端消费者)。
八、数据链路与底层实现
把 ARK DIST SR 接入 PX4 后,测距数据的完整流动路径为:
ARK DIST SR (AFBR-S50LV85D, ToF 测距) │ 40 Hz 测量 ▼ DroneCAN 总线:uavcan::equipment::range_sensor::Measurement ▼ PX4 uavcan 驱动 (src/drivers/uavcan/sensors/rangefinder.cpp) │ 订阅 + UAVCAN_RNG_MIN/MAX 量程过滤 ▼ uORB 主题:distance_sensor (msg/DistanceSensor.msg) ▼ EKF2 高度融合 (EKF2_RNG_* 参数控制, src/modules/ekf2/EKF) ▼ 飞行控制 / 地形跟随 / 辅助起降从源码结构可以确认几个关键实现事实:
- rangefinder.cpp 中的
UavcanRangefinderBridge以ORB_ID(distance_sensor)为发布目标,把 DroneCAN 测距消息桥接到标准 uORB 主题上,任何消费distance_sensor的模块(如 EKF2、避障、地形跟随)都能复用该数据; - 测距数据在 EKF2 中的融合行为由 params_range_finder.yaml 中的
EKF2_RNG_*参数族统一控制,包括EKF2_RNG_CTRL(融合开关与模式)、EKF2_RNG_NOISE(测量噪声)、EKF2_RNG_GATE(新息一致性门限)等。ARK DIST SR 文档只要求调整其中与量程/质量判定相关的两个参数,其余保持默认即可。
九、验证与测试
9.1 通过 MAVLink Console 查看测距数据
打开 QGroundControl 的MAVLink Console(或 SITL 模拟器下的终端),监听distance_sensoruORB 主题:
listener distance_sensor 5该命令会持续打印最近 5 条测距消息(包含current_distance等字段)。若主题无输出,请先确认UAVCAN_SUB_RNG已启用且飞控已重启(详见 Sensor/Topic Debugging)。
9.2 通过 QGC MAVLink Inspector 查看 DISTANCE_SENSOR
在 QGroundControl 中打开Analyze Tools,选择DISTANCE_SENSOR消息并勾选current_distance绘图,即可直观地看到测距值随传感器前方障碍物远近的变化曲线(参考 距离传感器测试章节)。
9.3 检查 CAN 总线节点
若设备未被识别,可在 MAVLink Console 中执行:
uavcan status该命令列出 PX4 在 CAN 总线上检测到的全部 DroneCAN 节点,用于确认 ARK DIST SR 是否成功入网。
十、常见问题排查
Q:ARK DIST SR 接入后没有数据?
- 确认 UAVCAN_ENABLE 已设为
2或3并重启; - 确认 UAVCAN_SUB_RNG 已启用(默认关闭);
- 在 MAVLink Console 执行
uavcan status检查节点是否在线; - 确认飞控插有可用的 SD 卡(动态节点分配依赖 SD 卡)。
Q:动态节点分配没有下发节点 ID?
- 检查 SD 卡是否正常插入并重启飞控。
Q:如何让 EKF 更信任/更不信任测距数据?
- 调整 EKF2_RNG_NOISE(测量噪声)与 EKF2_RNG_QLTY_T(信号有效性时长);想要更激进的融合可放宽噪声、降低质量门限。
十一、延伸阅读
- DroneCAN 总览与配置:DroneCAN 协议、节点分配、订阅/发布参数的完整说明;
- PX4 DroneCAN Firmware:CAN 外设固件的构建、静态节点 ID 配置与开发信息;
- 距离传感器(Rangefinder)总览:全部受支持测距传感器及通用配置/测试方法;
- CAN 总线接线:CAN 网络物理布线规范与终端电阻要求;
- EKF2 测距参数定义:
EKF2_RNG_*参数族的完整源码定义; - DroneCAN 测距驱动实现:飞控端测距消息订阅与量程过滤的具体代码;
- DroneCAN 驱动参数:
UAVCAN_SUB_RNG、UAVCAN_RNG_MIN/MAX等参数的默认值与取值范围。
- 嵌入式
- 物联网
- 机器人
- 自动驾驶
- 智能硬件
【免费下载链接】PX4-Autopilot
PX4 Autopilot Software
相关推荐
PX4 接入 ARK DIST MR 中程 DroneCAN 测距传感器:硬件规格、接线与参数配置完全指南
PX4 接入 ARK DIST MR 中程 DroneCAN 测距传感器:硬件规格、接线与参数配置完全指南 ARK DIST MR 是 ARK Electron
嵌入式物联网机器人自动驾驶智能硬件PX4 与 ARK Flow MR:中距离 DroneCAN 光流/测距/IMU 模块的接入与配置指南
PX4 与 ARK Flow MR:中距离 DroneCAN 光流/测距/IMU 模块的接入与配置指南 ARK Flow MR(Mid Range)是 ARK
嵌入式物联网机器人自动驾驶智能硬件COLMAP 教程:从照片到可旋转 3D 模型,只需 3 步
COLMAP 教程:从照片到可旋转 3D 模型,只需 3 步 你绕着一栋建筑拍了一圈,手机里存了几十张照片,现在想让它在屏幕上转起来——这就是 COLMAP 干
嵌入式物联网机器人自动驾驶智能硬件
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考