輔助駕駛系統開發面臨的挑戰 汽車輔助駕駛(DA)系統工程師通常使用 PC 模型來創建復雜的處理算法,以便實現高度可靠的自適應巡航控制、車道偏離警告及行人檢測等功能。開發人員高度重視PC算法模型,因為這種模型使他們能夠嘗試使用并快速評估不同的處理算法。不過,說到底,還是需要一款設計合理的電子硬件解決方案,來實現經濟有效的大規模生產與部署。 驗證可部署目標硬件與軟件算法模型之間的算法性能一致性,對許多開發人員來說都是個問題。從浮點轉到定點計算(如三角函數采用的不同方法)有時會導致參考軟件算法和硬件實施模型之間出現明顯差異。另外,輸入圖案資料集群(input stimulus)有著很大的不確定性,這使驗證算法性能一致性工作變得更加復雜。 圖1 LDW頂層方框圖 對通常依賴遠程感應裝置(攝像頭、雷達等)輸入的DA系統來說,輸入信息就是駕駛員在實際行車中可能遇到的各種路況和環境條件。工程師會發現,設計一款充分滿足所有情況需求的處理算法極具挑戰性,而且驗證軟件模型與電子硬件實施之間的算法性能一致性至關重要。 賽靈思推出的一款工具——System Generator for DSP,為算法開發人員和系統架構師從Simulink PC模型轉向實時FPGA硬件實施技術提供了一種高效、直觀的方法。這種具有高抽象層的設計工具在賽靈思和eVS工程師聯合開展的設計項目中發揮了關鍵作用。該項目的目標就是利用System Generator for DSP推出一款適用于采用Xilinx FPGA的汽車車道偏離警告系統的圖形處理算法,旨在提高整體性能,降低成本,并縮短開發時間。 車道偏離警告模型 車道偏離警告 (LDW) 系統的總體功能就是在車輛無意中偏離正在行駛的車道時提醒駕駛員。安裝該系統的車輛前安放攝像頭,可捕獲到路況圖形,以識別出車道邊界標志。車道偏離警告系統持續跟蹤車道標線以及車輛相對于車道標線的位置。如果車輛越過了車道標線,那么系統就會發出警告。 汽車產業和學術界普遍采用 MATLAB和Simulink 作為算法和系統級設計工具。尤其是Simulink 具有高抽象層,而且提供圖形化輸入,因此能幫助汽車算法工程師輕松快速地開發出復雜的 DSP 算法。 圖1顯示了 LDW 系統模型的頂層方框圖,該模型就是用 Simulink 設計而成。標記為車道檢測的綠色塊包括圖形預處理子系統,圖2中將給出該子系統的各處理步驟。車道檢測功能旨在提取出最有可能代表車道標線的路況圖形。 為了提高邊緣設備噪聲檢測的性能,處理流程 (pipeline) 第一步為2-D 5×5高斯噪聲抑制 (GNR);第二步為直方圖拓寬 (HST),開發人員可用該技術增強圖形對比度,盡可能利用整個灰度范圍;第三步則為水平/垂直梯度 (HVG),可在本地強度大幅變化情況下增強像素。開發人員可通過計算圖形的 2-D 5×5梯度,來執行HVG。 System Generator工具概述 System Generator for DSP設計工具運行于Simulink中。它采用賽靈思面向Simulink的DSP模塊集,并將自動調用賽靈思CORE Generator工具生成高度優化的DSP構建塊網表,能通過 Simulink 庫瀏覽器訪問賽靈思DSP模塊集。庫瀏覽器可從標準的MATLAB工具欄中啟動。構建DSP系統可用的DSP構建塊有90多個,此外還包括FIR濾波器、 FET、FEC內核、嵌入式處理內核、存儲器、算術塊、邏輯塊以及按位塊(bit-wise block)等。每個塊都實現了周期精確和位精確,可就延遲、面積與速度性能優化、I/O端口數、量子化以及取整等對其逐一進行配置。 圖2 LDW預處理功能鏈 下面,不妨來仔細探討如何在 System Generator for DSP中構建圖形處理算法模型,為了簡單起見,這里選擇GNR為例,這也是圖形預處理流程的第一個模塊。 System Generator實施GNR功能 強度值(即噪聲)的隨機變化通常會損壞圖像質量。這種變化表現為高斯或正態分布,在不同傳感器(即 CMOS 攝像頭)中較為常見。線性平滑濾波器是消除高斯噪聲的最佳方法,在許多情況下,它還可消除其他類型的噪聲。為實現該功能,可通過使用連續窗口中的像素加權和來實施線性有限脈沖響應 (FIR) 濾波器。 在開始實施GNR System Generator模塊之前,我們已在 MATLAB 中實現了其行為模型。而這只需兩行代碼即可實現。首先,需要計算內核,具體描述掩模尺寸(本例設為 5×5)和高斯的∑值。然后,可以通過卷積過濾輸入圖像。 n_mask = fspecial('gaussian', 5, 0.8); out_img = conv2(in_img, n_mask, 'same'); 此外,還可使用這種行為模型,并通過實際視頻數據測試濾波器,進而調節掩模系數。還可以通過驗證System Generator for DSP子系統的輸出是否與MATLAB函數的輸出相等(在規定的誤差范圍內,這是因為MATLAB是以浮點方式工作,而System Generator 則以固點算法方式工作)來驗證硬件。 2-D GNR模塊以流線方式(即逐行方式)對輸入圖像進行處理。圖3顯示了整個預處理鏈的System Generator頂級方框圖以及高斯噪聲抑制功能的頂級方框圖。 圖3 頂級預處理與高斯噪聲抑制方框圖 System Generator FPGA綜合結果 開發人員在開發輔助駕駛系統時必須以適合大規模生產的成本水平進行設計。達到一定處理性能所需的裸片資源將決定他們所需的FPGA器件的尺寸,進而決定其成本。 在實施車道偏離警告預處理器過程中,以XA Spartan-3A DSP 3400為目標。采用這種方法,并利用該模型來支持未來規劃中的開發活動。但是,對預處理功能所占用資源的分析表明,該設計適合小得多的器件。 表1給出了XA Spartan-3A DSP 3400器件上GNR塊的資源占用情況。計算時,假定在VGA分辨率下灰度輸入圖像的幀速率為30Hz(即輸入數據速率為 9.2MS/s)。 從定時性能角度,GNR 設計以168.32 MHz 的時鐘頻率運行,可接受數據傳輸速率高達 18.72 MS/s的輸入數據。 整個車道檢測預處理子系統所需資源總情況如表2所示。 相應的定時性能分析表明,時鐘頻率為128.24MHz,最高輸入數據傳輸速率為14.2MS/s。 根據上述所需資源情況分析,預處理功能甚至可用于XA Spartan-3E 500,其密度大約為XA Spartan-3A 3400A器件的1/7。 圖4 LDW處理模型輸出 結果 圖4給出了一個LDW系統的性能圖樣,包括用于車道線備用物提取的基于 FPGA的圖像預處理功能。可以看到,右邊兩個圖片中的輸入幀。左邊的一對圖像顯示的是我們在FPGA中實施的預處理功能的性能。左上角的圖片顯示的則是閾值化后邊緣檢測函數的幅值。左下角圖片是在邊緣細化和車道線模式搜索處理后拍攝的。很明顯,LDW預處理器能非常有效地攝取道路圖景,并能將數據減少至基本車道線選取物。右上角和右下角圖片中的黃線和紅線分別表示對基于簡單直線道路模型的車道標線的瞬間跟蹤計算結果。 |