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