今天要給大家分享的是如何在 3D 環境中仿真自動駕駛汽車。原文是一篇在德國大學生方程式大賽網站上的博客文章:https://www.formulastudent.de/pr/news/details/article/driving-an-autonomous-vehicle-in-a-3d-simulation-environment-with-recorded-synthetic-data/。
在本文中,我們將演示一種在封閉環路中自動駕駛汽車的方法。我們的任務是在未知的環境中駕駛汽車,避免與錐桶碰撞,確保完成必要的圈數。
場景創建
第一步是創建一個由車輛,賽道和錐桶組成的3D仿真環境。Vehicle Dynamics Blockset(https://ww2.mathworks.cn/products/vehicle-dynamics.html) 工具箱帶有預建的 3D 場景,以仿真和可視化Simulink中建模的車輛。這些 3D 場景是使用 Epic Games 的虛幻引擎可視化的。 由于當前問題需要自定義場景,因此我們使用了虛幻編輯器和用于虛幻4引擎工程的 Vehicle Dynamics Blockset 支持包來構建場景。 要了解如何自定義場景(圖2),請按照文檔中說明的步驟進行操作。當然,您也可以使用 RoadRunner 設計 3D 場景以進行自動駕駛的仿真。
圖1. 虛幻編輯器中的自定義場景
圖2. 創建自定義場景的步驟
第一圈:環境建圖
圖3.用于環境建圖的 Simulink 模型
下一個任務是環境建圖。如上一節所述,無人駕駛車輛處于未知環境中,該環境由放置在賽道兩側的錐桶組成。為了檢測錐桶并為第一圈生成參考路徑,我們建立了 Simulink 模型,如圖3所示。圖4顯示了該模型在第一圈中執行的步驟:
圖4. 環境建圖的框圖表達
· 激光雷達安裝:激光雷達的目的是測量車輛到錐桶的距離。在 3D 仿真環境中,Simulation 3D Lidar(https://ww2.mathworks.cn/help/driving/ref/simulation3dlidar.html)模塊提供了激光雷達傳感器。使用 Epic Games 的虛幻引擎渲染環境, 該模塊返回具有指定視場和角分辨率的點云。· 錐桶檢測(圖6):錐桶檢測算法的目標是對屬于一個錐桶的所有點進行聚類,并確定錐桶的位置。這是通過計算點云中相鄰點之間的距離來完成的。屬于同一個錐桶的點彼此靠近,而錐桶彼此相距相對較遠。聚類后,錐桶的中點是錐桶中所有點的位置的平均值。
圖5.激光雷達處理和控制
圖6. 顯示在點云中檢測到的錐桶
· 駕駛控制:駕駛控制器算法基于理解錐桶在激光雷達點云中的位置。該算法有兩個目標:
確定車輛前方的兩個最重要的錐桶
避免撞到任何錐桶
這是通過找到兩個最接近的錐桶并計算兩個錐桶的中點來完成的。該算法生成加速,轉向指令通往該中點。該算法還將車輛的最大速度限制為一個預設值。· 車輛動力學(圖7):車輛動力學模型由車身,簡化的動力總成,傳動系統,縱向車輪和轉向運動學組成。該模型的目的是根據轉向,加速和減速命令來計算車輛的位置和方向。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)用于在虛幻引擎中設置 3D 仿真環境。
圖7.車輛模型·輸出:運行仿真后,激光雷達成功檢測到錐桶。此外,車輛繪制環境圖并生成參考軌跡。車輛以最大 8m/s 的速度緩慢行駛。
第二圈:跟隨參考軌跡
在第二圈中,車輛跟隨從第一圈仿真中獲得的參考路徑。圖8 顯示了 Simulink 模型。與上一個模型相比,在此模型中,我們刪除了激光雷達模塊,并增加了縱向和橫向控制器。
圖8. 用于跟隨參考軌跡的 Simulink 模型
現在,這是一個經典的閉環控制系統問題,控制器的任務是輸出所需的轉向命令,加速命令和減速命令,以更高的速度跟隨參考路徑。
圖9. 第二圈的閉環控制框圖
·橫向控制器:Pure pursuit 控制器用于車輛的橫向控制。為了在 Simulink 中實現控制器,我們使用了 Pure Pursuit 模塊來瞄準目標方向。此外,使用車輪轉角公式將目標方向轉換為所需的轉向角。要了解有關使用 Pure pursuit 控制器的車輛路徑跟隨的更多信息,請參考:https://ww2.mathworks.cn/help/robotics/ref/purepursuit.html。
圖10. Pure pursuit 控制器
·縱向駕駛員模塊用于調節車輛的速度(https://ww2.mathworks.cn/help/vdynblks/ref/longitudinaldriver.htmlhttps:/www.mathworks.com/help/vdynblks/ref/longitudinaldriver.html)。具體來說,它是一個 PI 控制器,可為參考速度生成執行信號。
圖11. 縱向駕駛員
請注意,目前,我們通過使用查表來定義不同區域的速度,從而簡化了速度曲線的創建過程。但是,更推薦使用 Velocity Profiler(https://ww2.mathworks.cn/help/driving/ref/velocityprofiler.html)來自動化速度曲線生成過程。·結果:圖12 顯示了仿真軌跡和參考軌跡的比較。從結果可以明顯看出,橫向控制器成功跟隨了參考路徑。除了橫向控制外,縱向駕駛員還可以調節所需的速度。
圖12. 第二圈獲得的車輛軌跡
總結
這篇文章展示了 MathWorks 工具如何在存在障礙物的情況下用于在封閉賽道上自主駕駛車輛。您可以擴展此方法,并利用文檔中提供的示例來設計和仿真自動駕駛汽車:https://ww2.mathworks.cn/help/driving/examples.html。 隨著汽車行業的進步和發展,各種學生競賽中也開始引入了無人駕駛類別,中國大學生方程式無人車(FSAC)競賽就是其中之一。該類比賽的目的是讓同學們利用不同學科知識設計和制造可以自動行駛的汽車。使用 MATLAB 和 Simulink,您可以設計自動駕駛系統功能,包括傳感,路徑規劃,傳感器融合和控制系統。
責任編輯:lq
-
3D
+關注
關注
9文章
2921瀏覽量
108106 -
編輯器
+關注
關注
1文章
807瀏覽量
31328 -
自動駕駛
+關注
關注
785文章
13954瀏覽量
167221
原文標題:如何在 3D 環境中仿真自動駕駛汽車
文章出處:【微信號:MATLAB,微信公眾號:MATLAB】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
吉利汽車自動駕駛脫困專利獲授權
從《自動駕駛地圖數據規范》聊高精地圖在自動駕駛中的重要性
![從《<b class='flag-5'>自動駕駛</b>地圖數據規范》聊高精地圖<b class='flag-5'>在</b><b class='flag-5'>自動駕駛</b><b class='flag-5'>中</b>的重要性](https://file1.elecfans.com/web3/M00/04/EC/wKgZO2d6AQmALM5oAALSAnpu2C4271.png)
自動駕駛中常提的SLAM到底是個啥?
![<b class='flag-5'>自動駕駛</b>中常提的SLAM到底是個啥?](https://file1.elecfans.com/web1/M00/F5/8C/wKgZoWc-3lCAHpPJAAD2DRadc9Q817.png)
評論