湖北工程學(xué)院 楊鵬勝
?
關(guān)于智能小車軟件設(shè)計(jì)的探討
湖北工程學(xué)院楊鵬勝
由于汽車工業(yè)的飛速發(fā)展,關(guān)于汽車的研究越來越多,各種在模擬環(huán)境(蛇形彎道)下的小車種類層出不窮。根據(jù)智能小車不需要人為持續(xù)管理,能夠顯示時(shí)間速度、里程;能自動(dòng)尋跡,尋光,避障;在行駛時(shí)還可以控制速度、定位停止、傳輸圖像等功能。在科學(xué)勘察、交通出行等領(lǐng)域有著廣泛的應(yīng)用前景。下面主要探討關(guān)于小車軟件方面的的設(shè)計(jì)。
小車的控制包括電機(jī)和舵機(jī)的控制,具體的控制算法有PID控制,bang-bang算法控制和模糊控制。
1.1PID控制
PID 控制是工業(yè)過程控制中歷史最悠久,生命力最強(qiáng)的控制方式。這主要是因?yàn)檫@種控制方式具有直觀、實(shí)現(xiàn)簡單和魯棒性能好等一系列的優(yōu)點(diǎn)。PID控制主要有三部分組成,比例、積分、微分。比例控制是一種最簡單的控制方式。其控制器的輸出與輸入誤差信號成比例關(guān)系。偏差一旦產(chǎn)生,調(diào)節(jié)器立即產(chǎn)生控制作用使被控量朝著減小偏差的方向變 化,控制作用的強(qiáng)弱取決于KP。當(dāng)僅有比例控制時(shí)系統(tǒng)輸出存在穩(wěn)態(tài)誤差為了消除穩(wěn)態(tài)誤差,引入積分控制。積分項(xiàng)對誤差取決于時(shí)間的積分,隨著時(shí)間的增加,積分項(xiàng)會增大。這樣,即便誤差很小,積分項(xiàng)也會隨著時(shí)間的增加而加大,它推動(dòng)控制器的輸出增大使穩(wěn)態(tài)誤差進(jìn)一步減小,直到等于零。為了預(yù)測預(yù)測誤差變化的趨勢,引入微分的控制器,這樣就能夠提前使抑制誤差的控制作用等于零,甚至為負(fù)值,從而避免了被控量的嚴(yán)重超調(diào)。PID控制狂徒如圖1所示,
圖1
對應(yīng)的誤差傳遞函數(shù)為:
式中,Kp 為比例增益;Ti 為積分時(shí)間常數(shù);Td 為微分時(shí)間常數(shù);U(s)為控制量; E(s) 為被控量與設(shè)定值 R(s)的偏差。時(shí)域表達(dá)式為:
在單片機(jī)中,我們僅能對數(shù)字信號處理,即數(shù)字 PID 控制。將上式離散化,得:
A.位置式PID算法直接利用上述離散化公式計(jì)算,框圖如右圖所示。由于積分項(xiàng)(Pi)是將所有采集值偏差相加,在一段時(shí)間后會很浪費(fèi)單片機(jī)資源。對其稍加改進(jìn),得到 增量型 PID 算法。
B.增量式 PID 算法為:
式三減式四得:
由此,第k個(gè)采樣時(shí)刻實(shí)際控制量為u(k)=u(k-1)+△u(k),為方便書寫,寫為:
其中,q0=(1+T/Ti+Td/T), q1=-Kp(1+2Td/T),q2=KpTd/T
由上可知,利用三個(gè)歷史數(shù)據(jù),遞推使用,即可完成PID控制量??驁D如圖2所示。
1.2模糊控制
一般控制系統(tǒng)包含了五個(gè)主要部分,即:定義變量、模糊化、知識庫、邏輯判斷及反模糊化,底下將就每一部分做簡單的說明:
(1)定義變量:也就是決定程序被觀察的狀況及考慮控制的動(dòng)作,例如在一般控制問題上,輸入變量有輸出誤差 E 與輸出誤差之變化率 CE,而控制變量則為下一個(gè)狀態(tài)之輸入U(xiǎn)。其中E、CE、U統(tǒng)稱為模糊變量。
(2)模糊化(fuzzify):將輸入值以適當(dāng)?shù)谋壤D(zhuǎn)換到論域的數(shù)值,利用口語化變量來描述測量物理量的過程,依適合的語言值(linguisitc value)求該值相對之隸屬度,此口語化變量我們稱之為模糊子集合(fuzzy subsets)。
(3)知識庫:包括數(shù)據(jù)庫(data base)與規(guī)則庫(rule base)兩部分,其中數(shù)據(jù)庫是提供處理模糊數(shù)據(jù)之相關(guān)定義;而規(guī)則庫則藉由一群語言控制規(guī)則描述控制目標(biāo)和策略。
(4)邏輯判斷:模仿人類下判斷時(shí)的模糊概念,運(yùn)用模糊邏輯和模糊推論法進(jìn)行推論,而得到模糊控制訊號。此部分是模糊控制器的精髓所在。
(5)解模糊化(defuzzify):將推論所得到的模糊值轉(zhuǎn)換為明確的控制訊號,做為系統(tǒng)的輸入值。模糊算法可以解決一些非線性問題,將賽道分為直線、入大小彎、出大小彎、蛇形彎道,對應(yīng)的直線加速、入大彎減速轉(zhuǎn)方向、入小彎制動(dòng)轉(zhuǎn)方向、出彎加速、蛇形彎道直接通過(若可以達(dá)到這種前瞻性)。要達(dá)到這種控制要通過實(shí)際 檢測,分析大量賽道磁場信息,找出它們的特征。
軟件運(yùn)行需要配置單片機(jī)各個(gè)模塊寄存器數(shù)值,使單片機(jī)各個(gè)模塊正常工作。初始化中包括:單片機(jī)時(shí)鐘配置、I/O口配置、PWM模塊配置、A/D模塊配置、RTI實(shí)時(shí)中斷配置、脈沖捕捉模塊配置。當(dāng)初始化完畢后,進(jìn)入跑車程序:對傳感器輸入信號進(jìn)行采樣,當(dāng)完成一次采樣后將采樣值映射成車相對于跑道的位置,根據(jù)當(dāng)前與過去位置決定舵機(jī)轉(zhuǎn)角和電機(jī)速度,通過改變PWM模塊內(nèi)部寄存器數(shù)值可以得到不同占空比的方波信號,實(shí)現(xiàn)對舵機(jī)和電機(jī)的調(diào)節(jié)。軟件整體流程如圖3所示。
圖2
圖3
小車調(diào)試上述算法參數(shù)的獲取必須通過實(shí)際的測量,跑道信息的獲取用藍(lán)牙藍(lán)傳送數(shù)據(jù)。利用藍(lán)牙串口模塊,將所需數(shù)據(jù)發(fā)回PC機(jī),通過 MATLAB仿真分析偏差變化,對數(shù)據(jù)進(jìn)行處理得到賽道信息,從而調(diào)整參數(shù)使之達(dá)到最佳值。
綜上所述,小車軟件設(shè)計(jì)需要考慮實(shí)際操作中方方面面的問題,而控制方法更是重中之重,雖然模糊控制可以較好解決一些非線性問題,但控制復(fù)雜,實(shí)際調(diào)試中較PID控制無明顯優(yōu)勢,所以我們采用PID控制。舵機(jī)為位置式PD,雖然存在穩(wěn)態(tài)誤差,但可以快速響應(yīng);電機(jī)控制為增量式 PID,由于給定速度頻繁變化,采用微分先行 PID,使電機(jī)能夠快速響應(yīng)。
[1]夏克儉.數(shù)據(jù)結(jié)構(gòu)及算法[M].北京:國防工業(yè)出版社,2001.
[2]仲志丹,張洛平,張青霞.PID調(diào)節(jié)器參數(shù)自尋優(yōu)控制在運(yùn)動(dòng)伺服中的應(yīng)用[J].2000.