康謀方案 | AVM合成數據仿真驗證方案

隨著自動駕駛技術的快速發展,仿真軟件在開發過程中扮演著越來越重要的角色。仿真傳感器與環境不僅能夠加速算法驗證,還能在安全可控的條件下進行復雜場景的重復測試。

本文將分享如何利用自動駕駛仿真軟件配置仿真傳感器與搭建仿真環境,并對腳本進行修改,優化和驗證4個魚眼相機生成AVM(Around View Monitor)合成數據的流程。通過這一過程,一同深入體驗仿真軟件的應用潛力!

一、流程概述

AVM是一種通過多相機實現車輛周圍環境的實時監控和顯示的系統,廣泛應用于自動駕駛和高級駕駛輔助系統(ADAS)的環境感知中。本文基于仿真軟件與腳本生成AVM圖像的流程如下所示:

圖1:基于aiSim構建AVM圖像流程

首先,在Unreal Engine中配置標定投影參數所需的地圖,并在仿真器中為車輛部署4個方向的魚眼相機;

其次,基于相機內參進行去畸變,并記錄求解投影矩陣所需的關鍵參考值,例如AVM畫幅尺寸、參考點的相對坐標、參考區域的大小與位置、車輛與參考區域的距離等;

隨后,在完成了角點提取預處理的標定圖像中快速選取參考點,生成單方向的BEV視圖,重復4次完成標定去畸變

后文將對每個流程進行具體描述。

二、仿真傳感器與環境配置

對于AVM功能而言,通常需要配備4個及以上的大FOV相機以拍攝車輛周圍的圖像,在此基礎上還可配備雷達以更好地獲取車輛周圍的障礙物信息。

圖2:aiSim相機傳感器障礙物真值輸出

由于本文所使用仿真軟件的相機傳感器可以直接輸出識別對象(車輛、行人等)的2D、3D邊界框真值,所以只需配置4個方向的魚眼相機即可滿足整體需求:

(1)前置魚眼相機:安裝在前方車標附近,約15°俯視角;

(2)后置魚眼相機:安裝在后備箱附近,約25°俯視角;

(3)左、右側魚眼相機:分別安裝在左右后視鏡下方,約40°俯視角與相對車縱軸約100°的偏航角。

圖3:環視OpenCV魚眼相機傳感器配置

除了傳感器的配置,考慮到腳本是通過選取地面點,求解相機到地面的投影矩陣,并轉換生成BEV視圖進行組合,所以還需要構建一張特征明顯、易于辨認標定效果的地圖。

本文所使用的仿真軟件支持在Unreal Engine中進行地圖編輯與導出,并帶有一定數量的3D資產庫,因此可以基于一張基礎室內地圖,布置一定數量的正方形黑白標定板,根據需要搭建一個標定地圖:

圖4:基于aiSim插件的Unreal Engine地圖編輯

首先,在Unreal Engine中打開項目,并進入室內合成地圖;

然后,從3D資產庫中選擇100cm×100cm×5cm的標定板靜態網格體,拖放到地圖中;

隨后,通過直接拖動模型上的變換工具或者修改側邊欄中的變換屬性框調整標定板的位置與姿態;

進而,配置標定板的材質,以黑色、白色的交替順序鋪展標定板;

最終形成一個長方形的標定區域。

圖5:編輯完成后的地圖效果參考

批量鋪展的過程可以拆分為對2×2的標定板組合實施橫向與縱向陣列,完成后的地圖如圖所示,整體是一個6m×11m的矩形區域,車輛放置在中間2m×5m的矩形區域中。

三、圖像處理與AVM合成驗證集

如前文所述,本文使用的AVM腳本是基于車輛四周,位于相鄰兩個相機重疊視野的標定物,通過選取參考投影區域實現魚眼相機到BEV的轉化,以前視魚眼相機為例:

圖6:投影區域及BEV轉化示意圖


首先,由于是仿真傳感器的標準OpenCV魚眼相機模型,焦距、中心像素位置、畸變參數等內參均已知,可直接使用OpenCV的去畸變函數實現去畸變,如圖6的(c)到(d)所示;

其次,設定圖6(a)與(b)所示關鍵參數,確定圖像上的點對應的真實世界位置,進而計算尺度:

(1)AVM視野總寬total_width = 2 × shift_width + 6 × board_size;

(2)AVM視野總長total_height = 2 × shift_height + 11 × board_size;

(3)board_size為標定板邊長,此處為100,單位cm;

(4)shift_width與shift_height為視野延伸距離,單位cm;

(5)左上角投影點projection_point_0:(shift_width + 100, shift_height),以此類推右上角、左下角、右下角投影點坐標,形成投影區域;

(6)inner_height與inner_width為投影區域相對車輛的橫向、縱向距離,單位cm,由此可以推算出自車所處區域;

而后,對去畸變相機圖像追加Shi-Tomasi角點提取處理,并增加半自動采點的模式切換,自動選取鼠標點擊像素位置周圍歐式距離最小的角點,保障準確度的同時提升效率;

最后,如圖6(d)選取4個角點,形成與(b)對應的參考投影區域,輸出的BEV視圖如圖6(e)所示。

圖7:環視BEV合成AVM示例

以此類推可以得到4個方向的BEV視圖及對應的投影參數,結合車輛圖層作為覆蓋,即可生成對應傳感器布置下的二維AVM合成圖像,如圖7所示,其中每個像素分辨率為1cm2。

圖8:傳感器外參優化示例

通過仿真軟件,一方面可以在控制算法不變的情況下尋找出更優的傳感器外參布局,另一方面也可以在控制傳感器不變的情況下在多種不同場景驗證,進而迭代優化AVM算法的表現。結合相機傳感器自帶的標注信息,后續也可以進行包括障礙物識別在內的更多功能驗證。

圖9:不同場景下的AVM合成數據

四、總結與展望

本文介紹了基于aiSim仿真軟件生成AVM合成數據的完整流程,包括傳感器與地圖的配置、圖像處理與BEV視圖生成以及最終的AVM合成驗證。

不難看出,仿真軟件的高效性與靈活性保障了在安全可控的環境中快速驗證算法性能的可行性,并可以通過多場景測試與參數優化改進算法,最終提升其綜合表現。


我是分享自動駕駛技術的康謀

歡迎關注互動

期待與您的進一步交流

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

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

相關文章

深入解析 Java Stream API:從 List 到 Map 的優雅轉換!!!

🚀 深入解析 Java Stream API:從 List 到 Map 的優雅轉換 🔧 大家好!👋 今天我們來聊聊 Java 8 中一個非常常見的操作:使用 Stream API 將 List 轉換為 Map。🎉 具體來說,我們將深入…

配置銀河麒麟V10高級服務器操作系統安裝vmware tools。在您的計算機上尚未找到用于此虛擬機的 VMwareTools。安裝將無法繼續。

配置銀河麒麟V10高級服務器操作系統安裝vmware tools 下載VMwareTools安裝包 通過網盤分享的文件:VMwareTools-10.3.25-20206839.tar.gz 鏈接: https://pan.baidu.com/s/1EgMcqbIEur4iyHu2l0v_gQ?pwdrc8m 提取碼: rc8m 通過工具上傳到指定目錄,然后切換…

突破 HTML 學習瓶頸:表格、列表與表單的學習進度(一)

HTML 學習之困,如何破局? 作為一名熱衷于網頁開發的博主,在 HTML 的學習道路上,我可謂是 “過關斬將”,但也遇到過不少 “硬茬”。起初,當我滿心歡喜地以為掌握了基本的 HTML 標簽,就能輕松搭建…

理一理Mysql日期

在 MySQL 數據庫中,關于日期和時間的類型主要有以下幾種: 1. **DATE**: 僅存儲日期部分,格式為 YYYY-MM-DD,例如 2023-10-31。 2. **TIME**: 僅存儲時間部分,格式為 HH:MM:SS,例如 14:30:00。 3. **DATE…

CEF 多進程模式時,注入函數,獲得交互信息

CEF 控制臺添加一函數,枚舉 注冊的供前端使用的CPP交互函數有哪些-CSDN博客 上篇文章,是在模擬環境,單進程中設置的,這篇文章,將其改到正常多進程環境中設置。 對應于工程中的 CEF_RENDER項目 一、多進程模式中,改寫 修改步驟 1、注入函數 client_app_render.cpp 在…

C++ 介紹STL底層一些數據結構

c 標準模板庫中&#xff0c;set和map的底層實現通常基于紅黑樹&#xff0c;然們都是平衡二叉搜索樹(Balanceed Binary Serach Tree&#xff09;的一種,這種結構保證了 插入&#xff0c;刪除&#xff0c;查找的時間復雜度為O(log n)比普通二叉搜索樹更高效。 set set<T>…

在 Kubernetes(k8s)部署過程中常見的問題

在 Kubernetes(k8s)部署過程中,常見的問題主要包括以下幾類,以下是具體示例及簡要說明: 1. 資源配額不足(Resource Quota) 現象:Pod 處于 Pending 狀態,事件日志顯示 Insufficient CPU/Memory。 原因: 節點(Node)資源不足,無法滿足 Pod 的 requests 或 limits。 命…

Android Window浮窗UI組件使用JetPack

目前接手的一個業務&#xff0c;應用不是用Activity/Fragment作為界面組件&#xff0c;而是用Window浮窗的形式顯示&#xff0c;并且浮窗有很多種類型&#xff0c;每一種類型對應一類業務。那么怎么使用Jatpack的相關特性來設計架構并提高開發效率呢&#xff1f;分下面幾個模塊…

基于WebRtc,GB28181,Rtsp/Rtmp,SIP,JT1078,H265/WEB融合視頻會議接入方案

智能融合視頻會議系統方案—多協議、多場景、全兼容的一站式視頻協作平臺 OvMeet,LiveMeet針對用戶?核心痛點實現功能與用戶價值 &#xff0c;Web平臺實現MCU多協議&#xff0c;H265/H264等不同編碼監控&#xff0c;直播&#xff0c;會議&#xff0c;調度資源統一融合在一套界…

深入淺出理解LLM PPO:基于verl框架的實現解析之一

1. 寫在前面 強化學習(Reinforcement Learning,RL)在大型語言模型(Large Language Model,LLM)的訓練中扮演著越來越重要的角色。特別是近端策略優化(Proximal Policy Optimization,PPO)算法,已成為對齊LLM與人類偏好的主流方法之一。本文將基于verl框架(很多復刻De…

卷積神經網絡 - 匯聚層

卷積神經網絡一般由卷積層、匯聚層和全連接層構成&#xff0c;本文我們來學習匯聚層。 匯聚層(Pooling Layer)也叫子采樣層(Subsampling Layer)&#xff0c;其作用是進 行特征選擇&#xff0c;降低特征數量&#xff0c;從而減少參數數量。 卷積層雖然可以顯著減少網絡中連接的…

vue使用element-ui自定義樣式思路分享【實操】

前言 在使用第三方組件時&#xff0c;有時候組件提供的默認樣式不滿足我們的實際需求&#xff0c;需要對默認樣式進行調整&#xff0c;這就需要用到樣式穿透。本篇文章以vue3使用element-ui的Tabs組件&#xff0c;對Tabs組件的添加按鈕樣式進行客制化為例。 確定需要修改的組…

【工具分享】vscode+deepseek的接入與使用

目錄 第一章 前言 第二章 獲取Deepseek APIKEY 2.1 登錄與充值 2.2 創建API key 第三章 vscode接入deepseek并使用 3.1 vscode接入deepseek 3.2 vscode使用deepseek 第一章 前言 deepseek剛出來時有一段時間余額無法充值&#xff0c;導致小編沒法給大家發完整的流程&…

【藍橋杯速成】| 9.回溯升級

題目一&#xff1a;組合綜合 問題描述 39. 組合總和 - 力扣&#xff08;LeetCode&#xff09; 給你一個 無重復元素 的整數數組 candidates 和一個目標整數 target &#xff0c;找出 candidates 中可以使數字和為目標數 target 的 所有 不同組合 &#xff0c;并以列表形式返…

【C++進階】深入探索類型轉換

目錄 一、C語言中的類型轉換 1.1 隱式類型轉換 1.2. 顯式類型轉換 1.3.C語言類型轉換的局限性 二、C 類型轉換四劍客 2.1 static_cast&#xff1a;靜態類型轉換&#xff08;編譯期檢查&#xff09; 2.2 dynamic_cast&#xff1a;動態類型轉換&#xff08;運行時檢查&…

代碼隨想錄_動態規劃

代碼隨想錄 動態規劃 509.斐波那契數 509. 斐波那契數 斐波那契數 &#xff08;通常用 F(n) 表示&#xff09;形成的序列稱為 斐波那契數列 。該數列由 0 和 1 開始&#xff0c;后面的每一項數字都是前面兩項數字的和。也就是&#xff1a; F(0) 0&#xff0c;F(1) 1 F(n…

計算機基礎:編碼03,根據十進制數,求其原碼

專欄導航 本節文章分別屬于《Win32 學習筆記》和《MFC 學習筆記》兩個專欄&#xff0c;故劃分為兩個專欄導航。讀者可以自行選擇前往哪個專欄。 &#xff08;一&#xff09;WIn32 專欄導航 上一篇&#xff1a;計算機基礎&#xff1a;編碼02&#xff0c;有符號數編碼&#xf…

設計模式(創建型)-單例模式

摘要 在軟件開發的世界里&#xff0c;設計模式是開發者們智慧的結晶&#xff0c;它們為解決常見問題提供了經過驗證的通用方案。單例模式作為一種基礎且常用的設計模式&#xff0c;在許多場景中發揮著關鍵作用。本文將深入探討單例模式的定義、實現方式、應用場景以及可…

基于FPGA頻率、幅度、相位可調的任意函數發生器(DDS)實現

基于FPGA實現頻率、幅度、相位可調的DDS 1 摘要 直接數字合成器( DDS ) 是一種通過生成數字形式的時變信號并進行數模轉換來產生模擬波形(通常為正弦波)的方法,它通過數字方式直接合成信號,而不是通過模擬信號生成技術。DDS主要被應用于信號生成、通信系統中的本振、函…

本地JAR批量傳私服

在有網絡隔離的環境下&#xff0c;Maven項目如果沒有搭建私服就得把用到的通用組件通過U盤在每個組員間拷貝來拷貝去。非常的麻煩跟低效。搭建私服&#xff0c;如果通用組件很多的時候手工一個一個上傳更是非常的麻煩跟低效&#xff1b; 我就遇上這問題&#xff0c;跟A公司合作…