
智元灵犀X1开源链接汇总
- 开发指南链接:https://www.zhiyuan-robot.com/DOCS/OS/X1-PDG
- 结构设计资料百度云盘:https://pan.baidu.com/s/1UEdeDBTJiXRmIqMKwmO5RA?pwd=1234(提取码:1234)
- 结构设计资料谷歌云盘:https://drive.google.com/drive/folders/1MECbyKRJbnc_XKWsdUbn-70xmYFmw9FW?usp=sharing
- 推理代码:https://github.com/AgibotTech/agibot_x1_infer
- 训练代码:https://github.com/AgibotTech/agibot_x1_train
灵犀 X1开源已经有一年时间了,虽然主要是开源了结构设计图纸和软件推理训练部分。
本体的控制部分,小脑和DCU控制模块等关键设计并未开放。
但在本体控制架构方面,灵犀X1对整个行业后来者产生了非常深远的影响,本文来剖析一下灵犀 X1的本体控制/通讯架构。
整机模块架构

灵犀X1全身执行器包含29个关节(R86-2*9、R86-3*6、R52*10、L28*4)和2个夹爪,支持扩展头部3自由度。执行器全部采用CANFD通讯。
主控为X86 MiniPC,主控不具备CANFD接口,通过两个DCU模块扩展6路CANFD接口完成整机控制。

核心通讯模块DCU - EthCAT转3路CANFD
DCU介绍:https://www.zhiyuan-robot.com/DOCS/PM/DCU
DCU其实主要功能就是**EthCAT转3路CANFD。**X86 MiniPC通过EtherCAT主站协议,封装CANFD数据帧成PDO进行传输,发送给DCU模块,DCU解析后拆分出三路CANFD的报文数据再转发给执行器。

DCU关键参数解析

提取DCU关键信息:
- 数据转发频率1KHz,可推测关键电机的控制频率为1KHz
- CANFD 数据域速率为1M/5Mbps
- 支持EtherCAT级联,一个DCU只有3路CANFD,还是需要级联才能满足整机控制需求
智元开源后,国内很多团队也参考灵犀X1通过EtherCAT扩展CANFD接口,这里推荐一个开源的EtherCAT转CANFD项目:https://gitee.com/ChengDu-KunHong/kh-ethercat-canfdx4-op.git
电机通讯参数/协议关键信息
PowerFlow R关节电机:https://www.zhiyuan-robot.com/DOCS/PM/PFR

CANFD 通讯参数
仲裁域波特率 1M ,采样点80%,数据域波特率5M,采样点75%
注:CANFD新手不懂两个波特率和采样点是什么含义的,一定去补课搞清楚这个两个概念,对通讯稳定性非常重要。
电机采用CANFD 64字节打包控制协议-提升通讯效率关键
电机采用MIT控制模式,一个电机的控制命令长度8字节。

这里提到的广播模式,指的是用CANFD 64字节的长帧,包含8个电机的控制命令,一帧发出去同时控制8个电机。
这里是通讯协议设计的最关键之处
- 8个电机可同时收到控制命令,提升同步性
- CANFD只有数据域是采用5M高波特率,但是ID(仲裁段)还是用的1M,尽可能的利用CANFD的64字节长数据帧,可以减少仲裁段在通讯中的占比,最大化的提升总线带宽利用,发挥CANFD加速的优势
针对第二个关键点,这里详细分析一下。

以1M/4M 计算为例
8字节的CANFD加速帧的帧时间长度为~55us
用8个8字节帧发送8个电机的控制命令需要~440us
而用64字节CANFD加速帧的帧时间长度为~190us,总线利用率大幅度提升!
智元内部调试电机CANFD通讯的工具
研发调试DCU/执行器通讯使用的工具非常关键,一般都会选择使用USB-CANFD盒子进行通讯调试。不少机器人团队在选择USB-CANFD盒子不够重视,用了电机厂商配套的USB-CANFD板子或者买的廉价产品,导致初期开发很多通讯问题不能被发现,集成后问题埋藏过深,影响整机开发。
智元团队内部调试使用的是SysMax的PCANFD PRO。对于CANFD接口卡/调试工具的选择要求,后续单独写一篇文章,这里简单说一下选择的指标
- 波特率支持要超过项目使用要求,使用的5M,那么CANFD调试工具至少要支持到8M
- 满负载率通讯不丢包,这个要去问厂家每秒通讯的帧率,CANFD 5M不能低于2万帧/秒
- 支持错误帧显示,这点非常重要,研发阶段需要通过错误帧定位通讯问题。很多便宜的CAN卡都不支持,甚至busoff了都看不出来
- 支持socket-can和python-can, 这些最常用的机器人通讯编程调试手段
- 尽量别碰开源的USB-CANFD,小问题比较多,很多功能不完善,比如采样点都不能设置,非常影响开发。
写在最后
灵犀X1的本体控制架构非常简单清晰
- 6路CANFD 波特率1M/5M
- 一路CANFD控制1-8个关节/执行器
- 控制频率1KHz
- 通过CANFD 64字节单帧发送最多8个电机控制参数,提高CANFD利用率和电机控制同步性
虽然使用6路CANFD完成所有执行器的通讯控制,但是由于灵犀X1在设计时期并没有可供选择6路CANFD扩展方案。基于当时的情况,采用了2个自研DCU级联,带来的弊端是体积较大,且不利于整机布线。
虽然当前已经有更好的CANFD多路扩展方案,有的6路CANFD扩展板,体积甚至可以做到4*5cm大小,远比灵犀X1的DCU小的多。机器人行业的后来者们,或许可以参考灵犀的架构,配合最新的CANFD接口扩展方案做出更优的整机设计。