基于RT106x电磁智能车AI算法

杀马特。学长 韩版系。学妹 提交于 2020-02-02 03:00:09

今天,来自NXP公司的宋岩和张岩向我展示和讨论了他们使用部署在智能车单片机中上的人工神经网络控制电磁车模运行的实验情况情况。下面的视频中,车模的方向控制是由单片机中的神经网络模型给出了。车模运行速度大约1.3/s左右。

在人工神经网络控制下电磁车模运行情况

猛一看,这个电磁车模运行很平常。但该车模所使用的电磁传感器仅仅是由车模中间和车头部署的七个近距离电磁传感器,而车前方前伸出支架上的传感器并没有参与控制。在这种配置下,车模的速度就非常可观了。

那么该车模是如何仅仅使用车身局部传感器的信息,就能够达到大的前瞻传感器控制的效果呢?原来车模中的控制算法是由人工神经网络实现的。这辆实验的车模来自逐飞科技提供,在原来传统的车模上面部署了七个电磁传感器。用于采集车模周围的电磁场,并将采集的数值喂送给车模上单片机中的人工神经网络。

image

实验所使用的智能车和传感器配置

车模前方伸出来的传感器是使用传统方法控制所需要的电磁传感器。车模在使用传统的方法引导车模沿着赛道运行。在此过程中,车载单片机采集车模前方和中间位置的传感器值,并同时将舵机的控制命令通过WiFi无线传输模块发送到PC端进行存储。由此形成未来人工神经网络训练数据集合。七路传感器和舵机控制命令(红线)数据都归一化到一个字节范围内(-128~127)。小车运行4圈,采集数据量约为4万条左右。数据如下面动图所示:

image

七路电磁数据和舵机控制指令

用于本次实验的神经网络模型只是采用了最为常用的全连接BP网络,还没有使用带有反馈的动态神经网络模型。具体配置如下图所示:

网络的输入节点是七个,用于输入七路采集的电磁线信号。输出为舵机的控制信号。

image

控制神经网络结构示意图

网络建立从传感器到控制指令的回归模型。其中第一层、第二层隐层神经元使用了双曲正切传递函数;第三层隐层神经元使用了ReLU传递函数。最后一层使用线性传递函数。

使用Netron软件可以将使用Keras建立的训练模型转换成漂亮的网络结构图:

image

使用Netron软件显示的网络结构图

经过训练,该神经网络便可以根据车模局部七个电磁传感器的的数据完成舵机控制指令的输出了。

基于机器学习统一控制框架,一方面对于车模方向的控制就不再使用人工手动编写控制算法和调节参数了;另一方面控制效果可以和具有大的前瞻传感器的模式相同。

image

网络模型训练结果

车模控制算法真的由此变得简单了吗?

实验上,NXP公司的张岩、宋岩他们在此过程中也是进行了很多的探索,踩了很多的坑。

最开始的时候,使用采集到的数据训练出的控制模型效果并不好。主要体现在车模在运行过程中如果受到干扰很容易跑出赛道,控制效果不可靠。

image

实验的环境

经过分析发现,原来是用于模型训练的采集数据都是有车模正常运行状态下采集到的,车模一直沿着正确的轨迹运行,不包含异常情况。所以训练出来的模型因为误差偏离中心线之后,由于在原来训练数据集中没有包含这种情况,所以车模就无法获得返回中心线的控制指令。

找到原因之后,他们采取了两种方式来增加训练数据集合的种类,特别是对车模距离和方向大大偏离正确轨迹的情况进行采集。

image

车模中的异常控制指令

一种扩充训练数据集的方式是使用手工摆放车模的位置和姿态,来采集此时的数据和控制命令,这种方式可以获得大偏移角度和距离下的训练数据;

第二种方式是在原来控制算法中随机停止控制0.25秒,有意让车模冲出赛道一端距离,产生较大的偏移之后,在恢复控制。这可以模拟车模在运动过程中对大的偏移纠偏的控制策略。

下图中显示了在正常车模控制输出命令中,随机增加了停止控制过程。

image

车模PWM输出命令,随机停止控制

经过上述扩充训练数据集合之后,训练出的车模运行稳定性就大大增加了,并且速度也可以得到进一步的提升。

在室外电磁组引入机器学习算法具有以下几点优势:

1)虽然电磁组控制算法相对简单,但使用机器学习算法完成车模运行控制可以对人工智能相关的理论、算法以及实现工具链能够得到学习和锻炼。

2)相对于基于机器视觉来训练人工神经网络完成控制,电磁组车模所需要使用到的训练环境要求低,完成训练时间短,对于车模控制MCU性能要求少。可以在普通的Cortex-M4核的单片机上完成实时控制。

image

3)对于电磁赛道的磁场分布编写虚拟仿真软件相对简单。在训练神经网络所需要的数据中可以通过虚拟仿真的方法进行有效的扩充。并在此基础上可以进一步尝试进行对抗学习算法,强化学习算法等。

4)在严格限制车模传感器前瞻长度的基础上,可以达到通过机器学习所得到的车模控制效果超过手工编写算法的速度。相比于基于摄像头的车模来讲更容易实现。

image

基于机器学习开发智能车控制算法的工作流程

智能车竞赛第六个赛题组,即室外电磁组的内容,基础部分是电磁传感器前瞻长度受限情况下的机器学习控制。并在此基础上,增加OpenMV等视觉传感器完成赛道旁交通标志识别并完成相应的前进和倒车等任务。室外电磁组赛道的复杂度将会低于上一届的赛道复杂度。

竞赛组委会将会和NXP工程师合作为参赛同学完成单片机上部署人工神经网络准备相关教程和工具,为参赛同学实践机器学习提供便利。

image

公众号留言NoneNone****卓大大,您好,可不以双车也是3人或者4人,因为14届的时候,我们学校双车队里虽然是5个人,但其中两个人从准备比赛到参赛都一直没来,一直是3个人再做双车。人多了,说实话没有很大的作用。

image

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!