“立创”杯2024年中国计量大学电子设计竞赛暨2024年浙江省大学生电子设计竞赛选拔赛
比赛安排:
1.5.06~5.10学生钉钉加群在线报名。
2.5.11~5.27学生比赛制作环节。
本次比赛,我们选择了B题,题目如下:


我们使用两个步进电机搭建云台,并最终采用了OpenMV+长焦镜头来进行识别。本次比赛我主要负责第三、四问的视觉和声音部分。
视觉部分思路
寻找角点
题目要求使用激光在1.8cm宽的条带上巡线,与控制同学沟通后,我决定识别出图形的所有角点并返回给主控,由主控进行插补运算。那么第一个问题就变成了如何识别出图形的角点,对于使用OpenCV的组别来说,这似乎根本不成问题,因为OpenCV自带了识别角点的例程,稍作修改就能完美识别该图形。但是OpenMV并没有给出角点检测的函数,其图片格式也并不是由Numpy数组储存,不可能去简单套用OpenCV的识别思路。
经过仔细的查询文档和实验,我发现OpenMV虽然不能给出一组点集,但可以通过image.find_line_segments()方法来找出线段的始末点,经实践检验,通过长焦镜头放大图像后识别效果很好,基本上能准确的返回线段的始末点。
接下来开始计算线段交点,但视觉识别并不能严格保证线段交点完全重合,故增加了线段交点模糊匹配的判断。
代码如下:
1 | def find_intersection_distance(lines,distance_threhold): |
该部分代码大多为人工智能生成,经简单修改后通过了测试,能成功的在五角星上返回内外20个点。
接下来是滤波,由于现场的光照条件未知,纸板上很有可能会有大大小小的阴影,所以我决定先对图像二值化,找出图像所在的外接矩形坐标,之后再以此为ROI计算线段交点,尽可能减少环境光以及KT板位置对识别的干扰,大大增强了程序的鲁棒性,这个实现起来很简单,不做赘述。
排序
现在我们有了20个角点(题目要求三种图形,为行文方便,本文只介绍五角星的情况,其他图形思路一样),但我们最终的目标是巡线,需要有顺序的将这些点排列出来。我们选择顺时针将其排列,这里我们使用了Matplotlib进行模拟,大致的思路就是首先计算图像的中心坐标,然后根据点与图像中心点坐标的距离将点集分为内外两部分,最后将内外的点集分别沿顺时针排列。
这部分代码同样有ai的帮助,写的非常丑陋,故只给出在Matplotlib上的效果,代码如下:
1 | import math |
效果如下:

做到这里,视觉部分的主要要求也就基本实现了,剩下就是LCD和串口调试,这部分代码很简单且到处都能找到,故不赘述。
视觉部分总结
学长过去常常跟我说,做视觉最重要的是思路,有了思路都能慢慢实现出来,打完校赛后,深以为然。再大的问题,敢于想,敢于尝试,都有可能解决。
技术上,我感觉到我的代码能力还是需要加强,特别是对python数组的操作不够熟练,同样的功能不能复用,写的又臭又长,像是旧社会女人的裹脚布。同时异常处理也需要加强,早期版本的程序会在各种没有检测到对象的情况下直接卡飞,这样的问题到第二周才基本解决,倘若是在省赛或国赛中,恐怕已经无力回天了。
硬件上,160x120的LCD对于调试实在是有点不够用,该屏幕的可视角度极其糟糕,偏一点看过去就是一片白,这也导致在现场,镜头中出现了一小块反光,而我一直没能发现,差点葬送了全队两周的努力。
调试代码也太过于简单粗暴,接收到调节指令也没有反馈,收没收到全靠瞪眼,卡住全靠RESET,这样的问题在正式比赛中都有可能是致命的。
当然瑕不掩瑜,大一学生第一次参赛能拿到校特等奖对我们已经是非常大的胜利,不枉我们一年来的努力。
声音部分思路
声音部分本来应该是硬件同学负责的内容,但由于选购的传感器信号质量太差,实在不堪一用,所以我们在比赛结束前两天更换了方案,阴差阳错间,声源和检测装置都变成了我的工作。
我们首先制作了一个能发出特定频率的声源,使用PWM发生器生成1.5KHZ的正弦波并通过L298N放大电流,驱动一个10W的喇叭。L298N在这个任务中的表现出人意料的好,其功率大,发热小,相较于功放模块能经受的电流更大。最重要的是,我们对该模块十分熟悉,上手就能使用,减少了学习新模块的时间成本。
然后使用一个maix dock开发板,该k210开发板自带了一个全指向性数字麦克风,我们试图将其改造为指向性麦克风,然后让麦克风随云台旋转,过程中实时记录声音经过FFT变换后在1.5khz上的强度,最终通过寻找声强变化曲线和声源位置的关系来进行声源定位。Maixpy的FFT例程在MaixPy-v1_scripts/hardware/demo_fft_spectrum.py at master · sipeed/MaixPy-v1_scripts (github.com)
可惜的是,本方案实际上并不可行,因为指向性麦克风是无法被简单的改装出来的。我赛后咨询了一位在日本学习声学相关专业的同学,他告诉我,单指向性麦克风大多在振膜结构上就与普通麦克风不同,所以无法简单的被改装出来。可惜我们缺乏声学知识,知网上也没能找到关于单指向性麦克风设计的文章,误入了歧途。
幸运的是,这套系统在评测时成功定位了一次,成为了我们最终拿到校特的关键一招。GG WP
最后,希望今年省赛我们也能有如此好运,GL HF!