錢俊然 艾凌波 應明輝 付倩瑤
(江西理工大學信息工程學院 江西省贛州市 341000)
智能小車是一個含無線通信、路徑規(guī)劃、無人駕駛、環(huán)境感知、智能定位、遠程控制等功能的綜合系統(tǒng),涉及車輛、計算機、導航、無線通信等諸多交叉學科,可以應用于教育、科研、軍事、搶險救災和無人監(jiān)視等領(lǐng)域[1],是近年來的研究熱點。當前許多高校對智能小車的研發(fā)投入了大量的精力,也取得了相應的成果。例如,2007年哈爾濱工業(yè)大學利用紅外傳感器,成功制作了直流電機控制的紅外避障小車;2014年中南大學鐘海華通過CCD 成功實現(xiàn)了循跡避障小車;2015年哈爾濱工業(yè)大學研發(fā)成功具有清掃、避障、路徑規(guī)劃功能的掃地機器人。目前關(guān)于智能循跡/避障小車的研究已經(jīng)很多,但是基于OneNET 物聯(lián)網(wǎng)[2]平臺遠程控制的智能循跡/避障小車的研究還比較少[3]。
本文對實現(xiàn)的遠程控制智能循跡/避障小車進行了介紹,該小車由主控模塊、物聯(lián)網(wǎng)網(wǎng)關(guān)模塊、物聯(lián)網(wǎng)、傳感器模塊、運動模塊等組成。主控模塊采用STM32F103RC,物聯(lián)網(wǎng)網(wǎng)關(guān)模塊采用ESP8266,物聯(lián)網(wǎng)采用中移物聯(lián)OneNET 平臺[4],傳感器采用5 路紅外傳感[5]、1 路超聲波避障傳感[6],小車循跡算法采用聯(lián)合小車運動學分析的增量式PID 算法[7]。下面以系統(tǒng)設計、循跡避障控制原理、系統(tǒng)實現(xiàn)三個方面對小車的實現(xiàn)過程進行介紹。
智能循跡避障小車的軟件采用MVC 的編程思想設計、增量式PID 算法循跡。智能小車工作過程:由無線通信模塊與物聯(lián)網(wǎng)平臺建立數(shù)據(jù)通信,智能小車接收上位機遠程下發(fā)的命令后,利用自動導航算法規(guī)劃行駛路線[8],通過傳感器感知路況信息并將這些信息傳入核心控制單元進行分析處理;通過增量式PID 控制算法對小車電機和舵機進行PWM[9]控制使小車沿4×4 點陣中的黑線前進并繞開障礙物,實現(xiàn)循跡與避障的目的。系統(tǒng)框架如圖1所示。
循跡路面選用4×4 點陣棋盤,從而模擬城市中交錯復雜的交通道路。循跡路面由16 個邊長為70 厘米白底黑線的正方形組成,其中以內(nèi)切圓作為小車的轉(zhuǎn)向輔助軌道,為配合小車循跡行駛,設置循跡黑線的寬度為3 厘米。循跡傳感器為安裝在小車前端的5 路紅外模塊,利用光在行駛路面下的光反射強度值與系統(tǒng)設置值的對比確定小車的循跡路線[10]。當小車轉(zhuǎn)向或在圓環(huán)內(nèi)行駛時,通過增量式PID 算法和差速小車控制原理對小車電機和舵機進行速度和轉(zhuǎn)向角控制使小車可以在路面上正常行駛。
圖1:小車系統(tǒng)框架
圖2:小車避障示意圖
小車用安裝在頭部的超聲波模塊來檢測路況信息,若檢測到小車運動方向上存在障礙物時,計算小車與障礙物之間的距離。當小車車頭與障礙物之間的距離小于d 且大于d/2 時,小車利用增量式PID 算法減速行駛至離障礙物d/2 即圖中B 處。根據(jù)OneNET 物聯(lián)網(wǎng)平臺設置的目的位置與障礙物位置間的關(guān)系,經(jīng)自動導航算法處理后得出小車的轉(zhuǎn)向方向并借助轉(zhuǎn)向輔助軌道繞過障礙物,實現(xiàn)小車的避障功能[11]。避障示意如圖2所示。
圖3:PID 控制原理
圖4:舵機轉(zhuǎn)向分析圖
圖5:控制系統(tǒng)框圖
圖6:數(shù)據(jù)上傳與命令下發(fā)流程
圖7:控制監(jiān)視頁面
為保證用戶對小車具有良好的遠程控制能力,同時小車在行駛過程中具有較高的穩(wěn)定性和可控性。我們選擇增量式PID 算法作為小車的控制算法,增量式PID 算法是在經(jīng)典PID 算法的基礎(chǔ)上發(fā)展而來的。經(jīng)典PID 算法作為大多數(shù)控制系統(tǒng)的控制算法,其本質(zhì)是對誤差進行控制。經(jīng)典PID 算法下的控制系統(tǒng)有3 個控制單元,其中P 為比例單元、I 為積分單元、D 為微分單元,通過比例系數(shù)KP、積分系數(shù)KI、以及微分系數(shù)KD對系統(tǒng)偏差進行調(diào)整實現(xiàn)對系統(tǒng)的控制。具體的控制過程如圖3所示。
由控制原理圖可知r(t)表示系統(tǒng)輸入信號,y(t)表示系統(tǒng)輸出信號,e(t)表示系統(tǒng)偏差,u(t)則作為PID 控制器的輸出信號。通過計算e(t)的微分和積分且與PID 各控制單元進行線性組合,我們就可以得到PID 控制器的輸出信號。其表達式如式(1)所示:
但根據(jù)我們的研究經(jīng)典PID 控制算法由于過于依賴對象模型、易于陷入局部極小的特點,所以經(jīng)典PID 算法存在一定的局限性,難以實現(xiàn)高性能系統(tǒng)的控制。而另一方面,伴隨計算機時代的高速發(fā)展以及人們對PID 算法的探索,人們開始用采樣時刻來計算控制量,用離散的差分代替連續(xù)微分的方法,于是數(shù)字PID 也就因此誕生了。相較于經(jīng)典PID,數(shù)字PID 更適合于計算機環(huán)境下的控制系統(tǒng)[12]。常用的數(shù)字PID 算法分為位置閉環(huán)控制和速度閉環(huán)控制兩種。在一般的控制系統(tǒng)中,速度閉環(huán)控制具有更高的精度與位置閉環(huán)控制相比更有優(yōu)勢。速度閉環(huán)控制下只需要一個控制增量信號便可以實現(xiàn)對一個系統(tǒng)進行直接的控制,為了保證足夠的精度我們使用足夠小的采樣周期。式(2)中e(k)為第k 次的采樣偏差值,k 為采樣次數(shù),為第k 次的輸出增量。數(shù)字PID 表達式(位置式(2)、增量式(3)所示)如下:
從公式中我們可以看出位置式輸出始終和過去的狀態(tài)有關(guān),而增量式輸出為控制量的增量。所以位置式PID 相對于增量式PID 誤差較大,同時使用增量式PID 在遇到計算機故障后不會對系統(tǒng)產(chǎn)生較大影響,因此在本次設計中選用增量式PID 作為小車的循跡控制算法。
當用戶通過OneNET 云平臺對小車下發(fā)位置坐標指令時,控制單元根據(jù)小車當前位置坐標與目的位置坐標結(jié)合4×4 點陣進行路徑規(guī)劃。由此實現(xiàn)小車的自動導航功能。
由于在模擬城鎮(zhèn)道路時,城鎮(zhèn)的交通道路并不是一成不變的,所以本次設計中利用貪心算法[13]作為小車行駛路徑的規(guī)劃方案。貪心算法又稱為貪婪算法,是一種只求當前最優(yōu)解而不求整體最優(yōu)解的算法。在循跡過程中實現(xiàn)循跡的每一步都是實時規(guī)劃的,所以使用貪心算法來爭取每一步的最優(yōu)是非常有必要的。但貪心算法由于負反饋的缺失,一旦出錯就將導致小車行駛路線出錯的問題。因此,為避免此類現(xiàn)象的出現(xiàn),在邊緣位置處加入了變向內(nèi)側(cè)移動功能進行重新規(guī)劃路線,避免小車循跡時受路線問題的干擾。
為實現(xiàn)小車在轉(zhuǎn)彎過程中平穩(wěn)行駛,我們對小車轉(zhuǎn)彎過程中舵機與內(nèi)外輪的運動關(guān)系建立數(shù)學模型進行簡單分析。如圖4所示。
由幾何知識進行換算,可得小車內(nèi)外輪速度與轉(zhuǎn)向角度的關(guān)系表達式,內(nèi)外輪速度v1、v2如下式所示:
式(4)、(5)中θ 為舵機的控制轉(zhuǎn)角,V 為小車行駛速度,L 為前輪與后輪之間中心距離,T 為小車后輪之間的距離,R1 為內(nèi)側(cè)輪子的旋轉(zhuǎn)半徑,R2 為外側(cè)輪子的旋轉(zhuǎn)半徑。根據(jù)建立的數(shù)學模型我們可以得出轉(zhuǎn)向角θ 與內(nèi)外輪速度v1、v2的內(nèi)在聯(lián)系,通過C 語言對小車運動關(guān)系進行描述得出前輪行駛速度、轉(zhuǎn)向角度和后輪行駛速度的信息。最終該信息經(jīng)主控單元解析后由增量式PID 對帶編碼器的電機和舵機進行PWM 控制其行駛速度和轉(zhuǎn)向角,實現(xiàn)小車平穩(wěn)轉(zhuǎn)彎[14]??刂屏鞒倘鐖D5所示。
系統(tǒng)與Wi-Fi 模塊ESP8266 進行數(shù)據(jù)交互時,首先需要AT 指令集對Wi-Fi 模塊進行初始化使用STA(接入點)模式接入網(wǎng)絡。其次ESP8266 與OneNET 云服務器建立TCP 連接,對OneNET 云平臺下發(fā)的命令進行接收。最后由ESP8266 把接收的命令下發(fā)至系統(tǒng)并將需要展示的數(shù)據(jù)使用HTTP 報文形式上傳到OneNET 云端[15]。具體數(shù)據(jù)上傳和命令下發(fā)流程如圖6所示。
為了使用戶可以在PC 網(wǎng)頁和手機APP 上對小車進行遠程控制,我們使用OneNET 云平臺下的應用開發(fā)工具,設計一個帶監(jiān)視控制功能的界面。該界面可以顯示當前小車位置與小車運動信息,如小車運動速度、運動時間、運動路程,如圖7所示[16]。在控制界面中,通過旋鈕控制小車的運動位置,圖表和表盤顯示實時小車運動信息,并將該信息儲存于云平臺中,通過圖形變化可以顯示一段時間內(nèi)小車的運動狀態(tài)。經(jīng)過多次實驗發(fā)現(xiàn),旋鈕改變狀態(tài)到設備有3s 延時,所以在計算小車運動時間時會產(chǎn)生相應誤差。
當下基于物聯(lián)網(wǎng)的開發(fā)越來越來廣泛了,智能設備與網(wǎng)絡的綜合運用是目前的開發(fā)熱點之一。本文設計基于OneNET 的智能循跡避障小車,以STMF103RC 為核心控制單元,物聯(lián)網(wǎng)網(wǎng)關(guān)ESP8266WIFI 模塊實現(xiàn)無線通信與數(shù)據(jù)交互,OneNET 云平臺作為上位機實現(xiàn)對小車的遠程控制。智能小車通過自動導航算法規(guī)劃小車行駛路徑,5 路紅外循跡模塊和超聲波模塊實現(xiàn)循跡避障功能,電機編碼器檢測當前小車行駛速度、行駛距離等信息,增量式PID算法和差速小車控制原理保證小車平穩(wěn)行駛。小車采用模塊化設計和MVC 編程思想、系統(tǒng)性能穩(wěn)定、運行速度快。經(jīng)過實驗和測試表明,本次設計的智能循跡避障小車達到了預先設計的目標,實現(xiàn)一個具備自動循跡功能、自動定位功能、超聲波避障功能、物聯(lián)網(wǎng)遠程控制功能、物聯(lián)網(wǎng)遠程監(jiān)控功能的智能小車。