何華光 梁超 殷金偉 張虎
摘 要: 為了提高智能小車的智能化以及抗干擾性能和魯棒性,介紹一種基于ARM與遺傳算法的智能小車的設(shè)計。小車應(yīng)用ST公司的32位單片機(jī)STM32F103芯片為控制器,同時外部連接紅外傳感器,并通過遺傳算法整定PID參數(shù),實現(xiàn)更好的循跡行駛。給出了部分硬件電路圖和軟件流程圖、算法的流程圖以及相關(guān)的源代碼。實踐證明,采用遺傳PID算法的智能小車具有更強(qiáng)的抗干擾性、魯棒性并且更具智能化。
關(guān)鍵詞: ARM/STM32F103; 遺傳PID算法; 智能小車; 智能整定
中圖分類號: TN929.1?34 文獻(xiàn)標(biāo)識碼: A 文章編號: 1004?373X(2015)19?0152?04
Abstract: To improve the intelligence, anti?interference performance and robustness of the intelligent car, the design of intelligent car based on ARM and genetic algorithm is introduced. The STM32F103 chip with 32?bit of ST Microelectronics is adopted as the controller in the car. It is connected with infrared sensor by outer join. PID parameter is adjusted with genetic algorithm to achieve the better tracking driving. The partial hardware circuit diagrams, software flow charts, algorithm flow chart and the related source code are provided in this paper. The practice results prove that the intelligent car using genetic PID algorithm has better anti?interference performance, robustness and intelligence.
Keywords: ARM/STM32F103; genetic PID algorithm; intelligent car; intelligent adjusting
0 引 言
隨著科技的不斷進(jìn)步與發(fā)展,小車的智能化也在加速進(jìn)行。本文使用的紅外傳感器[1] RPR220光電開關(guān)性能優(yōu)良、模塊制作簡單,完全能夠勝任道路檢測功能的實現(xiàn),以及使用ST(意法半導(dǎo)體)公司的32位單片機(jī)芯片STM32F103RCT6[2?3],其具有強(qiáng)大的資源和超高處理速度,能夠很好地實現(xiàn)遺傳算法在整定參數(shù)中的運(yùn)算。
近年來發(fā)展了遺傳PID算法、模糊PID算法、神經(jīng)網(wǎng)絡(luò)PID算法等智能算法。遺傳算法[4?5](GA?Genetic Algorithms)是一種新型的、通過模擬生物進(jìn)化機(jī)制的隨機(jī)搜索和優(yōu)化方法,具有并行計算、全局收斂、編碼操作等特點。遺傳算法最大的特點就是:不需要知道如何去解決一個問題,僅僅需要知道,用什么方式對可行解進(jìn)行編碼,使得它能夠被遺傳算法機(jī)制利用[6?7]。通過遺傳算法智能整定三個重要參數(shù):比例系數(shù)[Kp,]積分系數(shù)[Ki]和微分系數(shù)[Kd,]使其達(dá)到整定最優(yōu)。
綜上所述,設(shè)計出一種基于ARM與遺傳PID算法的智能小車,采用遺傳算法,解決了PID參數(shù)整定困難的問題,從而使PID參數(shù)在一定條件下,得到智能整定最優(yōu)。通過對比發(fā)現(xiàn):使用遺傳算法的智能小車,具有更強(qiáng)的適應(yīng)性、抗干擾能力,并且這也是智能化向智能算法發(fā)展的方向。
1 設(shè)計原理
智能小車以32位的STM32F103RCT6芯片為處理器,外部連接紅外傳感器(RPR220紅外傳感器)模塊、電機(jī)驅(qū)動模塊、電源模塊,系統(tǒng)結(jié)構(gòu)框圖如圖1所示。
通過從紅外傳感器采樣返回的數(shù)據(jù),控制器使用遺傳算法對PID中的三個重要參數(shù):比例系數(shù)[Kp,]積分系數(shù)[Ki]和微分系數(shù)[Kd]進(jìn)行智能整定,然后使用參數(shù)較為理想的PID控制算法,得到增量值返回給PWM輸出,從而控制左右兩個電機(jī)的轉(zhuǎn)速和方向,控制小車沿黑線前行,使小車具有更強(qiáng)的環(huán)境適應(yīng)能力、抗干擾能力以及魯棒性。
1.1 控制器STM32F103
本設(shè)計以STM32開發(fā)板為控制器,開發(fā)板選擇的是32位的STM32F103RCT6芯片作為MCU,具有強(qiáng)大的運(yùn)算能力,在對數(shù)據(jù)采集以及數(shù)據(jù)處理上能夠達(dá)到相當(dāng)高的精度,擁有的資源有:2個基本定時器、4個通用定時器、2個高級定時器、2個DMA控制器、12個通道、3個12位ADC、1個12位DAC等。對數(shù)據(jù)的精確采集,使得微處理器能夠準(zhǔn)確的掌握路況,對數(shù)據(jù)處理的強(qiáng)大運(yùn)算功能使得微處理器能夠流暢運(yùn)行遺傳算法。
1.2 紅外傳感器模塊
紅外傳感器模塊,采用4個“緊固”紅外傳感器,工作在定時器中斷強(qiáng)行調(diào)整小車位置,采用2個普通紅外傳感器工作于遺傳算法和高精度的小車調(diào)整狀態(tài)。模塊采用性價比高的RPR220光電開關(guān),其性能良好、制作模塊簡單、使用的外接器件少?!熬o固”傳感器,采用LM393P電壓比較器,能在一定程度上對軟件減輕負(fù)擔(dān),正常工作時,從掃描得到的結(jié)果直接返回0或1,送回ARM進(jìn)行下一步工作,電路如圖2(a)所示;普通傳感器正常工作時,通過對黑白不同環(huán)境物理表面具有不同的反射性質(zhì)的特點,得到不同的信號,得到的信號以電壓形式從單排針0處送給控制器ARM,進(jìn)行下一步工作,電路如圖2(b)所示;傳感器在制作電路板上的分布如圖2(c)所示。endprint
1.3 電源穩(wěn)壓模塊
該模塊由7805三端穩(wěn)壓IC和極少的外圍元件組成,電路極為簡單。另外,電路內(nèi)部還有過流、過熱及調(diào)整管的保護(hù)電路,使用起來可靠、方便,而且價格便宜。
1.4 電機(jī)驅(qū)動模塊
采樣網(wǎng)上現(xiàn)有的雙H橋電機(jī)驅(qū)動模塊使用ST公司的L298N芯片作為主驅(qū)動芯片,該芯片具有驅(qū)動能力強(qiáng)、發(fā)熱量低、抗干擾能力強(qiáng)的特點。該模塊使用大容量濾波電容、續(xù)流保護(hù)二極管,可以大大提高可靠性,對于本設(shè)計是非常有利的。由于本模塊是2路的H橋驅(qū)動,所以可以同時驅(qū)動兩個電機(jī),使能ENA,ENB之后,通過分別從IN1,IN2輸入PWM信號驅(qū)動電機(jī)1的轉(zhuǎn)速和方向,從IN3,IN4輸入PWM信號驅(qū)動電機(jī)2的轉(zhuǎn)速和方向,從而實現(xiàn)小車前進(jìn)、后退還有轉(zhuǎn)彎。
2 系統(tǒng)軟件設(shè)計
系統(tǒng)程序功能介紹:將系統(tǒng)各個子程序初始化,包括系統(tǒng)時鐘初始化、定時器初始化、LCD初始化、A/D采樣初始化、PWM初始化、紅外傳感器初始化等。然后按鍵掃描是否啟動小車,按鍵1即KEY1按下奇數(shù)次,則啟動小車;KEY1按下偶數(shù)次,則小車停止。啟動之后進(jìn)行程序的下一項即采樣。從紅外傳感器采集回來的信息送到遺產(chǎn)算法中,對PID參數(shù)進(jìn)行智能整定,在整定的同時,系統(tǒng)采用定時器3定時中斷執(zhí)行小車調(diào)整程序,將小車“人為緊固在黑線上”,整定完成之后將最優(yōu)的PID參數(shù)送入到PID算法的式子上進(jìn)行運(yùn)用。根據(jù)小車從紅外傳感器采樣回來的參數(shù)進(jìn)行PID運(yùn)算輸出較為理想的PWM,控制小車循跡行駛,使小車具有更強(qiáng)的魯棒性,使用LCD在程序中顯示最優(yōu)的PID參數(shù)等。程序流程圖如圖3所示。
2.1 遺傳算法程序
本文將16位二進(jìn)制進(jìn)行0~65 535數(shù)字編碼,高6位代表參數(shù)[Kp,]中間5位代表參數(shù)[Ki,]低5位代表參數(shù)[Kd。]將從紅外傳感器采樣得到的參數(shù)送入到遺傳算法與編碼的可行解進(jìn)行智能遺傳,從遺傳中最終得到這樣一個結(jié)果,即所有的個體將會趨向于最優(yōu)解,再將最優(yōu)解解碼就能得到最優(yōu)PID參數(shù),程序流程圖如圖4所示。
2.2 建立種群
系統(tǒng)建立初始PID參數(shù)種群遺傳基因列表,建立初始種群的方法有很多種,如單片機(jī)自己隨機(jī)產(chǎn)生、通過A/D采樣產(chǎn)生等,為了使用方便,在這里直接對建立的種群賦予固定的初始遺傳基因,即DNA。
2.3 適應(yīng)值的評估
(1) 個體適應(yīng)值評估
個體適應(yīng)值的評估,是決定種群發(fā)展方向的核心問題。本文是尋找符合小車循跡環(huán)境的最優(yōu)PID參數(shù),使用的評估方法如下:小車在初始狀態(tài)下,首次使用PID參數(shù)調(diào)整,再將從紅外傳感器采樣得到的數(shù)據(jù)與設(shè)定的目標(biāo)值(紅外傳感器在距離黑線中心1 cm的電壓值)相比較,求得一個差值。通過求取使用300次PID調(diào)整之后得到的300個差值,再求取算術(shù)平均值,最后把平均值換算成適應(yīng)值??紤]到在采樣時會出現(xiàn)的問題:一次采樣帶有較大的偶然性,為了減少偶然性的發(fā)生,本文使用在采樣時通過采集12次電壓,然后求取平均值的方法,將平均值作為當(dāng)前的電壓值。
(2) 評估目的
根據(jù)大自然法則,在不同的生態(tài)環(huán)境下生物的適應(yīng)度是不一樣的,所以對每一代都要進(jìn)行個體重新評估。如果一個個體非常適宜這個環(huán)境,無論對其進(jìn)行多少次的評估,他的適應(yīng)值基本保持不變,假如一個個體在這個環(huán)境下適合生長但是在另外的環(huán)境下不適合發(fā)展,那么這個個體就應(yīng)該被淘汰,這也就是每一代個體都要進(jìn)行評估的目的。
2.4 參數(shù)的調(diào)整
一個生態(tài)環(huán)境就有一組與之對應(yīng)的遺傳PID參數(shù),這反應(yīng)了大自然的法則也是建立在一定的參數(shù)基礎(chǔ)上,參數(shù)不一樣反應(yīng)的就是不一樣的自然環(huán)境。調(diào)整參數(shù)就是將系統(tǒng)的參數(shù)與系統(tǒng)將要模擬的環(huán)境相對應(yīng),重要參數(shù)有遺傳的代數(shù)、突變率、PID調(diào)整次數(shù)等。
2.5 遺傳定律
選擇、復(fù)制或雜交、變異。選擇適應(yīng)性最強(qiáng)的兩個個體作為父代,進(jìn)行雜交和變異,生出新的后代。其他沒有被選擇到的后代都是完全的進(jìn)行遺傳即復(fù)制。這是模擬了孟德爾的遺傳定律進(jìn)行的經(jīng)典算法,將適應(yīng)環(huán)境的個體有選擇性的遺傳給后代,使后代具有更強(qiáng)的環(huán)境適應(yīng)性。遺傳算法部分源代碼如下所示:
3 系統(tǒng)測試
為了驗證遺傳算法小車的適應(yīng)性和魯棒性,設(shè)計了一個簡單的橢圓黑線軌跡,調(diào)試主要是為了將中斷程序與遺傳算法更好的結(jié)合,并且在智能整定中找到最優(yōu)的值。小車調(diào)試實驗圖如圖5所示,圖5(a)為小車運(yùn)動在合理黑線范圍內(nèi)正常運(yùn)行遺傳算法整定參數(shù)實驗圖;圖5(b)為小車在評估不適應(yīng)PID參數(shù)時,產(chǎn)生較大的偏移,系統(tǒng)中斷強(qiáng)行調(diào)整小車位置的實驗圖;圖5(c)為小車遺傳算法運(yùn)行完畢得到最優(yōu)PID參數(shù)并使用最優(yōu)參數(shù)行駛的實驗圖;圖5(d)為小車遺傳算法運(yùn)行完畢,顯示屏上顯示相關(guān)參數(shù)的結(jié)果。
實驗結(jié)果表明,在本次測試實驗中,遺傳基因最終都趨向于9 128,解碼得到的最優(yōu)PID參數(shù)為:[Kp=]1.250,[Ki=]9.062,[Kd=]2.500。從實驗效果來看,采用遺傳算法整定PID參數(shù)的智能小車運(yùn)行效果比采用傳統(tǒng)PID算法的智能小車運(yùn)行效果更具抗干擾性以及魯棒性。
4 結(jié) 語
本文主要研究了ARM與遺傳算法的智能小車的應(yīng)用,將從紅外傳感器采樣取得的數(shù)據(jù)送到控制器ARM上,在ARM上運(yùn)用遺傳算法智能整定PID參數(shù)。本文中遺傳算法解決了PID參數(shù)整定困難的問題,也使得PID參數(shù)整定具有環(huán)境適應(yīng)性。ARM與遺傳算法的智能整定PID參數(shù)能夠根據(jù)環(huán)境的變化智能整定自身PID參數(shù),具有廣泛的應(yīng)用前景。
參考文獻(xiàn)
[1] 胡媛媛,鄧世建,王書婧.基于紅外光電傳感器的智能尋跡小車設(shè)計[J].電子設(shè)計工程,2011,19(7):141?143.
[2] YIU J.ARM Cortex?M3權(quán)威指南[M].宋巖,譯.北京:北京航空航天大學(xué)出版社,2009.
[3] 意法半導(dǎo)體(中國)投資有限公司.TM32F10xxx中文參考手冊[[EB/OL].[2010?01?10].]http://wenku.it168.com/d_000072001.shtml.
[4] 牛志玲,潘曉萌.基于雙種群遺傳算法的四旋翼飛行器PID參數(shù)整定方法[J].計算機(jī)測量與控制,2014,22(4):1230?1232.
[5] 牛理想,扈曉利,王高平.基于遺傳算法尋優(yōu)的PID 控制及Matlab仿真[J].測試測量技術(shù),2008(12):7?9.
[6] 王輝.遺傳算法在人工智能領(lǐng)域中的應(yīng)用[J].電腦知識與技術(shù),2008(27):2040?2042.
[7] 張陽.基于MR的自動頻率規(guī)劃軟件的分析與設(shè)計[D].北京:北京郵電大學(xué),2011.
[8] 陳懂,劉璟,金世俊.智能小車的多傳感器數(shù)據(jù)融合[J].現(xiàn)代電子技術(shù),2005,28(6):3?5.endprint