<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 物聯(lián)網(wǎng)與傳感器 > 設(shè)計應(yīng)用 > 裝備無線自動跟蹤攝像頭的警用車輛支持系統(tǒng)

          裝備無線自動跟蹤攝像頭的警用車輛支持系統(tǒng)

          作者:Joo Sunwoong、Suh Hoseong、Moon Youngje 時間:2008-04-15 來源:電子產(chǎn)品世界 收藏

            設(shè)計介紹

          本文引用地址:http://www.ex-cimer.com/article/81567.htm

            本項目有三個主要目標:首先,提高警用車輛上收集和解釋數(shù)據(jù)的能力。其次,在警察大隊與指揮中心之間實現(xiàn)實時的圖像傳送和信息共享。第三,通過使用 SoPC 的協(xié)調(diào)設(shè)計來考慮高性能和經(jīng)濟效率。

            現(xiàn)有的警察大隊跟蹤系統(tǒng)的是固定在車輛上,因此會出現(xiàn)在屏幕上丟失嫌疑車輛的問題。本項目提供了一種自動跟蹤解決方案,可以將嫌疑車輛始終鎖定在屏幕上。為了實現(xiàn)這一目標,我們實施了可以減輕光效應(yīng)的自動化臨界值計算方法。

            我們制造了使用步進馬達的云臺(Pan-Tilt Camera),這種可以左右上下移動。為了實現(xiàn)馬達的快速響應(yīng),我們還設(shè)計了 步進馬達控制器。 步進馬達控制器的響應(yīng)時間比軟件控制器的響應(yīng)時間短,因此,即使嫌疑車輛在快速移動,它也可以幫助攝像頭將焦點一直放在嫌疑車輛上。

            我們設(shè)計了自動系統(tǒng),該系統(tǒng)可以與跟蹤攝像頭同步運行。我們針對 MPEG 音頻播放實施了使用 Nios 自定義指令的硬件加速技術(shù)。因此,不需要為 MPEG 音頻解碼提供額外的解碼芯片。我們?yōu)樵?DE2 主板上運行的 WM8731DAC 開發(fā)了 音頻驅(qū)動程序

            我們還設(shè)計了 合成式 OBD- II 接口,用于獲取車輛速度之類的信息,以及從車輛控制系統(tǒng) ECU 獲取故障狀態(tài)。OBD- II 接口可以測量相對速度,并可監(jiān)控車輛狀態(tài),因此它可以代替高成本的激光測量儀器。我們通過 libjpeg 和 Altera 的編譯器設(shè)計了 JPEG 壓縮模塊,用于進行圖像存儲和無線傳輸。

            對于 Linux 系統(tǒng)上常用的 libjpeg,我們進行了加速。利用 libjpeg 可以不必修改代碼就讓應(yīng)用程序提高壓縮性能。此項目的另一個主要特色是快速的全球無線 HSDPA 協(xié)作。收集到的實時數(shù)據(jù)和圖像信息可以從警察大隊傳送到指揮管制中心。

            車內(nèi) FPGA 的適用性

            警察大隊的支持系統(tǒng)是一個復(fù)雜的領(lǐng)域,需要對圖像、語音、通信和傳感器數(shù)據(jù)進行處理。車輛的系統(tǒng)復(fù)雜性越來越強,因為所加載設(shè)備的數(shù)量也在逐漸增加。在 OBD 接口中,由于協(xié)議不同,不同的車輛必須使用不同的系統(tǒng)。FPGA 適合于這個領(lǐng)域,因為它擁有易用的重組功能和合成功能。

            我們在 Quarters 和 Nios IDE 7.0 環(huán)境中開發(fā)了 SoPC 系統(tǒng)。操作系統(tǒng)和應(yīng)用程序是使用 GUN 工具實施的。使用 SoPC 可以方便地配置系統(tǒng), 和 GUN 工具鏈可以提供相似的環(huán)境。

            警用車輛中的需求

            根據(jù)追蹤制度,追蹤車輛時必須在進行追蹤時打開警報和記錄設(shè)備,并且同時還要向命令控制中心報告。同時做幾件事情并不容易,因此需要采用自動化的綜合解決方案。我們的項目可以提供解決這些問題的解決方案。

            圖 1:設(shè)計概念

           
           
            功能描述

            本部分將描述我們的設(shè)計所能提供的功能。

            圖 2:云臺攝像頭模塊


           
            自動跟蹤攝像頭

            要將目標車輛始終鎖定在屏幕中央,我們制造了一種可以垂直和水平移動的攝像頭模塊。云臺攝像頭模塊的關(guān)鍵部分是響應(yīng)時間。響應(yīng)時間越短,目標車輛的丟失率就越低。

            因此,我們選擇了硬件控制的方法,而不是軟件控制的方法。步進馬達控制器是采用 Verilog HDL 開發(fā)的。圖像處理模塊發(fā)出的云臺運動命令會直接傳送到 FPGA 上的步進馬達控制器。步進馬達控制器隨即接收到這些命令,并生成操作信號脈沖。最后,控制器向每個馬達發(fā)送合適移動距離的信號。

            要進入跟蹤模式,需要將攝像頭對準目標車輛,然后按下 DE2 上的按鈕。隨后,圖像處理模塊將提取目標車輛的平均色彩特征,并估計目標車輛的位置。只要車輛一移動,云臺攝像頭就會跟蹤車輛。

            捕獲的 640x400 圖像保存在 USB 存儲中,并同時傳送給指揮管制中心。自動跟蹤攝像頭都經(jīng)過實際測試,大多數(shù)情況下的工作效果都很好。由于跟蹤算法的根據(jù)是色彩的差異,因此我們的跟蹤機制在夜晚時無效,在某些色彩上的識別能力較弱。

            圖 3:道路實際跟蹤測試

           
           
            圖 4:車內(nèi)嵌入式系統(tǒng)的配置


           
            自動

            自動跟蹤攝像頭啟動跟蹤模式時,就會運行自動系統(tǒng)。這可以為車中的警察帶來便利。MPEG 音頻數(shù)據(jù)是通過 Nios II 處理器的自定義指令播放的,無需任何額外的處理器。Nios II 處理器在 DE2 上以 100 MHz 的速度運行。

            單片機可以播放 128Kbps 44.1KHz 的 MP3 單聲道音頻,無需加速。但是,該處理器還是需要減少其負載以便進行多任務(wù)處理。因此,我們增加了一個 64 位倍增器,它可以將播放的能力提高大約 2.5 倍。

            圖 5:圖像的捕獲、處理和傳輸示意圖


           
            圖像捕獲模塊

            攝像頭的模擬圖像信息會在 DE2 的單片機上轉(zhuǎn)化成 ITU656 標準的數(shù)字流。這種數(shù)字流有三種不同的用途:首先,用于控制自動跟蹤攝像頭的上下左右移動操作。其次,用于版本共享系統(tǒng)以及無線傳送的 JPEG 壓縮。最后,用于車內(nèi)顯示。該圖像捕獲模塊可以在預(yù)處理時修改圖像大小、移除隔行掃描模式以及計算幀緩沖區(qū)內(nèi)存地址。

            圖 6:在實驗室中進行的跟蹤算法測試


           
            圖像處理模塊

            攝像頭的自動跟蹤功能需要用到移動跟蹤算法。我們開發(fā)了經(jīng)過調(diào)整的色彩跟蹤算法,可以很方便地應(yīng)用于 FPGA。這種算法可以根據(jù)方向計算不斷變化的車輛色彩的平均值,并生成新的二進制臨界值。

            這種算法的設(shè)計目的是處理與 FPGA 電路中的顯示輸入模塊合成的線路單元,而無需進行軟件處理。其結(jié)果是不再需要外部幀緩沖區(qū)內(nèi)存。這種方法的主要優(yōu)勢就是提高性能。它可以每隔 1/30 秒就向馬達控制器傳送控制命令。

            圖 7:JPEG 壓縮示意圖


           
            加速的 JPEG 壓縮

            按 JPEG 標準進行的圖像壓縮大小為 640x400。libjpeg 的前向式 DCT 函數(shù)被加速器取代;該加速器使用編譯器開發(fā)而成,可以在 uClinux 環(huán)境中進行訪問。將 C2H 加速器與 uClinux 結(jié)合起來非常重要,因為它要與其它任務(wù)同時運行。對 libjpeg(標準庫)進行加速使我們可以無需增加額外的 DSP 芯片或任何常見的軟件就能獲得性能的提升。使用 libjpeg 的應(yīng)用程序可以通過重新編譯提高壓縮性能,而不必修改任何代碼。
           
            圖 8:DE2 擴展設(shè)備和 接口


           
            自定義的 接口

            車輛都有一個用于進行系統(tǒng)管理的發(fā)動機控制單元(ECU)。警用車輛上也有這樣的設(shè)備。對于新近制造的車輛來說,ECU 是一個非常重要的組件,它的作用是將發(fā)動機與各種電子控制部件結(jié)合起來。是一個接口,可以將計算機或診斷工具連接到 ECU 以便進行車輛維護,它可以實現(xiàn)設(shè)備間的通信。

            OBD 標準有很多種,具體取決于車輛的制造商。我們的項目所采用的是 ISO9141-2 國際標準。通過 OBD- II,我們可以了解車輛的行駛速度、燃油狀態(tài)和車輛的故障情況。它的初始化過程為 5 波特,通信速度為 10.4k 波特。對于接收到的信息部分字節(jié),必須進行補充并將其發(fā)送到 ECU 進行通信。在 SoPC 平臺上使用的是 UART 組件,因為它與串行通信類似。

            圖 9:捕獲圖像和 OBD-II 信息屏幕

           
           
            性能參數(shù)

            本部分將描述我們的設(shè)計所能提供的性能參數(shù)。

            表 1 列出了在圖像處理模塊上發(fā)送控制信號,到步進馬達上接收初始操作信號之間的時間間隔。該時間間隔是通過示波器測量得出的。通過 GPIO 接口啟動步進馬達后,在軟件程序控制器中,Nios 處理器會接收中斷信號,并生成操作信號。

            表 1:步進馬達脈沖生成方法比較

           

            汽車跟蹤攝像頭的速度主要取決于圖像處理性能。下面的表 2 顯示了基于不同平臺的每種跟蹤算法的測試幀速率。實際上,DE2 的幀速率接近 60 幀/秒,因為圖像處理模塊以隔行掃描模式運行;但是,我們根據(jù)有效幀的數(shù)量將其標記為 29 幀/秒。

            表 2:跟蹤算法的性能比較


           
            另一個結(jié)果是,C2H 加速的 libjpeg 的 DCT 函數(shù)可以實現(xiàn) JPEG 的快速壓縮。640x400 的 24 位位圖經(jīng)過了 20 倍強壓縮以實現(xiàn)精確的測量。使用 C2H 編譯所顯示出來的性能比這種沒有加速器設(shè)計的性能要差。要解決此問題,我們更改了緩沖區(qū)管理方法。在修改了 DCT 函數(shù)后,性能提升了四倍。

            表 3:JPEG 壓縮算法的性能比較


           
            表 4:uClinux 上的 USB HSDPA 調(diào)制解調(diào)器性能測試
           


            我們在設(shè)計該系統(tǒng)時,考慮了在 uClinux 系統(tǒng)上使用 USB 調(diào)制解調(diào)器時的性能下降問題。然而,事實顯示,網(wǎng)絡(luò)性能與在 PC 環(huán)境中運行的性能幾乎相同。

            設(shè)計的體系結(jié)構(gòu)

            本部分描述我們系統(tǒng)的設(shè)計架構(gòu)。

            圖 10:系統(tǒng)的體系結(jié)構(gòu)


           
            整個系統(tǒng)由 uClinux 操作系統(tǒng)控制。包括圖像處理模塊在內(nèi)的攝像頭控制系統(tǒng)和子系統(tǒng)由完整的 FPGA 組成。我們設(shè)計的自定義 SoPC 組件將隨我們項目的進展被刷成深灰色。

           
            圖 11:SoPC 配置


           
            標準 JPEG 庫 libjpeg 的 DCT 函數(shù)被更改為 C2H 加速器。圖像處理模塊、VGA 控制器和步進馬達控制器被組合成一個單獨的 SoPC 組件??偣蚕牧?31000 LE。

            圖 12:Quartus II 7.0 編譯報告


           
            圖 13:系統(tǒng)頂層實體


           
            圖 14:芯片配置和車內(nèi)配置


           
            設(shè)計描述

            本部分將描述我們設(shè)計的實施方法和步驟。

            組合 uClinux 和 C2H

            使用操作系統(tǒng)可以靈活地在復(fù)雜的多設(shè)備環(huán)境系統(tǒng)中進行開發(fā)。uClinux 內(nèi)核是適合于非 MMU 處理器的操作系統(tǒng)內(nèi)核。由于 uClinux 系統(tǒng)中沒有內(nèi)存管理單元,因此可以極大地簡化基于 Nios 處理器對定制的硬件加速器進行訪問的應(yīng)用程序的使用。

            在 Nios IDE 環(huán)境中編寫的代碼經(jīng)過很少的更改或無需更改即可在 uClinux 下的多任務(wù)環(huán)境中運行,因為在 uClinux 中對內(nèi)存映射地址的寫操作沒有限制。

            我們可以通過常用的技術(shù)在 uClinux 上使用 C2H 加速器。在本部分,我們將詳細介紹將 C2H 加速器從 Nios IDE 移到 uClinux 上所需的步驟。

            第一步是生成一個臨時項目。然后,在 Nios IDE 中編譯并生成加速器?,F(xiàn)在,我們可以在 Debug 目錄中看到加速器的打包函數(shù)。將這些頭文件(Header file)和打包函數(shù)復(fù)制到 uClinux 開發(fā)目錄中。如果您尚未對 FPGA 編程,則進行該項編程。

            下一步是使用 Nios 的 gcc 工具和 elf2flt 選項編譯經(jīng)過加速的應(yīng)用程序。確保必需的頭文件(如 system.h 或 io.h)存在。在完成此步驟后,將生成的執(zhí)行文件復(fù)制到單片機上。在大多數(shù)情況下,它的速度會比僅使用軟件的系統(tǒng)要快。

            可惜的是,我們在將 libjpeg DCT 函數(shù)轉(zhuǎn)換成加速器時面臨著性能方面的問題。我們將在接下來的部分介紹針對性能問題的解決方案。

            圖 15:將 C2H 加速器打包函數(shù)從 Nios IDE 移到 uClinux 上


           
            圖 16:經(jīng)過優(yōu)化的 DCT 函數(shù)示意圖


           
            優(yōu)化 C2H 編譯器的 JPEG 庫

            一般情況下,開發(fā)人員會考慮使用 DSP 進行 JPEG 壓縮,但 DSP 需要有自己的軟件程序來提供支持。選擇可以加速 libjpeg 的 C2H 編譯器是一個正確的決定,因為許多現(xiàn)有應(yīng)用程序都使用作為 JPEG 標準庫的 libjpeg。

            但是,在使用 C2H 編譯器轉(zhuǎn)換原始的 DCT 函數(shù)時,它所顯示的性能比僅使用軟件的設(shè)計的性能低。從結(jié)構(gòu)上來說,對數(shù)據(jù)高速緩存的刷新是一個問題,它的數(shù)據(jù)處理工作是以 64 個字節(jié)為單位進行的。我們設(shè)計了適合于 C2H 編譯器的經(jīng)過優(yōu)化的緩沖區(qū)管理系統(tǒng)。這個管理器實現(xiàn)了 4 倍的性能提升。

            創(chuàng)建自定義的 SoPC 組件

            每個部件都由 VerilogHDL 單獨設(shè)計,并作為一個組件添加到 SoPC 中。圖像處理模塊、VGA 控制器和步進馬達控制器被組合成一個單獨的 SoPC 組件,因為這些部件相互之間都有密切的關(guān)聯(lián)。這些組件作為 Avalon Master 的組件在 SRAM 上寫入圖像數(shù)據(jù)。

            圖 17:自定義的 SoPC 組件 


           
            圖 18:使用 64 位乘法器的自定義指令

           

            使用自定義指令對 MPEG 音頻進行解碼

            在使用 Nios II 處理器和 uClinux 的環(huán)境中播放 MPEG 音頻存在三個主要問題:處理器性能、FIFO(先進先出)的大小以及在 uClinux 中用于輸出的設(shè)備驅(qū)動程序。

            我們發(fā)現(xiàn),100 MHz Nios II 處理器在 Cyclone II 芯片上對立體聲 128Kbps 44.1KHz MP3 音頻進行解碼時會有性能損失。如果 FIFO 足夠大,則可以在該系統(tǒng)中播放單聲道音頻,但 CPU 會一直分配用于播放音頻的性能。

            我們在 Nios 處理器上添加了使用自定義指令的 64 位乘法器以實現(xiàn) 64 位乘法計算;這種運算方法在 Libmad 庫中經(jīng)常用到。播放的性能提升了大約 2.5 倍,用于計算的時鐘使用率有所降低。

            還有其它一些原因使音頻播放質(zhì)量不佳。首先是采樣率不好。其次是緩沖區(qū)大小不足。最后是多任務(wù)處理環(huán)境。圖 19 的配置可以解決這個問題,音頻將參考使用 17 MHz 的時鐘。

           
            圖 19:44.1 KHz MPEG 音頻的 DAC FIFO 設(shè)置


            
            設(shè)計的功能

            本部分將描述我們的設(shè)計所能提供的重要功能。

            這個系統(tǒng)最吸引人的指標是其集成性。一個 FPGA 芯片可以處理整個工作,如圖像處理、壓縮、傳送、MPEG 音頻解碼、步進馬達控制和 OBD 通信等。每個組件都作為一個 SoPC 組件添加,因此很容易在不同的項目中重復(fù)利用組件。

            我們設(shè)計了設(shè)備驅(qū)動程序,因此所有系統(tǒng)都可以在 uClinux 環(huán)境中運行。我們開發(fā)了訪問方法,這些方法可將 uClinux 應(yīng)用程序與基于自定義指令和 C2H 技術(shù)的加速器關(guān)聯(lián)起來。軟件和硬件都實現(xiàn)了統(tǒng)一。

            圖像處理的主要功能是使內(nèi)存訪問量達到最小。幀緩沖區(qū)內(nèi)存僅用于 JPEG 壓縮,因為圖像處理是由線路單元實現(xiàn)的。因此,我們最終可以極大地節(jié)約 Avalon 總線的帶寬。

            表 5:重要功能和相關(guān)模塊


           
            結(jié)論

            我們開發(fā)并測試了代表著遠程信息處理技術(shù)領(lǐng)域之一的警察大隊支持系統(tǒng)。我們開發(fā)了自動跟蹤攝像頭;該攝像頭可以追蹤常見的車輛,并將其一直鎖定在屏幕中央。我們設(shè)計了基于 FPGA 技術(shù)的 OBD 接口,用于了解車輛的狀態(tài)信息。我們開發(fā)了可以通過全球無線 HSDPA 模塊遠程驗證車輛圖像和狀態(tài)信息的遠程系統(tǒng)。

            在啟動此項目之前,我們在固定的硬件平臺上和資源有限的環(huán)境中進行了設(shè)計。FPGA 是一項令人驚奇的技術(shù),它可以輕松地更改設(shè)計的配置。即使存在軟件無法解決的性能問題和困難,我們也可以通過修改硬件設(shè)計來獲得簡單而有效的設(shè)計方法。特別是,F(xiàn)PGA 的優(yōu)勢是圖像處理領(lǐng)域最受歡迎的。

            我們使用了 ALERA 的 C2H 技術(shù)進行 JPEG 壓縮。通過測試當前使用最為廣泛的經(jīng)過加速的 libjpeg 的 DCT 函數(shù),高性能得到了驗證。我們認為,可以將 C 程序轉(zhuǎn)換成 HDL 的 C2H 技術(shù)是改變軟件范例的一個重要推動因素。我們通過利用 C2H 技術(shù)對 libjpeg 的 DCT 函數(shù)進行加速來獲得高性能。C2H 還有一些需要解決的問題,但我們預(yù)期它會對軟件到硬件轉(zhuǎn)換技術(shù)的發(fā)展作出貢獻。

          攝像頭相關(guān)文章:攝像頭原理


          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();