现在是北京时间11月16日,我正坐在学校教学楼自修,11月13日我们学校所有作品评测结束,今天结果出来了,我们组是市三。预料之中,这是给我们参加比赛的一个安慰奖.....
其实说起来,我们小组为电赛准备了一年之久,我们的题目是无人机飞行器。从大二上学期,我们找到带电赛的老师,进入实验室进行学习。当初我们今来也就一小白,单片机也不会,更别说想要去操作无人机,去实现无人机的赛题任务。于是我们在实验室学长的建议下去学习市面上比较主流的野火和正点原子的开发板例程进行学习。我记得开始学习的时候那是真的一脸懵,什么定时器,IIC,SPi,看门狗,推挽输出,中断概念给我整迷糊了,最主要是比较繁琐的电路图,代码配置,原理解释,真是令人头大。后面在队友的建议下,因为他稍微比我先解除单片机,让我先去看郭天祥十天带你精通51单片机开发教程,果然,一通学习下来对于单片机相关的名词,定时器,中断,几种通信方式,AD,DA转换都有了更直观的认识,以及对于代码的编程。现在我认为通过51入门单片机是最好的,因为它更加贴近底层。而对于STM32系列学习入手的话,很多都是库函数,进行配置的封装,从其入手我感觉会有知其然而不知其所以然的情况。当然作为开发者,后面会有stm32CuBeMX进行配置,会比库函数配置更加方面与进行开发。所以根据自己的阶段进行选择学习使用是比较好的。
由于中途因为课程的关系从20年10月到21年1月,我们大体学习了单片机的相关知识,然后平时可能操作一下老师给我们买的无人机。说起来这是一家科创企业与学校的合作,实验室配置几台无人机,也因为当初我们什么也不懂,老师就刚好推荐我们做无人机方面的题目。在寒假,我们也没有闲着,我们进行了无人机飞行原理,常用传感器的原理如经典惯性元件陀螺仪加速度计,磁力计等,四旋翼飞机的姿态解算,PID经典控制方法及一些经典的滤波算法如互补滤波,还有后面我们觉得非常好使的卡尔曼滤波,虽然原理还是未曾通透,但是对于数据的处理确实效果效果很好。我们每周会将自己所学进行线上视频的交流,再学习的过程中我们觉得非常有收获以及喜悦。就这样我们大概能看懂飞控的代码,以及每一部分的意义。也认识到在学习过程中将知识输入并进行输出更有助于我们去学习。当然纸上谈来终觉浅,没有实操过程,中觉得心里空落落的。寒假回来之后,我们便开始研究如何将无人机实现程控,毕竟是不允许遥控的。这可确实难为人了。因为和公司工程师更多的是有些时候的线上交流,某些资料也未齐全,研究多日,也未从代码中看出什么门道。后来经过周折,去到公司进行询问如何程控才知有对应的一套通信协议去更简单方便的解决。确实是经过周折,不容易。
11.20继续写······
后来到2021年3三月份的样子,我们就开始做历年国赛的无人机赛题,我们是从17年赛题开始的,主要运用到的就是openmv对于色块的识别,使得飞机进行小车的一个跟踪过程,还算简单,就是调参数,完善一些整体的逻辑费了一些时间,期间还换了飞机,因为前面的飞机稳定实在太差了,这样肯定是难以满足比赛的要求的。后来,我们继续熟悉新飞机,以及对应的基础控制方式,并调试编写我们更方便控制的通信协议。
由于中途上课等其他事情,我们其实进度挺慢的,后来到6月份期末考试结束后,我们进入了真正的备赛状态,准备完成2019年的无人机赛题,从开始的绕杆,巡线,以及拍摄二维码,都是比较头疼的问题,毕竟确实需要解决的问题挺多的。后来也算是几乎成功的完成了赛题。也快到7月末了,购置可能用到的物品,飞机零件的备用,另外我们觉得可能飞机的题目可能会更倾向于视觉,于是我们又买了K210进行学习,以备不时之需。
后面等一切都准备得差不多的时候,其实本来也有预兆,疫情的反复,组委会直接在7号上午发通知宣布电赛的延期,这一等很多原大三的学生直接弃赛了,可能对于他们的意义也不大了。
后面,暑假之后,我们也成为了大三学子,但也未有电赛开赛的信息。后面在9月末,组委会终于决定重新启动电赛。我们又进入实验室进行准备,想想我们还能学习完善一些其他什么东西呢,我们又把目光放在树莓派上,因为它对图像的处理能力自然是超过openmv和k210的。
终于,11月7日电赛开始了,我们一大早就来到了实验室,等待着赛题的发布。后面还是群里老哥厉害,7:30的样子就看到了赛题题目。
2021植保飞行器
贯穿题目要求的主要是从“十字”起降点起飞,找到A然后对绿色区域进行播撒,播撒指示为红色激光垂直向下照射,1-3次,灰色非播撒区则无需,最后回到起降点降落。重复播撒,误播撒都会扣分。
我们一看到题目,想的主要是如何进行路径规划,以及控制逻辑。起初openmv直接被抛弃了,我们想用树莓派,无论是黑线,绿灰边缘,十字,A,相对来说检测起来都比较容易,毕竟可以直接对像素块进行处理,而openmv的封装性太强,有些功能也不易实现。我的一个队友就开始做起图像处理,通过特征图像,边缘反应飞机当前的位置进行判断,以及对于A和十字起降点的训练识别。我和另一个队友开始做飞机通信逻辑 的梳理与控制,以及如何装置树莓派,位置等,进行飞机直行漂移程度的大致测量,得出的结论是开环必然是不能跑的。第二天我们发现飞机给的速度是直接赋值进行,这样的突变非常影响飞机的位置,造成XY方向的偏移。yaw角我们是固定好的,可以写死,所以这到不用担心。所以我们每次给飞机一个平滑的处理速度,这样我们根据规定的路线,测试了开环行径,加上激光效果还不错,可以再用黑线,以及绿白边沿对飞机进行一些修正,可以作为备用方案。我图像处理的队友觉得可以做闭环,因为它图像处理能力和逻辑比较好,所以我们觉得那就两套方案,本来基础部分就是可以跑两次的。第三天,由于我们犯了一个重大失误,树莓派装在飞机上会很影响飞机的稳定性,因为我们的飞机没有那么大,位置也不太理想,就算有好的识别修正,但是效果也未尝非常好,所以我们没有办法,我们还是回到的openmv,结果发现对于阈值分辨还是很明显的,我们采用半开半闭得方式,总体来说跑得不错,对于杆我们就直接放弃了,因为这个随机性太大了,而且也没有过多的时间去做了。
经过多次测试,我们调节到合适的阈值,参数,至少对于播撒部分是没有什么问题的,后来就装箱,等待后面的评测。
评测那天,可能也是令人至今难忘的,飞机起飞,按照既定路线,从起降点起飞,找到A,向前,把A置于飞机左下角居中,然后向前,根据前方黑线为判定开启右移,结果多次测试没问题的判断,而且现场我们还模拟过,但是飞机就是向前。。。。一次,两次,三次,扑街。那种感觉真是无法言说,真还不如开环跑得好。虽然这么说非常功利,但是准备了这么久,走了几步就洗白了。害.....
那一下午,我们从测试场地出来人都说不出话了,有一种前功尽弃的感觉。可能人生就是这样吧。我们准备得确实还差一些火候,我们的设备也确实还有欠缺。后来看到结果,上海四个市一全是上大,当然别人也确实实至名归,稳定的飞控,还有双目深度相机这种设备,三个队评测满分,一个90多分,差距确实非常大。但是说起来我们实验室有三组做无人机,他们两组都取得市二的成绩,前面也没有学长学姐做无人机,只有一个学长懂一些。从无到有,我们也算是努力了,因为现在无人机感觉真是拼硬件,拼钱,设备不给力,确实难顶,这无人机确实烧钱,一不小心,就有点给人像败家玩意的感觉(苦笑)
现在想来,虽然结果不尽人意,但是这个过程中,我学到了很多知识,解决问题的能力,和队友共同进队奋斗的友谊······
合上双眼,眼前浮现多少个日日夜夜,多少次痛苦与喜悦,数不尽的点点滴滴,但知一切都是值得的。这路上,更多的是成长,收获,进步,我想希望你努力,冷静,自省,慎独,一直在路上,做一个追风少年。
功不唐捐,玉汝于成,共勉!