前言

笔者是中南民族大学、计算机科学与技术专业的,专业课里面没有怎么学过嵌入式。至于为什么想做智能车呢,只是单纯的喜欢吧,男孩子的童年一般都有个赛车梦吧。
16届基础四轮,纯电磁跑了个省三(补赛完赛)
17年ai视觉,跑了个省二。
本人以后还是把嵌入式当作一个兴趣吧。现在在准备找C++开发岗工作

挫折

但是喜欢归喜欢,当真正遇到实打实的问题的时候,才发现很多东西没做好很多。还有长久的积累是多么重要,就如嵌入式开发吧,第一年是接触TC264,写代码的时候还是在逐飞写好的底层库来写的,第一次写,我完全不知道中断是什么概念,看门狗是什么概念,采样率是啥,控制器频率是啥。磕磕绊绊的时候,感觉我得先学点51单片机或者stem32吧,但当时实验室里面懂简单嵌入式开发的除了大三大四的,大一大二基本都是小白,我们大一大二的没有经常性去向大三大四的请教问题,这是我们很大的问题。我们没人知道在写代码的时候一些细节该怎么处理,或者处理起来就是上CSDN找资料,这太低效率了。还有虽然是三个人一组,但是硬件是一个人做,他就完全只负责硬件;软件一个人做,他就只负责软件;还有一个就是打杂的。很多时候看到网上的其他学校视频,我深深感到不管是硬件的思维还是软件的思维都很局限,可也没办法。

软件开发经历
今年做智能视觉,当初开题的时候觉得自己还是蛮有信心的,可现在做完之后,深深感到心有余悸。我是线上比赛前一天晚上才把全部功能做好的。这一点,我写软件的背大锅,硬件以及做好了快一两个月了,我到比赛前才把全部功能实现。
简单讲讲智能视觉的软件工作。首先智能视觉需要的软件主要有python代码模块,一个人工神经网络模型,C代码模块。人工神经网络主要是由大二和硬件同学训练的。他们用恩智浦的eiq软件来传图片训练一个逐渐收敛的人工神经网络,大二的做着机械性重复的8个角度拍照片拍几百张图片的活,硬件做着调试软件训练的活,最后训练出来的模型还是不错的。
我主要写C代码控制逻辑,和art的python代码。在我写软件的时候遇到的最大的难题,同时也决定了这个比赛能否成功完赛的关键是陀螺仪的yaw轴导航角漂移问题。每次小车原地转向到下一个目标方位的时候,陀螺仪总是会累加不要有的值,比如小车控制它原地转30度,它可能屏幕显示的角度是30度,可是实际测量出来就有35度,就是这么个情况。还有它经过一段时间的运行之后,就算放原地不动它,他也会不断漂移,比如从10度经过四五秒到13.5度这个样子。到后来我是怎么解决的呢,我用了art的自带的一个求矩形的四个角点算法,求出矩形与车正对的时候左边的上下两点形成的夹角,每次小车在将进行识别的时候,就矫正一下角度,就是,把陀螺仪已经计算出来的值减去这个识别到的角度值。在进行测试的时候意外发现用的不错,就一直用下来。
还有一点我自己买了两个九轴陀螺仪mpu9650,可是我自己不会移植它们的底层驱动函数,我的底子太差了,所以也没有用。另外用了逐飞的那个九轴陀螺仪,发现它就算放中断5ms运行一次,也会经常卡死。就算不卡死,按照逐飞给的方法结算出来的角度也不太好。它认为的直线是一种弧线,这就难以接收了。

回顾

还有一些想法,我首先写软件的,我自己没有做到软件即时跟进,我也不好意思要求大二的来帮我写。寒假的时候,因为驱动问题导致一个轮子没有办法反转,我的控制就做不了了。记得寒假回家时候让他写个串口通讯代码,他搞不来,那还是我自己做吧。但是很多时候,不能一直做些机械性重复的活,他硬件懂得很少,软件也懂得很少。后面想让他研究下mpu九轴陀螺仪驱动代码,我都搞不定了,他就更搞不定了。因为第一次让他做串口通讯模块的时候,我已经做好了,只是想让他熟悉下我们的C软件开发流程。还有我调试车的时候,他也没有发过车,没有问过我软件需要什么,我的压力山大呀,都认为我一定可以一个人都当一面。没办法他基础不是太好。
咱们实验室呢,确实有些问题的,首先就是那个赛道,每次到实验室里面,赛道都是一层灰,大家都是当赛道如地面,不穿鞋套,不注意打扫,基本等垃圾到容忍不下去的时候才打扫,或者等领导来检查才打扫。
还有就是老车模了,我没有见识过国赛车跑起来的样子,该拆的还是被拆了,代码呢,失传的就失传了。
另外,我们实验室的嵌入式开发这一块确实没有电信学院搞得花样多。我有一次看到电信智能车的一位成员,他在准备找工作,他简单回顾了一下自己开发过的stem32项目,一些电赛的国赛作品,还有一些fpga开发板的雷达项目,简直让我震撼。咱们实验室也不一定完全都要把精力放在智能车一个比赛项目上的,可以做做一些有趣的,适合探索的小嵌入式作品来锻炼人的。
还有,在比赛前几天里,和来自湖北工业大学的大二同学交流了一下,他们的软件同学,在做惯性导航的时候,直接就把mpu9250的地磁计拆下来,配合逐飞的六轴陀螺仪来用,地磁计模块驱动是他们自己移植的。他们的惯导据说跑完全程只漂移3、4度。

结语

笔者等比完赛之后将开源自己的代码。并再仔细讲述自己的做车的历程以及一些反思。
另外有大佬可以评论区讨论下,陀螺仪怎么处理不会飘逸啊。
本人做智能视觉,最大问题就是陀螺仪问题。总转风追踪图片这个做的还可以。

人生路太漫长,人生路又短暂。
关山难越,谁悲失路之人。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐