# CAN

控制器局域网(CAN) (打开新窗口) 是一种强大的有线网络,允许飞行控制器、电子调速器、传感器和其他外围设备等无人机组件相互通信。由于它的设计是民主的,并使用差分信号,因此即使在较长的电缆长度上(在大型载具上)也非常稳定,并可避免单点故障。CAN 还允许通过总线从外围设备获得状态反馈和方便的固件升级。

PX4 支持与 CAN 设备通信的两种软件协议:

  • DroneCAN:PX4 推荐大多数常见设置使用该产品。它得到 PX4 的大力支持,是一款成熟的产品,拥有广泛的外设支持,并经过多年测试。
  • Cyphal (打开新窗口):对 PX4 的支持仍在进行中。Cyphal 是一种更新的协议,允许更多的灵活性和配置,尤其是在大型和更复杂的载具上。目前还没有大量采用。

备注

DroneCAN 和 Cyphal 都源于一个名为 UAVCAN 的早期项目。2022 年,该项目一分为二:最初版本的 UAVCAN(UAVCAN v0)更名为 DroneCAN,而较新的 UAVCAN v1 更名为 Cyphal。两种协议之间的区别概述如下 Cyphal vs. DroneCAN (打开新窗口).

警告

PX4 不支持用于无人机的其他 CAN 软件协议,如 KDECAN(在编写本报告时)。

# 布线

DroneCAN 和 Cyphal/CAN 的 CAN 网络布线相同(事实上,所有 CAN 网络的布线都相同)。

设备以任意顺序连接成链。在链的任一端,两条数据线之间应连接一个 120Ω 的终端电阻。为方便起见,飞行控制器和某些 GNSS 模块内置了终端电阻器,因此应置于链的两端。否则,您可以使用一个终端电阻器,如 这个来自 Zubax Robotics (打开新窗口)如果有 JST-GH 压接器,也可以自己焊接一个。

下图是一个 CAN 总线的示例,它将飞行控制器与 4 个 CAN ESC 和一个 GNSS 连接起来。

CAN 接线

图中未显示任何电源接线。请参阅制造商的说明,确认组件是否需要单独供电,或者是否可以通过 CAN 总线本身供电。

更多信息,请参见 Cyphal/CAN 设备互联 (打开新窗口) (kb.zubax.com)。虽然本文是针对 Cyphal 协议撰写的,但同样适用于 DroneCAN 硬件和任何其他 CAN 设置。如需了解更多高级方案,请咨询 关于 CAN 总线拓扑结构和终端 (打开新窗口).

# 连接器

Pixhawk 标准兼容 CAN 设备使用 4 针 JST-GH 连接器连接 CAN。在链式布线时,输入和输出使用两个连接器(飞行控制器和某些内置终端的 GNSS 设备除外,它们只有一个 JST-GH 连接器)。

其他(非 Pixhawk 兼容)设备可能使用不同的连接器。不过,只要设备固件支持 DroneCAN 或 Cyphal,就可以使用。

# 冗余

DroneCAN 和 Cyphal/CAN 支持使用第二个(冗余)CAN 接口。这完全是可选的,但可以提高连接的稳健性。所有 Pixhawk 飞行控制器都配有 2 个 CAN 接口;如果您的外围设备也支持 2 个 CAN 接口,建议将两个接口都连接起来,以提高安全性。

# 固件

CAN 外围设备可运行专有或开源固件(请查看制造商指南以确认所需的设置)。

PX4 可作为开源 DroneCAN 固件在支持的 CAN 硬件上运行。参见 PX4 DroneCAN 固件 了解更多信息。

# 支持和配置

DroneCAN 设置和配置

PX4 DroneCAN 固件

# 视频

# DroneCAN

DroneCAN (UAVCANv0) 简介以及在 QGroundControl 中进行设置的实际示例:

# Cyphal

无人机 UAVCAN v1 - 2020 年 PX4 开发人员虚拟峰会


在恩智浦 UAVCAN 板上使用 UAVCAN v1 和 PX4 入门 - 2020 年 PX4 开发人员虚拟峰会


UAVCAN:用于硬实时车内联网的高可靠性发布-订阅协议 - 2019 年 PX4 开发者虚拟峰会