【2021年电赛实录——智能送药小车(我是怎样水过的)】

目录

前言

一、前期准备

二、开赛选题

1.智能送药小车

2.思路分析

三、视觉识别

1.openmv

2.重大影响

 四、结构设计

1.舵机+两驱结构

2.四驱结构

3.两驱+万向轮结构

五、控制部分

总结



前言

2021年,本应该在八月四日开赛的电赛,因疫情推迟到十一月四日;也是在过半的暑假,接到通知延期比赛......


一、前期准备

最开始的筹备是在,大二上期的末期,简单学过51的我们,开始组队准备电赛,最开始的组队很简单出粗暴,没有过多的选择。(这里特别提醒选队友很重要,如果你遇到我这么拉跨、这么混的,哈哈哈哈,自求多福吧)

在大二下期开始去找了指导老师,通过学校组织的简单的初试,终于开始我们自己的备赛之路。

准备初期:自己尝试着写一些简单的程序快速看完51(普中科技的板子),做了一个简单的超声波测距后,就匆匆忙忙赶入stm32(选了野火的指南者)的学习,学着抄例程;试着学别人的原理图,自己做电路;一路上就是一个挖坑,踩坑,又回去填坑的过程;炸过板子,烧过电路,也曾经反复检查程序的错误。

中期阶段:有了一定基础后,开始自己学习pcb(AD2019)做完整的板子,与此同时学校也提供了许多的设备和完整源码给参赛者学习,包括了之前自己做过的电磁炮、循迹爬坡小车什么的,这段时间全院的学生集中在一起学习,气氛略显紧张,压力逐日增加,但是这一切都在比赛前两天瞬间释放(因为又延期了,都抱着必死之心准备硬着头皮上了,但是延期了),大家都纷纷回家过暑假去了。

比赛前期:开学返校后,学校正常行课,我们也每天按部就班,上课下课吃饭睡觉,穿插着一些轻松的准备,简单学习了一下msp432的操作;慢慢的慢慢的时间来到了比赛前夕,疯狂补觉,能多睡就多睡,准备了一些小零食(很有可能会比赛期间饮食不规律,感觉不到饿),随着参赛证和徽章发放,时间来到了这一天。






二、开赛选题


1.智能送药小车

2021年11月4日7点37分群里看到了赛题发布,我还在床上哈哈哈哈,匆匆忙忙吃了早饭赶去认证,终于来到到了这一天,本以为今年的控制题会使用TI公司的板子,但是组委会将这个机会送给了A-信号失真度测量装置。我们理所应当的选择了长期准备的控制题目F-智能送药小车

https://res.nuedc-training.com.cn/topic/2021/topic_36.htmlhttps://res.nuedc-training.com.cn/topic/2021/topic_36.htmlhttps://res.nuedc-training.com.cn/topic/2021/topic_36.html
(此链接为官方题目连接)


2.思路分析

经过一个上午分析,分析后有两大难点:

1、数字识别:在这个时候我们没有摄像头,手上有的openmv3完全不支持神经网络,另一方面官方删除了原有的nn库,没法使用他已有的数字识别的代码,尝试过给opmv降低固件版本,但是问题仍旧存在,这方面以往控制题要求确实没有那么高,以往的电磁炮需要简单的颜色识别和平衡球那个灰度识别,但是这次的数字识别确实是出乎意料,但是又无法绕过(这个其实可以,但是不符合题目要求)。

2、元器件不够:手上仅有的东西仅能够做出一个一辆车,手上的openmv只有一个又要识别线路又要识别数字,这又形成了一个难题,此外本来想用循迹模块但是手上没有东西,无奈之下只能放弃。

(注:本来以为我们能够做出两辆车,还用雕刻机,用亚克力板做了两个车的地板,但是最后也没有用上。)

下午便开始想办法解决数字识别的问题,一个队友开始搞openmv数字识别,另一个队友开始做逻辑这方面的编程,我这边开始改结构。

时间就这样滑过第一天。


三、视觉识别

1.openmv

手上的三代完全不够神经网络,多次反应后,第三天终于拿到了openmv4plus,解决了这个问题,但是到了后期产生了两种分歧:

一种是采用模板匹配,我虽然极力反对这种方法因为它识别精度不够,在中端和远端很大可能没法识别,因为我们这没有做过能够控制摄像头平移的机械结构。

另一种是跑神经网络,最开始的我一直主张用这种方法(但是被骂的一直都是我wwww),四代可以跑神经网络,我也自己尝试上了一套神经网络,但是个人感觉吧,可能是我数据采集不够和一些环境因素影响,跑出来的效果不是很好,实际使用仍旧存在会错误识别的情况。

虽然两种思路都差不多,但是因为时间问题,还是采用了模板匹配,因为时间实在是紧张,没有时间去跑远端了。

【2021年电赛实录——智能送药小车(我是怎样水过的)】_第1张图片

2.重大影响

也是与此同时发现了代码的底层框架,出了问题,在接手程序后,车子下地调试的时候,发现它没法使用延时,,,,,,,(这个问题是真的让我无语,很毛糙,)所有的其他进程全部停下来,找这个问题,全部停滞,这里真的是血的教训,平时挖的坑,比赛的时候来填,由于时间的原因,换用了别的办法。


 四、结构设计

1.舵机+两驱结构

最开始设计采用了,最为常见的两个电机驱动加舵机转向的结构,但是在实际落地测试中,发现它转直角弯(90°)效果不佳,快速否定,果断换方案。

2.四驱结构

第二次的设计是四驱车,理论上转向很轻松,动力强劲,立刻用CAD设计出来了一块底板,晚上就用雕刻机打了出来,最后,哎,别用STM32C8T6,通过晚上的引脚分配后,已经剩下的没几个IO口了,但是我们还要去接其他的模块,就放弃了这个方案。

3.两驱+万向轮结构

最后还是选择了,两驱加万向轮的结构,速度不慢,体积较小,节省材料,最后方案敲定,重新设计了底板,打了出来,还是算是完成了结构搭建,结构部分算是比较完善了。

【2021年电赛实录——智能送药小车(我是怎样水过的)】_第2张图片

(注:这是初期完善后结构)

当然我还是没有耽误多少的时间,虽然在抢时间的比赛过程中,略显仓促,重物方面采用了比较随意的铁片包装起来;最后测评的时候,居然因为我有二百一十多克让我减掉了一个铁片,只有一百九十多克(专家还是比较严谨)。

关于电路,本次小车电路相对简单,我们采用了平时设计好的电路板,这方面节约了很多的时间,但是最后呢,也是因为板子的原因吧,最开始的接口分配不是很理想,后期换了部分IO口,导致后期出现,两轮子无法协同转向的问题,这里可能是后面用杜邦线,连接的时候连错了。(我又踩坑了,,)


五、控制部分

程序这部分主要不是我负责的,队伍里面另一个队友负责写这一部分,底层是在比赛之前就搭建好了的,虽然无法延时的问题很大(但是还是采用了另外的方法去弥补了这个问题)。

视觉识别部分最后还是采用了,模板匹配,也导致了后面中端和远端的处理上没有成功,动态识别上确实没有多少基础。

另外一方面由于时间的问题我们选择了放弃摄像头循迹的方法,改用MPU6050来控制它转向和走直线,也就是因为无法使用延时,我们改用了编码器来大概估算距离(所谓的惯导嘿嘿哈),当然这是没有办法的办法了(时间已经压在了头上)。

最后本来算是让小车,在药房门口转一圈过来,但是实测的时候发现两个轮子无法协同,总是会返回时压线的问题,就改用了后退到对面病房门口,再走回来的方法,都是被逼的,如果时间充裕我们也不会出次下策。


总结

就这样四天三夜就在第一天的思路和结构搭建,第二天的视觉部分的困扰以及程序漏洞的发现,第三天的困乏和挣扎,第四天的恍然(悟了,真的悟了,想出来可以绕开视觉识别的办法),后面缓了将近一周才缓过来。

这几天也就第一天晚上睡了几个小时,后面基本上是通宵,也就休息一两个小时,不断地在“垂死挣扎”,四天合起来睡觉不超过八个小时,是真的累人,平时准备期间的漏洞就在比赛的时候完全暴露了出来,电路板IO口的配分、底层程序的矛盾,都在比赛期间完全暴露了出来,真的就是路漫漫其修远兮。

此外,真的是不想用C8T6了想要换一个串口都没有多的,还得把其他的引脚拆下来给他用,如果像VET6和ZET6那些有多的该多好轻轻松松的就可以有解决掉这些问题,完全不用在需要的时候,拆东墙补西墙。

本次的电赛也在八号晚上八点落下帷幕,老师组织了封箱,依次签字拍照,结束了本次的比赛。

测评中,就跑到了中部,挺遗憾的,还有十五厘米的压线,虽然最后还是拿了省二,但是觉得我们应该可以拿到更好的成绩,却因为各种各样的问题,止步在了2021.11.08.20.00。

你可能感兴趣的:(电赛,stm32,单片机)