


摘 ?要:針對智能小車自動駕駛過程中存在的諸多問題,設計與開發了基于Android的智能小車控制系統。以Android端控制系統作為上位機,與搭載在智能小車主體上的主控平臺進行通信連接,使用攝像頭采集圖像,實現在有效地范圍內進行高效的環境視頻傳輸。在Android端優化圖像識別算法,實現了智能小車路徑識別、自主巡線、自主避障、平穩快速的行駛等功能,同時還能接受Android端界面的手動控制。
關鍵詞:Android;智能小車;控制系統;WiFi;攝像頭
中圖分類號:TP181 ? ? 文獻標識碼:A
Design and Development of Intelligent Car Control System Software based on Android
LIU Jianying
(School of Information Technology, Dalian Vocational Technology College, Dalian 116035, China)
s-ill-y@163.com
Abstract: Intelligent car control system based on Android is designed and developed for automatic driving. The Android terminal control system is used as the upper computer, and is connected with the main control platform on the main body of intelligent car. The camera is used to capture images, achieving efficient environmental video transmission in an effective range. Optimizing image recognition algorithm in Android realizes the functions of intelligent car such as path identification, autonomous line inspection, autonomous obstacle avoidance, stable and fast driving and manual control from Android interface.
Keywords: android; intelligent car; control system; WiFi; camera
1 ? 引言(Introduction)
隨著“互聯網+”和人工智能等高新技術的飛速發展,智能技術廣泛應用于各個領域,智能產品也越來越受到人們的青睞。智能小車是集環境感知、規劃決策、自動行駛等多功能于一體的綜合系統[1],是智能交通系統的一個重要組成部分,它在軍事、民用、太空開發等領域有著廣泛的應用前景[2]。
智能小車與一般所說的自動駕駛不盡相同,它指的是利用多種傳感器和智能道路技術實現的小車自動駕駛[3]。
本基于Android的智能小車控制系統主控平臺采用Cortex-A9核心板,上位機采用開源的Android應用控制系統,使用攝像頭采集圖像、進行信息處理,實現在有效地范圍內進行高效的環境視頻傳輸。本智能小車具有路徑識別、自主巡線、自主避障等功能,并可通過手機APP與智能小車進行UI交互操控,是一項具有廣闊應用前景的智能車技術。
2 ? 系統整體設計(Overall design of the system)
Android(安卓)是一種基于Linux內核的操作系統[4],特點是自由且源代碼開放,Android主要應用于移動設備,如智能手機和平板電腦。現在Android在全球的市場份額已經高達87%,全世界采用Android的設備數量已經超過百億臺。
基于Android的智能小車控制系統由控制器數據接收模塊、避障模塊、WSN無線傳感網模塊、主控平臺、攝像頭模塊、Wifi通信模塊、通信接口及上位機智能小車控制系統構成。系統整體設計圖如圖1所示。
智能小車可以作為一個單獨的個體,但是在作為一個單獨的個體進行實驗時,發現出現了一些問題,并不能流暢的達到預想效果,而在加入上位機智能小車控制系統Android端后,一部分算法在Android端運行,優化了圖像識別算法[5]。在Android端控制、下發命令、完成參數反饋,可以使得智能小車有兩個“大腦”,滿足智能控制的同時,亦可手動操作[6]。
本智能小車Android端控制系統作為上位機,與搭載在智能小車主體上的主控平臺進行通信連接。主控平臺采用Cortex-A9核心板,主控平臺的視頻采集端口連接攝像頭模塊,接收攝像頭模塊采集的視頻信息;主控平臺的信息采集端口連接WSN無線傳感網模塊,用以采集環境狀態信息和智能小車狀態信息。
本智能小車Android端控制系統使用HTTP協議進行網絡通信[7],獲取攝像頭數據,進行視頻播放。智能小車使用Wi-Fi模塊和手機連接,通過局域網的方式進行通信,主控平臺將環境狀態信息和智能小車狀態信息發送給上位機,由上位機保存并提取特定的智能小車環境狀態信息及其行車狀態信息,將獲取到的數據在智能小車Android端控制系統APP界面上顯示出來,并根據上述信息判斷是否適宜智能小車繼續行進。系統使用的圖像識別技術采用TensorFlow的神經網絡。
3 ? 系統軟件設計(The design of system software)
軟件控制是智能小車控制的核心,通過軟件實現圖像處理、控制智能小車平穩高速自動巡線。根據業務功能分析,系統功能主要劃分為四個模塊:連接模塊、操作模塊、波形傳感模塊、參數設置模塊。系統功能模塊圖如圖2所示。
基于Android的智能小車控制系統的主要程序如下。
privateBroadcastReceiverbroadcastReceiver = new BroadcastReceiver() {
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
switch (action){
caseWifiManager.NETWORK_STATE_CHANGED_ACTION:
Parcelableparcelable = ? ? ? ? ? ? ? ? ? ? ? ? intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
if(null != parcelable){
NetworkInfonetworkInfo = (NetworkInfo) parcelable;
NetworkInfo.State state = networkInfo.getState();
if(state == NetworkInfo.State.CONNECTED){
WifiInfowifiInfo = wifiTool.wifiManager.getConnectionInfo();
SharedData.ssid = wifiInfo.getSSID();
adapter.notifyDataSetChanged();
}else if(state == NetworkInfo.State.DISCONNECTED){
SharedData.ssid = null;
adapter.notifyDataSetChanged();
}
}
break;
caseWifiManager.SCAN_RESULTS_AVAILABLE_ACTION:
updateWifiList();
break;
}
}
};
4 ? 軟件開發(Software development)
本智能小車控制系統是一個基于Android操作系統的智能手機APP。Android應用控制系統是本系統的核心部分,負責對圖像進行二次處理。智能小車主控平臺負責對圖像進行一次處理,如果處理結果模糊則交由Android應用進行二次處理。Android應用控制系統與智能小車主控平臺進行通信,實現對智能小車的控制與狀態顯示,并且可以進行UI交互操控。
4.1 ? 設備連接
在Android操作系統中點擊智能小車控制APP,進入程序后,第一個界面為設備連接界面,可以選擇通過兩種不同的模式來連接智能小車,分別是WiFi連接和藍牙連接。設備連接界面如圖3所示。
4.2 ? 操作界面
智能小車控制APP軟件系統的操作界面中分為八個操作區域。操作界面如圖4所示。八個操作區域分別為:界面選擇區域、表盤模塊、搖桿模塊、視頻界面、行走模式、智能小車姿態、ccd距離模塊、控制指令顯示區域。
八個操作區域的功能如下:
(1)界面選擇:包含操作、顯示波形傳感、參數設置三個界面,可以通過單擊“操作”“顯示”“設置”三個按鈕在界面之間來回切換。
(2)表盤模塊:表盤顯示智能小車的實時電量百分比。
(3)搖桿模塊:用來操控智能小車的運動方向。
(4)視頻界面:視頻界面顯示智能小車攝像頭實時采集的圖像;單擊界面可以抓取圖像;在模塊內手勢滑動也可以控制攝像頭上下左右移動,調整攝像頭的角度。
(5)行走模式:行走模式分為“遙控模式”“巡線模式”“避障模式”三種模式。遙控模式為通過手機控制智能小車行走;巡線模式為智能小車沿預定路線循環行走;避障模式為開啟感知模塊,當智能小車前行方向有障礙物,智能小車自主選擇避讓障礙物繼續前行。
(6)智能小車姿態:區域模塊中的正方形隨著智能小車車身的傾斜而傾斜,因此,正方形可以顯示智能小車當前車身的狀態和傾斜角度。
(7)ccd距離模塊:ccd是巡線感應器,ccd距離模塊會隨時查看到ccd距離線路的偏離情況。
(8)控制指令顯示:此模塊顯示手機對智能小車下發命令的十六進制元數據。
4.3 ? 顯示波形傳感
在智能小車控制APP軟件系統的界面選擇區域,點擊“顯示”按鈕,在界面右側選擇相應的傳感點,左側波形圖中會繪測出折線的波形圖,顯示各個傳感點的模型變化。顯示波形傳感界面如圖5所示。
4.4 ? 參數設置
為使得智能小車能夠平穩快速的行駛,本系統采用了增量型PID控制策略。PID控制算法具有穩定性好、響應速度快、調整方便的特點[8]。
點擊智能小車控制APP軟件系統界面選擇區域的“設置”按鈕,打開智能小車參數設置界面,可以分別設置智能小車的“直立環”“速度環”“巡線環”“避障環”的P、I、D三個參數。參數設置界面如圖6所示。
P代表比例參數:控制系統的反應速度。
I代表積分參數:積分參數用來消除系統靜態誤差,系統中有一個積分時間常數,是積分參數的倒數,積分參數越大,積分環節作用影響越明顯。
D代表微分參數:微分的作用是“阻尼”,也就是根據現在的趨勢去判斷未來,進而來阻礙未來可能出現過調的趨勢,相當于是提前點踩剎車,但是又不全踩剎車。
“讀取”按鈕:點擊“讀取”按鈕,讀取智能小車的當前設置值,并顯示在界面當中。
“寫入”按鈕:點擊“寫入”按鈕,將當前界面設置的參數保存,并下發參數至智能小車主控平臺中。
“恢復默認”按鈕:點擊“恢復默認”按鈕,讀取智能小車的出廠默認參數值并顯示在界面當中,同時下發參數至智能小車的主控平臺中。
5 ? 結論(Conclusion)
基于Android的智能小車控制系統融合了圖像識別、傳感器、物聯網、Android應用技術等多個技術方向。智能小車在Android端優化圖像識別算法,使用攝像頭采集圖像,可以在有效地范圍內進行高效的環境視頻傳輸。Android端應用可對模糊圖像進行二次處理,可以通過Android端對智能小車進行自動控制,智能小車可以自行前行、路徑識別、巡線、避障,可以平穩快速的行駛,同時還能接受Android端界面的手動控制。本研究對小車自動駕駛及智能交通系統的發展具有促進作用,可應用于城市建設的各個方面。
參考文獻(References)
[1] 楚士杰,徐子豪.智能車設計與發展研究[J].通信電源技術,2020(4):48-49;51.
[2] 侯文靜,楊廣東.基于DSP的智能車控制系統設計[J].信息技術與信息化,2020(5):234-235;239.
[3] 鄭亞利,古訓.基于CMOS攝像頭循跡的智能車控制系統設計[J].貴陽學院學報:自然科學版,2019(1):100-104.
[4] 王春東,楊宏,宮良一.基于Android平臺的視頻監控智能車設計[J].消防科學與技術,2017(1):72-75.
[5] 魏溪含,涂銘,張修鵬.深度學習與圖像識別原理與實踐[M].北京:電子工業出版社,2019.
[6] 馬鑫源,李燕燕,梁雅雯,等.四旋翼飛行器控制系統設計及可視化仿真[J].軟件工程,2020(2):29-33.
[7] 黃姝娟,劉萍萍,白小軍,等.基于STM32的智能車控制系統的設計與實現[J].計算機技術與發展,2018(9):185-188;193.
[8] CAI S, HUANG Y, YE B, et al. Dynamic illumination optical flow computing for sensing multiple mobile robots from a drone[J]. IEEE Transactions on Systems, Man, and Cybernetics: Systems, 2018, 48(8): 1370-1382.
作者簡介:
劉劍英(1979-),女,碩士,副教授/高級工程師.研究領域:嵌入式技術,軟件開發.