关于作者:本科大二在读,电气专业。基础不好,不喜勿喷,感谢访问本网站,如果能给你提供新思路就是我最大的荣幸!
开赛前看了看各大论坛上的控制题目的预测,包括亚克力球里面放小车,用小车和无人机通信…为此特地去学了学串口、蓝牙通信,最后看到题目震惊:原来摄像头可带处理器模块原来是这个意思!🙃 因为组内没有人会用OpenMV,确定下这个题目还是不容易的。毕竟明年想去智能车比赛,想不到电赛让我速成摄像头 😆
首先我仅代表我的组员和我感谢比赛过程中帮助过我们的同学、指导老师、以及星瞳科技,我们最后的成果包括相关设备的购买均基于星瞳科技。
关于题目
“制作智能送药小车,模拟完成在医院药房与病房间药品的送取作业。”嗯…这很现实😷。第一段就是说循迹红线、中远端病房号不固定。第二段增加一个识别药品和亮灯。说实话,这个数字识别确实劝退 😢
数字识别
- Netlet:刚开赛时候一些论坛和群就有人说nn库不能用了,我们当时还没有意识到事情的严重性。等到写算法时候发现,就算把nn库手动装到IDE和SD卡里,还是会有未知bug出现。
- Edge Impulse神经网络训练:拍照片到网站在线训练出tflite文件,然后进行在线识别。记得当初拍了20000多张照片,最后去重后有6000多张,训练了半个小时,然而,识别正确率并不高…淦淦淦淦淦!
- 特征点匹配:虽然和题目要求及其相似,但是我们还是优先考虑了模板匹配,感兴趣的同学可以试一试。
- 模板匹配:拍模板,识别出来会有反馈,经测试效果还可以,不过对图像位置大小要求高一点,直接通过十字路口可能识别不到,so,经我们一致决定:让它到十字路口抽搐几下,识别率马上就高了起来。
细节实现
- 提取红色路线:识别红线可以通过摄像头设置阈值来提取红线,刚开始我们设置的是红线黑线全部展示,后来发现如果保留黑线的话如果偏离角度差一点儿,拟合效果就会大打折扣,这并不能通过调节PID参数或者拟合后直线斜率占比实现。(不要问我怎么知道的)
- PID调节:这部分星瞳科技快速上手部分有提供源码,这里不进行过多解释,我们测试时用的就是那个例程,参数都没改。
- 控制启动停止:熟悉的红外对管…
- LED:我们就打算用OpenMV上的RGB灯(虽然被测试专业员吐槽了,但好像没啥影响 😏
- 检测药品:因为当时没有压力传感器(开赛就买了,测试才到),我们就用光敏传感器代替了,这个用压感效果应该会不错,不过光感调好灵敏度也没有什么影响,当然,超声波模块也可。
- 返回:本来打算继续识别数字,但仍要拍照,而且增大运算量,于是,我们可以使用列表存储路径,返回的时候逆向遍历即可。
反思总结
- 3天速成Openmv,又接触了micropython 😮,最后效果还是可以滴!
- 硬件搭得晚了点儿,导致调试,确定识别方法有些晚
- 传感器方面准备不足,需要在这方面下一些功夫咯
- 编程底层有些混乱,虽然程序可以跑,但连我自己都在吐槽
唯一遗憾的就是没有在宿舍看EDG捧起奖杯!😭😭😭