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