祝朝坤 韓彥凈 谷會(huì)斌
關(guān)鍵詞:DFS;電腦鼠;PID;紅外傳感器;人工智能;上位機(jī);藍(lán)牙
1研究背景及意義
近年來(lái),自動(dòng)化機(jī)器人在智慧工業(yè)、智慧工地、智能家居等多個(gè)領(lǐng)域均得到了廣泛的應(yīng)用,而針對(duì)機(jī)器人的自動(dòng)規(guī)劃路徑的研究,也變得更有必要。本設(shè)計(jì)以STM32F103RCT6單片機(jī)為主控制器,紅外傳感器為主要傳感器,結(jié)合深度優(yōu)先搜索算法(depth-first-search,DFS)算法,對(duì)電腦鼠機(jī)器人在其當(dāng)前所處環(huán)境(迷宮)中,探索最優(yōu)運(yùn)行路徑展開研究。
本設(shè)計(jì)的研究主要從以下幾個(gè)方面進(jìn)行。
(1)路徑規(guī)劃:一個(gè)好的算法可以使電腦鼠在迷宮中走最少的路線而找出迷宮的終點(diǎn),所以,研究迷宮算法的過(guò)程中,需要對(duì)電腦鼠的路徑進(jìn)行規(guī)劃,而在現(xiàn)實(shí)生活中,比如工業(yè)機(jī)器人在不同的工作站運(yùn)送物料,就需要對(duì)路徑進(jìn)行規(guī)劃,減少運(yùn)動(dòng)的軌跡,可以有效地延長(zhǎng)機(jī)器人的使用壽命。
(2)智能避障:電腦鼠采用的紅外傳感器,通過(guò)發(fā)射紅外由墻壁反射再有紅外接收管接收,再由主控制器進(jìn)行ADC采集,計(jì)算出墻壁的距離。
(3)運(yùn)動(dòng)控制:電腦鼠在迷宮中運(yùn)行時(shí),需要時(shí)刻保持電腦鼠位置處于賽道的中間位置,這就需要對(duì)電機(jī)的轉(zhuǎn)速進(jìn)行更加精確的控制。而在電腦鼠進(jìn)行轉(zhuǎn)彎的過(guò)程中對(duì)轉(zhuǎn)速的要求則更加嚴(yán)格。
(4)運(yùn)動(dòng)軌跡可視化:電腦鼠在運(yùn)行過(guò)程中,通過(guò)藍(lán)牙調(diào)試板與PC上位機(jī)進(jìn)行通信,電腦鼠實(shí)時(shí)上報(bào)當(dāng)前的狀態(tài),包括電池電壓、運(yùn)動(dòng)軌跡、當(dāng)前位置等信息。通過(guò)對(duì)運(yùn)行軌跡的分析,可以優(yōu)化出更好的算法,并且可以通過(guò)上位機(jī)對(duì)電腦鼠內(nèi)部參數(shù)進(jìn)行修改。
2系統(tǒng)電路設(shè)計(jì)
2.1紅外發(fā)射電路
SFH4550工作時(shí)的電流為100mA,所以串聯(lián)50Ω電阻進(jìn)行限流,通過(guò)NMOS進(jìn)行驅(qū)動(dòng),該型號(hào)的MOS最大電流可達(dá)到5A,柵源極閾值電壓為2.7V,因此可以通過(guò)微控制器直接進(jìn)行控制。該電路具有結(jié)構(gòu)簡(jiǎn)單、高效、利于控制等優(yōu)點(diǎn),紅外發(fā)射電路原理圖如圖1。
2.2紅外接收電路
TPS601A在工作時(shí),接收到對(duì)應(yīng)波長(zhǎng)的紅外光束,形成到導(dǎo)通回路形成電流,通過(guò)電阻進(jìn)行分壓,并通過(guò)微控制器進(jìn)行AD轉(zhuǎn)換將電壓的模擬量轉(zhuǎn)換為數(shù)字量,根據(jù)電壓的高低,來(lái)獲取當(dāng)前電腦鼠與墻壁的距離。紅外接收電路原理圖如圖2。
2.3電機(jī)驅(qū)動(dòng)電路
電機(jī)驅(qū)動(dòng)電路采用的是TB6612,該電機(jī)驅(qū)動(dòng)芯片外圍電路設(shè)計(jì)簡(jiǎn)單,僅需要兩個(gè)電容即可。內(nèi)部具有大電流的MOSFET-H橋結(jié)構(gòu),并且是雙通道驅(qū)動(dòng),一個(gè)芯片可以驅(qū)動(dòng)兩個(gè)電機(jī),支持正轉(zhuǎn)、反轉(zhuǎn)、制動(dòng)、停止4種控制模式,同時(shí)內(nèi)部具有低壓保護(hù)電路與過(guò)熱停機(jī)保護(hù)電路。電機(jī)驅(qū)動(dòng)電路原理圖如圖3。
2.5電池電壓采集電路
電腦鼠在運(yùn)行過(guò)程中,為防止電池電壓過(guò)低造成電池的過(guò)放電損壞電池,經(jīng)過(guò)查詢資料得知8.4V的鋰電池組當(dāng)電壓小于7.4V時(shí)就屬于虧電,所以采用了低電壓待機(jī)的方案,當(dāng)電壓小于7.4V時(shí)啟動(dòng)電腦鼠進(jìn)入待機(jī)狀態(tài)。分壓電阻將電池電壓調(diào)整到微控制器可以采集的范圍。原理圖如圖4:
3微控制器程序設(shè)計(jì)
3.1運(yùn)動(dòng)控制程序設(shè)計(jì)
(1)直線行駛:在電腦鼠運(yùn)行過(guò)程中,需要時(shí)刻保證電腦鼠在賽道中間的位置,因此需要對(duì)左右輪的轉(zhuǎn)速進(jìn)行實(shí)時(shí)的調(diào)整,同時(shí)需要保證左右輪行駛的距離相同。這就是速度、位置的雙重控制,本設(shè)計(jì)中采用的是位置式PID算法實(shí)現(xiàn),先通過(guò)讀取單位時(shí)間內(nèi)的編碼器計(jì)數(shù),計(jì)算出當(dāng)前電腦鼠行駛的速度,與設(shè)置的速度進(jìn)行對(duì)比計(jì)算出誤差,將誤差代入PID計(jì)算公式中,通過(guò)調(diào)節(jié)Kp(比例系數(shù))、Ki(積分系數(shù))、Kd(微分系數(shù))的參數(shù)使電機(jī)的響應(yīng)速度達(dá)到一個(gè)響應(yīng)快速且穩(wěn)定的狀態(tài)。在電機(jī)的控制中PID離散公式如下,其中e(k)為本次誤差,e(k-1)為上次的誤差,e(k-2)為上上次的誤差,Out為電機(jī)的PWM的占空比。
Out=Kp[e(k)]+KiΣe(k)+Kd[e(k)-2e(k-1)+e(k-2)](1)
在電腦鼠運(yùn)行過(guò)程中,電腦鼠不斷讀取紅外傳感器的數(shù)據(jù),通過(guò)比例算法實(shí)時(shí)調(diào)整左右電機(jī)的轉(zhuǎn)速,實(shí)現(xiàn)電腦鼠的位置始終保持在賽道的中間位置。
(2)直角轉(zhuǎn)彎:連續(xù)轉(zhuǎn)彎的控制比較復(fù)雜,需要對(duì)電腦鼠的左右輪行駛的距離和速度進(jìn)行精確的控制,連續(xù)轉(zhuǎn)彎時(shí)的運(yùn)行軌跡如下圖5,經(jīng)過(guò)簡(jiǎn)單計(jì)算可以得出內(nèi)外圈的長(zhǎng)度比為1:3.5,因此就需要內(nèi)圈與外圈的轉(zhuǎn)速比需要達(dá)到1:3.5才能在相同時(shí)的時(shí)間下經(jīng)過(guò)90度轉(zhuǎn)彎。
(3)原地掉頭:只需要控制電腦鼠左右輪向互斥方向轉(zhuǎn)動(dòng)180度即可。
3.2系統(tǒng)程序設(shè)計(jì)
本程序的系統(tǒng)流程圖如圖6,電腦鼠在上電的時(shí)候先對(duì)紅外傳感器,電機(jī)驅(qū)動(dòng)等外設(shè)模塊進(jìn)行初始化,判斷電池電壓是否正常,如果電池電壓過(guò)低進(jìn)入待機(jī)狀態(tài)不啟動(dòng)電腦鼠,如果電池電壓正常即進(jìn)入模式判斷,探索模式、固定路線、調(diào)試模式三種模式。
(1)探索模式:電腦鼠在探索模式下,不斷獲取紅外傳感器信息,在沒(méi)有發(fā)現(xiàn)路口的情況下保持直行的狀態(tài),當(dāng)發(fā)現(xiàn)路口時(shí)首先會(huì)獲取當(dāng)前電腦鼠在迷宮中的坐標(biāo)信息,在進(jìn)行與目標(biāo)點(diǎn)的絕對(duì)位置計(jì)算,當(dāng)前進(jìn)一格后到終點(diǎn)的絕對(duì)位置小于轉(zhuǎn)彎后前進(jìn)一格到終點(diǎn)的絕對(duì)位置,那么程序判斷直行到達(dá)終點(diǎn)的代價(jià)會(huì)小于轉(zhuǎn)彎到終點(diǎn)的代價(jià),執(zhí)行繼續(xù)前進(jìn)的指令。反之當(dāng)前進(jìn)一格后到終點(diǎn)的絕對(duì)位置大于轉(zhuǎn)彎后前進(jìn)一格到終點(diǎn)的絕對(duì)位置,那么程序判斷直行到達(dá)終點(diǎn)的代價(jià)會(huì)大于轉(zhuǎn)彎到終點(diǎn)的代價(jià),執(zhí)行轉(zhuǎn)彎指令。直到到達(dá)終點(diǎn),停止運(yùn)動(dòng),進(jìn)行DFS迷宮最短路徑解算,如圖7。
(2)固定路線模式:在電腦鼠的比賽中是允許電腦鼠進(jìn)行多次測(cè)試的,當(dāng)在探索下當(dāng)電腦鼠到達(dá)了終點(diǎn),并且經(jīng)過(guò)了DFS算法解算出最短路徑,此時(shí)的最短路徑信息會(huì)被保存在微控制器內(nèi)部的Flash,做到掉電不丟失,中途更換電池也不會(huì)影響電腦鼠中儲(chǔ)存的最短路徑信息,程序流程如圖8。
(3)調(diào)試模式:該模式主要用于電腦鼠的調(diào)試階段的程序參數(shù)的修改,在調(diào)試模式下電腦鼠是處在一個(gè)待機(jī)的狀態(tài)下的,不斷接收上位機(jī)發(fā)送的信息,解析出需要修改的信息,進(jìn)行指定數(shù)據(jù)的修改,在修改完成之后,返回一條修改好的數(shù)據(jù)返回給上位機(jī)軟件,告訴上位機(jī)軟件修改后的數(shù)據(jù),通過(guò)該模式可以大大提高電腦鼠的調(diào)試效率,免去了修改代碼、重新下載程序等的重復(fù)的步驟。調(diào)試模式程序流程圖如下圖9。
(4)DFS是一種用于遍歷或搜索樹或圖的算法,沿著樹的深度遍歷樹的節(jié)點(diǎn),盡可能深的搜索樹的分支。而在電腦鼠到達(dá)終點(diǎn)時(shí),電腦鼠在探索過(guò)程中的迷宮信息都將保留下來(lái),將電腦鼠走過(guò)的軌跡創(chuàng)建為一個(gè)新的迷宮,將迷宮的數(shù)據(jù)導(dǎo)入到DFS算法中,DFS的本質(zhì)就是窮舉法,DFS開始遍歷迷宮的各分支找出一個(gè)最短的分支。并將分支的位置信息保存在Flash中,用于電腦鼠返回的導(dǎo)航數(shù)據(jù)以及再次沖刺時(shí)的數(shù)據(jù)導(dǎo)航。DFS算法程序流程圖如下圖10。
3.3上位機(jī)程序設(shè)計(jì)
上位機(jī)的系統(tǒng)流程圖如圖11,上位機(jī)在與電腦鼠進(jìn)行連接時(shí)需要選擇電腦鼠與電腦藍(lán)牙的端口以及波特率信息,當(dāng)電腦鼠與電腦建立起連接后,電腦鼠會(huì)不斷上傳電壓、運(yùn)行模式等狀態(tài)信息。在連接成功后并且電腦鼠處于調(diào)試模式時(shí),上位機(jī)可以使用修改參數(shù)的功能,對(duì)電腦鼠的數(shù)據(jù)進(jìn)行修改。如果電腦鼠處于探索模式下,程序主窗口會(huì)實(shí)時(shí)顯示電腦鼠在迷宮的位置信息。
(1)主界面:主頁(yè)面的主要作用就是顯示運(yùn)行信息、通知信息、電腦鼠的實(shí)時(shí)位置,以及電腦鼠的串口連接設(shè)置、功能按鈕,如圖12。
(2)修改參數(shù):修改參數(shù)是為在調(diào)試電腦鼠的時(shí)候方便修改電腦鼠內(nèi)部的數(shù)據(jù),如圖13。
4結(jié)語(yǔ)
電腦鼠是移動(dòng)機(jī)器人領(lǐng)域的重要分支,傳統(tǒng)的電腦鼠運(yùn)行速度、穩(wěn)定性都比較差,并且大多數(shù)采用數(shù)字紅外傳感器技術(shù)來(lái)判斷電腦鼠周圍的環(huán)境,迷宮的解算算法也比較落后。本設(shè)計(jì)針對(duì)傳統(tǒng)電腦鼠的明顯的弊端,深入研究電腦鼠的紅外布局、運(yùn)動(dòng)控制、紅外測(cè)距、硬件設(shè)計(jì)等,并最終完成了電腦鼠的設(shè)計(jì)。主要研究成果如下:
(1)改進(jìn)了紅外傳感器的布局,并采用了高聚集的紅外發(fā)射管和紅外接收管,使電腦鼠采集的數(shù)據(jù)更加靈敏、準(zhǔn)確、快速;
(2)改進(jìn)了傳統(tǒng)電腦鼠的控制方案,采用編碼電機(jī)實(shí)現(xiàn)了電腦鼠的速度、位置雙閉環(huán)控制器,對(duì)行駛中的電腦鼠速度、位置進(jìn)行精準(zhǔn)的控制,設(shè)計(jì)出電腦鼠的連續(xù)轉(zhuǎn)彎?rùn)C(jī)制,該轉(zhuǎn)彎方式可以顯著提高電腦鼠的在轉(zhuǎn)彎時(shí)所用的時(shí)間;
(3)改進(jìn)了傳統(tǒng)電腦鼠的調(diào)參過(guò)程,傳統(tǒng)電腦鼠的調(diào)參需要修改代碼重新下載程序,非常麻煩。特別是當(dāng)?shù)竭_(dá)一個(gè)新的比賽環(huán)境,這樣的方式就顯得不是很高效,而采用了上位機(jī)的方式來(lái)調(diào)節(jié)參數(shù)就不會(huì)有這種麻煩,修改參數(shù)只有將需要修改的數(shù)值填上,即可實(shí)現(xiàn)一鍵對(duì)電腦鼠的數(shù)據(jù)進(jìn)行修改;
(4)改進(jìn)了電腦鼠的迷宮解算算法,實(shí)現(xiàn)了DFS算法與電腦鼠的結(jié)合,大大提高了電腦鼠解算迷宮的準(zhǔn)確性。