前言

终于打到2026年的电赛了!!最开始是高中毕业的那个暑假了解到这个比赛,然后就一直很像参加,自己也是购入了stm32的套件啊、视觉模块之类的,自己提升嵌入式和视觉水平。后来陆陆续续参加了学校和企业的各种小电赛,锻炼了自己的水平,也积累了不少经验。终于,在大一的暑假,我能够带领自己的小队参加今年的省赛了。但是很可惜的是,今年电赛或许是我参加的唯一一次电赛了,自己也不一定有时间参加后面的电赛,因为明年一年都要搞机甲大师,所以遗憾错过明年的国赛。

话是这么说,今年还是很认真地完成了比赛,也算是对一年前的自己的一个交代,我和我的小队拿下了省级二等奖的成绩。我很清楚地明白究竟在哪里做的不够好,下面就对这次比赛进行一个总结。

2026 年电赛赛场立牌

赛前准备

比赛前针对给出的物料清单,我们逐一进行了采购,最重要的部分还得是之前没有出现过的钢珠和水管。从水管和钢珠的尺寸来看,无疑是要将小球和水管进行某种组合,有一定可能需要结合材料中的线圈等。当时我及其怀疑是电磁炮或者使用电磁效应来感知小球位置的某种机构,所以预先缠了几个小线圈。当然,考虑到比赛多半会涉及到视觉,纯粹的电磁感应不一定靠谱,也有可能是磁铁小车,通过相机识别小球位置,然后自主导航小车前去吸住小球。所以在我的队友准备小车和小车迅即的同时,我拍了若干小球的图片,并使用yolo11进行训练,得到了一个召回率较高的模型。后续在比赛中,我的这个预测确实起到了作用,为我提供了清晰的小球视野和位置信息。

赛题分析

本次电赛我们选择的是H题,题目是车载平衡滚球的视觉端实现。赛题要求我们设计一个能够在小车上实现滚球平衡的视觉系统。具体来说,我们需要通过摄像头捕捉滚球的位置,并将其传输给小车的控制系统,以便小车能够根据滚球的位置进行调整,从而保持滚球的平衡。

好在之前曾经参加过的电赛中,我和之前的队友碰巧选择过往年的平板小球平衡系统,所以有一个能够使用的控制板(后面要考)。这次比赛也算是比较有头绪,大概是在往年的循迹小车的基础上,搭建一个舵机或者无刷电机控制的平衡系统,用连杆控制一端的抬升,然后另一端使用铰链连接。

电机选型

本来在赛前,我为了应对可能到来的二维视觉云台,专门购入了轮趣科技的无刷云台。然后就想着能不能在比赛中应用上来。可惜的是,云台上无刷的扭矩太低,并不能适用需要高速控制、扭矩要求较高的平衡装置。于是我只能选用舵机进行控制。

另外还有一点,我们使用的总线舵机控制很简单,只用向串口发送特定角度、速度指令即可。但是牺牲的是精度和一定的响应速度。事实证明,使用舵机是我们最后不得不选择的方案。

视觉端实现

在我的队友们完成小车的搭建和驱动版的绘制的同时,我开始了视觉端的实现。首先,在赛前准备阶段,我已经完成了完整的模型训练、模型转换到本地推理的完整流程,实现了在maixcam2端的实时推理。所以我直接在之前识别的基础上,加入了长方形轨迹标定与特定距离标记等。

MaixCAM2 与它的串口线

由于赛题要求我们在图传上实现位置的标记等,我最开始的想法还是通过传统诗句把我们的水管标记出来然后再在上面绘制标记。考虑到在实车上,水管的颜色和环境光线存在较大差异,鲁棒性实在不能保证,我最后选择在相机固定后,通过标定的方式,在图像上呈现固定位置的水管标记,然后通过小球的识别结果,计算出小球在水管上的位置,并将其传输给小车的控制系统。这样一来,小车就能够根据小球的位置进行调整,从而保持滚球的平衡。

考虑到实时性的问题,我们将视觉信息以数据帧的形式发送到下位机,然后在下位机端进行实施控制。

下位机算法

在一定程度上保证水管的曲度合适,下位机的核心就是校准标准状态的小球姿态,然后通过PID进行反馈控制。在下位机,我们简单实现了一个PID控制器,结合视觉端发送的小球位置数据,计算出水管需要的倾斜角度,从而控制小球平衡。

这个部分其实算法很简单,调参部分也很简单且枯燥。问题是需要在小车行进过程中仍然保持小球的稳定。小车的前进本质上是向最初的静态平衡系统引入了严重的加速度扰动,想让小球在小车加速前进或者减速停止的过程中保持误差较小的控制,需要精准的切向加速度传感器数据作为PID前馈输入。事实上,我们确实准备了不少加速度传感器,甚至还有高精度的单轴IMU。于是我们迎来了队史上最难绷的一个环节:让硬件队友绘制的小球控制板的PCB上传错了,向学校上传的PCB是我给硬件队友作为参考的往期那个平面小球平衡控制板的PCB。

误传到学校的往期平板小球平衡控制板 PCB

这导致我们并没有用上最新的板子,旧板子也并没有给imu留空位,所以我们只能依靠视觉给的小球位置和差分速度来进行PID前馈。这无疑给我们的调参带来了很大的影响,要是有小车IMU数据的前馈,我们就可以实现全程的稳定控制了,现在的话,对于小球就是一个混沌的状态,所有来自外界的加速度都会直接作用自爱小球上,我们只能靠视觉和PID对小球进行控制。最终我们只能在对小车的加速度进行限制,在跑满限时要求的最低速度情况下,缓慢启动小车,以确保小球受到的影响最小。

通信与图传

在之前给出的器件清单中,有一个无线图传装置以及近距离通信装置。我们在备赛阶段没有预料到图传模块也是给我们控制题使用的,于是我们只是购买了近距离通信模块,在考虑到比赛现场可能出现的干扰问题,采用了小熊派,也就是华为的星闪技术实现了串口透传,自己编译了一份固件用于和我们自己的板子的配合,实现工作时能够在板子上反映出工作状态的功能。

PWR 引脚实为复位而非电源

后续在比赛过程中,由于硬件队友并没有打出用于小球控制的板子,最终我们无法实现小车和小球下位机之间的通讯,maixcam2也只能通过传统的蓝牙模块与小球控制下位机进行通信。所以最终并没能用上小熊派的星闪技术。虽然我们在赛前做了很多准备,但由于硬件问题,最终的实现还是有些遗憾。

关于图传部分我也有点说法:最开始我们没想到图传原来是这个赛题的部分,所以赛前并没有准备。但是好在之前在别的比赛中实现过局域网的jpeg推流,所以在队友还在进行机械结构的搭建时,我就直接把图传部分做好了,通过maixcam2的推流功能,结合vibecoding写的一点网页前端,实现了网页上录像并回放、下载的功能。

总结

很高兴能够成功完赛,虽然最终只拿到了省二,但是我知道这不是我们实力的限制,迫于现实情况,我们确实最终只能够拿到这样的成绩。在比赛中,我们确实遇到了很多问题,但最后都有惊无险地解决了。队伍内部在管理下也没有出现责备和压力,大家都在尽力完成自己的任务。虽然最终的成绩不尽如人意,但我相信这次比赛的经历对我们每个人都是一次宝贵的学习和成长机会。

比赛结束后躺在沙发上等待验收的三人 2026 年电赛参赛证