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
-
配置后需要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