无人机行业主流 CAN 上层协议介绍
无人机行业主流 CAN 上层协议介绍一、DroneCAN1.1 核心特性1.2 主要应用场景1.3 技术架构1.4 典型消息示例二、Cyphal原 UAVCAN v12.1 与UAVCAN v0的主要区别2.2 协议栈组成2.3 数据类型定义DSDL2.4 实际应用优势三、UAVCAN3.1 历史背景3.2 核心设计原则3.3 消息传输机制3.4 典型网络拓扑四、MAVLink over CANMAVCAN4.1 设计目标4.2 协议封装方式4.3 与原生MAVLink对比4.4 适用场景五、协议横向对比5.1 技术特性对比5.2 生态系统对比DroneCANCyphalUAVCANMAVCAN5.3 选型建议选择 DroneCAN 当选择 Cyphal 当选择 UAVCAN 当选择 MAVCAN 当5.4 发展趋势5.5 混合使用场景总结一、DroneCANDroneCAN是一种专为无人机和机器人系统设计的轻量级、开源CAN总线通信协议。它基于UAVCAN v0协议发展而来由PX4开源社区主导维护已成为无人机领域应用最广泛的CAN总线协议之一。1.1 核心特性轻量高效协议栈占用资源少适合嵌入式系统即插即用支持设备自动发现和动态节点ID分配服务导向提供请求-响应式服务调用机制数据类型丰富支持标准数据类型和用户自定义消息开源免费Apache 2.0许可证社区活跃1.2 主要应用场景飞控与传感器通信IMU、GPS、气压计等电调ESC状态监控与控制电源管理模块PDB数据采集外围设备扩展LED、蜂鸣器、OSD等1.3 技术架构┌─────────────────────────────────────┐ │ 应用层 │ ├─────────────────────────────────────┤ │ 服务调用 │ 消息发布/订阅 │ ├─────────────────────────────────────┤ │ 传输层CAN帧封装 │ ├─────────────────────────────────────┤ │ 数据链路层CAN 2.0 │ └─────────────────────────────────────┘1.4 典型消息示例# DroneCAN 节点状态消息定义uavcan.equipment.ahrs.Solution:timestamp:uint64# 微秒时间戳orientation:float[4]# 四元数姿态angular_velocity:float[3]# 角速度linear_acceleration:float[3]# 线性加速度二、Cyphal原 UAVCAN v1Cyphal是UAVCAN协议的重大升级版本于2021年正式发布。它继承了UAVCAN的设计理念同时在性能、安全性和可扩展性方面进行了全面改进。2.1 与UAVCAN v0的主要区别统一传输层支持CAN FD、Ethernet、Serial等多种物理层改进的寻址方案128位节点ID支持大规模网络增强的数据类型系统支持嵌套数据结构内置安全机制消息签名和加密支持更好的实时性优化的调度算法2.2 协议栈组成应用层定义数据类型和服务接口传输层处理消息分段、重组和流控制网络层路由和网络管理数据链路层适配不同物理介质2.3 数据类型定义DSDL# Cyphal 数据类型定义示例uavcan.node.Heartbeat.1.0:uptime:uint32# 节点运行时间秒health:uint2# 健康状态0正常1警告2错误3离线mode:uint3# 运行模式vendor_specific_status_code:uint82.4 实际应用优势跨平台兼容同一协议栈可在不同硬件平台运行工具链完善提供代码生成器、调试工具和仿真环境工业级可靠性适合安全关键型应用三、UAVCANUAVCANUncomplicated Application-level Vehicular Communication And Networking是最早的无人机CAN总线协议标准为后续协议发展奠定了基础。3.1 历史背景2014年由Pavel Kirienko等人提出旨在解决无人机系统中传感器和执行器的通信问题最初设计用于CAN总线后扩展支持其他介质3.2 核心设计原则去中心化无主节点所有节点平等实时性保证关键消息的传输延迟可扩展性支持动态添加/移除节点容错性单点故障不影响整体系统3.3 消息传输机制发布-订阅模式节点可发布消息其他节点订阅接收服务调用支持同步和异步RPC调用心跳机制定期发送状态信息监控节点健康3.4 典型网络拓扑┌─────────────┐ │ 飞控 │ │ (节点1) │ └──────┬──────┘ │ ┌───────────────┼───────────────┐ │ │ │ ┌─────┴─────┐ ┌─────┴─────┐ ┌─────┴─────┐ │ GPS │ │ IMU │ │ 电调 │ │ (节点2) │ │ (节点3) │ │ (节点4) │ └───────────┘ └───────────┘ └───────────┘四、MAVLink over CANMAVCANMAVCAN是将MAVLink消息封装在CAN帧中传输的协议结合了MAVLink的丰富消息集和CAN总线的可靠性。4.1 设计目标复用MAVLink生态直接使用现有的MAVLink消息定义降低布线复杂度用CAN总线替代点对点串口连接提高可靠性利用CAN总线的错误检测和重传机制保持兼容性与标准MAVLink地面站工具兼容4.2 协议封装方式MAVLink消息头 (6字节) MAVLink载荷 (最多253字节) ↓ 分割为多个CAN帧 (每帧最多8字节有效载荷) ↓ 添加MAVCAN帧头 (目标节点ID、序列号等) ↓ 通过CAN总线传输4.3 与原生MAVLink对比特性原生MAVLink (串口)MAVCAN (CAN总线)拓扑结构点对点或星型多节点总线型错误检测CRC校验CRC CAN硬件校验实时性依赖串口波特率硬件优先级仲裁布线复杂度高多根线低两根线扩展性有限良好4.4 适用场景需要MAVLink兼容性的无人机系统已有MAVLink代码库希望迁移到CAN总线需要与现有MAVLink地面站通信多飞控协同工作场景五、协议横向对比5.1 技术特性对比特性DroneCANCyphalUAVCANMAVCAN协议起源UAVCAN v0分支UAVCAN v1原始标准MAVLink扩展物理层CAN 2.0CAN FD/Ethernet/SerialCAN 2.0CAN 2.0最大数据率1 Mbps8 Mbps (CAN FD)1 Mbps1 Mbps节点ID长度8位128位8位8位消息最大长度63字节理论无限63字节理论无限自动发现支持支持支持有限支持服务调用支持支持支持通过MAVLink开源协议是是是是主要维护方PX4社区OpenCyphalUAVCAN组织ArduPilot/MAVLink5.2 生态系统对比DroneCAN工具链libcanard、DroneCAN GUI工具硬件支持大量开源飞控PX4、ArduPilot社区规模大型无人机社区学习资源文档完善教程丰富Cyphal工具链Nunavut代码生成器、YakutCLI工具硬件支持逐步增加支持主流MCU社区规模专业开发者社区学习资源技术文档详细入门曲线较陡UAVCAN工具链PyUAVCAN、UAVCAN GUI硬件支持历史硬件兼容社区规模核心开发者社区学习资源基础文档齐全MAVCAN工具链MAVLink工具链直接可用硬件支持ArduPilot生态为主社区规模MAVLink用户群体学习资源MAVLink文档 额外CAN配置5.3 选型建议选择 DroneCAN 当项目基于PX4或ArduPilot生态需要成熟的无人机传感器支持希望快速上手有大量现成示例对实时性要求中等选择 Cyphal 当需要未来证明的技术栈项目规模大节点数量多需要跨平台支持CAN/Ethernet对安全性和可靠性要求极高选择 UAVCAN 当维护历史系统兼容性需要经典UAVCAN功能项目对新技术迁移成本敏感选择 MAVCAN 当已有MAVLink代码基础需要与现有MAVLink工具链集成项目主要使用ArduPilot希望最小化协议学习成本5.4 发展趋势DroneCAN继续巩固在消费级和工业无人机市场地位Cyphal向汽车、机器人等更广泛领域扩展UAVCAN逐步向Cyphal迁移维护历史系统MAVCAN在MAVLink生态中提供CAN总线选项5.5 混合使用场景在实际系统中可以根据不同子系统需求混合使用协议核心控制使用Cyphal保证可靠性和实时性传感器网络使用DroneCAN利用现有生态地面站通信使用MAVCAN保持MAVLink兼容性** legacy设备**使用UAVCAN维护旧设备总结无人机CAN总线协议各有侧重选择时需综合考虑项目需求实时性、可靠性、扩展性要求生态系统现有工具链、硬件支持、社区资源团队技能协议学习成本、开发经验长期维护协议活跃度、未来发展方向

相关新闻

可视化全栈开发平台:3D、游戏、图表一网打尽

可视化全栈开发平台:3D、游戏、图表一网打尽

在线开发平台的实现 前端开发全可视化操作,界面组件与后台变量无缝结合,所见即所得,方便快捷,随时上新新功能。支持3D组件,支持基于SVG的二维图形开发,支持可视图表配置,还支持游戏开发。所有组…

2026/10/11 2:24:23 阅读更多 →
ComfyUI BrushNet深度解析:双分支扩散模型图像修复技术实战指南

ComfyUI BrushNet深度解析:双分支扩散模型图像修复技术实战指南

ComfyUI BrushNet深度解析:双分支扩散模型图像修复技术实战指南 【免费下载链接】ComfyUI-BrushNet ComfyUI BrushNet nodes 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-BrushNet ComfyUI BrushNet是一款基于分解双分支扩散模型的AI图像修复工具&…

2026/10/11 2:24:51 阅读更多 →
如何在Mac上实现窗口置顶:Topit免费开源工具的终极指南

如何在Mac上实现窗口置顶:Topit免费开源工具的终极指南

如何在Mac上实现窗口置顶:Topit免费开源工具的终极指南 【免费下载链接】Topit Pin any window to the top of your screen / 在Mac上将你的任何窗口强制置顶 项目地址: https://gitcode.com/gh_mirrors/to/Topit 你是否曾经在Mac上工作时,需要同…

2026/10/3 4:34:24 阅读更多 →

最新新闻

二手车交易数据分析与可视化:从清洗到交互看板的完整实践

二手车交易数据分析与可视化:从清洗到交互看板的完整实践

简介:二手车交易数据分析与可视化系统是一份面向数据分析学习者与前端开发者的综合实战资源。项目整合网络爬虫、前后端分离架构、MySQL数据库存储以及Pandas/NumPy数据分析流程,最终通过Echarts、Plotly等交互式图表呈现二手车价格、里程与市场趋势&…

2026/10/11 2:25:01 阅读更多 →
LOL数据集与YOLOv8实战:从格式转换到小目标检测避坑指南

LOL数据集与YOLOv8实战:从格式转换到小目标检测避坑指南

简介:面向LOL英雄联盟角色检测任务,数据集包含3000张对局截图,提供Pascal VOC与YOLO两种标注格式,覆盖己方小兵、敌方小兵、己方防御塔、敌方防御塔、LUX、VAYNE共6类目标,总计24665个标注框,适合训练YOLO系…

2026/10/11 2:25:01 阅读更多 →
API测试的数据管理:从分类、隔离到清理的系统化实践

API测试的数据管理:从分类、隔离到清理的系统化实践

对不少做API测试的人来说,工作里最磨人的其实不是怎么写脚本,而是“用什么数据去跑脚本”。我参与过好几个接口自动化测试项目,真正让用例反复失败、需要半夜爬起来重跑、甚至让测试结果被质疑的,十有八九都跟测试数据有关。明明接…

2026/10/11 2:25:01 阅读更多 →
Python深度学习CNN水果识别系统实战:从数据集到部署全流程

Python深度学习CNN水果识别系统实战:从数据集到部署全流程

简介:这份资源是面向计算机相关专业学生与项目实战学习者的深度学习实战项目,以Python结合CNN卷积神经网络实现水果图像识别,可直接用于毕业设计、期末大作业或课程实践,难度适中,适合具备一定Python与机器学习基础、希…

2026/10/11 2:25:01 阅读更多 →
百家CMS黑盒测试实战:从用例设计到缺陷提交全流程

百家CMS黑盒测试实战:从用例设计到缺陷提交全流程

接到“百家cms 黑盒测试”这个任务时,我第一反应不是翻源码,而是把系统装进测试环境,像普通网站管理员一样从登录页开始点。黑盒测试说白了,就是不关心系统内部用的是什么语言、表结构怎么设计、代码里有没有注释,只看…

2026/10/11 2:25:01 阅读更多 →
通达OA 2017授权机制解析与合法注册重建指南

通达OA 2017授权机制解析与合法注册重建指南

简介:本资源提供通达OA 2017版本的注册与授权支持文件,面向企业信息化管理员、OA系统实施人员及二次开发技术人员,用于解决正版授权受限、部署次数受限或功能模块被锁定等实际运维问题。压缩包共5个文件,含2个关键.dat授权数据文件…

2026/10/11 2:24:01 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →