基于神经网络的智能车控制(chinese)概要

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于神经网络的智能车控制

对于智能小车的控制算法, 神经网络应该是不错的选择。神经网络的研究一般是基于 OFF-LINE 的,另外,神经网络无论在分类还是拟合作用上,计算精确性并不是100%,这也是航空技术不用神网的原因。此篇论文主要讨论神经网络用在小车控制算法上的可能性以及如何利用神经网络于小车控制算法。

一般用机理分析法和系统辨识法对实验数据建模, 得到传递函数, 然后通过调试实际系统, 从开环到闭环, 不断调整参数和控制参数。举个例子:要建立小车直线、弧线行走的控制模型, 即通过实测数据建立驱动控制和小车转弯偏移量的关系, 那么输入的参数是当前速度, 曲率大小, 转弯弧度, 最大安全速度, 目前偏移角度等等参数, 而输出的就是目标速度, 目标角度。这个输入和输出之间的关系就是控制模型, 一般也叫控制器。小车跑得快,跑得稳,主要就是这个”控制器“,控制器拟合得好,适应性强,效果就不差。小车控制算法要解决的问题是 : 输入—— >控制模型—— >输出控制参数。按一般的方法, 控制模型的建立需要大量数据, 离线在线都必需调试多遍, 系统的适应性不佳。而尝试神经网络,这些问题就都可以很大程度地避免了。

首先, 有必要介绍一下神经网络, 到底神经网络是干什么用的, 如何用。神经网络的理论并不复杂, 我想是有些书或论文把简单问题复杂化了。大家不要对它恐惧。一堆数据 A ,通过一个 NET 不断调整,得到另一堆数据 B 。而 A 和目标结果数据 C 都是已知的, NET 是未知的,这个调整 NET 的过程就是训练, NET 训练好的结果是使 B 和 C 的误差最小,误差合理就收敛。收敛完了,这个 NET 就可以用了。神经网格的核心就是得到一个 NET 。控制模型就是一个 NET , NET 包含很多参数,如权值,隐含层数,训练方法,神经元模型, 传递函数等,只要建立一个 NET ,那么输入和输出的关系就建立起来了。神经网络主要有两个作用:一个是分类,另一个是回归(拟合。如果把它运用于小车控制算法,毫无疑问是用于回归拟合的功能。回归什么呢?对, 回归上面所说的控制模型, 这个 NET 就是控制器。神经网络用于小车控制算法上的优势比较明显, 模型可以随时调整, 而且模型不是通过公式表示, 只是一个 NET 来表达, 避免复杂的参数调整和试算过程。通过新的环境参数得到新的

NET ,增强系统的适应性。为什么有些车在自己的场地上跑得好好的,在其它的场地上就不行呢? 为什么有些车不断地调整控制模型, 控制效果却不好呢? 如何选择控制器的输入参数,参数的权重如何介定呢? 一系列的问题,神经网络可以给大家答案。

神经网络常用的一般有:感知器, BP , HOPFILED , RBF , ANN , ART 和Kohonen 网络。如果不用工具箱函数 (即 MATLAB 的 API 函数 , 自己写的话, 无所谓, 说不定自己可以创造一种网络。只要收敛快, 计算量小, 泛化性能好, 网络耗费资源小就行, 话说起来简单, 却有一定难度。但是小车的需求低,精度无需太高,因此应该来说比较容易实现。

神经网络比 PID , 模糊控制,遗传算法, bangbang 等算法,更宏观,可以理解为从系统整体入手建模。但是正如本博文开头所说:计算量和收敛性必需保证, 神经网络才有运用的可能性。我建议从以下几个方面解决这两个问题:

(1不要指望神经网络的实时性。神经网络最要命的耗费时间是训练,神经网络在车运行时进行一两次成功的训练即可。在小车跑直线时通过获得的数据训练, 因为直线时 CPU 会有空闲时间。另外,相信大家经常用拨码开关去选择多种控制决策,这不失一种方法。但是,这个控制决策是死的,也是事先规划好的,必定不能适应新的KT 板的各种路径。 (2最好用片内 FLASH 或 SD 卡, 数据的处理是很重要的, 数据也非常宝贵的, 把数据存起来, 传给 PC , OFFLINE 时研究神经网络的算法 (有无数种训练算法 , 这是其一。其二, 训练好的网络存在 SD 卡里,下次如果需要再训练,从老的网络开始(一般网络权值是随机开始 ,效率会高很多。

(3正如数据融合一样,有决策层和数据层的融合,神经网络也一样,有决策层和数据层的运用。由于小车的路径是连续的, 那么数据层的神经网络肯定是用得着的。在图像采集里, 一般是 40mS 采集一次路径并做控制判决, 那么这 40mS 的时间不够用怎么办?大家常用的一种方法是干脆 80mS 采集一次。我的建议是前 60ms 采集一次图像并作控制决策。后 20ms 运用前 4Oms 提取的路径信息并用神网预测路径

的变化,这么一来相当于在 20ms 的时间里采集了一次图像。可想而知,效率提高

了。

(4上面是从数据层采用神经网络,这里讲一下从决策层采作神经网络。举个例子,假如控制器的输出 -3 -2 -1 0 1 2 3分别代表舵机左偏 30,左偏 20,左偏 10,直行,右偏 10,右偏 20,右偏 30,而小车前 7次的控制决策是:直行,右偏 10,直行,左偏 10,直行,右偏 10,直行, (0 1 0 -1 0 1 0 ,那么第 8次的决策通过神网应该就是左偏(-1 。如果实际需要的不是左偏的话,就应该把神网“惩罚”一下。

(5寻找合适的误差阈值。小车寻迹不像激光切割,精度要求并不高。其训练的

误差值可以“商量”的。

(6神网的训练数据不是抓到一个就可以的, 是要选择的。但这个选择也是要耗时间的,

如果是在 PC 上, FCM (模糊聚类是不错的选择。但是 MCU 是扛不起这个重

任的, 于是选择合适的训练数据和目标数据也是一个重要的研究话题。这里, 如何优化神网输入不是重点,略过。

(7重视归一化处理和神经网络训练算法。这两点很重要, 归一化可以理解为把(100 45 -67 90归一化为(1 0.45 -0.67 0.9 , 好处是改进数据的规范性,加快收敛。另外训练算法的重要性不言而喻,如用梯度下降法训练法使误差达到最小,什么是梯度下降法呢?打个比方 ,你要下山,山前的坡度是 30度,山后是悬崖坡度是 90度,要下山快, 当然是找坡度大的直接跳。这个下山坡度和训练梯度是同一个含义

(8 个人觉得利用神经网络进行速度控制有较大优势, 比 PID 控制起来精度会有些缺陷, 但速度快。由于摩阻力, 小车动力性能, 小车驱动性能, 电池等原因, 需要对速度闭环控制。假如:小车以单位时间 10ms 为节拍, 速度从 X1m/s->Y1m/s, 需要PWM 为 d1%占空比, 速度从 X2m/s->Y2m/s,需要 PWM 为 d2%占空比 ....... 速度从Xn m/s->Yn m/s,需要 PWM 为 dn%占空比,那么以(X , Y ' 为训练输入, (D'为训练输

相关文档
最新文档