基于DSP的激光雷達(dá)數(shù)據(jù)智能接口卡設(shè)計(jì)
無(wú)人自動(dòng)駕駛車(chē)輛是室外移動(dòng)機(jī)器人的一種,車(chē)上控制系統(tǒng)對(duì)車(chē)輛進(jìn)行自主控制,實(shí)現(xiàn)無(wú)人駕駛。我們的車(chē)輛研究使用SICK公司的LMS291激光雷達(dá)作為主要的障礙物檢測(cè)傳感器,并同時(shí)用于車(chē)輛的激光導(dǎo)航。該激光雷達(dá)支持RS-232和RS-422串行通信,由于RS-232通信的最大速率為20k bps,無(wú)法滿足車(chē)輛實(shí)時(shí)檢測(cè)障礙物的需要。因此,在智能車(chē)輛上,采用RS-422傳輸激光雷達(dá)數(shù)據(jù),傳輸速率為500K bps。
本文引用地址:http://2s4d.com/article/187398.htm為滿足激光雷達(dá)和PC機(jī)的高速數(shù)據(jù)傳輸,現(xiàn)有的解決方案的實(shí)時(shí)性得不到保障,而且都不具備任何數(shù)據(jù)處理功能,而障礙物檢測(cè)功能應(yīng)集成到底層硬件平臺(tái)上實(shí)現(xiàn),萬(wàn)一PC發(fā)生死機(jī),車(chē)輛仍能自動(dòng)避撞,保證了車(chē)輛系統(tǒng)的安全性和可靠性。因此,需要開(kāi)發(fā)一套新的接口卡來(lái)實(shí)現(xiàn)這些功能。
1 接口卡研制目標(biāo)和總體方案
針對(duì)激光雷達(dá)在智能車(chē)輛上的應(yīng)用要求,我們對(duì)接口卡的功能提出了如下目標(biāo):
(1)激光雷達(dá)數(shù)據(jù)采集功能。通過(guò)RS-422與LMS291激光雷達(dá)進(jìn)行通信,通信速率為500k bps;可實(shí)時(shí)獲取激光雷達(dá)數(shù)據(jù);可配置激光雷達(dá)參數(shù)。
(2)數(shù)據(jù)傳輸功能。通過(guò)CAN總線將采集的激光雷達(dá)數(shù)據(jù)送往上位機(jī)PC。
(3)障礙物檢測(cè)功能。通過(guò)系統(tǒng)對(duì)激光雷達(dá)數(shù)據(jù)的處理,獲取障礙物檢測(cè)參數(shù),通過(guò)I/O,直接發(fā)送緊急停車(chē)命令給底層控制器,緊急剎車(chē)。
根據(jù)系統(tǒng)要求,板上的CPU決定選用TI公司的TMS320LF2407A DSP芯片,它速度快、功耗低、易于開(kāi)發(fā)、資源豐富、有片上CAN控制器等。LF2407A采用哈佛總線結(jié)構(gòu),具有16位高性能的CPU,時(shí)鐘頻率為40MHZ并支持軟件改變鎖相環(huán)的頻率,在智能控制和通信中得到廣泛應(yīng)用。500)this.style.width=500; border=0>
2 系統(tǒng)硬件設(shè)計(jì)
2.1 RS-422通信接口設(shè)計(jì)
RS-422A通信接口標(biāo)準(zhǔn)是EIA公布的“非平衡電壓數(shù)字接口電路的電氣特性“標(biāo)準(zhǔn),它采用非平衡發(fā)送器和差分接收器,電平變化范圍為12V,通信速率最大10Mbit/s(120m通信距離內(nèi)),通信速率最小90Kbit/s(1200m通信距離)。
由于本系統(tǒng)要適應(yīng)高速大流量數(shù)據(jù)通信,且要實(shí)現(xiàn)數(shù)據(jù)處理功能。為了保證數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性和可靠性,我們選用TI 公司的UART產(chǎn)品TL16C752B。它是一個(gè)超前的解決方案,提供了兩路相互獨(dú)立的異步收發(fā)器,具有64字節(jié)的發(fā)送和接收FIFO 存儲(chǔ)器,這樣服務(wù)間隔時(shí)間就增加了,使外部CPU 有多余時(shí)間處理其他的應(yīng)用,減少了整個(gè)UART 的中斷服務(wù)時(shí)間。
本系統(tǒng)將TL16C752B配置在LF2407A的I/O空間,TL16C752B還提供了2個(gè)中斷請(qǐng)求信號(hào)分別用于通道A和B申請(qǐng)LF2407A中斷,復(fù)用LF2407A的外部中斷XINT1.
2.2 CAN通信接口設(shè)計(jì)
CAN總線是德國(guó)BOSCH公司從80年代初為解決現(xiàn)代汽車(chē)中眾多的控制與測(cè)試儀器之間的數(shù)據(jù)交換而開(kāi)發(fā)的一種串行數(shù)據(jù)通信協(xié)議,它是一種多主總線,通信介質(zhì)可以是雙絞線、同軸電纜或光導(dǎo)纖維。通信速率可達(dá)1MBPS。CAN總線通信接口中集成了CAN協(xié)議的物理層和數(shù)據(jù)鏈路層功能,可完成對(duì)通信數(shù)據(jù)的成幀處理,包括位填充、數(shù)據(jù)塊編碼、循環(huán)冗余檢驗(yàn)、優(yōu)先級(jí)判別等項(xiàng)工作。
本系統(tǒng)使用的DSP芯片已集成了片內(nèi)CAN控制器,收發(fā)器采用德州儀器公司生產(chǎn)的SN65HVD230 CAN總線收發(fā)器,主要是與帶有CAN控制器的TMS320Lx240x系列DSP配套使用,該收發(fā)器具有差分收發(fā)能力,最高速率可達(dá)1Mb/s。SN65HVD230具有高速、斜率和等待3種不同的工作模式。其工作模式控制可通過(guò)Rs控制引腳來(lái)實(shí)現(xiàn)。
3 系統(tǒng)軟件設(shè)計(jì)
軟件設(shè)計(jì)的第一步是初始化,包括系統(tǒng)初始化、異步串口和CAN初始化等。然后是主體部分即UART和CAN的通信以及數(shù)據(jù)處理等。主體部分程序主要由三大塊組成:激光雷達(dá)配置模塊、UART和CAN通信模塊、車(chē)體避撞模塊。
3.1 激光雷達(dá)配置模塊
PC與激光雷達(dá)之間通過(guò)固定的數(shù)據(jù)格式進(jìn)行通信,配置激光雷達(dá)的流程如下:
(1) 首先打開(kāi)串口,初始化, 等待激光雷達(dá)返回開(kāi)機(jī)初始化的應(yīng)答數(shù)據(jù)。
(2) 使用默認(rèn)的密碼“SICK_LMS”,改變操作模式為“安裝模式”, 并等待雷達(dá)應(yīng)答數(shù)據(jù)的返回。
(3) 配置激光雷達(dá)和UART串口的速率。先將激光雷達(dá)波特率改為500K,等到返回修改成功的應(yīng)答數(shù)據(jù)后,再將UART串口的波特率也改為500K。
(4) 設(shè)置掃描寬度和角度分辨率,掃描寬度180度,角度分辨率為0.5度。
(5) 請(qǐng)求激光雷達(dá)的配置數(shù)據(jù),目的是獲得一些參數(shù)的值,放到數(shù)組中,然后修改部分參數(shù)的值,并用命令77h將參數(shù)寫(xiě)到激光雷達(dá)中。
(6) 切換到監(jiān)控模式,獲得激光雷達(dá)連續(xù)掃描數(shù)據(jù)。
此后雷達(dá)便開(kāi)始以26.6毫秒的周期將測(cè)量數(shù)據(jù)以500Kbps的通信速率發(fā)送給接口卡。
3.2 UART和CAN通信模塊
UART采用中斷方式接收激光雷達(dá)發(fā)送過(guò)來(lái)的數(shù)據(jù),因?yàn)閿?shù)據(jù)傳輸速率為500Kbps,接收中斷非常頻繁,中斷程序過(guò)于復(fù)雜會(huì)延誤后續(xù)的數(shù)據(jù)處理,所以整個(gè)中斷程序非常簡(jiǎn)短,不超過(guò)20條指令。當(dāng)主程序檢測(cè)到UART接收到一楨數(shù)據(jù)后,就將數(shù)據(jù)寫(xiě)入CAN郵箱4和5,通過(guò)CAN發(fā)送給PC機(jī)。同時(shí),CAN通信采用中斷接收PC機(jī)發(fā)送過(guò)來(lái)的數(shù)據(jù),再通過(guò)UART發(fā)送給激光雷達(dá)。
3.3 車(chē)體避撞模塊
車(chē)輛在自動(dòng)駕駛時(shí)需要實(shí)時(shí)檢測(cè)車(chē)前方一定范圍內(nèi)的障礙物,一旦發(fā)現(xiàn)有障礙物就必須控制車(chē)輛緊急制動(dòng)以免發(fā)生事故,這個(gè)障礙物檢測(cè)是由安裝在車(chē)前部的激光雷達(dá)完成的。
當(dāng)UART接收到激光雷達(dá)一E數(shù)據(jù)732個(gè)字節(jié)后,進(jìn)行CRC校驗(yàn),數(shù)據(jù)校驗(yàn)無(wú)誤后,去掉E頭和E尾,將距離數(shù)據(jù)的高位字節(jié)和低位字節(jié)合并,然后存放在數(shù)組Laser_Range[361]里。智能車(chē)輛的寬度為1.4米,我們?cè)O(shè)置了一個(gè)障礙物檢測(cè)區(qū)域,是以激光雷達(dá)為中心的一個(gè)2×2米的方形區(qū)域,只要在這個(gè)區(qū)域內(nèi)有障礙物我們就認(rèn)為車(chē)的前方有障礙物,需要緊急制動(dòng)。一楨激光雷達(dá)數(shù)據(jù)是361個(gè)距離值,在判斷時(shí)將這361個(gè)數(shù)據(jù)分為三個(gè)部分,三個(gè)區(qū)域內(nèi)的數(shù)據(jù)分別有各自的判斷條件,條件如果成立則認(rèn)為該區(qū)域內(nèi)有障礙物。當(dāng)檢測(cè)完361個(gè)數(shù)據(jù)以后,如果沒(méi)發(fā)現(xiàn)障礙物則認(rèn)為是安全的,如果發(fā)現(xiàn)了障礙物則認(rèn)為有危險(xiǎn),這時(shí)直接通過(guò)I/O發(fā)送命令給底層控制器讓車(chē)輛緊急剎車(chē)。
4 試驗(yàn)結(jié)果
本文對(duì)上述接口卡進(jìn)行了試驗(yàn)驗(yàn)證。試驗(yàn)平臺(tái)為上海交通大學(xué)研制的無(wú)人自動(dòng)駕駛車(chē)輛,測(cè)距傳感器為L(zhǎng)MS291激光雷達(dá),安裝在車(chē)輛前方。在車(chē)載筆記本電腦的VC++平臺(tái)上對(duì)CAN接口進(jìn)行配置,接收激光雷達(dá)在500kbps下發(fā)送的連續(xù)數(shù)據(jù),對(duì)每一個(gè)測(cè)量的距離數(shù)據(jù)用一個(gè)小圓圈表示,在實(shí)驗(yàn)室外的車(chē)道上進(jìn)行了實(shí)際演示,結(jié)果如下
隨著前方障礙物的變化,圖像會(huì)實(shí)時(shí)地跟著變化。由于采集速率高,激光雷達(dá)數(shù)據(jù)完全沒(méi)有丟失。數(shù)據(jù)傳輸實(shí)時(shí)性也很好,筆記本電腦接收激光雷達(dá)一楨732個(gè)字節(jié)數(shù)據(jù)的時(shí)間為27.2毫秒,比激光雷達(dá)實(shí)際的時(shí)間周期只延遲了0.6毫秒,達(dá)到了車(chē)輛精確定位導(dǎo)航算法的要求。
5 結(jié)論
本文針對(duì)無(wú)人自動(dòng)駕駛車(chē)輛的激光雷達(dá)避撞和導(dǎo)航的要求,設(shè)計(jì)了基于DSP的激光雷達(dá)智能接口卡,對(duì)PC機(jī)中獲得的數(shù)據(jù)進(jìn)行檢驗(yàn)的結(jié)果表明,數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性和可靠性都很好。而且根據(jù)車(chē)輛實(shí)際演示的效果來(lái)看,避撞很可靠。
本文創(chuàng)新點(diǎn):1. 本文設(shè)計(jì)的接口卡采用處理速度較高的DSP系統(tǒng)和外擴(kuò)高速UART TL16C152B,使得接口卡采集數(shù)據(jù)的速度能夠達(dá)到500Kbps,目前市場(chǎng)上的接口卡一般都不能達(dá)到這一速度要求。2. 由于采用了高速的DSP系統(tǒng),所以在數(shù)據(jù)采集傳輸?shù)耐瑫r(shí),還可以進(jìn)行數(shù)據(jù)處理實(shí)現(xiàn)車(chē)輛的自動(dòng)避撞。3. 本文的接口卡和上位機(jī)接口選擇了CAN總線傳輸,使得數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性很高,試驗(yàn)數(shù)據(jù)表明一楨732個(gè)字節(jié)的數(shù)據(jù)只延遲了0.6毫秒,滿足了筆記本電腦進(jìn)行精確定位導(dǎo)航算法的要求。此接口卡已成功應(yīng)用在上海交通大學(xué)研制的無(wú)人自動(dòng)駕駛車(chē)輛上,取得了良好的效果。
評(píng)論