【2021集創賽】基于ARM-M3的雙目立體視覺避障系統 SOC設計

本作品參與極術社區組織的有獎征集|秀出你的集創賽作品風采,免費電子產品等你拿~活動。

團隊介紹

參賽單位:上海電力大學
隊伍名稱:駭行隊
總決賽獎項:二等獎

1.摘要

????隨著信息技術的發展,AGV(Automated Guided Vehicle,AGV)無人自動導航小車已被廣泛應用于智能制造、智慧物流等場景。AGV搬運車的導航系統主要利用視覺、激光雷達等傳感器,其主控系統大多使用多個芯片及其復雜嵌入式系統實現,成本高、功耗大、實時性差。為了解決這一問題,本設計在Xilinx FPGA平臺上構建了ARM-M3軟核,設計了加速雙目視差圖像計算的SOC及相關控制外設,驗證了單個芯片引導AGV小車的基本功能。本設計主要工作體現在如下幾個方面:
????1) 在Xilinx Artix XC7A200T平臺上構建了ARM-M3微處理器及相關外設。通過OV5640雙目相機進行圖像采集,經協處理器加速,ARM-M3微處理器分析周圍的環境進行路徑規劃最終產生PWM信號驅動小車進行運動。
????2)在硬件方面,本設計自制了OV5640雙目相機及SiC780碳化硅電機驅動板。通過對雙目視覺的原理進行分析,自制的雙目相機選用了平行式雙目立體視覺模式作為設計方案。得益于小車使用的麥克納姆輪全向移動平臺及自制的大電流碳化硅驅動板,小車可以自由靈活地進行各種運動。
????3)在算法方面,本設計對傳統的立體匹配算法進行了并行優化,使得算法的運行速度得到了極大地提升,最終實現了資源消耗、功耗、運行速度三者較好的平衡。為了消除圖像的徑向畸變、傾斜畸變及切向畸變,本設計采用了張正友標定法對雙目相機進行標定和校正。利用Matlab的自動標定工具Stereo Camera Calibrator App得到了相機的內外參數并代入校正算法最終實現了圖像的校正。
????4)在測試方面,本文分析了傳統立體匹配算法中存在的特征匹配耗時過長、匹配錯誤較多的問題,并在樹莓派3B以及PC機進行了相關的對比實驗。
????5)在應用場景方面,采集視頻數據自行構建二維碼數據集,使用TensorFlow訓練定點卷積神經網絡,利用HLS構建CNN IP核,使之具備二維碼檢測能力。

2.系統功能介紹

2.1 總體介紹

????本作品的目標是在ARM公司提供的ARM CortexM3 DesignStart RTL Eval處理器IP的基礎上,設計AGV小車自主視覺避障專用SOC,開發出能夠感知障礙物的雙目深度視覺協處理器。
在這里插入圖片描述

設計內容包括:

  • 開發了基于BM(Block Maching)算法的雙目立體匹配智能協處理器;
  • 設計并制作了OV5640雙目立體相機電路板 ,及雙目相機視頻采集Verilog驅動IP;
  • 設計了用于顯示參數和圖像的LCD 驅動;
  • 設計制作了運動控制模塊驅動板,及相關PWM驅動;
  • 控制具備全位移動能力的麥克納姆車進行避障演示。
  • 構建CNN IP核,使之具備二維碼檢測能力。

在這里插入圖片描述

2.2 系統流程

本系統在Xilinx FPGA Artix XC7A200T上構建ARM Cortex-M3處理器,搭配自行設計的OV5640雙目相機采集視頻并利用VDMA存入DDR中。深度加速模塊根據相機標定參數進行畸變矯正和立體匹配,并將所得的視差圖進行緩存。M3軟核從DDR中讀取視差圖,計算與前方障礙的相對距離并進行路徑規劃。最后讀取幀率數據,將相機圖像,視差結果,運動方向和圖像幀率在LCD上顯示,并根據規劃結果控制小車。
在這里插入圖片描述

3.系統架構

3.1 架構簡介

系統主要由視頻采集、圖像處理、實時顯示和運動控制四個模塊組成。
在這里插入圖片描述

??A、視頻采集模塊由相機采集、寄存器配置、視頻流轉換三個子模塊構成,實現對自行設計的雙目相機分辨率和成像參數配置,并將采集數據傳輸到圖像處理模塊。
??B、圖像處理模塊由配置為高性能模式的AXI連接器將VDMA、幀率計數器、深度加速核以及OSD結果呈現四個子模塊互相連接,實現視差圖計算和幀率計數功能,最后由結果呈現模塊進行匯總傳遞給顯示模塊進行顯示。
??C、顯示模塊由視頻流轉換、視頻時序控制器、動態時鐘、和VGA顯示四個子模塊構成。根據高性能視頻系統參考設計搭建視頻顯示模塊的結構和參數配置。視頻時序控制器產生1080p對應的行場同步信號交由視頻流轉換子模塊輸出到VGA顯示模塊,動態時鐘可由用戶自行配置來驅動VGA顯示模塊以適配不同的屏幕分辨率。在上述幾個模塊的協作下實現分辨率為1080p刷新率為60Hz的圖像和運行參數顯示。
??D、運動控制模塊主要由ARM-M3核、UART、GPIO、PWM子模塊等模塊構成。M3核讀取DDR中深度加速模塊的結果進行簡單計算,實現對前方障礙物距離的估計,從而進行路徑規劃。最后讀取視頻采集模塊和深度輸出模塊的幀率數據同小車運行方向一起輸出到結果呈現模塊和UART串口 ,實現實時運行參數的呈現。

3.2 軟硬功能劃分

????相較于傳統單片機串行采集相機數據,傳輸單個像素進行顯示,根據定時器中斷產生PWM,以及在PC機上都難以實現的穩定視差圖計算輸出在本系統中都由硬件實現,極大減輕了CPU負擔。
????軟件部分主要在Keil中由C語言實現,主要用于初始化各個外設,配置相機寄存器。初始化完成后讀取幀率計數模塊數據和深度加速模塊的結果,根據公式進行簡單的四則運算完成對距離的估計。根據估計結果配置PWM模塊和顯示模塊的寄存器實現運動控制和實時顯示。

3.3 外設掛載

????本系統的中央處理單元是由ARM公司提供的ARM CortexM3 DesignStart RTL Eval,整個系統及外設部署在Xilinx xc7a200tfbg484 FPGA平臺上。本系統的主要由Cortex-M3軟核,OV5640雙目攝像頭模塊,深度加速模塊,DDR3內存控制器,VGA顯示器,AHB總線矩陣、AXI總線及APB低速外設等相關模塊組成,詳細框圖如下圖所示。
在這里插入圖片描述

4.模塊及系統功能仿真與測試

4.1 相機測試仿真

????OV5640攝像頭的寄存器配置由M3軟核控制GPIO模擬SCCB實現,使用DSLogic邏輯分析儀捕獲引腳電平,其配套軟件DSView可以解析與SCCB兼容的IIC協議,顯示不同電平組合對應的命令和數據。
在這里插入圖片描述

4.2 加速模塊仿真

在這里插入圖片描述

4.3 CNN二維碼檢測

????二維碼的圖案相較于自然場景具有更簡單的結構和紋理,本設計針對二維碼圖像的這一特點,構建了一個簡單的CNN網絡,該CNN網絡包括三個卷積層、三個池化層和兩個全連接層。
在這里插入圖片描述

????輸入的圖像通過不同的卷積核產生不同的特征圖像用于提取目標不同的特征值。經過卷積操作,可以完成對輸入圖像的降維和特征提取。為了進一步降低特征圖的維度并減少FPGA資源消耗,每一個卷積層后還需要加上一個池化層來減少數據的空間大小并控制過擬合。
????全連接層是一個矩陣乘法,相當于一個特征空間變換,可以把有用的信息提取并整合。全連接的主要目標是維度變換,將高維的數據變成低維的數據。
????經過上述運算之后,可以得到輸入圖像中含有二維碼的概率。

4.4 模塊和系統的整體測試結果

????在室外放置兩個紙箱作為路徑障礙來進行系統的整體測試。下圖節選自視頻中小車對第二個障礙物進行避障操作參考圖中兩個障礙物的位置可知,在前進過程中前方物體距離太近時進行避障操作。當障礙物不再位于小車正前方時繼續前進,達到避障的效果。
在這里插入圖片描述

5.參賽體會

????通過本次比賽我們對基于ARM核的SOC設計有了一個初步的認識。通過ARM核+協處理器的方式使得整個系統在計算深度圖像時的圖像采集性能、功耗、成本優于常見的嵌入式系統及一般性能的PC機。相較于傳統單片機串行采集相機數據,傳輸單個像素進行顯示,根據定時器中斷產生PWM,以及在PC機上都難以實現的穩定視差圖計算輸出在本系統中都由硬件實現,極大減輕了CPU負擔。
????本設計使用的FPGA芯片是Xilinx FPGA Artix XC7A200T。在參賽的過程中我們發現,當LUT的消耗大于10W,用量大于70%時,布線所用時長將成倍的增加,時序也將很難收斂。

作品內容來源于駭行隊,非開源,轉載請標明出處。歡迎大家參加極術社區組織的有獎征集|秀出你的集創賽作品風采,免費電子產品等你拿~活動,10月1日截止~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/162351.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/162351.shtml
英文地址,請注明出處:http://en.pswp.cn/news/162351.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

21款奔馳GLC260L升級HUD抬頭顯示 平視儀表信息

隨著科技飛速地發展,從汽車領域就可以看出,尤其是汽車的抬頭顯示器,一經推出就吸引了很多的車主。 升級HUD抬頭顯示,HUD與汽車系統進行完整的數據信息連接,整合成大數據,然后將一些重要信息映射到車窗玻璃…

中低壓MOSFET 2N7002W 60V 300mA 雙N通道 SOT-323封裝

2N7002W小電流雙N通道MOSFET,電壓60V電流300mA,采用SOT-323封裝形式。超高密度電池設計,適用于極低的ros (on),具有導通電阻和最大直流電流能力,ESD保護。可應用于筆記本中的電源管理,電池供電系統等產品應…

VUE3+Springboot實現SM2完整步驟

一.VUE3代碼實現 1.安裝依賴 npm install --save sm-crypto 2.導入sm2 const sm2 require(sm-crypto).sm2 3.定義公鑰私鑰 var privateKey "私鑰";//解密使用 var publicKey "公鑰";//加密使用 4.設置加密模式 //cipherMode [加密模式 C1C3C2:1,…

2023亞太杯數學建模競賽C題思路分析+代碼+論文

C題:The Development Trend of New Energy Electric Vehicles in China中國談新能源電動汽車的發展趨勢 新能源汽車是指采用先進的技術原理、新技術和新結構,以非常規車用燃料為動力來源(非常規車用燃料是指除汽油和柴油以外的燃料),并集成了…

通過Everything 建立HTTP服務器時指定文件夾共享

在局域網傳輸文件,高效傳輸,不限文件大小 1、安裝Everything 2、在Everything開啟HTTP服務 【工具】—>>【選項】—>>【HTTP服務】啟用HTTP服務器,設置HTTP服務器用戶名和密碼 3、查看網絡信息 打開服務端電腦的【命令提示…

SpringCache使用詳解

SpringCache 1.新建測試項目SpringCache2.SpringCache整合redis2.1.Cacheable2.2.CacheEvict2.3.Cacheput2.4.Caching2.5.CacheConfig 3.SpringCache問題4.SpringCache實現多級緩存 1.新建測試項目SpringCache 引入依賴 <dependencies><dependency><groupId&g…

el-table如何動態增加列

el-table如何動態添加列&#xff1a; 1. 將數據從列表中拋出來直接放到對象中&#xff1a; data.forEach(el > {el.shipList.forEach(item > {el[item.FieldTag] item.DateTimeValue;});}); 2. 網頁&#xff1a; planFormList是列表內容&#xff0c;循環出來當做表頭。…

內褲洗衣機有用嗎?口碑最好的小型洗衣機

想必各位小伙伴都知道我們的貼身衣物&#xff0c;不可以與其他衣服一起在洗衣機中清洗&#xff0c;每次都需要把內衣褲挑選出來手洗&#xff0c;但是我們每天都要上廁所&#xff0c;難免會沾上污漬和細菌&#xff0c;我們在用手搓洗的過程中很難把細菌給清除掉&#xff0c;所以…

ios打包,證書獲取

HBuilderX 打包ios界面&#xff1a; Bundle ID(AppID)&#xff1a; 又稱應用ID&#xff0c;是每一個ios應用的唯一標識&#xff0c;就像一個人的身份證號碼&#xff1b; 每開發一個新應用&#xff0c;首先都需要先去創建一個Bundle ID Bundle ID 格式&#xff1a; 一般為&…

用Python寫了一個貪吃蛇大冒險小游戲

一、游戲簡介 1.1 游戲操作及游戲規則 &#xff08;1&#xff09;游戲開始后&#xff0c;通過鍵盤上下左右鍵控制貪吃蛇移動尋找食物&#xff1b; &#xff08;2&#xff09;貪吃蛇每吃一個食物&#xff0c;身長會增加一個單位&#xff1b; &#xff08;3&#xff09;在正常模…

CSDN文章保存為MD文檔(二)

免責聲明 文章僅做經驗分享用途&#xff0c;利用本文章所提供的信息而造成的任何直接或者間接的后果及損失&#xff0c;均由使用者本人負責&#xff0c;作者不為此承擔任何責任&#xff0c;一旦造成后果請自行承擔&#xff01;&#xff01;&#xff01; import sys sys.path.a…

【HarmonyOS】 低代碼平臺組件拖拽使用技巧之登錄組件

【關鍵字】 HarmonyOS、低代碼平臺、組件拖拽、登錄組件、代碼編輯器 1、寫在前面 前面我們介紹了低代碼中堆疊容器、滾動容器、網格布局、頁簽容器以及一些常用容器和組件的拖拽使用方法&#xff0c;本篇我們來介紹一個新的組件&#xff0c;這個組件是屬于業務組件——登錄組…

Modbus轉Profinet網關:PLC與天信流量計通訊的經典案例

無論您是PLC或工業設備的制造商&#xff0c;還是工業自動化系統的維護人員&#xff0c;可能會遇到需要將不同協議的設備連接組合并通訊的情況&#xff0c;Modbus和Profinet是現代工業自動化中常見的兩種通信協議&#xff0c;在工業控制領域中被廣泛應用。 在這種情況絕大多數會…

快速上手Banana Pi BPI-M4 Zero 全志科技H618開源硬件開發開發板

Linux[編輯] 準備[編輯] 1. Linux鏡像支持SD卡或EMMC啟動&#xff0c;并且會優先從SD卡啟動。 2. 建議使用A1級卡&#xff0c;至少8GB。 3. 如果您想從 SD 卡啟動&#xff0c;請確保可啟動 EMMC 已格式化。 4. 如果您想從 EMMC 啟動并使用 Sdcard 作為存儲&#xff0c;請確…

《微信小程序開發從入門到實戰》學習二十六

3.4 開發參與投票頁面 參與投票頁面同樣需要收集用戶提交的信息&#xff0c;哪個用戶在哪個投票選擇了什么選項&#xff0c;因此它也是一個表單頁面 3.4.1 如何獲取投票信息 假設用戶A在投票創建頁面后填了表單&#xff08;1.創建投票&#xff09;&#xff0c;用戶A 點了提交…

docker容器生成鏡像并上傳個人賬戶

登錄到 Docker Hub 賬戶&#xff1a; docker login這將提示你輸入你的 Docker Hub 賬戶名和密碼。 為容器創建鏡像 docker commit <容器名或容器ID> <你的用戶名>/<鏡像名:標簽>例子 docker commit my_container yourusername/my_image:latest推送鏡像到…

山西電力市場日前價格預測【2023-11-24】

日前價格預測 預測說明&#xff1a; 如上圖所示&#xff0c;預測明日&#xff08;2023-11-24&#xff09;山西電力市場全天平均日前電價為415.13元/MWh。其中&#xff0c;最高日前電價為685.26元/MWh&#xff0c;預計出現在18:00。最低日前電價為296.84元/MWh&#xff0c;預計…

Web實戰:基于Django與Bootstrap的在線計算器

文章目錄 寫在前面實驗目標實驗內容1. 創建項目2. 導入框架3. 配置項目前端代碼后端代碼 4. 運行項目 注意事項寫在后面 寫在前面 本期內容&#xff1a;基于Django與Bootstrap的在線計算器 實驗環境&#xff1a; vscodepython(3.11.4)django(4.2.7)bootstrap(3.4.1)jquery(3…

美國DDoS服務器:如何保護你的網站免遭攻擊?

?  在當今數字化時代&#xff0c;互聯網已經成為人們生活中不可或缺的一部分。隨著互聯網的普及和發展&#xff0c;網絡安全問題也日益嚴重。其中&#xff0c;DDoS攻擊是目前最常見和具有破壞性的網絡攻擊之一。那么&#xff0c;如何保護你的網站免遭DDoS攻擊呢?下面將介紹…

C#開發的OpenRA游戲之屬性Selectable(9)

C#開發的OpenRA游戲之屬性Selectable(9) 在游戲里,一個物品是否具有選中的能力,是通過添加屬性Selectable來實現的。當一個物品不能被用戶選取,那么就不要添加這個屬性。 這個屬性定義在下面這段描述里: ^Selectable: Selectable: SelectionDecorations: WithSpriteCon…