zl程序教程

您现在的位置是:首页 >  后端

当前栏目

基于i.MX RT电磁智能车AI算法的一些讨论

算法AI智能 基于 一些 讨论 RT 电磁
2023-09-11 14:15:19 时间

  该文发布后得到了热烈的反响,也有学生提出了一些问题,典型的是适应性问题,如下:image

  也另外有专家针对这些问题提出了自己的看法:image

  在此,我想分享一下我们在进行相应的测试和实验过程中,所遇到的问题和相应的思考。电磁训练数据的采集目前使用的AI算法都是属于机器学习的范畴,需要大量的数据对模型进行训练,以期获得合适的模型参数。现在还没有一个通用的方法获取训练数据集。目前我们是使用一个配备了传统算法的小车,沿着赛道匀速运行,把电感采集到的数据以及该小车的舵机驱动信号收集起来,作为模型训练的数据集。下图为用于数据采集的小车,红线框处的7个电感用于数据采集,小车前伸出的部分为传统算法使用的电感,在收集数据期间前伸的电感用于导引车子沿赛道运行。image

  问题一:理想环境与现实环境的差距这种方法面临两个问题,首先是它不包含异常情况的数据。我们在实验时就遇到当小车依靠模型的输出运行时,由于误差的积累小车逐渐偏离了正常轨迹,因为训练时数据集中没有这样的情况,导致小车无法自我矫正而冲出赛道。针对这种情况,我们在采集训练数据集时,通过随机地对舵机信号添加干扰,有意让小车跑偏,再让它依靠传统算法自我纠正回来,这样就可以采集到小车跑偏后恢复姿态的数据了。这种方法是否能涵盖足够多的异常情况,还有待更多的实验进行检验。问题二:速度不可调使用传统算法运行的小车来采集数据,面临的第二个问题是,小车的运行是匀速的,也就是说模型的训练中,速度是个常量,因此在训练之后模型的输出中也不包含速度的信息,这样小车在仅依靠模型运行时只能以匀速运行,理论上讲其运行速度只能低于训练时的速度,如果高于训练时的速度,则结果可能不可预料。改善这个问题的一个方法是,在采集训练数据时,能够让小车在传统算法下有速度的调节,同时把速度信息也作为训练数据输入进模型中,模型的输出则同样包含速度信号。image

  其它的训练数据采集方法前面介绍的方法,也是目前我们所使用的方法,是使用一部依据传统算法,可以正常沿电磁赛道运行的车子,通过跑圈来采集训练数据的。对于前两个问题,可以考虑使用现成的光电车,经过改装后进行数据采集。由于光电车具有更远的前瞻,也许可以训练出跑得更快的模型。当然,为了锻炼身体,用人力拉着小车或推着小车在赛道上跑,则是最节省成本的一种方法-:)依据以上原则,相信各参赛学校的同学们,还可以想出更好和更实用的方法来。image

  模拟的数据集对于上述第3个问题,卓老师曾经提出过是否可以用公式计算,得到一个三维的电磁场强度该方法的好处是可以获得小车处于各个位置和各种姿态下的数据集,但舵机和速度数据需要另外的算法计算并叠加进去;还有一个大问题就是要把每个电感的误差叠加进去,由于各个电感和其附属电路的一致性问题,由此引出的误差恐怕只有通过实际测量才能准确得到。关于训练数据采集的进一步思考我们先看看下图,这是每届竞赛规则中关于赛道尺寸、形状、间距的描述:image

  从这里我们可以清楚地知道,赛道分为直道和弯道两种,而弯道的曲率半径也做了限制,因此可以大胆地想象,我们只需要训练车子在以下几种情况的表现即可:如果要再精细化地划分,还可以按照小车可以适应的误差范围,按不同的曲率半径划分弯道种类。由于场地面积的限制,赛道的曲率半径不可能太大,这实际上就限制了弯道的种类。设想如果按照上述分类进行训练,是否可以更有针对性,又可以节省很多时间呢?这也有待同学们去发现。image

  电磁数据采样一致性问题由于元器件生产的环境、原材料和批次等原因,在相同的电磁环境下采集到的数据可能会有较大的差异性,这就是所谓数据一致性的问题。如果不能很好地解决这个问题,可能会造成采集到的数据集严重依赖所使用的那一组器件,当某个器件损坏需要更换时,已采集到的数据集不能再用了。这个问题的一个典型的例子就是,在A车上采集数据训练出的模型,不能在B车上运行。有没有混合方案呢?到此为止,本文讨论的方法都是基于由AI模型接收电磁传感器的信号,经过计算输出舵机信号直接驱动舵机,即对于小车方向控制的策略完全由AI模型决定,如下图示意:image

  图中蓝色虚线框里的部分是训练数据集。基于AI算法的特点,小车很难跑出比训练时更好的成绩,而且如果在比赛中遇到训练中没有遇到的情况,基本上无法在现场再次训练或调整参数而获得好的成绩。在验证AI算法是否可以用在智能小车的运行时,我们曾经考虑过不是让AI模型输出舵机控制信号,而是输出小车的姿态信息,简单地说就是“偏左”、“偏右”或“正好”这几种信息,然后再用传统的PID算法产生舵机控制信号控制小车的方向。当AI模型只输出姿态信息后,在产生控制方向变化的信号同时,可以按照不同的姿态调整车速以达到更精细化的控制,例如直道时可以提高车速,弯道上偏离中心线较多时减小车速等。假如有赛道地图假如有赛道地图的话,例如组委会提前发布比赛时的地图(例如标准的马拉松比赛和F1方程式赛车等都是提前给出地图的),那么是否可以考虑基于这个地图的赛道进行训练,这样的话则可以突破弯道曲率半径的限制,甚至可以允许赛车根据自身特点,自行选择最优路径行进。再进一步设想(纯属瞎想),如果只给出磁场的分布地图(或是电磁线的布置图),在训练后可以通过AI算法给出小车在地图上的位置信息,然后按照另外给出的赛道信息自主地完成比赛。image

  结语使用AI算法来驱动电磁循迹小车的运行还是一个新的课题,由于各种因素的交织混合影响,目前大家会有诸多的疑问,同时由于时间的限制,我们也不可能去验证所有的变化。