回想起,15届恩智浦的失败,自己颇为感慨。去年12月份,实验室又陆续招了一波人,还是大一新生(指导老师招新的)。此时,实验室已经到了青黄不接的阶段。大四的只有我和胡某等,去年跟我的大三只会焊接和组装。老师邀请我和胡某等带着他们,做做培训指导等。
![](https://img.haomeiwen.com/i15203719/f57d0dd8185b52bf.jpg)
去年年底,实验室开了一些培训会议,面对着他们大一的懵懂,感觉这一届确实又难上加难。年底会上,给他们做一些学习规划和材料购买等,寒假陆续地发布学习网址、教学文档(自制的硬件库)和电磁、电驱板等。开学来,结果也在意料之中,都没有按照进度完成(原先计划每组在寒假完成硬件的设计,其实,驱动板、电磁信号板实验室都有,要画的是控制板)。
此时是3月中旬,实验室开始铺设了赛道。由于实验室场地较小的缘故,元素仅包括车库,弯道,十字,环岛和岔道(PS:今年赛道依然用的瑜伽垫,指导老师仍然不让买)。然而,当初组队的11组队伍退赛5组,其实也在我预料之中。随后,胡某等由于保研等项目,结合实验室往年的情况,不报任何希望。3月下旬开始,带着去年失败的不甘,我仍然坚持带着508实验室,尽力拼一把(其实,想指望我们能够爆冷一回,出线一组)。
![](https://img.haomeiwen.com/i15203719/5b4735d0dda6765f.jpg)
当时,现存的队伍有全向前进组(2组)、电磁越野组(2组)、单车组(1组)和节能信标组(1组),这样,信科院的基础四轮和双车组就自动晋级省赛。临近4月底,实验室的整体进度很缓慢。虽然,有些组别买了成套车(PS:看起来比去年投入大,其实是他们垫付的费用),有相关的学习资料,甚至有商家成套的代码框架,但是完全没有学习的思路。的确,对他们来说,门槛有点高。于是,我决定开始从电磁越野组抓起。由于今年的电磁越野限制长度,2cm前瞻,所以后期要用到AI训练。而去年,e芯实验室就有组AI电磁的国二,实力相当厉害。所以,这组的挑战还是挺大的。
三月下旬,我开始着手画板子,三月末,电磁越野组的主控板、电磁信号板、电机驱动板、电感布置板等都已配全,开始让他们打板、买材料、焊接等。不过就这样,他们还遇到买错材料、买到假芯片、虚焊等问题。到4月末,越野车才搭建起来。
在此期间,我开始带着他们做软件。电磁组用的英飞凌的TC264,双核处理器,性能好,资源多,但是对他们没学过单片机的说,难度大。不过,龙邱有一套较为完整的代码框架。今年的电磁越野和基础四轮的动力传动相似,正好实验室也有套基础四轮的成品车。结合去年的经验(PS:去年虽然失败,但是我不想让经验浪费),我陆续做了以下工作(车库、岔道除外,电磁越野没有这些元素):
1.电磁归一化,方向开环(电感值左减右,直道弯道简单分段比例)、速度开环(给固定占空比),小车能够简单循迹,速度0.5m/s
2.优化电磁归一化,加入差比和算法,即方向闭环,简单调试方向闭环参数,速度仍然开环,小车速度约1.2m/s,但是弯道容易出去
3.在2的基础上,加入垂直电感,优化方向闭环,调试方向Kp、Ki,直道弯道速度分段,小车速度达到1.6m/s,但是弯道路径不好,仍然存在弯道冲出去的现象
4.在3的基础上,采用差比和差算法(e芯实验室的方案),调节水平电感和垂直电感的权重,速度闭环,采用PI调速,弯道直道赋予不同的速度给定。小车速度达到1.8m/s,而且小车内道切弯,较为稳定。
5.赛道元素的识别:由于电磁越野组没有车库、岔道等元素,不用处理。需要处理环岛、十字等(其实后期还有直角、坡道等),但是十字在低速时(2.5m/s以下),出入十字姿态较为稳定,无须处理。所以,重点处理环岛元素,采用的方案是电磁特征识别加编码器积分(其实,还需要采用陀螺仪,但是没调出来,自检失败)。
![](https://img.haomeiwen.com/i15203719/b1503721d88991af.jpg)
至此,他们在我的基础上,调试参数,修改代码,也逐渐熟悉整个代码框架。本来可以继续调试B车模的,但是车模的后轮支架松动(今年新B车模的问题,出厂就是这样),需要花费精力搞机械,不能继续调试,其实上2m/s还是较为容易的。后来,将整体代码移植到电磁越野车。四月末,电磁越野作为16届的第一辆车出炉。
不过,电磁越野进度仍然较慢,毕竟还有五一假期,了解到e芯实验室仍然有大部分人留校,想想又是差距,但又不能让他们强制留校,毕竟是他们比赛,而不是我。五一假期归来,结合实际情况,我做了如下规划:
1.根据电磁越野赛道重新布置场地,进行赛道的初步适应
2.进行程序的优化,长前瞻完成全部元素
3.进行AI训练平台的搭建,采集数据集进行训练
但是,遇到的困难是没有场地,由于其他组别还没能在赛道上跑。所以,重新铺了电磁线,对于电磁越野来说,场地显得狭小。当时,电磁越野组可以自己调试一些程序了,所以我将上述1和2的任务暂时交至他们。此时,实验室总算有了点调车氛围。
![](https://img.haomeiwen.com/i15203719/cedb1c6a0c0c6464.jpg)
![](https://img.haomeiwen.com/i15203719/959df8ffca00b69f.jpg)
5月10日开始,我开始带全向前进组。全向前进组,用的MM32V103,类似于stm32,车模是H车模,控制麦轮。全向前进组的花费较大,他们垫资买了三辆车,有单核和双核方案。4月份底,他们买到双核双摄的控制板、驱动板等,经过我核对过,可以使用。于是,我让他们硬件组购买材料,焊接等。
软件组方面,难度确实有点大。首先,我没有处理过摄像头,所以需要学习摸索,好在前期看过不少CSDN等文章和代码,也算有一点印象。其次,我没有控制过麦轮,所以需要进一步研究控制方法。我先带着他们从单核单摄开始,刚开始,他们在网上买了套摄像头处理的算法,估计是以前某学校实验室的程序库,看起来写得还可以,里面有补线和拟合中线的算法,还有特殊元素的处理,比如可以解决斜入十字。
经过学习和移植,可以较好地在液晶上显示中线,接着就是利用加权平均将偏差叠加在电机输出上。还好某学弟前期看过麦轮的控制方式,根据力的分解会控制,所以小车能够循迹,且切内弯走。但是,摄像头容易受到光线的影响,而且较不稳定,很容易丢线,此外程序库里没有环岛处理程序段。由于时间紧迫,加装电磁传感器,采用电磁来导航,效果仍然可以。
已过5月中旬,但是校赛通知一直没有消息,后来老师在教务处网站找到通告。还是3月份就发的,6月5日比赛,时间看上去更加紧迫。所以,开始处理双核双摄,搞了几天,才把双核双摄的通信解决,中间遇到卡壳的问题,就是中断优先级的问题,搞清楚了抢占优先级和响应优先级的区别。
比赛前的一周,开始利用双核双摄处理赛道元素,包括车库,环岛,岔道,十字等元素的处理。
1.出入库:出库直接盲走即可,入库需要摄像头识别斑马线,进行强制入库。
2.环岛:采用纯电磁,利用电磁特征、横竖电感切换和编码器积分等手段完成
3.岔道:入岔道:采用摄像头处理区域面积结合垂直电感增大等特征识别,同时设置标志位
出岔道:采用水平电感特征值设置阈值进行处理(PS:没有想到较好的解决方案,其实要用摄像头)
4.十字:由于摄像头过十字仍然会出现不稳定的现象,所以采用电磁识别,摄像头辅助的方式进行识别。
在此期间,全向硬件组的焊接实在有些问题,出现芯片焊错,虚焊和焊短路等问题。我陆续查到问题,还是很严重的,让他们整改,但他们的执行力确实有待提高,直到校赛,都没有完成。校赛时,全向组只能用成品车跑(PS:不符合参赛规则),由于场地原因以及程序识别和控制稳定性不够,没有能够完赛(主要还是岔道,卡在第二圈),结果其实也在我意料之中(全程都很匆忙,当然没有好的结果,不好好歹校赛还有机会表演一下)。
再说电磁越野组,由于508实验室场地有限,所以,我们在教学楼底大厅铺设场地,
后来他们在调车过程中,遇到如下问题:
1.由于电磁越野采用的是折线段,所以差比和差算法并不完全适用(PS:现在想来,方向开环作差不一定差)
2.电磁越野转弯半径较大,尤其是过直角时最为明显,容易丢线
3.长前瞻虽然能完成所有赛道元素,但是由于L车模较难控制,所以稳定性比B车模低得多,例如直道舵机抖动,弯道打脚延迟等
4.AI训练采集数据,如何采集数据集
针对出现的问题,采取如下措施:
1.采用方向开环,效果和闭环一样,但是出于前期调试花费很多时间,并没有完全舍弃。
2.L车模的转弯半径很大,可以通过打磨底盘的棱角来减小转弯半径,但是不能磨太多,容易导致支架断裂。
3.车模稳定性差,部分原因是电磁传感器安装支架松动,这是后来校赛当天指导老师特意指出的。直道舵机抖动的原因还是方向PD没有调好,但是这里直道舍弃闭环,直接电磁左右作差,采用较小的比例,即可初步消除抖动。至于打脚延迟,一方面可以适当提高供电电压(由原来5V提高到5.5V),提高响应,同时可以适当提高舵机频率;另一方面是折线段特征,和传统电磁赛道相比,折线段电磁不是连续的,没有连续电磁时的过渡,所以会导致舵机延迟。其实,说到底还是算法的原因,并不适用当前的电磁赛道环境。
4.虽然根据逐飞教程,完成了AI平台的搭建,但是具体到怎么采集数据,仍然没有头绪,虽然教程中对数据集进行分类——normal(正常循迹采集数据),manuel(人工模拟小车运行姿态采集数据,尤其是纠正数据),random(程序给随机干扰采集纠正数据等),结合去年AI电磁的技术报告,资料确实多,但AI训练不是短期内能够完成的,而且车模控制难度和赛道复杂度均高于去年的ai电磁。此外,校赛比赛赛道是在信科院那边,所以赛道的适应性未知。故校赛前舍弃ai电磁。
![](https://img.haomeiwen.com/i15203719/63064d9841d7a4a7.jpg)
电磁越野在校赛前,通过长前瞻进行调试,能够较为稳定地完成所有元素(PS:当时想赌一把,就使用长前瞻)。但是校赛前一天下午,信科院那边发布了修改规则,ai电磁必须按照竞赛规则,短前瞻循迹(2cm)。所以,当天晚上,去信科院场地去试车(当晚在工训)。工训那边电磁信号比我们这边弱,用的同一个信号源。同时,由于工训赛道的直角较多,短前瞻直角压根过不去。
![](https://img.haomeiwen.com/i15203719/5fe56dd15c75ec12.jpg)
那天晚上,想到龙邱给的方案,丢线锁定打死脚的方案,但是还是会出现较为严重的逻辑bug,所以第二天上午的比赛,信科院那边利用ai,有着过直角的优势(PS:其实,我也不知道是不是ai电磁还是传统电磁丢线打死脚)。当时学弟也说,光靠短前瞻纯电磁过不了直角,其实现在想想,未必。
最近,我在B站上看到的16届ai电磁车视频,看到有两种方案:其一,可以丢线锁定,但是不是靠if-else锁定舵机打脚,而是在中间三横电感小于某一定值时,判定为丢线,分别对左右打脚次数计数,判断丢线前趋势,丢线后打死角。这样,不会存在电磁丢线打死角后,受限于转弯半径,仍然转不过来,全部丢线,打反方向死角出赛道的现象(PS:up主的实现方法);其二,短前瞻电磁车冲出直角丢线,记忆丢线前磁场强度(左强还是右强),然后反方向打死脚倒车,动作执行可能不只一次(PS:这种方法其实在外人看来很容易想到,但是感觉应用在智能车上怪怪的,不过我在网上发现用这种方法的很多,而且大家好像都放弃ai似的,直接短前瞻传统电磁调车,说句实在话,TC264的算力加上软件算法的优化和机械的调校,说不定比ai更能适应赛道,ai的复杂度和不确定度太大了)。不过,电磁越野就到此结束了。
![](https://img.haomeiwen.com/i15203719/c6e88307ef745e2f.jpg)
![](https://img.haomeiwen.com/i15203719/578af89cbb220a85.jpg)
![](https://img.haomeiwen.com/i15203719/d55990c523cc1a83.jpg)
网友评论