基于超聲波傳感器的AGV避障模塊設(shè)計(jì)與實(shí)現(xiàn)
AGV全稱Automatecl Guided Vehicles,是一種裝有自動導(dǎo)引裝置,能夠沿規(guī)定的路徑行駛,具有編程和停車選擇裝置、安全保護(hù)裝置以及各種物料移載功能的自動導(dǎo)航車。障礙物檢測是自動導(dǎo)航車研究的一個基本問題,是實(shí)現(xiàn)安全、正常工作的前提。超聲波傳感器以其價(jià)格低廉、測距精度高、測量穩(wěn)定、體積小等優(yōu)點(diǎn),被廣泛用于AGV的避障檢測。本文以超聲波傳感器為基礎(chǔ),結(jié)合CAN總線技術(shù),設(shè)計(jì)一種AGV避障模塊,實(shí)現(xiàn)準(zhǔn)確、有效、穩(wěn)定的障礙物檢測,確保AGV的安全運(yùn)行。
1 超聲波傳感器波束角測量
該避障模塊使用的超聲波傳感器內(nèi)部以渡越時間法進(jìn)行測距。并自帶溫度傳感器對測量結(jié)果進(jìn)行校正,能夠?qū)? cm至4.5 m距離范圍內(nèi)的障礙物實(shí)現(xiàn)準(zhǔn)確的距離測量。開始測量時,控制器通過UART向超聲波傳感器的TX引腳輸入觸發(fā)信號,傳感器發(fā)送探頭啟動并發(fā)射超聲波脈沖,然后接收探頭進(jìn)入回波檢測狀態(tài)。在接收探頭檢測到回波信號后,結(jié)合溫度補(bǔ)償計(jì)算測距結(jié)果,并通過傳感器的RX引腳輸出距離測量數(shù)據(jù)。
1.1 超聲波傳感器測距數(shù)據(jù)采集
由于超聲波傳感器的探測波束角較小,在其實(shí)際應(yīng)用中,一般使用多個傳感器組成傳感器陣列,以擴(kuò)大探測范圍。超聲波傳感器陣列的構(gòu)建,須解決傳感器在AGV上的布局問題,具體來說就是傳感器數(shù)量和安裝間距的選擇問題。傳感器數(shù)量和安裝間距的選擇須根據(jù)最小盲區(qū)要求確定,而超聲波傳感器的探測波束角是計(jì)算盲區(qū)的重要參數(shù),因此需要設(shè)計(jì)實(shí)驗(yàn)測量傳感器的探測波束角。
如圖1的(a)所示,將超聲波傳感器固定于某點(diǎn),在其前方選擇與傳感器探頭距離為d的某點(diǎn)放置障礙物,進(jìn)行測距實(shí)驗(yàn)并記錄測距值。為了使實(shí)驗(yàn)結(jié)果能夠充分反映實(shí)際情況,實(shí)驗(yàn)中選取不同距離d,且對于每個距離,以超聲波傳感器中軸線為原點(diǎn),在左右兩側(cè)都選擇離中軸線距離為L的多個點(diǎn)來放置障礙物。實(shí)驗(yàn)AGV對避障模塊所要求的檢測距離為0~2.5 m, 實(shí)驗(yàn)中選取的d序列為[100,200,300,400,600,800,1 200,1 600,2 400] mm;常用的超聲波傳感器波束角一般小于60°,所以對于每個距離d,在離中軸線[-0.6xd,0]和[0,0.6xd]范圍內(nèi)以相同間隔各選取10個點(diǎn)作為L的值。
1.2 超聲波傳感器測距數(shù)據(jù)處理
在圖1(a)的實(shí)驗(yàn)中,利用勾股定理,可以得到障礙物實(shí)驗(yàn)中擺放位置與超聲波傳感器的實(shí)際距離:
對實(shí)驗(yàn)中的每一個測距值s’,結(jié)合式(1)和式(2)可計(jì)算出相應(yīng)的相對誤差。將實(shí)驗(yàn)數(shù)據(jù)導(dǎo)入至Matlab中,以L為橫坐標(biāo)、d為縱坐標(biāo)、σ為豎坐標(biāo),對其插值并作圖,如圖1(b)所示。
從實(shí)驗(yàn)結(jié)果可以看出,將障礙物擺放于超聲波傳感器可檢測到的區(qū)域時,檢測結(jié)果的相對誤差都能夠滿足σ<6%,因此在圖1(b)中選取相對誤差σ<6%的區(qū)域,可得到超聲波傳感器的波束角約為θ=40°。
2 AGV避障傳感器布局設(shè)計(jì)
2.1 傳感器數(shù)量和布局方式選擇
AGV避障模塊檢測的盲區(qū)大小與超聲波傳感器的安裝數(shù)量、安裝間距有關(guān),傳感器數(shù)量越多、安裝間距越小,檢測盲區(qū)就越小,反之則大。超聲波傳感器利用障礙物對聲波的反射作用進(jìn)行距離檢測,這一特性也決定了交叉串?dāng)_現(xiàn)象的存在,即一個傳感器發(fā)射的聲波經(jīng)障礙物反射后,能夠被相同檢測方向的傳感器接收到,從而產(chǎn)生錯誤的測距結(jié)果。因此在使用多個超聲波傳感器進(jìn)行障礙物檢測的場合,常采用傳感器交替工作方式,即某一時刻有且只有一個超聲波傳感器在檢測障礙物。若傳感器安裝數(shù)量過多,AGV避障檢測周期就會增大,影響其檢測實(shí)時性,從而對AGV的安全工作產(chǎn)生不利因素。從減小盲區(qū)和提高避障檢測實(shí)時性兩方面綜合考慮,從實(shí)驗(yàn)AGV的500 mm車寬出發(fā),初步確定在所應(yīng)用的實(shí)驗(yàn)AGV的車頭安裝4個超聲波傳感器。由于實(shí)驗(yàn)AGV不需要倒車和側(cè)向移動,所以其車尾和側(cè)面不需要安裝超聲波傳感器。
為了使每兩相鄰超聲波傳感器之間的檢測盲區(qū)大小保持一致,4個傳感器采用等距布局的方式,如圖2(a)所示。兩相鄰傳感器的距離為:
2.2 避障預(yù)警距離和檢測盲區(qū)計(jì)算
如圖2(b)所示,距離AGV兩側(cè)250 mm范圍內(nèi)為側(cè)面安全距離。中間的2、3號超聲波傳感器作為主探測器,兩側(cè)的1、4號為輔助探測器。其中輔助探測器用于減小主探測器的測量肓區(qū)。主探測器和輔助探測器的預(yù)警距離分別為:
在AGV的避障檢測中,當(dāng)障礙物進(jìn)入2、3號超聲波傳感器的d3范圍或1、4號超聲波傳感器的d2范圍內(nèi)時,AGV停車報(bào)警。
在圖2(b)中,AGV車頭前面的陰影部分為避障檢測模塊的檢測盲區(qū)區(qū)域,由多個三角形組成,該區(qū)域垂直距離(即三角形的高)為:
可見,在此布局方案中,AGV避障模塊的檢測盲區(qū)較小,配合安裝于車頭的防撞桿,能夠滿足AGV安全運(yùn)行的要求。
3 AGV避障模塊硬件設(shè)計(jì)
3.1 避障模塊硬件結(jié)構(gòu)
AGV避障模塊的硬件結(jié)構(gòu)如圖3所示,模塊以AVR單片機(jī)為控制核心。在避障檢測時,由于每次只有一個超聲波傳感器處于工作狀態(tài),所以4個超聲波傳感器可通過多路模擬選擇開關(guān)共享AVR單片機(jī)的UART接口。當(dāng)避障模塊預(yù)警區(qū)域存在障礙物,AVR控制語音芯片播放語音提示,并通過CAN總線將預(yù)警狀態(tài)和障礙物距離發(fā)送到AGV的總控制器。
3.2 語音預(yù)警功能電路
AGV避障模塊語音預(yù)警功能電路如圖4。當(dāng)障礙物進(jìn)入預(yù)警區(qū)域,AVR單片機(jī)通過三線串口控制WT588D-U語音芯片讀取內(nèi)部的音頻文件,并輸出相應(yīng)音頻信號,經(jīng)LM386功率放大后輸出到小型喇叭。通過調(diào)節(jié)R7變阻器調(diào)節(jié)端可改變語音預(yù)警的音量大小。
3.3 超聲波傳感器控制電路
如圖5所示,AVR單片機(jī)通過CD4052多路模擬選擇開關(guān)對四個超聲波傳感器進(jìn)行控制。ChaSelA和ChaSelB信號的四個不同狀態(tài)組合分別代表模擬開關(guān)的四個通道。CSB_TrigN和CSB_EchoN分別是超聲波傳感器觸發(fā)信號輸入端和測距數(shù)據(jù)輸出端。工作時,利用ChaSelA和ChaSelB信號選擇所要控制的超聲波傳感器,模塊控制器通過TXD引腳向所選定的傳感器發(fā)送觸發(fā)信號,傳感器即向前方發(fā)送聲波,并在接收到回波信號后,向控制器發(fā)送測距數(shù)據(jù)。
3.4 CAN總線通訊電路
AGV避障模塊引入了CAN總線技術(shù),能夠?qū)㈩A(yù)警狀態(tài)和測距數(shù)據(jù)上傳到總控制器,實(shí)現(xiàn)分布式控制。CAN總線通信電路主要由CAN通信控制器MCP2515、CAN總線收發(fā)器PCA82C251及相應(yīng)的復(fù)位、時鐘電路組成,如圖6所示。避障模塊控制器通過SPI接口將預(yù)警狀態(tài)和測距數(shù)據(jù)發(fā)送到CAN總線控制器MCP2515,由MCP2515轉(zhuǎn)換成異步信號輸送到CAN總線收發(fā)器PCA82C251,并最終發(fā)送到CAN總線上。
4 AGV避障模塊軟件設(shè)計(jì)
避障模塊所應(yīng)用的AGV平臺基于CAN總線構(gòu)建其車載分布式控制系統(tǒng),控制系統(tǒng)的CAN應(yīng)用層協(xié)議采用問答模式,即CAN通訊網(wǎng)絡(luò)的某個節(jié)點(diǎn)主動發(fā)起的數(shù)據(jù)幀傳輸(詢問幀),必須得到數(shù)據(jù)幀接收節(jié)點(diǎn)的應(yīng)答(應(yīng)答幀),否則將進(jìn)行重發(fā)。問答模式提高了控制系統(tǒng)運(yùn)行的可靠性。
AGV運(yùn)行時,當(dāng)障礙物進(jìn)入預(yù)警范圍,避障模塊播放語音提示,并通過CAN總線向控制系統(tǒng)總控制器發(fā)送預(yù)警消息??刂葡到y(tǒng)總控制器接收到預(yù)警消息后,向避障模塊發(fā)送應(yīng)答幀,并控制電機(jī)減速或停車。此外,控制系統(tǒng)總控制器能夠向避障模塊發(fā)送詢問幀,控制其關(guān)閉或開啟避障檢測和語音提示功能,因此AGV在運(yùn)行時,避障模塊通過CAN總線發(fā)送的消息有兩類:主動發(fā)起的詢問幀和對其他節(jié)點(diǎn)發(fā)來的詢問幀的應(yīng)答幀;通過CAN總線接收的消息也為兩類:其他節(jié)點(diǎn)發(fā)來的應(yīng)答幀和詢問幀。
該避障模塊的軟件基于鏈表創(chuàng)建了兩個CAN消息隊(duì)列:CAN發(fā)送隊(duì)列和CAN待應(yīng)答隊(duì)列。發(fā)送詢問幀時,創(chuàng)建發(fā)送結(jié)點(diǎn),掛接到CAN發(fā)送隊(duì)列中,并同時創(chuàng)建對應(yīng)的待應(yīng)答結(jié)點(diǎn),兩者通過指針成員相互綁定。發(fā)送應(yīng)答幀時,創(chuàng)建發(fā)送結(jié)點(diǎn)并掛接到CAN發(fā)送隊(duì)列,此時不需要創(chuàng)建待應(yīng)答結(jié)點(diǎn)。如圖7所示,主函數(shù)輪詢CAN發(fā)送隊(duì)列是否為空,若不為空,取出發(fā)送結(jié)點(diǎn)并執(zhí)行CAN數(shù)據(jù)幀的發(fā)送。如果發(fā)送結(jié)點(diǎn)為詢問幀,執(zhí)行發(fā)送后,將綁定的待應(yīng)答結(jié)點(diǎn)掛接到CAN待應(yīng)答隊(duì)列,等待數(shù)據(jù)幀接收節(jié)點(diǎn)的應(yīng)答。軟件使用定時器作為系統(tǒng)時鐘,在定時器中斷函數(shù)中對CAN待應(yīng)答隊(duì)列中每個待應(yīng)答結(jié)點(diǎn)的等待時間進(jìn)行計(jì)時。若某個待應(yīng)答結(jié)點(diǎn)等待超時,移出待應(yīng)答隊(duì)列并將綁定的發(fā)送結(jié)點(diǎn)重新掛接到CAN發(fā)送隊(duì)列,執(zhí)行重發(fā)。在多次重發(fā)都沒有得到應(yīng)答時,刪除該待應(yīng)答結(jié)點(diǎn)和綁定的發(fā)送結(jié)點(diǎn)。若某個詢問幀等待應(yīng)答超時前接收到應(yīng)答幀,表示該次CAN詢問幀傳輸成功,并且在CAN數(shù)據(jù)幀接收處理函數(shù)中刪除相應(yīng)的待應(yīng)答結(jié)點(diǎn)和綁定的發(fā)送結(jié)點(diǎn)。
如圖8所示,CAN數(shù)據(jù)幀接收處理函數(shù)也對避障模塊接收到的其他CAN節(jié)點(diǎn)發(fā)送的詢問幀進(jìn)行解釋,執(zhí)行相應(yīng)操作,并創(chuàng)建應(yīng)答幀掛接到CAN發(fā)送隊(duì)列。軟件使用SCI中斷函數(shù)輪詢4個超聲波傳感器的檢測數(shù)據(jù),并在完成一次輪詢后對檢測數(shù)據(jù)進(jìn)行融合,根據(jù)數(shù)據(jù)融合處理的結(jié)果判斷障礙物是否進(jìn)入預(yù)警距離。當(dāng)障礙物進(jìn)入預(yù)警距離,對預(yù)警消息創(chuàng)建發(fā)送結(jié)點(diǎn)和待應(yīng)答結(jié)點(diǎn),并將發(fā)送結(jié)點(diǎn)掛接到CAN發(fā)送隊(duì)列,同時播放語音提示。
5 實(shí)驗(yàn)應(yīng)用
將所設(shè)計(jì)的避障模塊安裝到實(shí)驗(yàn)AGV上,使AGV上電運(yùn)行,并在運(yùn)行中進(jìn)行障礙物檢測測試。在測試時,使用車載觸摸屏的狀態(tài)顯示界面能夠讀取、顯示超聲波傳感器檢測數(shù)據(jù)和避障預(yù)警信息。當(dāng)在AGV前進(jìn)路徑上放置障礙物時,避障模塊能夠準(zhǔn)確檢測到障礙物距離,當(dāng)障礙物進(jìn)入預(yù)警范圍時,及時向總控制器上報(bào)預(yù)警信息。通過實(shí)際應(yīng)用發(fā)現(xiàn),該避障模塊測距結(jié)果準(zhǔn)確。工作穩(wěn)定可靠。
6 結(jié)論
該避障模塊采用超聲波傳感器為探測器,通過實(shí)驗(yàn)測量,結(jié)合Matlab處理得到傳感器檢測波束角,最終確定超聲波傳感器在AGV上布局方式。以AVR單片機(jī)為控制核心,融入語音提示功能和CAN總線技術(shù),對避障模塊的硬件和軟件進(jìn)行開發(fā),能夠?qū)㈩A(yù)警狀態(tài)和檢測數(shù)據(jù)上傳到AGV總控制器,實(shí)現(xiàn)分布式控制。實(shí)驗(yàn)應(yīng)用表明,該模塊具有運(yùn)行穩(wěn)定、工作可靠等特點(diǎn),達(dá)到了設(shè)計(jì)要求。該模塊已應(yīng)用到實(shí)驗(yàn)AGV上,檢障效果良好,運(yùn)行穩(wěn)定,可靠性高,能夠確保AGV的安全工作,達(dá)到了設(shè)計(jì)要求。