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