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