如何在 3D 環(huán)境中仿真自動(dòng)駕駛汽車


場(chǎng)景創(chuàng)建


 


第一步是創(chuàng)建一個(gè)由車輛,賽道和錐桶組成的3D仿真環(huán)境。Vehicle Dynamics Blockset( https://ww2.mathworks.cn/products/vehicle-dynamics.html ) 工具箱帶有預(yù)建的 3D 場(chǎng)景,以仿真和可視化Simulink中建模的車輛。這些 3D 場(chǎng)景是使用 Epic Games 的虛幻引擎可視化的。
由于當(dāng)前問題需要自定義場(chǎng)景,因此我們使用了虛幻編輯器和用于虛幻4引擎工程的 Vehicle Dynamics Blockset 支持包來構(gòu)建場(chǎng)景。
要了解如何自定義場(chǎng)景(圖2),請(qǐng)按照文檔中說明的步驟進(jìn)行操作。當(dāng)然,您也可以使用 RoadRunner 設(shè)計(jì) 3D 場(chǎng)景以進(jìn)行自動(dòng)駕駛的仿真。

如何在 3D 環(huán)境中仿真自動(dòng)駕駛汽車的圖1

圖1. 虛幻編輯器中的自定義場(chǎng)景

如何在 3D 環(huán)境中仿真自動(dòng)駕駛汽車的圖2

圖2. 創(chuàng)建自定義場(chǎng)景的步驟


第一圈:環(huán)境建圖


 


  如何在 3D 環(huán)境中仿真自動(dòng)駕駛汽車的圖3

圖3.用于環(huán)境建圖的 Simulink 模型

下一個(gè)任務(wù)是環(huán)境建圖。如上一節(jié)所述,無人駕駛車輛處于未知環(huán)境中,該環(huán)境由放置在賽道兩側(cè)的錐桶組成。為了檢測(cè)錐桶并為第一圈生成參考路徑,我們建立了 Simulink 模型,如圖3所示。圖4顯示了該模型在第一圈中執(zhí)行的步驟:

如何在 3D 環(huán)境中仿真自動(dòng)駕駛汽車的圖4

圖4. 環(huán)境建圖的框圖表達(dá)

· 激光雷達(dá)安裝 :激光雷達(dá)的目的是測(cè)量車輛到錐桶的距離。在 3D 仿真環(huán)境中,Simulation 3D Lidar( https://ww2.mathworks.cn/help/driving/ref/simulation3dlidar.html )模塊提供了激光雷達(dá)傳感器。使用 Epic Games 的虛幻引擎渲染環(huán)境, 該模塊返回具有指定視場(chǎng)和角分辨率的點(diǎn)云。
· 錐桶檢測(cè)(圖6) :錐桶檢測(cè)算法的目標(biāo)是對(duì)屬于一個(gè)錐桶的所有點(diǎn)進(jìn)行聚類,并確定錐桶的位置。這是通過計(jì)算點(diǎn)云中相鄰點(diǎn)之間的距離來完成的。屬于同一個(gè)錐桶的點(diǎn)彼此靠近,而錐桶彼此相距相對(duì)較遠(yuǎn)。聚類后,錐桶的中點(diǎn)是錐桶中所有點(diǎn)的位置的平均值。

如何在 3D 環(huán)境中仿真自動(dòng)駕駛汽車的圖5

圖5.激光雷達(dá)處理和控制

如何在 3D 環(huán)境中仿真自動(dòng)駕駛汽車的圖6

圖6. 顯示在點(diǎn)云中檢測(cè)到的錐桶

· 駕駛控制 :駕駛控制器算法基于理解錐桶在激光雷達(dá)點(diǎn)云中的位置。該算法有兩個(gè)目標(biāo):
  • 確定車輛前方的兩個(gè)最重要的錐桶
  • 避免撞到任何錐桶
這是通過找到兩個(gè)最接近的錐桶并計(jì)算兩個(gè)錐桶的中點(diǎn)來完成的。該算法生成加速,轉(zhuǎn)向指令通往該中點(diǎn)。該算法還將車輛的最大速度限制為一個(gè)預(yù)設(shè)值。
· 車輛動(dòng)力學(xué)(圖7) :車輛動(dòng)力學(xué)模型由車身,簡(jiǎn)化的動(dòng)力總成,傳動(dòng)系統(tǒng),縱向車輪和轉(zhuǎn)向運(yùn)動(dòng)學(xué)組成。該模型的目的是根據(jù)轉(zhuǎn)向,加速和減速命令來計(jì)算車輛的位置和方向。Simulation 3D Vehicle with Ground Following( https://ww2.mathworks.cn/help/vdynblks/ref/simulation3dvehiclewithgroundfollowing.html )和 Simulation 3D Scene Configuration( https://ww2.mathworks.cn/help/vdynblks/ref/simulation3dsceneconfiguration.html )用于在虛幻引擎中設(shè)置 3D 仿真環(huán)境。

如何在 3D 環(huán)境中仿真自動(dòng)駕駛汽車的圖7

圖7.車輛模型
· 輸出:運(yùn)行仿真后,激光雷達(dá)成功檢測(cè)到錐桶。此外,車輛繪制環(huán)境圖并生成參考軌跡。車輛以最大 8m/s 的速度緩慢行駛。

第二圈:跟隨參考軌跡


 


在第二圈中,車輛跟隨從第一圈仿真中獲得的參考路徑。圖8 顯示了 Simulink 模型。與上一個(gè)模型相比,在此模型中,我們刪除了激光雷達(dá)模塊,并增加了縱向和橫向控制器。

如何在 3D 環(huán)境中仿真自動(dòng)駕駛汽車的圖8

圖8. 用于跟隨參考軌跡的 Simulink 模型

現(xiàn)在,這是一個(gè)經(jīng)典的閉環(huán)控制系統(tǒng)問題,控制器的任務(wù)是輸出所需的轉(zhuǎn)向命令,加速命令和減速命令,以更高的速度跟隨參考路徑。

如何在 3D 環(huán)境中仿真自動(dòng)駕駛汽車的圖9

圖9. 第二圈的閉環(huán)控制框圖

· 橫向控制器:Pure pursuit 控制器用于車輛的橫向控制。為了在 Simulink 中實(shí)現(xiàn)控制器,我們使用了 Pure Pursuit 模塊來瞄準(zhǔn)目標(biāo)方向。此外,使用車輪轉(zhuǎn)角公式將目標(biāo)方向轉(zhuǎn)換為所需的轉(zhuǎn)向角。要了解有關(guān)使用 Pure pursuit 控制器的車輛路徑跟隨的更多信息,請(qǐng)參考: https://ww2.mathworks.cn/help/robotics/ref/purepursuit.html

如何在 3D 環(huán)境中仿真自動(dòng)駕駛汽車的圖10

圖10. Pure pursuit 控制器

· 縱向駕駛員模塊用于調(diào)節(jié)車輛的速度( https://ww2.mathworks.cn/help/vdynblks/ref/longitudinaldriver.htmlhttps:/www.mathworks.com/help/vdynblks/ref/longitudinaldriver.html )。具體來說,它是一個(gè) PI 控制器,可為參考速度生成執(zhí)行信號(hào)。

如何在 3D 環(huán)境中仿真自動(dòng)駕駛汽車的圖11

圖11. 縱向駕駛員

請(qǐng)注意,目前,我們通過使用查表來定義不同區(qū)域的速度,從而簡(jiǎn)化了速度曲線的創(chuàng)建過程。但是,更推薦使用 Velocity Profiler( https://ww2.mathworks.cn/help/driving/ref/velocityprofiler.html )來自動(dòng)化速度曲線生成過程。
· 結(jié)果 :圖12 顯示了仿真軌跡和參考軌跡的比較。從結(jié)果可以明顯看出,橫向控制器成功跟隨了參考路徑。除了橫向控制外,縱向駕駛員還可以調(diào)節(jié)所需的速度。

如何在 3D 環(huán)境中仿真自動(dòng)駕駛汽車的圖12

圖12. 第二圈獲得的車輛軌跡


總結(jié)


 


這篇文章展示了 MathWorks 工具如何在存在障礙物的情況下用于在封閉賽道上自主駕駛車輛。您可以擴(kuò)展此方法,并利用文檔中提供的示例來設(shè)計(jì)和仿真自動(dòng)駕駛汽車: https://ww2.mathworks.cn/help/driving/examples.html

隨著汽車行業(yè)的進(jìn)步和發(fā)展,各種學(xué)生競(jìng)賽中也開始引入了無人駕駛類別, 中國大學(xué)生方程式無人車(FSAC)競(jìng)賽 就是其中之一。該類比賽的目的是讓同學(xué)們利用不同學(xué)科知識(shí)設(shè)計(jì)和制造可以自動(dòng)行駛的汽車。使用 MATLAB 和 Simulink,您可以設(shè)計(jì)自動(dòng)駕駛系統(tǒng)功能,包括傳感,路徑規(guī)劃,傳感器融合和控制系統(tǒng)。
登錄后免費(fèi)查看全文
立即登錄
App下載
技術(shù)鄰APP
工程師必備
  • 項(xiàng)目客服
  • 培訓(xùn)客服
  • 平臺(tái)客服

TOP

7
4
3