ardupilot开发 --- CAN BUS、DroneCAN 、UAVCAN 篇

1. CAN BUS、DroneCAN 、UAVCAN 区别

  • UAVCAN是一种轻量级协议,旨在通过CAN BUS 在航空航天和机器人应用中实现可靠通信。 UAVCAN网络是分散的对等网络,其中每个对等体(节点)具有唯一的数字标识符 - 节点ID,并且仅需要为基本设置设置一个参数。有关协议的详细说明,请访问https://uavcan.org/
  • DroneCAN的前身是UAVCAN。
  • 物理连接为CAN BUS,使用DroneCAN协议(驱动);
  • 如 CAN_P1_DRIVER=1, 即物理接口CAN1使用的是CAN_D1_PROTOCOL设置的驱动程序(数据交互协议)。
  • 大多数自动驾驶仪都有一个或两个CAN接口,用于连接不同的设备。ArduPilot最多可支持3个can接口。除了物理接口之外,还有一个表示特定协议的驱动器层和一个通过这些驱动器在CAN总线上通信的软件层(ArduPilot)。

2. CAN 总线设置

  • 映射物理接口到哪个驱动器
    CAN_P1_DRIVER = 1,2,3
    CAN_P2_DRIVER = 1,2,3
    CAN_P3_DRIVER = 1,2,3

  • 配置CAN驱动程序
    CAN_Dx_PROTOCOL = 0,1,4,6,7,8,10,11,12
    ardupilot开发 --- CAN BUS、DroneCAN 、UAVCAN 篇_第1张图片

  • 配置后需要reboot.

  • CAN_PX_BITRATE 在此接口上设置所需的传输速率,通常默认使用的比特率为1 Mbit。

  • CAN_PX_DEBUG 允许输出调试消息,可以根据用户的偏好和需求设置调试级别。

  • 参考文献:
    【1】https://doc.cuav.net/tutorial/copter/advanced-configuration/canbus.html
    【2】https://ardupilot.org/copter/docs/common-canbus-setup-advanced.html#

3. DroneCAN(UAVCAN)设置

  • DroneCAN的前身是UAVCAN。

  • Aurdupilot的UAVCAN驱动程序不支持当前版本的自动节点编号。所有节点都应明确设置ID。

  • CAN_DX_UC_NODE - 自动驾驶仪的节点ID。

  • CAN_D1_UC_ESC_BM - 允许发送ESC命令的位掩码。

  • CAN_D1_UC_SRV_BM - 允许发送伺服命令的位掩码。

  • UAVCAN是一种轻量级协议,旨在通过CAN总线在航空航天和机器人应用中实现可靠通信。 UAVCAN网络是分散的对等网络,其中每个对等体(节点)具有唯一的数字标识符 - 节点ID,并且仅需要为基本设置设置一个参数。

  • 参考文献:
    【1】https://doc.cuav.net/tutorial/copter/advanced-configuration/common-uavcan-setup-advanced.html
    【2】https://ardupilot.org/copter/docs/common-uavcan-setup-advanced.html#dronecan-setup

你可能感兴趣的:(Ardupilot)