裝備無線自動(dòng)跟蹤攝像頭的警用車輛支持系統(tǒng)
設(shè)計(jì)介紹
本文引用地址:http://www.ex-cimer.com/article/81567.htm本項(xiàng)目有三個(gè)主要目標(biāo):首先,提高警用車輛上收集和解釋數(shù)據(jù)的能力。其次,在警察大隊(duì)與指揮中心之間實(shí)現(xiàn)實(shí)時(shí)的圖像傳送和信息共享。第三,通過使用 SoPC 的協(xié)調(diào)設(shè)計(jì)來考慮高性能和經(jīng)濟(jì)效率。
現(xiàn)有的警察大隊(duì)跟蹤系統(tǒng)的攝像頭是固定在車輛上,因此會(huì)出現(xiàn)在屏幕上丟失嫌疑車輛的問題。本項(xiàng)目提供了一種自動(dòng)跟蹤解決方案,可以將嫌疑車輛始終鎖定在屏幕上。為了實(shí)現(xiàn)這一目標(biāo),我們實(shí)施了可以減輕光效應(yīng)的自動(dòng)化臨界值計(jì)算方法。
我們制造了使用步進(jìn)馬達(dá)的云臺(tái)攝像頭(Pan-Tilt Camera),這種攝像頭可以左右上下移動(dòng)。為了實(shí)現(xiàn)馬達(dá)的快速響應(yīng),我們還設(shè)計(jì)了 FPGA 步進(jìn)馬達(dá)控制器。FPGA 步進(jìn)馬達(dá)控制器的響應(yīng)時(shí)間比軟件控制器的響應(yīng)時(shí)間短,因此,即使嫌疑車輛在快速移動(dòng),它也可以幫助攝像頭將焦點(diǎn)一直放在嫌疑車輛上。
我們?cè)O(shè)計(jì)了自動(dòng)語音警報(bào)系統(tǒng),該系統(tǒng)可以與跟蹤攝像頭同步運(yùn)行。我們針對(duì) MPEG 音頻播放實(shí)施了使用 Nios 自定義指令的硬件加速技術(shù)。因此,不需要為 MPEG 音頻解碼提供額外的解碼芯片。我們?yōu)樵?DE2 主板上運(yùn)行的 WM8731DAC 開發(fā)了 uClinux 音頻驅(qū)動(dòng)程序
我們還設(shè)計(jì)了 FPGA 合成式 OBD- II 接口,用于獲取車輛速度之類的信息,以及從車輛控制系統(tǒng) ECU 獲取故障狀態(tài)。OBD- II 接口可以測(cè)量相對(duì)速度,并可監(jiān)控車輛狀態(tài),因此它可以代替高成本的激光測(cè)量?jī)x器。我們通過 libjpeg 和 Altera 的 C2H 編譯器設(shè)計(jì)了 JPEG 壓縮模塊,用于進(jìn)行圖像存儲(chǔ)和無線傳輸。
對(duì)于 Linux 系統(tǒng)上常用的 libjpeg,我們進(jìn)行了加速。利用 libjpeg 可以不必修改代碼就讓應(yīng)用程序提高壓縮性能。此項(xiàng)目的另一個(gè)主要特色是快速的全球無線 HSDPA 協(xié)作。收集到的實(shí)時(shí)數(shù)據(jù)和圖像信息可以從警察大隊(duì)傳送到指揮管制中心。
車內(nèi) FPGA 的適用性
警察大隊(duì)的支持系統(tǒng)是一個(gè)復(fù)雜的領(lǐng)域,需要對(duì)圖像、語音、通信和傳感器數(shù)據(jù)進(jìn)行處理。車輛的系統(tǒng)復(fù)雜性越來越強(qiáng),因?yàn)樗虞d設(shè)備的數(shù)量也在逐漸增加。在 OBD 接口中,由于協(xié)議不同,不同的車輛必須使用不同的系統(tǒng)。FPGA 適合于這個(gè)領(lǐng)域,因?yàn)樗鼡碛幸子玫闹亟M功能和合成功能。
我們?cè)?Quarters 和 Nios IDE 7.0 環(huán)境中開發(fā)了 SoPC 系統(tǒng)。操作系統(tǒng)和應(yīng)用程序是使用 GUN 工具實(shí)施的。使用 SoPC 可以方便地配置系統(tǒng),uClinux 和 GUN 工具鏈可以提供相似的環(huán)境。
警用車輛中的需求
根據(jù)追蹤制度,追蹤車輛時(shí)必須在進(jìn)行追蹤時(shí)打開警報(bào)和記錄設(shè)備,并且同時(shí)還要向命令控制中心報(bào)告。同時(shí)做幾件事情并不容易,因此需要采用自動(dòng)化的綜合解決方案。我們的項(xiàng)目可以提供解決這些問題的解決方案。
圖 1:設(shè)計(jì)概念
功能描述
本部分將描述我們的設(shè)計(jì)所能提供的功能。
圖 2:云臺(tái)攝像頭模塊
自動(dòng)跟蹤攝像頭
要將目標(biāo)車輛始終鎖定在屏幕中央,我們制造了一種可以垂直和水平移動(dòng)的攝像頭模塊。云臺(tái)攝像頭模塊的關(guān)鍵部分是響應(yīng)時(shí)間。響應(yīng)時(shí)間越短,目標(biāo)車輛的丟失率就越低。
因此,我們選擇了硬件控制的方法,而不是軟件控制的方法。步進(jìn)馬達(dá)控制器是采用 Verilog HDL 開發(fā)的。圖像處理模塊發(fā)出的云臺(tái)運(yùn)動(dòng)命令會(huì)直接傳送到 FPGA 上的步進(jìn)馬達(dá)控制器。步進(jìn)馬達(dá)控制器隨即接收到這些命令,并生成操作信號(hào)脈沖。最后,控制器向每個(gè)馬達(dá)發(fā)送合適移動(dòng)距離的信號(hào)。
要進(jìn)入跟蹤模式,需要將攝像頭對(duì)準(zhǔn)目標(biāo)車輛,然后按下 DE2 上的按鈕。隨后,圖像處理模塊將提取目標(biāo)車輛的平均色彩特征,并估計(jì)目標(biāo)車輛的位置。只要車輛一移動(dòng),云臺(tái)攝像頭就會(huì)跟蹤車輛。
捕獲的 640x400 圖像保存在 USB 存儲(chǔ)中,并同時(shí)傳送給指揮管制中心。自動(dòng)跟蹤攝像頭都經(jīng)過實(shí)際測(cè)試,大多數(shù)情況下的工作效果都很好。由于跟蹤算法的根據(jù)是色彩的差異,因此我們的跟蹤機(jī)制在夜晚時(shí)無效,在某些色彩上的識(shí)別能力較弱。
圖 3:道路實(shí)際跟蹤測(cè)試
圖 4:車內(nèi)嵌入式系統(tǒng)的配置
自動(dòng)語音警報(bào)
自動(dòng)跟蹤攝像頭啟動(dòng)跟蹤模式時(shí),就會(huì)運(yùn)行自動(dòng)語音警報(bào)系統(tǒng)。這可以為車中的警察帶來便利。MPEG 音頻數(shù)據(jù)是通過 Nios II 處理器的自定義指令播放的,無需任何額外的處理器。Nios II 處理器在 DE2 上以 100 MHz 的速度運(yùn)行。
單片機(jī)可以播放 128Kbps 44.1KHz 的 MP3 單聲道音頻,無需加速。但是,該處理器還是需要減少其負(fù)載以便進(jìn)行多任務(wù)處理。因此,我們?cè)黾恿艘粋€(gè) 64 位倍增器,它可以將播放的能力提高大約 2.5 倍。
圖 5:圖像的捕獲、處理和傳輸示意圖
圖像捕獲模塊
攝像頭的模擬圖像信息會(huì)在 DE2 的單片機(jī)上轉(zhuǎn)化成 ITU656 標(biāo)準(zhǔn)的數(shù)字流。這種數(shù)字流有三種不同的用途:首先,用于控制自動(dòng)跟蹤攝像頭的上下左右移動(dòng)操作。其次,用于版本共享系統(tǒng)以及無線傳送的 JPEG 壓縮。最后,用于車內(nèi)顯示。該圖像捕獲模塊可以在預(yù)處理時(shí)修改圖像大小、移除隔行掃描模式以及計(jì)算幀緩沖區(qū)內(nèi)存地址。
圖 6:在實(shí)驗(yàn)室中進(jìn)行的跟蹤算法測(cè)試
圖像處理模塊
攝像頭的自動(dòng)跟蹤功能需要用到移動(dòng)跟蹤算法。我們開發(fā)了經(jīng)過調(diào)整的色彩跟蹤算法,可以很方便地應(yīng)用于 FPGA。這種算法可以根據(jù)方向計(jì)算不斷變化的車輛色彩的平均值,并生成新的二進(jìn)制臨界值。
這種算法的設(shè)計(jì)目的是處理與 FPGA 電路中的顯示輸入模塊合成的線路單元,而無需進(jìn)行軟件處理。其結(jié)果是不再需要外部幀緩沖區(qū)內(nèi)存。這種方法的主要優(yōu)勢(shì)就是提高性能。它可以每隔 1/30 秒就向馬達(dá)控制器傳送控制命令。
圖 7:JPEG 壓縮示意圖
按 JPEG 標(biāo)準(zhǔn)進(jìn)行的圖像壓縮大小為 640x400。libjpeg 的前向式 DCT 函數(shù)被加速器取代;該加速器使用 C2H 編譯器開發(fā)而成,可以在 uClinux 環(huán)境中進(jìn)行訪問。將 C2H 加速器與 uClinux 結(jié)合起來非常重要,因?yàn)樗c其它任務(wù)同時(shí)運(yùn)行。對(duì) libjpeg(標(biāo)準(zhǔn)庫(kù))進(jìn)行加速使我們可以無需增加額外的 DSP 芯片或任何常見的軟件就能獲得性能的提升。使用 libjpeg 的應(yīng)用程序可以通過重新編譯提高壓縮性能,而不必修改任何代碼。
圖 8:DE2 擴(kuò)展設(shè)備和 OBD-II 接口
自定義的 OBD-II 接口
車輛都有一個(gè)用于進(jìn)行系統(tǒng)管理的發(fā)動(dòng)機(jī)控制單元(ECU)。警用車輛上也有這樣的設(shè)備。對(duì)于新近制造的車輛來說,ECU 是一個(gè)非常重要的組件,它的作用是將發(fā)動(dòng)機(jī)與各種電子控制部件結(jié)合起來。OBD-II 是一個(gè)接口,可以將計(jì)算機(jī)或診斷工具連接到 ECU 以便進(jìn)行車輛維護(hù),它可以實(shí)現(xiàn)設(shè)備間的通信。
OBD 標(biāo)準(zhǔn)有很多種,具體取決于車輛的制造商。我們的項(xiàng)目所采用的是 ISO9141-2 國(guó)際標(biāo)準(zhǔn)。通過 OBD- II,我們可以了解車輛的行駛速度、燃油狀態(tài)和車輛的故障情況。它的初始化過程為 5 波特,通信速度為 10.4k 波特。對(duì)于接收到的信息部分字節(jié),必須進(jìn)行補(bǔ)充并將其發(fā)送到 ECU 進(jìn)行通信。在 SoPC 平臺(tái)上使用的是 UART 組件,因?yàn)樗c串行通信類似。
圖 9:捕獲圖像和 OBD-II 信息屏幕
性能參數(shù)
本部分將描述我們的設(shè)計(jì)所能提供的性能參數(shù)。
表 1 列出了在圖像處理模塊上發(fā)送控制信號(hào),到步進(jìn)馬達(dá)上接收初始操作信號(hào)之間的時(shí)間間隔。該時(shí)間間隔是通過示波器測(cè)量得出的。通過 GPIO 接口啟動(dòng)步進(jìn)馬達(dá)后,在軟件程序控制器中,Nios 處理器會(huì)接收中斷信號(hào),并生成操作信號(hào)。
表 1:步進(jìn)馬達(dá)脈沖生成方法比較
汽車跟蹤攝像頭的速度主要取決于圖像處理性能。下面的表 2 顯示了基于不同平臺(tái)的每種跟蹤算法的測(cè)試幀速率。實(shí)際上,DE2 的幀速率接近 60 幀/秒,因?yàn)閳D像處理模塊以隔行掃描模式運(yùn)行;但是,我們根據(jù)有效幀的數(shù)量將其標(biāo)記為 29 幀/秒。
表 2:跟蹤算法的性能比較
另一個(gè)結(jié)果是,C2H 加速的 libjpeg 的 DCT 函數(shù)可以實(shí)現(xiàn) JPEG 的快速壓縮。640x400 的 24 位位圖經(jīng)過了 20 倍強(qiáng)壓縮以實(shí)現(xiàn)精確的測(cè)量。使用 C2H 編譯所顯示出來的性能比這種沒有加速器設(shè)計(jì)的性能要差。要解決此問題,我們更改了緩沖區(qū)管理方法。在修改了 DCT 函數(shù)后,性能提升了四倍。
表 3:JPEG 壓縮算法的性能比較
表 4:uClinux 上的 USB HSDPA 調(diào)制解調(diào)器性能測(cè)試
我們?cè)谠O(shè)計(jì)該系統(tǒng)時(shí),考慮了在 uClinux 系統(tǒng)上使用 USB 調(diào)制解調(diào)器時(shí)的性能下降問題。然而,事實(shí)顯示,網(wǎng)絡(luò)性能與在 PC 環(huán)境中運(yùn)行的性能幾乎相同。
設(shè)計(jì)的體系結(jié)構(gòu)
本部分描述我們系統(tǒng)的設(shè)計(jì)架構(gòu)。
圖 10:系統(tǒng)的體系結(jié)構(gòu)
整個(gè)系統(tǒng)由 uClinux 操作系統(tǒng)控制。包括圖像處理模塊在內(nèi)的攝像頭控制系統(tǒng)和子系統(tǒng)由完整的 FPGA 組成。我們?cè)O(shè)計(jì)的自定義 SoPC 組件將隨我們項(xiàng)目的進(jìn)展被刷成深灰色。
圖 11:SoPC 配置
標(biāo)準(zhǔn) JPEG 庫(kù) libjpeg 的 DCT 函數(shù)被更改為 C2H 加速器。圖像處理模塊、VGA 控制器和步進(jìn)馬達(dá)控制器被組合成一個(gè)單獨(dú)的 SoPC 組件??偣蚕牧?31000 LE。
圖 12:Quartus II 7.0 編譯報(bào)告
圖 13:系統(tǒng)頂層實(shí)體
圖 14:芯片配置和車內(nèi)配置
設(shè)計(jì)描述
本部分將描述我們?cè)O(shè)計(jì)的實(shí)施方法和步驟。
組合 uClinux 和 C2H
使用操作系統(tǒng)可以靈活地在復(fù)雜的多設(shè)備環(huán)境系統(tǒng)中進(jìn)行開發(fā)。uClinux 內(nèi)核是適合于非 MMU 處理器的操作系統(tǒng)內(nèi)核。由于 uClinux 系統(tǒng)中沒有內(nèi)存管理單元,因此可以極大地簡(jiǎn)化基于 Nios 處理器對(duì)定制的硬件加速器進(jìn)行訪問的應(yīng)用程序的使用。
在 Nios IDE 環(huán)境中編寫的代碼經(jīng)過很少的更改或無需更改即可在 uClinux 下的多任務(wù)環(huán)境中運(yùn)行,因?yàn)樵?uClinux 中對(duì)內(nèi)存映射地址的寫操作沒有限制。
我們可以通過常用的技術(shù)在 uClinux 上使用 C2H 加速器。在本部分,我們將詳細(xì)介紹將 C2H 加速器從 Nios IDE 移到 uClinux 上所需的步驟。
第一步是生成一個(gè)臨時(shí)項(xiàng)目。然后,在 Nios IDE 中編譯并生成加速器。現(xiàn)在,我們可以在 Debug 目錄中看到加速器的打包函數(shù)。將這些頭文件(Header file)和打包函數(shù)復(fù)制到 uClinux 開發(fā)目錄中。如果您尚未對(duì) FPGA 編程,則進(jìn)行該項(xiàng)編程。
下一步是使用 Nios 的 gcc 工具和 elf2flt 選項(xiàng)編譯經(jīng)過加速的應(yīng)用程序。確保必需的頭文件(如 system.h 或 io.h)存在。在完成此步驟后,將生成的執(zhí)行文件復(fù)制到單片機(jī)上。在大多數(shù)情況下,它的速度會(huì)比僅使用軟件的系統(tǒng)要快。
可惜的是,我們?cè)趯?libjpeg DCT 函數(shù)轉(zhuǎn)換成加速器時(shí)面臨著性能方面的問題。我們將在接下來的部分介紹針對(duì)性能問題的解決方案。
圖 15:將 C2H 加速器打包函數(shù)從 Nios IDE 移到 uClinux 上
圖 16:經(jīng)過優(yōu)化的 DCT 函數(shù)示意圖
優(yōu)化 C2H 編譯器的 JPEG 庫(kù)
一般情況下,開發(fā)人員會(huì)考慮使用 DSP 進(jìn)行 JPEG 壓縮,但 DSP 需要有自己的軟件程序來提供支持。選擇可以加速 libjpeg 的 C2H 編譯器是一個(gè)正確的決定,因?yàn)樵S多現(xiàn)有應(yīng)用程序都使用作為 JPEG 標(biāo)準(zhǔn)庫(kù)的 libjpeg。
但是,在使用 C2H 編譯器轉(zhuǎn)換原始的 DCT 函數(shù)時(shí),它所顯示的性能比僅使用軟件的設(shè)計(jì)的性能低。從結(jié)構(gòu)上來說,對(duì)數(shù)據(jù)高速緩存的刷新是一個(gè)問題,它的數(shù)據(jù)處理工作是以 64 個(gè)字節(jié)為單位進(jìn)行的。我們?cè)O(shè)計(jì)了適合于 C2H 編譯器的經(jīng)過優(yōu)化的緩沖區(qū)管理系統(tǒng)。這個(gè)管理器實(shí)現(xiàn)了 4 倍的性能提升。
創(chuàng)建自定義的 SoPC 組件
每個(gè)部件都由 VerilogHDL 單獨(dú)設(shè)計(jì),并作為一個(gè)組件添加到 SoPC 中。圖像處理模塊、VGA 控制器和步進(jìn)馬達(dá)控制器被組合成一個(gè)單獨(dú)的 SoPC 組件,因?yàn)檫@些部件相互之間都有密切的關(guān)聯(lián)。這些組件作為 Avalon Master 的組件在 SRAM 上寫入圖像數(shù)據(jù)。
圖 17:自定義的 SoPC 組件
圖 18:使用 64 位乘法器的自定義指令
使用自定義指令對(duì) MPEG 音頻進(jìn)行解碼
在使用 Nios II 處理器和 uClinux 的環(huán)境中播放 MPEG 音頻存在三個(gè)主要問題:處理器性能、FIFO(先進(jìn)先出)的大小以及在 uClinux 中用于輸出的設(shè)備驅(qū)動(dòng)程序。
我們發(fā)現(xiàn),100 MHz Nios II 處理器在 Cyclone II 芯片上對(duì)立體聲 128Kbps 44.1KHz MP3 音頻進(jìn)行解碼時(shí)會(huì)有性能損失。如果 FIFO 足夠大,則可以在該系統(tǒng)中播放單聲道音頻,但 CPU 會(huì)一直分配用于播放音頻的性能。
我們?cè)?Nios 處理器上添加了使用自定義指令的 64 位乘法器以實(shí)現(xiàn) 64 位乘法計(jì)算;這種運(yùn)算方法在 Libmad 庫(kù)中經(jīng)常用到。播放的性能提升了大約 2.5 倍,用于計(jì)算的時(shí)鐘使用率有所降低。
還有其它一些原因使音頻播放質(zhì)量不佳。首先是采樣率不好。其次是緩沖區(qū)大小不足。最后是多任務(wù)處理環(huán)境。圖 19 的配置可以解決這個(gè)問題,音頻將參考使用 17 MHz 的時(shí)鐘。
圖 19:44.1 KHz MPEG 音頻的 DAC FIFO 設(shè)置
設(shè)計(jì)的功能
本部分將描述我們的設(shè)計(jì)所能提供的重要功能。
這個(gè)系統(tǒng)最吸引人的指標(biāo)是其集成性。一個(gè) FPGA 芯片可以處理整個(gè)工作,如圖像處理、壓縮、傳送、MPEG 音頻解碼、步進(jìn)馬達(dá)控制和 OBD 通信等。每個(gè)組件都作為一個(gè) SoPC 組件添加,因此很容易在不同的項(xiàng)目中重復(fù)利用組件。
我們?cè)O(shè)計(jì)了設(shè)備驅(qū)動(dòng)程序,因此所有系統(tǒng)都可以在 uClinux 環(huán)境中運(yùn)行。我們開發(fā)了訪問方法,這些方法可將 uClinux 應(yīng)用程序與基于自定義指令和 C2H 技術(shù)的加速器關(guān)聯(lián)起來。軟件和硬件都實(shí)現(xiàn)了統(tǒng)一。
圖像處理的主要功能是使內(nèi)存訪問量達(dá)到最小。幀緩沖區(qū)內(nèi)存僅用于 JPEG 壓縮,因?yàn)閳D像處理是由線路單元實(shí)現(xiàn)的。因此,我們最終可以極大地節(jié)約 Avalon 總線的帶寬。
表 5:重要功能和相關(guān)模塊
結(jié)論
我們開發(fā)并測(cè)試了代表著遠(yuǎn)程信息處理技術(shù)領(lǐng)域之一的警察大隊(duì)支持系統(tǒng)。我們開發(fā)了自動(dòng)跟蹤攝像頭;該攝像頭可以追蹤常見的車輛,并將其一直鎖定在屏幕中央。我們?cè)O(shè)計(jì)了基于 FPGA 技術(shù)的 OBD 接口,用于了解車輛的狀態(tài)信息。我們開發(fā)了可以通過全球無線 HSDPA 模塊遠(yuǎn)程驗(yàn)證車輛圖像和狀態(tài)信息的遠(yuǎn)程系統(tǒng)。
在啟動(dòng)此項(xiàng)目之前,我們?cè)诠潭ǖ挠布脚_(tái)上和資源有限的環(huán)境中進(jìn)行了設(shè)計(jì)。FPGA 是一項(xiàng)令人驚奇的技術(shù),它可以輕松地更改設(shè)計(jì)的配置。即使存在軟件無法解決的性能問題和困難,我們也可以通過修改硬件設(shè)計(jì)來獲得簡(jiǎn)單而有效的設(shè)計(jì)方法。特別是,F(xiàn)PGA 的優(yōu)勢(shì)是圖像處理領(lǐng)域最受歡迎的。
我們使用了 ALERA 的 C2H 技術(shù)進(jìn)行 JPEG 壓縮。通過測(cè)試當(dāng)前使用最為廣泛的經(jīng)過加速的 libjpeg 的 DCT 函數(shù),高性能得到了驗(yàn)證。我們認(rèn)為,可以將 C 程序轉(zhuǎn)換成 HDL 的 C2H 技術(shù)是改變軟件范例的一個(gè)重要推動(dòng)因素。我們通過利用 C2H 技術(shù)對(duì) libjpeg 的 DCT 函數(shù)進(jìn)行加速來獲得高性能。C2H 還有一些需要解決的問題,但我們預(yù)期它會(huì)對(duì)軟件到硬件轉(zhuǎn)換技術(shù)的發(fā)展作出貢獻(xiàn)。
攝像頭相關(guān)文章:攝像頭原理
評(píng)論