对于小车的控制算法,神经网络应该是不错的选择。但是很多人没有用,我想是计算量和收敛特征的问题导致大家在研究算法时不敢越雷池。神经
关于小车的操控算法,神经网络应该是不错的挑选。可是许多人没有用,我想是核算量和收敛特征的问题导致我们在研讨算法时不敢越雷池。神经网络的研讨一般是根据OFF-LINE的,而飞思卡尔竞赛用的仅仅MCU的ON-LINE形式的,这好像就有了对立;别的,神经网络不管在分类仍是拟合作用上,核算精确性并不是100%,这也是航空技能不必神网的原因。
此篇博文首要评论神经网络用在小车操控算法上的可能性以及怎么使用神经网络于小车操控算法。
想必自动化的学生都对操控模型的建模有很深的印像,有的硕士论文便是研讨这些模型。一般用机理分析法和体系辨识法对试验数据建模,得到传递函数,然后经过调试实践体系,从开环到闭环,不断调整参数和操控参数。举个比如:要树立小车直线、弧线行走的操控模型,即经过实测数据树立驱动操控和小车转弯偏移量的联系,那么输入的参数是当时速度,曲率巨细,转弯弧度,最大安全速度,现在偏移视点等等参数,而输出的便是方针速度,方针视点。这个输入和输出之间的联系便是操控模型,一般也叫操控器。小车跑得快,跑得稳,首要便是这个”操控器“,操控器拟合得好,适应性强,OK,成果就不差。
说了半天,小车操控算法要处理的问题是: 输入——>操控模型——>输出操控参数。
按一般的办法,操控模型的树立需求许多数据,离线在线都必需调试多遍,体系的适应性欠安。而测验神经网络,这些问题就都能够很大程度地防止了。
1 首要,有必要介绍一下神经网络,究竟神经网络是干什么用的,怎么用。神经网络的理论并不杂乱,我想是有些书或论文把简略问题杂乱化了。我们不要对它惊骇。一堆数据A,经过一个NET不断调整,得到另一堆数据B。而A和方针成果数据C都是已知的,NET是不知道的,这个调整NET的进程便是练习,NET练习好的成果是使B和C的差错最小,差错合理就收敛。收敛完了,这个NET就能够用了。神经网格的中心便是得到一个NET。操控模型便是一个NET,NET包括许多参数,如权值,隐含层数,练习办法,神经元模型,传递函数等,只需树立一个NET,那么输入和输出的联系就树立起来了。
神经网络首要有两个作用:一个是分类,另一个是回归(拟合)。假设把它运用于小车操控算法,毫无疑问是用于回归拟合的功用。回归什么呢?对,回归上面所说的操控模型,这个NET便是操控器。
神经网络用于小车操控算法上的优势比较显着,模型能够随时调整,并且模型不是经过公式表明,仅仅一个NET来表达,防止杂乱的参数调整和试算进程。经过新的环境参数得到新的NET,增强体系的适应性。
为什么有些车在自己的场地上跑得好好的,在其它的场地上就不可呢?
为什么有些车不断地调整操控模型,操控作用却不好呢?
怎么挑选操控器的输入参数,参数的权重怎么介定呢?
。。。。。。。。
一系列的问题,神经网络能够给我们答案。
2 WJ自己对神经网络用于小车操控的一点考虑。
神经网络常用的一般有:感知器,BP,HOPFILED,RBF,ANN,ART和Kohonen网络。假设不必工具箱函数(即MATLAB的API函数),自己写的话,无所谓,说不定自己能够发明一种网络。只需收敛快,核算量小,泛化功能好,网络消耗资源小就行,话说起来简略,却有必定难度。可是小车的需求低,精度无需太高,因而应该来说比较简单完成。
神经网络比PID,含糊操控,遗传算法,bangbang等算法,更微观,能够理解为从体系全体下手建模。可是正如本博文最初所说:核算量和收敛性必需确保,神经网络才有运用的可能性。WJ主张从以下几个方面处理这两个问题:
(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)为练习输出,树立神经网络并练习,那么树立起PWM和速度操控之间的联系是十分容易的事。
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/peixun/258795.html