添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

搬砖笔记

SourceLizi's Blog

0%

关于RoboMaster 电机CAN通信

CAN通信稳定要求

目前已知机器人会在以下几种情况中由于CAN异常出现控制电机不稳定的现象

针对上述问题,在STM32通过CAN控制电机过程中应该:

电机布局(CAN总线)应该考虑的问题

  1. 总线带宽。
    在 如何判断CAN总线空闲以及帧间隙,计算传输速率 提到过可将CAN标准数据帧(8Byte)的长度视为111bit,而目前C620和GM6020 CAN总线均采用1Mbps的速率,即每毫秒传输1k bits,折算到帧的话大约是9帧/每毫秒,即9kHz的帧带宽。每个电机的反馈数据速率为1kHz,考虑到需要预留发送控制帧的带宽,因此最大能容纳的电机数为8个(恰好与控制电机帧格式最大8个对应),但是此时最高控制频率为500Hz(假设一帧控制四个电机且频率相同)。提升控制频率时也要留意带宽是否足够,否则会出现传输数据必定丢失的问题

  2. 总线仲裁。
    之前哨兵云台的抖动就是这个没有考虑这个问题。带宽不够的情况下必定出现仲裁完全丢失的情况,总线仲裁会将ID较大的帧丢掉,通常控制电机的帧ID较小,因此仲裁丢失的数据是电机反馈的数据,如果连续丢失可能出现电机疯掉的情况。但是即使的带宽足够的情况下,电机反馈帧和STM32发送控制的控制帧也可能会同时发送,使总线冲突。这种情况可以通过打开自动重传解决(似乎电机那边反馈的数据帧是有自动重传的,否则一定概率下电机也可能失控),在仲裁失败后马上找到总线空闲的时间再发送。

  3. 选定控制电机的数据帧发送频率。