[17届智能车无线充电]记录一下匆匆忙忙的大二下

选的是无线充电组,理由是队友觉得好玩就选了

校赛的通过是意料之中,队伍组成是两个可靠的硬件队友和我这个姑且算是可靠的纯代码人。

记一下流水账

我不在的二月与三月上旬

git的第一次提交是在2月16日

苏州疫情导致了本该二月就能回校的我硬是拖到了三月中旬(甚至再晚一天回校就真再也回不了学校了)。

在这期间两个硬件队友已经完成了无线充电的任务、以及单片机核心板、主控板的设计。

虽说我没法碰到板子,但是也做了挺多能做的事情。在这期间熟悉了ide的使用、了解了rtt的内核实现并能够进行基础的使用、TC264基本外设的使用(逐飞套皮套皮库)、同时准备了车的代码框架。

慢慢进步的三四月

得益于在家就完成的代码框架,我在车搭好第一天就完成了底层速度环的调参。紧接着则开始着手图像巡线代码的编写,印象中第一次积分赛什么元素都不能识别,甚至弯道都不好跑。
在第一次积分赛过后开始去找别人的方案,看了不算多,主要还是想多自己实现,看一点写一点,各种方案相互缝合,各种赛道的元素识别还老是相互误判,从git的记录上来看,从T字路口到三岔到环岛,陆陆续续写了二十天才能勉勉强强把整个赛道跑完。第二次积分赛也算是顺利通过了。

擦轮胎的五月

之前的勉强跑完一整圈并没有包括坡道,这点是一直没能解决的问题,直到我们学着四轮组开始擦轮胎才发现,轮胎和赛道的保洁真的很重要,沾灰和不沾灰完全是两个性能。
之后就开始每跑一次都要擦轮胎,甚至到了看见别人沾灰轮胎都要开始浑身不自在的程度。
不过擦完轮胎就发现我们的车开始内切严重,而到后面更是发现如果不内切图像很容易出bug的问题,因此选择直接不管内切嗯调,就这样给我们的车加上了无线充电和信号检测。
很让人想吐槽的是,我们一开始并不知道比赛使用的龙邱的发射端,因此现在一共有一个龙邱和两个逐飞的发射端,从充电角度来讲区别确实是没大区别,但是信号检测的角度上讲,龙邱和逐飞的发生端在我们信号检测板上检测出来的信号居然是有明显不同的,龙邱能被检测到的距离更远,这就很蛋疼,调好了逐飞线圈的停车但是在龙邱板子上效果却不是很好。
临时遇到bug就尽量修,就这样缝缝补补的跑完了校赛。

目前的方案

准备把车remake了,感觉图像的底层不够牢固,代码写的还不够好,不破不立,准备直接重写一套控制逻辑和图像处理代码。

控制

一层转向环pid,当前值由图像处理得到的值提供,输出值一个加一个减到速度环的基础目标值上实现转向
当然两个环都是基础的pid,其中速度环为了抗积分饱和加入了简单的积分限幅。

图像

采用的边缘检测来提取赛道边缘信息,而元素识别的思路是检测几个关键的特征点并分类,之后通过特征点来判断当前赛道的元素,最后进行补线操作,将中线的整体斜率作为输出值。

检测线圈并停车

队友的信号检测板范围可以在较远的位置检测到,与此同时其也有一个特性:当信号检测板位于线圈外时信号幅度呈现随距离减小而增大的趋势,而当信号检测板进入线圈后则会出现信号大小骤降的情况。因此思路就是当检测到信号大于一个阈值之后减速,等到信号骤降的时候刹车。

其他想瞎BB的

现在遇到的问题是图像的代码非常的不可靠,鲁棒性非常差,主要原因其实是底层特征点检测写的非常粗糙,同时帧率也不高。然后线圈检测的鲁棒性也不够高。主要也是意识到自己的代码能力还不够强,做事也不够细心,本应该多参考其他方案的却心急就先写了,导致效果非常不好。

期末考试之后(也可能是期末考试之前)要做的应该就是重构代码,顺便想封装一个调参的库,通过屏幕和按键进行简单的调参吧。

posted @ 2022-05-21 15:24  Foriver  阅读(155)  评论(0编辑  收藏  举报