DroneCAN
DroneCAN 是一种开放式软件通信协议,用于飞行控制器和其他 CAN 载具上的设备可以相互通信。
警告
- DroneCAN 默认未启用,使用它的特定传感器和功能也未启用。有关设置信息,请参阅 PX4 配置.
- PX4 需要 SD 卡来实现动态节点分配和固件更新。飞行中不使用 SD 卡。
信息
DroneCAN 以前称为 UAVCAN v0(或简称 UAVCAN)。该名称于 2022 年更改。
DroneCAN 的优势
通过 DroneCAN 连接外围设备有很多好处:
- 已支持许多不同的传感器和执行器。
- CAN 是专为在相对较远距离上提供稳健可靠的连接而设计的。它可以在大型载具上安全使用电子稳定性控制系统(ESC),并实现通信冗余。
- 总线是双向的,可以进行健康监测、诊断和转速遥测。
- 由于可以使用单一总线连接所有电调和其他 DroneCAN 外围设备,因此布线更加简单。
- 通过手动旋转每个电机来配置电调编号,因此设置更为简单。
- 它允许用户通过 PX4 集中配置和更新所有 CAN 连接设备的固件。
支持的硬件
支持符合 DroneCAN/UAVCAN v0 标准的大多数常见外设类型(传感器、电调和伺服器)。
支持的硬件包括(这并不是一份详尽的清单):
- 电调/电机控制器
- 空速传感器
- 用于全球导航卫星系统(GPS、GLONASS、北斗等)的全球导航卫星系统接收器
- 功率监控器
- 指南针
- 距离传感器
- 光流
- 通用 CAN 节点(可在 CAN 总线上使用 I2C、SPI 和 UART 传感器)。
硬件设置
DroneCAN 通过 CAN 网络运行。DroneCAN 硬件应按照以下说明进行连接 CAN > 接线.
节点 ID 分配
每个 DroneCAN 设备都必须配置一个 节点 id 这在载具上是独一无二的。
大多数设备支持 动态节点分配(DNA)该功能允许 PX4 在系统启动时自动配置每个检测到的外围设备的节点 ID。有关设备是否支持 DNA 以及如何启用 DNA 的详细信息,请查阅制造商文档。如果节点 ID 设置为 0,许多设备会自动切换到 DNA。 UAVCAN_ENABLE 参数为 1(设置为 2 或 3)。
有些设备不支持 DNA。此外,在某些关键任务场景中,您可能更愿意事先手动配置节点 ID,而不是依赖动态分配服务器。如果您想完全禁用 DNA,请设置 UAVCAN_ENABLE
至 1
并手动将每个节点 ID 设置为唯一值。如果 DNA 仍在运行,且某些设备需要手动配置,则应为这些设备设置一个大于 DroneCAN 设备总数的值,以避免冲突。
信息
PX4 节点 ID 可以使用 UAVCAN_NODE_ID 参数。该参数默认设置为 1。
警告
在撰写本文时,PX4 不在 CAN2 端口上运行节点分配服务器。这意味着,如果您的设备是 只是 连接到 CAN2(而不是冗余连接到 CAN1 和 CAN2)时,需要手动配置其节点 ID。
PX4 配置
通过以下方式在 PX4 上配置 DroneCAN 设置特定的 PX4 参数 在 QGroundControl 中。您需要启用 DroneCAN 本身以及您使用的任何功能的订阅和出版物。
信息
在某些情况下,您可能还需要在所连接的 CAN 设备上配置参数(这些参数也可以是 使用 QGC 设置).
启用 DroneCAN
要启用 PX4 DroneCAN 驱动程序,请设置 UAVCAN_ENABLE 参数:
0
:禁用 DroneCAN 驱动程序1
:传感器已启用 DroneCAN 驱动程序、 DNA 服务器 残2
:传感器已启用 DroneCAN 驱动程序,DNA 服务器已启用3
:传感器和电调已启用 DroneCAN 驱动程序,DNA 服务器已启用
2
或 3
如果支持 DNA,建议使用
DroneCan 订阅及出版物
PX4 不会发布或订阅下列 DroneCAN 信息 也许 默认情况下不需要,以免造成 CAN 总线垃圾邮件。相反,您必须通过设置相关的 UAVCAN 参数.
例如,要使用已连接的 DroneCAN 智能电池,您可以启用 UAVCAN_SUB_BAT 参数,使 PX4 订阅接收 电池信息 DroneCAN 信息。如果使用的外围设备需要知道 PX4 是否已上膛,则需要设置 UAVCAN_PUB_ARM 参数,以便 PX4 开始发布 上膛状态 留言
参数名称的前缀是 UAVCAN_SUB_
和 UAVCAN_PUB_
来表示是否启用 PX4 订阅或发布。名称的其余部分表示正在设置的特定信息/功能。
连接到 PX4 的 DroneCAN 外围设备还可以 通过 QGC 使用参数配置.按照惯例,以 CANNODE_ 有前置含义,可在参数参考中记录。 CANNODE_
前的参数 CANNODE_PUB_
和 CANNODE_SUB_
使外设能够发布或订阅相关的 DroneCAN 消息。这些功能允许将 DroneCAN 外围设备配置为只订阅和发布它们实际需要的信息(与 PX4 使用相应的 UAVCAN_PUB_
/UAVCAN_SUB_
参数)。请注意,外设可能不会使用 CANNODE_
参数,在这种情况下,无论是否需要,它都必须发布/订阅特定信息。
以下各节将详细介绍用于启用特定功能的 PX4 和 DroneCAN 外围设备参数。
传感器
您可以启用的 DroneCAN 传感器参数/订阅包括(PX4 v1.14):
- uavcan_sub_aspd:空速
- uavcan_sub_baro:气压计
- UAVCAN_SUB_BAT:电池监控器/电源模块
- UAVCAN_SUB_BTN:按钮
- uavcan_sub_dpres:压差
- uavcan_sub_flow:光流
- UAVCAN_SUB_GPS:全球定位系统
- uavcan_sub_hygro:湿度计
- UAVCAN_SUB_ICE:内燃机(ICE)。
- UAVCAN_SUB_IMU:IMU
- UAVCAN_SUB_MAG:磁力计(罗盘)
- UAVCAN_SUB_RNG:测距仪(距离传感器)。
全球定位系统
PX4 DroneCAN 参数:
- 启用 UAVCAN_SUB_GPS.
- 启用 UAVCAN_SUB_MAG 如果 GPS 模块有内置指南针。
GPS CANNODE 参数 (使用 QGC 设置):
- 设置 CANNODE_TERM 至
1
为 CAN 总线上的最后一个节点。
其他 PX4 参数:
- 如果 GPS 的位置不在载具重心处,您可以使用以下方法计算偏移量 EKF2_GPS_POS_X, EKF2_GPS_POS_Y 和 EKF2_GPS_POS_Z.
- 如果 GPS 模块提供偏航信息,则可以通过设置 GPS 偏航融合的第 3 位来启用 GPS 偏航融合。 EKF2_GPS_CTRL 为 true。
RTK GPS
设置与 全球定位系统 以上。此外,您可能还需要设置以下参数,具体取决于您的 RTK 设置是UGV无人车和固定基站,还是UGV无人车和移动基站,或者两者兼而有之。
UGV无人车和固定基座
漫游车的位置是通过 RTK 基础模块发送的 RTCM 信息确定的(基础模块连接到 QGC,QGC 通过 MAVLink 将 RTCM 信息发送到 PX4)。
PX4 DroneCAN 参数:
- uavcan_pub_rtcm:
- 使 PX4 发布 RTCM 信息 (RTCMStream)连接到总线(通过 QGC 从 RTK 基本模块获取)。
UGV无人车模块参数(也包括 使用 QGC 设置):
- 子插管 告诉漫游车应该订阅 RTCMStream 总线上的 RTCM 信息(来自移动基地)。
信息
您可以使用 UAVCAN_PUB_MBD 和 子插管也发布 RTCM 信息(这些信息较新)。使用 RTCMStream 消息意味着您可以同时实施移动基地(见下文)。
UGV无人车和移动基地
正如 使用双 u-blox F9P 的 RTK GPS 定位系统 载具可以有两个 RTK 模块,以便通过 GPS 计算偏航。在这种设置中,载具有一个 移动基地 RTK GPS 和一个 UGV无人车 RTK GPS。
这些参数可以是 在移动基地和漫游车 RTK CAN 节点上设置分别为
对于 PX4,您还需要设置 GPS_YAW_OFFSET 来指示移动基地和漫游车的相对位置:0 表示漫游车位于移动基地前方,90 表示漫游车位于移动基地右侧,180 表示漫游车位于移动基地后方,270 表示漫游车位于移动基地左侧。
气压计
PX4 DroneCAN 参数:
- 启用 uavcan_sub_baro.
指南针
PX4 DroneCAN 参数:
- 启用 UAVCAN_SUB_MAG.
距离传感器/测距仪
PX4 DroneCAN 参数:
- 启用 UAVCAN_SUB_RNG.
- 设置 UAVCAN_RNG_MIN 和 UAVCAN_RNG_MAX距离传感器的最小和最大量程。
其他 PX4 参数:
- 如果测距仪的位置不在载具重心处,您可以使用以下方法计算偏移量 EKF2_RNG_POS_X, EKF2_RNG_POS_Y 和 EKF2_RNG_POS_Z.
- 其他
EKF2_RNG_*
在这种情况下,这些参数应记录在特定测距仪中。
光学流量传感器
PX4 DroneCAN 参数:
- 启用 uavcan_sub_flow.
其他 PX4 参数:
- 设置 传感器流量最小值 和 传感器流量最大值即流量传感器的最小和最大高度。
- 设置 SENS_FLOW_MAXR 传感器的最大角流速。
- 通过设置 EKF2_OF_CTRL.
- 要禁用 GPS 辅助(可选),请设置 EKF2_GPS_CTRL 至
0
. - 如果光流装置的位置不在载具重心处,可以通过以下方法计算偏移量 EKF2_OF_POS_X, EKF2_OF_POS_Y 和 EKF2_OF_POS_Z.
光学流量传感器需要测距仪数据。不过,测距仪不一定属于同一模块,如果不属于同一模块,也可以不通过 DroneCAN 连接。如果测距仪是通过 DroneCAN 连接的(无论是内置的还是单独的),您还需要按照以下步骤启用它。 测距仪部分 (上图)。
上膛外围设备
PX4 DroneCAN 参数:
- UAVCAN_PUB_ARM (上膛状态):在使用需要 PX4 上膛状态作为使用前提条件的 DroneCAN 组件时发布。
电调和舵机
DroneCAN 电子调速器和伺服器 要求 电机顺序和伺服输出 进行配置。
QGC CANNODE 参数配置
QGroundControl 可以检查和修改连接到飞行控制器的 CAN 设备的参数,前提是这些设备在 QGC 启动前已连接到飞行控制器。
CAN 节点在 载具设置 > 参数 名为 第 X 部分其中 X 是节点 ID。例如,下面的截图显示了节点 ID 为 125 的 CAN GPS 的参数(在"...... "之后)。 标准, 系统和 开发人员 参数分组)。
设备特定设置
大多数 DroneCAN 节点无需进一步设置,除非在设备特定文档中有特别说明。
固件更新
PX4 可通过 DroneCAN 升级设备固件。要升级设备,只需将固件二进制文件复制到飞行控制器 SD 卡的根目录,然后重新启动即可。
启动后,飞行控制器会自动将固件传输到设备上并进行升级。如果升级成功,固件二进制文件将从根目录中删除,同时会出现一个名为 XX.bin 在 /ufw SD 卡的目录。
故障排除
Q:我的 DroneCAN 设备不工作。
A:检查 UAVCAN_ENABLE
参数设置正确。要查看 PX4 在 CAN 总线上检测到的设备/节点列表,请打开 NSH(即进入 QGroundControl MAVLink 控制台)并键入 飞行任务状态
.
Q:DNA 服务器不提供节点 ID。
A:PX4 需要 SD 卡才能执行动态节点分配。请确保已插入(可用的)SD 卡并重新启动。
Q:上膛时电机不转。
A:确保 UAVCAN_ENABLE
设置为 3
以启用 DroneCAN ESC 输出。
Q:在加大油门之前,电机不会旋转。
A:使用 执行器测试 以确认电机输出已设置为正确的最小值。
实用链接
- 主页 (dronecan.github.io)
- 协议规范 (dronecan.github.io)
- 实施 (dronecan.github.io)
- Cyphal/CAN 设备互联 (kb.zubax.com)