,,
(蘇州大學 計算機科學與技術學院,蘇州215006)
隨著現(xiàn)代計算機、電子、自動化等技術的發(fā)展,越來越多的智能設備進入人們的生活。智能汽車作為近些年來的研究熱點,其無人駕駛技術具有良好的應用前景。而直立智能車由于具有靈活、占地面積小等特點,在擁擠的地方有較大用途。
小車設計遵循第十二屆全國大學生智能汽車競賽技術規(guī)范,使用E型車模作為基礎機械結構,完成硬件電路設計,并基于實時操作系統(tǒng)MQXLite設計了控制算法,實現(xiàn)小車直立行駛,自動循跡功能。
系統(tǒng)硬件架構圖如圖1所示,小車硬件系統(tǒng)由輸入部分、微控制器、輸出部分和供電模塊組成。輸入部分的陀螺儀和加速度傳感器、編碼器、攝像頭作為信息采集設備,實時采集小車狀態(tài)信息,經(jīng)微控制器處理后,微控制器輸出PWM波至電機驅動模塊,控制電機轉速,實現(xiàn)自動循跡。而迷你鍵盤和OLED顯示屏作為人機交互設備,方便調(diào)試和獲取信息。
圖1 系統(tǒng)硬件架構圖
微控制器選用恩智浦半導體公司生產(chǎn)的MK64FX512VLL12(K64),其特點為高性能,主頻可達120 MHz,且有FTM、ADC、SPI、I2C、UART等豐富接口。作為智能車的核心控制模塊,微控制器需要獲取各傳感器的輸入信息,轉換為可處理的數(shù)字量,并由控制算法計算出PWM占空比,輸出PWM波至電機驅動模塊。一款高性能的微控制器可以快速完成控制任務,使系統(tǒng)更加穩(wěn)定。
小車使用7.2 V、2 000 mAh的鎳鎘電池供電,而陀螺儀、加速度傳感器、攝像頭的工作電壓為3.3 V,編碼器的工作電壓為5 V,因此需要設計降壓電路,獲得各設備的工作電壓。
TPS系列低壓差線性穩(wěn)壓芯片的工作壓降較低,靜態(tài)工作電流較小,且具有過載保護功能[1]。利用TPS7333和TPS7350兩款芯片,完成了電路設計,具有較高的穩(wěn)定性。其中,TPS7350電路原理圖如圖2所示,TPS7333電路原理圖與其類似。
圖2 TPS7350電路原理圖
輸入部分包含陀螺儀和加速度傳感器、編碼器、攝像頭和迷你鍵盤。它們?yōu)檎麄€系統(tǒng)采集信息,是一切控制的基礎。
我們選用的陀螺儀型號為ENC-03,加速度傳感器型號為MMA7361,它們集成在一個模塊上,通過兩個ADC接口與微控制器連接,將采集到的角速度和加速度模擬量傳輸至微控制器處理。
對于編碼器,選用了歐姆龍公司生產(chǎn)的500線編碼器,通過齒輪與電機連接,這樣電機旋轉時,編碼器便會產(chǎn)生脈沖,脈沖數(shù)與電機轉速成正比。K64的FTM模塊有正交解碼功能,可以利用該模塊捕獲編碼器脈沖。
OV7725是由Omnivision公司生產(chǎn)的圖像感光器件,與OV7620、OV7670這些型號相比,OV7725信噪比更高、速度更快、穩(wěn)定性更好、微光靈敏度更高[2]。我們選用的鷹眼攝像頭既使用了OV7725芯片,又設計了硬件二值化電路,可直接將攝像頭采集到的二值化圖像傳輸至微控制器。
迷你鍵盤為人機交互設備的一部分,它是一個4×4的矩陣鍵盤,可以自定義按鍵功能,完成參數(shù)的錄入與修改。
輸出部分包含電機驅動模塊和OLED顯示屏。
在設計電機驅動模塊時,我們使用兩片IR2104S芯片和4個MOSFET組成全橋驅動電路,利用MOSFET的通斷來控制兩個電機的轉動方向與轉速。其中,IR2104S芯片為IR公司生產(chǎn)的半橋驅動芯片。
OLED顯示屏為人機交互設備的另一部分,其分辨率為128×64,可以顯示攝像頭拍攝的圖像、采集到的數(shù)據(jù)等,方便調(diào)試。
直立小車運動控制任務可以分解成以下三個基本任務[3]:
① 直立控制。根據(jù)小車當前的角度和角速度,控制電機正反轉,使小車保持平衡。
② 速度控制。根據(jù)小車當前的速度,調(diào)整小車傾角,使小車按設定速度行駛。
③ 方向控制。根據(jù)攝像頭采集到的圖像,計算離中心線的偏離程度,控制兩個電機之間的轉動差速,使小車轉向。
這三個控制會分別輸出對電機轉向和轉速的控制量,通過線性疊加,得到PWM占空比,最終輸出PWM波至電機驅動模塊。
可以將直立小車看成一個倒立的單擺,當它往一個方向傾倒時,在它的底部提供一個同向的加速度,便可以使它回到平衡位置,如圖3所示。
圖3 直立控制原理
加速度傳感器采集到小車加速度a后,由下式可以得到小車當前角度θ1:
(1)
其中,g為重力加速度單位。另外,將陀螺儀采集到的角速度ω積分,可以得到角度θ2。通過卡爾曼濾波,可以將θ1和θ2融合為變化平滑的角度θ。
利用PD控制,得到直立控制的控制量Ca:
Ca=Kpa×(θ-θ0)+Kda×ω
(2)
其中,Kpa為直立控制比例系數(shù),Kda為直立控制微分系數(shù),θ0為小車平衡時的角度。Kpa和Kda均需通過實驗得到。
為了使系統(tǒng)更加穩(wěn)定,我們希望小車勻速行駛。完成直立控制后,若想讓小車加速,則僅需使其前傾。通過不斷調(diào)整傾角,便可以使其按設定速度行駛。
利用編碼器獲得左右輪的速度后,先由式(3)得到速度差值ve:
(3)
其中,vl為左輪速度,vr為右輪速度,v0為設定速度。再將ve積分,得到總的距離偏差d。最后利用PI控制,由式(4)得到速度控制的控制量Cs:
Cs=Kps×ve+Kis×d
(4)
其中,Kps為速度控制比例系數(shù),Kis為速度控制積分系數(shù),它們均需通過實驗得到。這樣,當小車速度低于設定速度時,Cs為負,小車前傾,而直立控制為了使小車保持平衡,便會給小車一個向前的加速度,使小車加速。
為了使小車能夠沿指定道路行駛,還需要進行方向控制,根據(jù)道路情況及時調(diào)整小車的前進方向。
圖4 中線提取效果
中線提取效果如圖4所示,在攝像頭采集到的二值化圖像上,道路中間為白色,邊緣為黑色。使用中線提取算法,找出圖像上每行的左右邊線,進而求出道路中心線的位置。對每行中點位置進行加權平均,得到表示小車位置的量,用這個量減去小車目標位置,得到小車離中心線的偏離度me。再計算me的微分量Δme,Δme表示小車方向的變化率。利用PD控制,由式(5)得到方向控制的控制量Ct:
Ct=Kpt×me+Kdt×Δme
(5)
其中,Kpt為方向控制比例系數(shù),Kdt為方向控制微分系數(shù),它們均需通過實驗得到。當小車在道路左側時,拍攝到的圖像向右移動,me為正,因而Ct為正。線性疊加控制量時,左輪加Ct,而右輪減Ct,這樣,小車會向右轉向,恢復至道路中心位置。
在完成了直立、速度和方向控制后,線性疊加Ca、Cs和Ct,為了使小車能夠轉向,在疊加Ct時,左輪加Ct,而右輪減Ct。線性疊加的結果即為PWM占空比,根據(jù)這個占空比,微控制器輸出PWM波至電機驅動模塊,控制小車行駛。
為了使系統(tǒng)獲得更好的實時性和穩(wěn)定性,我們使用了實時操作系統(tǒng)MQXLite。與無操作系統(tǒng)時不同,操作系統(tǒng)下的編程是以任務為單位的,每一個任務完成一個特定功能,各個任務之間相互獨立。編寫完各個任務后,交由操作系統(tǒng)調(diào)度運行,降低了程序設計的難度。
MQXLite是標準MQX(Message Queue eXecutive)嵌入式實時操作系統(tǒng)的輕量級版本,它支持多任務、優(yōu)先級調(diào)度、同步訪問資源、任務間通信、中斷處理,具有實時性高、內(nèi)核精簡、資源占用低等特點[4]。
MQXLite中,任務的基本形式按其執(zhí)行方式分為單次執(zhí)行任務、周期執(zhí)行任務,以及資源驅動任務[5]。
單次執(zhí)行任務在創(chuàng)建后,只執(zhí)行一次,之后便被銷毀或阻塞;周期執(zhí)行任務按照一定周期執(zhí)行一次;資源驅動任務僅在它等待的資源可用時,才可能被執(zhí)行。
根據(jù)設計的控制算法,我們劃分了5個任務:task_main、task_angle、task_speed、task_turn和task_comm。
task_main為單次執(zhí)行任務,它是MQXLite啟動后執(zhí)行的第一個任務,用于初始化全局變量、初始化外設、創(chuàng)建其他任務和安裝用戶中斷服務例程。
task_angle為5 ms執(zhí)行一次的周期性任務,該任務用于直立控制。首先,它獲取陀螺儀和加速度傳感器采集到的角速度和加速度,再通過直立控制算法,計算得到直立控制的控制量。最后,在該任務中還完成控制量的線性疊加,更新左右電機PWM占空比,以變更小車行駛狀態(tài)。
task_speed為20 ms執(zhí)行一次的周期性任務,該任務用于速度控制。在獲取左右輪速度后,根據(jù)速度控制算法,更新速度控制的控制量。
task_turn為資源驅動任務,用于方向控制。攝像頭采集完畢圖像后,會觸發(fā)一個中斷,在該中斷的中斷服務例程中,置輕量級事件位,觸發(fā)task_turn任務。該任務中,對采集到的圖像使用方向控制算法,更新方向控制的控制量。
task_comm為資源驅動任務,主要用于與上位機的通信,進行調(diào)試。在收到上位機的命令后,該任務被觸發(fā),將小車的參數(shù)發(fā)送至上位機,用于調(diào)試與分析。
另外,由于各控制量被多個任務使用,在更新控制量時,還需要使用互斥體來保證對它們的同步訪問。
各任務優(yōu)先級從高到低依次為:task_main、task_turn、task_speed、task_angle和task_comm。由于圖像采集的時間較長,在圖像采集完畢后,我們希望能夠盡快更新方向信息,所以task_turn優(yōu)先級較高。task_speed和task_angle同理。而task_comm并不是特別重要,優(yōu)先級最低。這樣設置任務優(yōu)先級后,對方向、速度控制的響應會比無操作系統(tǒng)時快,使整個系統(tǒng)獲得了更好的實時性和穩(wěn)定性。
[1] Texas Instruments. Low-Dropout Voltage Regulators With Integrated Delayed Reset Function (Rev. F)[EB/OL]. (1999-01-01) [2018-01-31].http://www.ti.com/lit/ds/symlink/tps73.pdf.
[2] Omnivision. OV7725 datasheet[EB/OL]. (2007-12-17) [2018-01-31].http://www.zhopper.narod.ru/mobile/ov7725_full.pdf.
[3] 劉明,王洪軍,李永科.直立行走的智能車設計方案[J].科技信息,2012,29(20):122.
[4] Freesca1e Semiconductor. MQXLite Real-Time Operating System User Guide. Rev 1.1[EB/OL]. (2014-02-01) [2018-01-31].http://cache.freescale.com/files/soft_dev_tools/doc/user_guide/MQXLITEUG.pdf.
[5] 王宜懷,朱仕浪,姚望舒.嵌入式實時操作系統(tǒng)MQX應用開發(fā)技術—ARM Cortex-M微處理器[M]. 北京:電子工業(yè)出版社,2014.
[6] 卓晴,黃開勝,邵貝貝.學做智能車:挑戰(zhàn)“飛思卡爾”杯[M]. 北京:北京航空航天大學出版社,2007.
趙俊杰、高曉雅(本科),物聯(lián)網(wǎng)工程專業(yè);張建(講師),主要研究方向為MIS系統(tǒng)開發(fā)、嵌入式系統(tǒng)應用。