基于DSP的多超聲測距數據采集處理系統
移動(dòng)機器人要實(shí)現在未知和不確定環(huán)境下運行,必須具備自動(dòng)導航和避障功能。在移動(dòng)機器人的導航系統中,傳感器起著(zhù)舉足輕重的作用。視覺(jué)、激光、紅外、超聲傳感器等都在實(shí)際系統中得到了廣泛的應用。其中,超聲波傳感器以其信息處理簡(jiǎn)單、速度快和價(jià)格低,被廣泛用作移動(dòng)機器人的測距傳感器,以實(shí)現避障、定位、環(huán)境建模和導航等功能。
本文引用地址:http://dyxdggzs.com/article/82118.htm傳統的輪式移動(dòng)機器人超聲數據采集系統大多采用單片機作為微處理器,以此來(lái)測量移動(dòng)機器人到障礙物的距離,并將距離通過(guò)串口傳輸到上位機。采用這種設計,系統制作簡(jiǎn)單、成本低。但是,對于多超聲傳感器測距系統,如果仍采用單片機來(lái)完成測距任務(wù),由于系統中超聲傳感器數量較多,為保證系統的實(shí)時(shí)性,就需要多個(gè)單片機才能完成數據采集,這使得采集系統不可避免地存在設計復雜和一些算法難以實(shí)現等缺陷。隨著(zhù)微電子工藝的發(fā)展,數字信號處理器(DSP)的應用領(lǐng)域已從通信行業(yè)拓展到工業(yè)控制領(lǐng)域。TI公司推出的TMS320LF2407A是專(zhuān)門(mén)針對控制領(lǐng)域應用的DSP,它具有高速信號處理和數字控制功能所必需的體系結構,其指令執行速度高達40MIPS,且大部分的指令都可以在一個(gè)25ns的單周期內執行完畢。另外,它還具有非常強大的片內I/0端口和其它外圍設備,可以簡(jiǎn)化外圍電路設計,降低系統成本。正是基于這種思想,中國科學(xué)院自動(dòng)化研究所在國家“863”計劃的支持下,利用多DSP和嵌入式PCI04自行設計和研制了輪式移動(dòng)機器人CASIA-I。本文著(zhù)重介紹其超聲數據采集系統,同時(shí)對通過(guò)CAN總線(xiàn)完成的超聲數據與上位機通訊的原理和設計過(guò)程進(jìn)行分析說(shuō)明,并給出實(shí)驗結果。
1 超聲測距原理
超聲測距的原理較簡(jiǎn)單,一般采用渡越時(shí)間法,即:
D=ct/2 (1)
其中D為移動(dòng)機器人與被測障礙物之間的距離,c為聲波在介質(zhì)中的傳輸速率。聲波在空氣中傳輸速率為:
其中,T為絕對溫度,c。=331.4m/s。在不要求測距精度很高的情況下,一般可以認為c為常數。渡越時(shí)間法主要是測量超聲發(fā)射到超聲返回的時(shí)間間隔t,即“渡越時(shí)間”,然后根據式(1)計算距離。
2 系統硬件設計
在距地面高度為45cm、相隔為22.5°的同一環(huán)上均勻分布著(zhù)16個(gè)Polaroid生產(chǎn)的超聲傳感器,其編號為1#~16#(逆時(shí)針安排),超聲傳感器波束角為30°,超聲傳感器的最小作用距離為0.45m。超聲數據采集板主要有兩大模塊:一是16路超聲傳感器的超聲波發(fā)射和回波的接收模塊,二是與上位機(機器人中央控制器)的CAN總線(xiàn)通訊模塊。其硬件結構見(jiàn)圖1。
TMS320LF2407A向I/0端口發(fā)出控制信號,啟動(dòng)內部定時(shí)器進(jìn)行計時(shí)。此控制信號經(jīng)功率放大后作為超聲傳感驅動(dòng)電路的啟動(dòng)信號(1NIT),超聲傳感器產(chǎn)生的、遇到障礙物時(shí)返回的高頻振蕩信號經(jīng)放大(為彌補傳播過(guò)程中信號的衰減)使超聲傳感驅動(dòng)電路的ECHO端產(chǎn)生高電平脈沖。ECHO電平變化經(jīng)過(guò)門(mén)電路后引起TMS320LF2407A外部中斷,在中斷程序內獲取定時(shí)器的計數值,根據式(1)計算距離;否則,認為傳感器前方探測范圍內無(wú)障礙物。
因為超聲傳感器之間的安裝位置相差22.5°,而超聲傳感器的波束角為30°,如果超聲波同時(shí)發(fā)射,必然會(huì )有干擾。如果采用輪循方式,即一個(gè)接一個(gè)地發(fā)射超聲波,雖然可以消除串擾回波的影響,但是16個(gè)超聲傳感器輪循一次周期較長(cháng),降低了采集頻率。為了在不降低采集頻率的同時(shí)消除超聲的相互干擾,本系統將16個(gè)超聲傳感器分成A(1#、3#、5#、7#、9#、11#、13#、15#)和B(2#、4#、6#、8#、10#、12#、14#、16#)兩組,因為同一組內的兩個(gè)超聲傳感器安裝位置相差45°,通過(guò)計算可以知道,這種情況下超聲傳感器同時(shí)工作不會(huì )產(chǎn)生干擾,因而每一組里的超聲傳感器同時(shí)工作,組與組之間則采用輪循方式工作。這樣既可以達到很高的采集頻率,同時(shí)也滿(mǎn)足了系統的實(shí)時(shí)性要求。每組8個(gè)超聲傳感器的ECHO端分別連接到一門(mén)電路,然后通過(guò)門(mén)電路連接DSP的XINTl和XINT2端。XINTl/2引腳電平發(fā)生跳變時(shí)會(huì )產(chǎn)生外部中斷,通過(guò)I/0口可以知道是哪個(gè)或哪幾個(gè)傳感器引起中斷。
TMS320LF2407A內部集成了CAN控制器,通過(guò)它可以方便地構成CAN控制局域網(wǎng)絡(luò )。TMS320LF2407A的CANTX和CANRX接口與CAN收發(fā)器SN65HVD230相連,通過(guò)SN65HVD230連接CAN總線(xiàn)。SN65HVD230是TI公司生產(chǎn)的專(zhuān)門(mén)針對240X系列DSP內CAN控制器與物理總線(xiàn)的接口。它的供電電壓和TMS320LF2407A一樣,僅為3.3V。由于CAN總線(xiàn)的數據通信具有突出的可靠性、實(shí)時(shí)性和靈活性,最高傳輸速率可達到1Mbps。超聲采集板的數據能夠快速、可靠地傳給中央控制器。
3軟件設計
系統軟件主要由兩部分構成,即超聲數據采集與處理模塊、CAN總線(xiàn)通訊模塊。
3.1多路超聲傳感器數據采集模塊
超聲傳感器被分為兩組,兩組循環(huán)交替工作。軟件設計上采用兩個(gè)定時(shí)器依次工作,分別對兩組傳感器進(jìn)行計時(shí)。選擇定時(shí)器的周期比超聲傳感器探測最大距離所需的渡越時(shí)間稍長(cháng)。在每個(gè)定時(shí)器周期開(kāi)始時(shí),觸發(fā)一組超聲傳感器同時(shí)開(kāi)始工作。在定時(shí)器周期內,每個(gè)回波返回,都會(huì )觸發(fā)一次外部中斷(XINTl或XINT2中斷),在外部中斷處理程序內,將超聲波返回時(shí)間進(jìn)行紀錄,并將相應的超聲傳感器關(guān)閉。外部中斷處理程序非常簡(jiǎn)短,本系統只用了不到20條指令,并且TMS320LF2407A指令執行速度很快,因而即使因進(jìn)入外部中斷處理程序而延誤了對后來(lái)回波的處理,但這種延誤的時(shí)間根據計算不大于0.5μs,由此引入的距離誤差根據(1)式計算小于83.5×10-6m??梢?jiàn)誤差非常小,可以忽略不計。當定時(shí)器中斷時(shí),對于距離大于最大超聲探測范圍的,沒(méi)有相應的時(shí)間記錄,給它們加上超出測距范圍的標志。其它的時(shí)間數據都有記錄,根據(1)式計算距離,然后啟動(dòng)下一個(gè)定時(shí)器工作,并觸發(fā)下一組超聲傳感器。本文的超聲傳感器的最大探測距離為3.5m,因而超聲波探測的最長(cháng)時(shí)間為20.58ms。所以每個(gè)定時(shí)器的周期選為20.6ms。圖2只畫(huà)出了一組超聲傳感器的處理框圖,另一組與此相同,不再贅述。
由于受環(huán)境溫度、濕度的影響,超聲傳感器的測量值與實(shí)際值總有一些誤差,表1列出了本超聲測距系統測量值與對應的實(shí)際值。采用最小二乘法[8]對表1的數據進(jìn)行擬合,結果為:
y=O.9986x+0.2111
式中,x為測量值,y為實(shí)際值。
3.2基于CAN總線(xiàn)的數據通信
超聲數據采集板發(fā)送測距數據以中斷的方式完成。TMS320LF2407A有專(zhuān)門(mén)的mailbox中斷,用于響應發(fā)送/接收中斷。每個(gè)超聲傳感器的測距值在DSP內用兩個(gè)字節存儲,而CAN總線(xiàn)傳輸標準要求每個(gè)數據幀最多只能傳輸8個(gè)字節的數據。本系統共有16個(gè)超聲傳感器,共有32個(gè)字節存儲所有測距值。CAN總線(xiàn)傳輸所有測距值需要4個(gè)數據幀才能傳送完。本系統的通訊過(guò)程為:中央控制器發(fā)送遠程請求,超聲數據采集板進(jìn)入接收中斷,在中斷服務(wù)程序內,采用查詢(xún)方式發(fā)送4幀數據,每幀數據包含4個(gè)超聲傳感器的測距值。本系統采用的波特率是500kbps。TMS320LF2407A用mailbox0接收中央控制器的遠程請求幀,用mailbox2發(fā)送測距數據值。圖3是超聲數據采集板的發(fā)送數據中斷服務(wù)程序框圖。其中,TA2是對應mailbox2發(fā)送數據幀完成的標志位,RMP0是對應mailbox0接收數據幀的標志位。關(guān)于TMS320LF2407A的CAN模塊的具體說(shuō)明,參見(jiàn)文獻[4],在此不作具體介紹。
中央控制器接收子程序由VC++編寫(xiě)。當機器人需要新的測距值時(shí),即調用此子程序。程序框圖見(jiàn)圖4。接收程序收到一幀數據后,判斷數據是否有錯,若有錯,則向采集板發(fā)送命令,要求重發(fā)此幀數據;若正確,發(fā)送確認命令,要求采集板發(fā)送下一組數據,直到所有的超聲測距數據都接收完。
本文介紹的超聲數據采集系統采用TMS320LF2407A為核心處理器,可以達到很高的采集速率和精度。通過(guò)CAN總線(xiàn)通訊,可以將測距值以很高的波特率可靠地發(fā)送給機器人中央控制器。此系統已經(jīng)在自行設計的智能移動(dòng)機器人CASIA-I上得到了實(shí)際應用。實(shí)驗驗證了硬件系統的可靠性和算法的有效性。
評論