【DRONECAN】(一)介绍

DRONECAN

前言

笔者最近因为项目需要用到CAN通信,所以研究了一下飞控上基于CAN的协议,目前在Ardupilot和PX4中用的是DRONECAN,DRONECAN是基于CAN的通信协议,并且已经在无人机中广泛使用了。但是国内现在对DRONECAN的研究记录太少了,用的最多的还是基于串口的MAVLINK协议,可能还是跟串口协议简单有关吧。我个人感觉,CAN通信也不是非常困难,并且CAN的抗干扰性、通信速度和多点通信特点是串口不可比拟的,所以CAN还是非常有优势的。

这里是笔者使用DRONECAN中的Libcanard(C语言版本)实现的动态分配节点(DNA)功能,即添加很多个同样的设备都不会出现重复的ID。后面会逐步讲解如何实现。现在先总体介绍一下DRONECAN。

【DRONECAN】(一)介绍_第1张图片

DRONECAN是什么?

DroneCAN的创建是为了继续开发广泛使用的UAVCAN v0协议。该协议已被证明是强大的和功能丰富的,并已广泛部署在商业无人机行业,并得到了行业合作伙伴的广泛支持。拟议引入的UAVCAN v1协议涉及对UAVCAN的更改,增加了复杂性,并没有为现有部署提供一个平滑的迁移路径。在无人机can联盟内部进行了长时间的讨论后,决定最好的解决方案是继续开发DroneCAN v0,并将其命名为DroneCAN。

所以DRONECAN和现在的UAVCAN是有一些区别的。

官方原文是这样说的:

DroneCAN was created to continue the development of the widely used UAVCAN v0 protocol. This protocol has proven itself as robust and feature rich and has been widely deployed in the commercial drone industry and enjoys broad support among industry partners. The proposed introduction of the UAVCAN v1 protocol involved changes to UAVCAN that increased complexity and did not offer a smooth migration path for existing deployments. After extended discussions within the UAVCAN consortium it was decided that the best solution was to continue development of DroneCAN v0 under the name DroneCAN.

主要特点

  • 详细的协议规范
  • 用于消息描述的DSDL消息描述语言
  • 用于分配 CAN 节点 ID 的 DNA(动态节点分配)。
  • 产生C和C++绑定的多种开放的DSDL编译器
  • 丰富的python实现
  • 用于诊断和设备配置的功能丰富的图形用户界面
  • 在ArduPilot和PX4自动驾驶仪中的成熟实现
  • AP_Periph和PX4 cannode工具包,可轻松创建功能丰富的外围设备

DRONECAN核心设计目标

  1. 民主网络——不应该有主节点。网络中的所有节点应具有相同的通信权限,不存在单点故障。
  2. 节点可以交换长有效载荷——节点必须提供一种简单的方式来交换无法放入单个can框架的大数据结构(如GNSS解决方案、3D向量等)。DroneCAN应该在协议级别自动进行传输分解和重组,对应用程序隐藏相关的复杂性。
  3. 支持冗余接口和冗余节点——这是与安全相关的应用程序的常见需求。
  4. 高吞吐量,低延迟通信——依赖于高频、硬实时控制环路的应用程序,需要一种低延迟、高延迟通信方法。
  5. 逻辑简单,计算要求低——DroneCAN的目标是各种嵌入式系统,从用于密集数据处理的高性能嵌入式板载计算机(例如,高性能linux驱动的机器)到资源极其有限的微控制器。后者对实现协议所需的逻辑量施加了严格的限制。
  6. 应明确定义通用高级功能——DroneCAN为通用高级功能定义了标准服务和消息,如网络发现、节点配置、节点固件更新、节点状态监控(自然发展为全车健康监控)、全网时间同步、动态节点ID分配(即插即用)等。
  7. 开放规范和参考实现——DroneCAN规范是开放的,可以免费获得;参考实现是根据MIT许可证的条款发布的。

欢迎感兴趣的小伙伴添加微信 Reed_UAV 进行交流:
在这里插入图片描述

你可能感兴趣的:(DRONECAN,编程,网络)