如何在 3D 環(huán)境中仿真自動(dòng)駕駛汽車(chē)
今天要給大家分享的是如何在 3D 環(huán)境中仿真自動(dòng)駕駛汽車(chē)。
本文引用地址:http://dyxdggzs.com/article/202106/426616.htm在本文中,我們將演示一種在封閉環(huán)路中自動(dòng)駕駛汽車(chē)的方法。我們的任務(wù)是在未知的環(huán)境中駕駛汽車(chē),避免與錐桶碰撞,確保完成必要的圈數。
場(chǎng)景創(chuàng )建
第一步是創(chuàng )建一個(gè)由車(chē)輛,賽道和錐桶組成的3D仿真環(huán)境。Vehicle Dynamics Blockset工具箱帶有預建的 3D 場(chǎng)景,以仿真和可視化Simulink中建模的車(chē)輛。這些 3D 場(chǎng)景是使用 Epic Games 的虛幻引擎可視化的。
由于當前問(wèn)題需要自定義場(chǎng)景,因此我們使用了虛幻編輯器和用于虛幻4引擎工程的 Vehicle Dynamics Blockset 支持包來(lái)構建場(chǎng)景。
要了解如何自定義場(chǎng)景(圖2),請按照文檔中說(shuō)明的步驟進(jìn)行操作。當然,您也可以使用 RoadRunner 設計 3D 場(chǎng)景以進(jìn)行自動(dòng)駕駛的仿真。
圖1 虛幻編輯器中的自定義場(chǎng)景
圖2 創(chuàng )建自定義場(chǎng)景的步驟
第一圈:環(huán)境建圖
圖3 用于環(huán)境建圖的 Simulink 模型
下一個(gè)任務(wù)是環(huán)境建圖。如上一節所述,無(wú)人駕駛車(chē)輛處于未知環(huán)境中,該環(huán)境由放置在賽道兩側的錐桶組成。為了檢測錐桶并為第一圈生成參考路徑,我們建立了 Simulink 模型,如圖3所示。圖4顯示了該模型在第一圈中執行的步驟:
圖4 環(huán)境建圖的框圖表達
● 激光雷達安裝:激光雷達的目的是測量車(chē)輛到錐桶的距離。在 3D 仿真環(huán)境中,Simulation 3D Lidar模塊提供了激光雷達傳感器。使用 Epic Games 的虛幻引擎渲染環(huán)境, 該模塊返回具有指定視場(chǎng)和角分辨率的點(diǎn)云。
● 錐桶檢測(圖6):錐桶檢測算法的目標是對屬于一個(gè)錐桶的所有點(diǎn)進(jìn)行聚類(lèi),并確定錐桶的位置。這是通過(guò)計算點(diǎn)云中相鄰點(diǎn)之間的距離來(lái)完成的。屬于同一個(gè)錐桶的點(diǎn)彼此靠近,而錐桶彼此相距相對較遠。聚類(lèi)后,錐桶的中點(diǎn)是錐桶中所有點(diǎn)的位置的平均值。
圖5 激光雷達處理和控制
圖6 顯示在點(diǎn)云中檢測到的錐桶
● 駕駛控制:駕駛控制器算法基于理解錐桶在激光雷達點(diǎn)云中的位置。該算法有兩個(gè)目標:
o 確定車(chē)輛前方的兩個(gè)最重要的錐桶
o 避免撞到任何錐桶
這是通過(guò)找到兩個(gè)最接近的錐桶并計算兩個(gè)錐桶的中點(diǎn)來(lái)完成的。該算法生成加速,轉向指令通往該中點(diǎn)。該算法還將車(chē)輛的最大速度限制為一個(gè)預設值。
● 車(chē)輛動(dòng)力學(xué)(圖7):車(chē)輛動(dòng)力學(xué)模型由車(chē)身,簡(jiǎn)化的動(dòng)力總成,傳動(dòng)系統,縱向車(chē)輪和轉向運動(dòng)學(xué)組成。該模型的目的是根據轉向,加速和減速命令來(lái)計算車(chē)輛的位置和方向。Simulation 3D Vehicle with Ground Following和 Simulation 3D Scene Configuration用于在虛幻引擎中設置 3D 仿真環(huán)境。
圖7 車(chē)輛模型
● 輸出:運行仿真后,激光雷達成功檢測到錐桶。此外,車(chē)輛繪制環(huán)境圖并生成參考軌跡。車(chē)輛以最大 8m/s 的速度緩慢行駛。
第二圈:跟隨參考軌跡
在第二圈中,車(chē)輛跟隨從第一圈仿真中獲得的參考路徑。圖8 顯示了 Simulink 模型。與上一個(gè)模型相比,在此模型中,我們刪除了激光雷達模塊,并增加了縱向和橫向控制器。
圖8 用于跟隨參考軌跡的 Simulink 模型
現在,這是一個(gè)經(jīng)典的閉環(huán)控制系統問(wèn)題,控制器的任務(wù)是輸出所需的轉向命令,加速命令和減速命令,以更高的速度跟隨參考路徑。
圖9 第二圈的閉環(huán)控制框圖
● 橫向控制器:Pure pursuit 控制器用于車(chē)輛的橫向控制。為了在 Simulink 中實(shí)現控制器,我們使用了 Pure Pursuit 模塊來(lái)瞄準目標方向。此外,使用車(chē)輪轉角公式將目標方向轉換為所需的轉向角。要了解有關(guān)使用 Pure pursuit 控制器的車(chē)輛路徑跟隨的更多信息,。
圖10 Pure pursuit 控制器
● 縱向駕駛員模塊用于調節車(chē)輛的速度。具體來(lái)說(shuō),它是一個(gè) PI 控制器,可為參考速度生成執行信號。
圖11 縱向駕駛員
請注意,目前,我們通過(guò)使用查表來(lái)定義不同區域的速度,從而簡(jiǎn)化了速度曲線(xiàn)的創(chuàng )建過(guò)程。但是,更推薦使用 Velocity Profiler來(lái)自動(dòng)化速度曲線(xiàn)生成過(guò)程。
● 結果:圖12 顯示了仿真軌跡和參考軌跡的比較。從結果可以明顯看出,橫向控制器成功跟隨了參考路徑。除了橫向控制外,縱向駕駛員還可以調節所需的速度。
圖12 第二圈獲得的車(chē)輛軌跡
總結
這篇文章展示了 MathWorks 工具如何在存在障礙物的情況下用于在封閉賽道上自主駕駛車(chē)輛。
隨著(zhù)汽車(chē)行業(yè)的進(jìn)步和發(fā)展,各種學(xué)生競賽中也開(kāi)始引入了無(wú)人駕駛類(lèi)別,中國大學(xué)生方程式無(wú)人車(chē)(FSAC)競賽就是其中之一。該類(lèi)比賽的目的是讓同學(xué)們利用不同學(xué)科知識設計和制造可以自動(dòng)行駛的汽車(chē)。使用 MATLAB 和 Simulink,您可以設計自動(dòng)駕駛系統功能,包括傳感,路徑規劃,傳感器融合和控制系統。
評論