开源协议栈对比
本目录克隆的源码见:
../开源项目/
选型看:主站/从站、语言、平台、许可证、与 ROS 2 关系
1. 总览对比
| 项目 | 语言 | 典型角色 | 许可证(以仓库为准) | 适合 |
|---|---|---|---|---|
| CANopenNode | C | 设备/从站为主,亦可扩展 | Apache-2.0 | MCU / 嵌入式设备端 |
| lely-core | C | Master + Slave | Apache-2.0 | Linux 主站、机器人、高可靠场景 |
| CanFestival | C + Python 工具 | Master/Slave | LGPL(常见发行) | 经典教学、ObjDict 编辑器 |
| python-canopen | Python | 主站/脚本/测试 | MIT | 快速联调、产测、原型 |
| ros2_canopen | C++/Python | ROS 2 主站集成 | Apache-2.0 | 机器人 ros2_control 接入 |
许可证以各仓库
LICENSE文件为准,集成前务必复核。
2. CANopenNode
- 仓库:https://github.com/CANopenNode/CANopenNode
- 文档:https://canopennode.github.io/CANopenNode/
- 特点:
- ANSI C、面向对象风格模块划分(
301/、305/、309/) - 无具体 MCU 驱动,需自行实现
CO_driver - 非阻塞设计,适合裸机/RTOS
- 生态:
CANopenDemo、对象字典编辑器
- ANSI C、面向对象风格模块划分(
目录对应(克隆后):../开源项目/CANopenNode
3. Lely CANopen(lely-core)
- 仓库:https://gitlab.com/lely_industries/lely-core
- 相关:N7 Space 等基于 lely 做航天级裁剪与工具链(canopen.space)
- 特点:
- 异步事件驱动
- 完整 Master/Slave
- DCF/EDS 工具链成熟
- Linux + SocketCAN 友好
- 工业/机器人主站常见选择
目录:../开源项目/lely-core
4. CanFestival
- 活跃分支示例:https://github.com/embox/canfestival
- 特点:
- 老牌开源栈
objdictgen:Python 对象字典/网络编辑与代码生成- 多 CAN 驱动(SocketCAN、厂商卡等)
- 适合学习 OD 生成流程
目录:../开源项目/CanFestival
5. python-canopen
- 仓库:https://github.com/christiansandberg/canopen
- 特点:
- 纯 Python,基于
python-can - 读 EDS、SDO、PDO、NMT、402 辅助
- 非常适合:扫节点、改参数、写产测脚本
- 不适合硬实时多轴闭环(GIL/调度限制)
- 纯 Python,基于
目录:../开源项目/python-canopen
6. ros2_canopen
- 仓库:https://github.com/ros-industrial/ros2_canopen
- 特点:
- ROS-Industrial 维护
- 面向 ROS 2 +
ros2_control - 常与 Lely 等后端结合(以仓库文档为准)
- 把 CANopen 驱动器封装成关节命令/状态接口
目录:../开源项目/ros2_canopen
详见:06-ROS2与CANopen集成.md
7. 选型建议(实用)
| 需求 | 建议 |
|---|---|
| 自己做从站固件 | CANopenNode |
| Linux 上做可靠主站 | lely-core |
| 几天内把驱动器点亮 | python-canopen + SocketCAN |
| 接入 ROS 2 控制栈 | ros2_canopen |
| 教学 / OD 可视化生成 | CanFestival objdictgen |
| 高动态多轴机器人 | 优先评估 EtherCAT;CANopen 适合作业机构/外设 |
正在加载留言…