说在前面
本博客纯属记录,没有任何有参考意义的技术支持,也不能算是一个经验帖,当故事看吧
记录备战经历、生活小细节和小思考
备战经历
2022.03小荷才露尖尖角
作为学院科协的一员,接触到了嵌入式这方面诱人的技术。一次偶然的机会,科协内的三名意气风发的少年决定参加一次智能车竞赛。酷爱光影的我自然而然的担当了视觉部分的代码搭建,尽管水平与他人相比仍有巨大不足,但还是抱着求知胜于名誉的心态参加了竞赛。
我们最终决定了智能视觉组,是一个任务及其繁多且相对困难的一条赛道。记得刚拿到官方发布的图片数据集的时候,兴高采烈的筹神经网络训练,然后被图片里一张又一张奇奇怪怪的“物体”给逗笑了。
视觉筹备开始的早,地图识别和网络模型训练早早的就完成了总体架构的编写,对控制和硬件不熟悉的我帮不了队友很多的忙,两位队友正在设计控制姿态方案,思考小车硬件如何设计和IMU的数据处理、控制算法。
前期我们一点点推进,由于考试和其他项目,我们并没有花太多精力在智能车上。
2022.05校赛
由于学校的实验室大小有限,我们只好与平衡信标组共用一个场地,艰难的完成了校赛前的准备(尽管做出来的效果一言难尽),不过学校内没有第二组智能视觉,我们代表全校唯一一队出战。
2022.07居无定所
由于南京疫情愈发严重,学校为了保障学生安全不允许学生留校,没有了场地和设备的我们,久经波折,在南通海门的社区内自费租了房子和场地,自己搭建比赛场地进行调试。是为了国奖吗?是为了得到认可吗?对我来说不是的,我是享受这种和朋友一起学习新知识的氛围。
2022.07中华小当家
如图,粤菜的含金量
主播吃的比较清淡
主播家传的蒸鱼,粤菜就是要保留鱼的鲜味
嘿,蛋炒饭
番茄炒蛋和西红柿炒鸡蛋
粤菜就是要保留鸡的鲜味
主播新学的水煮牛肉,一致好评111
2022.08方案逐渐成形
8月份到了,在观看了其他赛区的比赛后,我们一点点的确定了最终方案。
- 控制(略):麦克纳姆轮全向行进,采用速度规划,IMU陀螺仪进行角度环纠正
- 硬件(略):突出点在于双分类搬运(即两块电磁铁同时搬运图片)
- 视觉:旋转、实拍和亮度调整等方法增广原数据集采用MobileNetV2轻量级网络训练出tflite模型,验证准确率达到98%;微调方式采用色块识别,模型检测采用矩形检测提取出图像ROI区域丢入神经网络分类;总钻风寻找车前一定扇形视野内的二值化图像内的图片并向该方向前进直至art寻找到图片的黄色色块;
- 状态机:
- 行进:点与点和点与边之间全向前进,编码器定位
- 寻图:在行进终点附近采用总钻风提取小车前方信息,寻找图片
- 微调:通过art的色块识别,将图片中心点调整在电磁铁下方
- 基准值调整:art提取图片上边界的边缘所得斜率,校准小车朝向,并根据置信度弥补小车陀螺仪累加数据
- 回库:根据库边黄线进行定位倒车入库停止
可以说,我们是从这一个月才开始正式的任务实现,在这不到20天内,PID参数、阈值调整、任务流编写等等需要耗费体力的任务我们逐一优化,最终在开赛前五天完赛,从某种意义来说,完赛的时间有点晚了。
无缘国赛,没想到这是我们唯一的一个完赛视频了_哔哩哔哩_bilibili
2022.08记麦轮
麦克纳姆轮,AKA旋转血滴子、究极逆子。麦轮仗着它吃着航模电池提供的巨大的电流,喜欢怎么转就怎么转,想转多快转多快。在我们还没写速度保护的时候,控制PWM输出的一些数据忘记清零导致电流输出拉满,满PWM波输出给电机,小车就像龙卷风摧毁停车场一般在地面上到处乱撞,伴随着电机愤怒的吼叫和麦轮金属和墙壁激烈的碰撞,我们的心一下子提到了嗓子眼。面对眼前这个发了疯似的怪物,我们的呼吸变得急促。
“我们应该怎么放倒它!”
“别碰它,小心手!”
“抓住它!它完了我们也完了!”
“……”
在电源开关被艰难关掉后,空气中充满了宁静和电机过转的烧焦味。
“车没事吧,人没事吧”
为了救车,有时我们化身诺伊尔光速下地扑救、有时稳扎马步把“疯子”控制住,全身上下都受到过不同程度的割伤,我因此也被割开了一小块肉(图我就不放了,脑补一张满是血斑的纸巾吧)
2022.08.16开赛前一天
致命BUG!!!!!偶尔上电轮子开始疯转、行进途中轮子突然疯转出发速度保护而紧急中断!!!巧妙的是,软件没有死,代码依旧正确运行;单独跑长距离行进的时候不会出现突然死亡的现象;驱动板电流正常……
我们一点点排查,查驱动、查供电、查接线、查软件….一切能根据bug现象演绎推理出的问题出处都互相矛盾,如果是软件死掉,那么紧急中断为什么还起作用呢?如果是驱动异常,为什么单跑长距离又能呢?如果是任务流逻辑出错,为什么偶尔好偶尔不好呢?如果是供电不足,为什么满电的时候又会出现这样的现象呢?
已经是开赛前一天了,我们毫无头绪,心脏也怦怦跳。那晚我没睡好,因为心里没底。但我们只能赌一把了,赌它赛场上不会发生这样离奇的bug(flag已立下)
比赛日Match Day
第零天8.17
今天是通勤日,我们的任务是到达南京信息工程大学报到登记,领取参赛证,在附近的酒店下榻,紧张备战明天。
第一天8.18
大清早是我们提交车模的时间,心心念念的线下赛道终于呈现在我眼前,看着体育馆里的“停车场”里停放着各个高校的智慧结晶,一种莫名的喜悦和成就感油然而生。
提交完车模后,我们便回到等候室等待我们上场。第一天是15分钟的比赛时间,当我踏上比赛场地的那一刻,我没有紧张,取而代之的是完全的理智,大脑高速运行计算着可能会出现的失误,细心的根据场地调整实现设定好的接口参数。
毕竟是第一次参赛,意外还是发生了。
意外之一:体育馆的大灯尤其亮,地板反光极多,一个人能有五六个影子,摄像头看到的画面跟天堂一样亮。由于事先考虑的不足(考虑到场地过暗和过量,但是没有考虑到在天堂比赛),并没有做好滤波和滤光的算法准备,导致视觉辅助定位方案完全失效,原本一主摄二辅摄直接拆成了单摄,随之伴随的是陀螺仪数据累加无法纠正和找不到图片,对完赛产生了巨大影响。
意外之二,也是最致命的意外:开赛前的疯转bug在赛场上百分百发生,整个15分钟,小车出库根本没跑多远或者刚出库就疯转触发紧急停止,导致我们第一天没有完赛,成绩:N/A
赛后回酒店我们心情都很忐忑,紧张分析着问题的原因:从场地阻尼、供电不足等硬件方面开始分析,还是无法精确定位这个bug,在强大的压力之下进行了一番心理斗争,最终决定了一套最稳妥的完赛策略(这时候我们的目标已经从进国赛降为完赛了,多么像微缩版的人生啊)
放弃双手搬运!取消辅摄保证供电稳定!找不到图片直接回库!
当然能给予我们安慰的,还有极低的完赛率。19支队伍第一天只有5支队伍完赛,且成绩多半不理想,意味着我们还有机会重夺排名。
“鲁棒性不好的队伍线下就体现出来了” ——– truth of cheese
第二天8.19
第二天的比赛是8分钟,意味着我们只有2-3次的发车机会。踏入赛场的那一刻,一切正常运行。测当天场地的光照调整曝光度,抛弃两只小手搬运求稳。今天运气比较好,没有在小车行进过程中疯转,最终我们还是重新复用了两只小手的逻辑,在时间快结束的时候出发跑了一趟。这一趟搬了七张图片,然后因为陀螺仪数据飘掉了找不到图片了无法进行下去。大类识别搬运全部正确,但是少搬了七张罚识整整210s!最终成绩定格在不忍直视的373s。
内心五味杂陈
离别
我们的成绩一定无缘国赛了,于是我们定了当天晚上的高铁票,准备回城了。现在我正坐在这架高铁上写着这一篇博客。内心的百感交集写在下面的感想里吧。
思考、感想、总结
这一次大半年的备战最终取得这样的成果,说不可惜是不可能的,说完全没有能力也是不可能的,一步一步走到现在,不断克服着生活、疫情、技术缺陷带给我们前进上的困难,持之以恒且保持着良好心态也是能力的一部分吧。在疫情严重被学校赶走的时候,我们在一瞬间居无定所,不知何去何从,绞尽脑汁才自费找到了合适的房源和比赛场地,把能用到的设备和小车带出南邮的那一刻,我们仿佛像是被父母丢到野外自我成长的孩子一样,面对的是艰难的求学路。最开始我们觉得不值得,会抱怨为什么学校不允许留校,最终还是因为热爱,慢慢的看淡这一切,做好自己的本分,不去抱怨有多少的不公平。因为世界本就是不公平的,只有强者才能立足,如果不能,那还是不够强。作为社会达尔文主义的我,从小受到的教育就是这样,我的内心没有多大的触动,而是认为这是一次特别且难以遗忘的回忆,且这段旅程一定能学到不一样的东西。
辗转周折来到了海门,慢慢适应这里的生活并保持着自己的生活节奏。我依旧每天遵守自己制定的学习计划,自学雅思,调车,晚上灵感来了的时候偷偷以歌词或者随笔的方式记录下来,为我梦寐以求的微电影和专辑做筹备。学习无疑是快乐的,在每一次对这个世界、自然科学和人文社会产生疑问并思考的过程中,大脑都会分泌巨量的多巴胺取悦我自己,我喜欢思考,喜欢通过思考以自己独特的思想和角度去解释这个世界的人和物。我曾经产生过一个疑问,我的朋友们在这个时候都去实习去获取经验,而我还没有任何社会上的工作经历,是不是会落后?我的答案是否定的,我认为现在家庭条件还好的条件下,就好好珍惜这个学习的机会,毕竟大学过后能系统性学习且能有这样的学习氛围的机会少之又少,随之取代的是每日重复的996。(当然也不是说工作生活会很枯燥很平凡没有起伏,持有梦想和对生活的渴望,每一天都是不同的)所以我并不渴望大学期间这么早去实习,每个人有不同的路去走,我们应该做的是思考如何利用自己的强项走出属于自己独特的人生。
随着比赛将近,每天调车的时间越来越多,自学雅思的计划也中断了,目前为止只背了3000多个新单词,上了阅读和听力课而已,出国的梦想大概率是破裂了。但是,背的单词是自己的,学到的东西是自己的,是金子总会发光的,学习依然使我开心,多巴胺依然使我对每天充满希望。
比赛说结束就结束了,这个结果都能理解,确实是实力有待提升。不只是技术方面的,还有临场应变能力和知识储备,这也是竞赛的一部分。
大部分的失败都不应该是不应该的,冥冥之中总有原因,如何找到这些原因并改善,成就了人类
当年国足踢世界杯前,小组赛预想小负巴西,赢哥斯达黎加和土耳其小组第二进入淘汰赛,然后淘汰西班牙 德国 英格兰进入决赛,决赛拖入点球大战赢得世界杯(狗头)但事与愿违,实力赶不上不可抗力
大半年的努力,没有拿到国奖,保研的几率也变小了。可是,一次失败并不能否定一切,在人生的这一个阶段,也许我们没有达到我们理想的预期,也许没有通过技术和能力实现阶级跨越,结识到更加优秀的朋友;也许没有早早的赚大钱,好好回报父母;也许没有……
作为男人,遭遇挫折的时候,无论是事业挫折、学业挫折还是感情挫折,都需要从情绪里抽离出来,理性复盘理性规划未来,重振雄风,重新开始新的生活。
总的来说,这一次经历还是很难忘的。我认识了一群有趣的朋友,一起做饭一起睡觉,也许头发斑白的时候,我们这群人重新聚起来回忆,又是不一样的感觉;我在他们身上学到了更多的思考角度,对不同地域的思想也有了更多的理解,读万卷书不如行万里路嘛;当然也学到了许多嵌入式方向的知识,尽管我没有那么感兴趣,但是啥都喜欢学的我感觉很开心;提升了自己的生活能力,小时候以来的独具梦算是实现了一般了(大厨的自我肯定);….
日月升落,总有黎明。人生是一场戏,也是一场游戏,而且是士气游戏,我们应该加油鼓气,来日方长,不悔此生!