基于UAVCAN通讯协议分享

   UAVCAN协议即Uncomplicated Application-level Vehicular Computing and Networking,现在也称为Cyphal。

定义:是一种高效、轻量级的开源通信协议,主要用于嵌入式系统,尤其是无人机及相关领域,基于CAN(Controller Area Network)总线,将CAN总线功能扩展到更复杂应用。

特性

  • 高可靠性:支持多个通信通道冗余配置,出现故障可自动切换;使用 CRC 等方法检测和纠正数据传输错误;采用消息确认机制,确保数据可靠传输。
  • 实时性强:支持高精度时间同步,保证多节点系统数据时间一致性,使各节点数据交换在一致时间框架下进行。
  • 灵活性高:支持多主机和多从机模式,能处理不同设备间通信,包括点对点和广播模式;具有动态节点管理功能,可适应节点添加或移除。
  • 优先级管理:支持消息优先级配置,关键消息在高负载时可优先处理。

分层结构

  • 应用层:定义通用高级功能和概念,如诊断、配置、基本物理量等,方便不同应用领域使用。
  • 表示层:由 DSDL(数据结构描述语言)建模,描述数据格式及如何序列化和解释数据。
  • 传输层:决定序列化数据结构如何通过网络传输。

通信方式

  • 消息广播:基于发布 / 订阅语义,是主要的数据交换方法。节点可发布消息,其他节点通过订阅特定主题标识符接收消息。广播消息包含有效载荷、数据类型 ID、源节点 ID、转帐 ID 等信息,还有匿名消息广播,用于节点初始配置等。
  • 服务调用:基于客户端 - 服务器模型,客户端向服务器发送服务请求,服务器执行操作后发送响应。服务请求和响应包含有效载荷、数据类型 ID、客户端节点 ID、服务器节点 ID、转帐 ID 等数据,客户端可通过相关字段匹配请求和响应。

数据结构

  • 消息:节点可使用特定数字(主题标识符)发布消息,其他节点用该标识符订阅,遵循发布 - 订阅模式。
  • 服务:一个节点向另一个节点发送特定数值(服务标识符)的请求,另一个节点接收请求后可能发回响应,遵循客户端 - 服务器模型。

端口标识符规范

  • 隐式零扩展与截断:不同版本的 UAVCAN 协议间存在隐式零扩展和隐式截断规则,保证数据结构在不同版本间通信的兼容性。
  • 错误检测与纠正:使用帧校验和数据完整性检查方法,如 CRC,检测和修正数据传输中的错误。
  • 数据包分片与重传:消息数据量大时,支持将消息分片传输,每个分片有序列号和重传机制,确保消息完整传输和重组;数据丢失或未确认时,能自动重传消息。

且UAVCAN 协议和 CAN 协议有以下区别:

协议层次与设计目标

  • CAN 协议:主要定义了物理层和数据链路层。目标是提供一种可靠的、低成本的串行通信方式,用于解决汽车等工业领域中多个控制单元之间的通信问题,如汽车发动机控制单元、变速箱控制单元等之间的通信。
  • UAVCAN 协议:是基于 CAN 总线的应用层协议。旨在为航空航天、机器人等领域提供高效、轻量级、实时性强的通信解决方案,满足无人机、机器人等复杂系统中多节点之间的高速、可靠数据交互需求。

数据结构与消息类型

  • CAN 协议:数据帧有 11 位或 29 位标识符,用于确定消息优先级和内容寻址,数据字段最多 8 个字节。有数据帧、远程帧、错误帧和过载帧四种消息类型。
  • UAVCAN 协议:基于发布 / 订阅和请求 / 响应模型,数据结构更灵活,可传输复杂数据类型和结构体。消息包含有效载荷、数据类型 ID、源节点 ID 等信息,通过主题标识符和服务标识符进行数据交换。

通信模式

  • CAN 协议:本质上是广播式通信,所有节点都能接收到总线上的所有消息,通过标识符过滤来决定是否处理消息。
  • UAVCAN 协议:除了支持类似 CAN 的广播通信外,还明确支持发布 / 订阅和请求 / 响应通信模式。节点可发布特定主题消息,其他节点订阅该主题来接收消息;也可进行服务请求和响应,实现节点间的特定功能交互。

节点管理与配置

  • CAN 协议:节点通常需要通过特定的配置工具或主机来进行初始化和参数配置,没有统一的标准机制来自动分配节点地址等参数。
  • UAVCAN 协议:网络是去中心化的对等网络,每个节点有唯一的数字标识符(节点 ID)1。支持自动节点编号机制,在一定程度上可实现即插即用,节点加入或离开网络对系统影响较小。

应用场景

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值