这个赛季我们做的是哨兵机器人。作为电控负责人,从赛季初的方案设计到赛季末的赛场调试,整个过程下来踩了不少坑,也积累了一些经验。这篇文章算是对这个赛季的一个回顾。

底盘控制

哨兵底盘用的是麦轮方案,四轮独立驱动。底盘的控制看起来简单,实际上坑不少。最开始我们用的是位置式 PID,效果不太理想,电机响应慢,转弯的时候有明显的延迟。后来换成了增量式 PID,配合前馈控制,响应速度好了很多。

还有一个容易被忽略的问题是轮子的磨损。麦轮的胶条磨了一段时间之后,每个轮子的摩擦系数会不一样,导致走直线的时候会偏。这个只能靠定期更换胶条来解决,没有什么软件上的捷径。

云台调试

云台是哨兵最关键的部分之一。我们的云台用的是 6020 电机,yaw 和 pitch 两个轴。调 PID 的过程比较痛苦,尤其是 pitch 轴——因为重力的影响,上电和断电的状态完全不一样。pitch 轴的 PID 参数在水平面上调好了,装上去之后因为重力矩变了,又得重新调。

最终我们用了串级 PID 的方案:外环控制角度,内环控制角速度。内环的响应频率要足够高,否则云台会抖。另外,pitch 轴加了一个重力补偿的前馈项,解决了掉电下垂的问题。这个前馈项不复杂,就是根据当前角度算出重力矩的分量,加到输出上,但效果很明显。

发射机构

发射机构的难点在于拨弹轮的控制。拨弹速度要和射击频率匹配,太快会卡弹,太慢会掉节奏。我们试了好几种方案,最后用的是定频发射加拨弹轮电流环控制。

电流环的好处是可以检测到卡弹。正常运转时拨弹轮的电流有一个稳定范围,一旦弹丸卡住,电流会突然升高。检测到电流异常就反转退弹,避免堵死。这个方案在测试阶段效果不错,比赛中也没有出过大的卡弹事故。

通信与可靠性

哨兵是全自动机器人,没有操作手,所以通信的可靠性特别重要。我们用的是 CAN 总线做内部通信,裁判系统做外部通信。赛季中遇到过一次 CAN 总线丢包的问题,排查了很久才发现是线束接触不良。

这个问题给我最大的教训是:电控系统里,硬件的问题往往比软件更隐蔽。代码写得再好,线没接牢也是白搭。所以后来我们加了很多硬件检查的流程,比如每次装机之前都要逐个测试每根线的通断,上电之后先检查每个电机的反馈是否正常。

一些反思

这个赛季最大的收获不是技术上的,而是工程思维上的。RoboMaster 比赛要求的不是某个模块做到极致,而是整个系统的可靠性。一个能稳定运行的哨兵,比一个单项性能很强但经常出故障的哨兵,对比赛的贡献更大。

下个赛季,我希望能在系统测试和文档记录上做得更好。代码可以慢慢写,但好的工程习惯要从一开始就养成。