利用Matlab/Simulink實現ACC的Test bench

2021-01-15 電子發燒友

目標識別 

關於目標識別已經有大量的案例和教程被公布。使用Tensorflow API或Matlab/Simulink 計算機視覺工具箱,結合各種類型的傳感器數據(如3D雷射雷達雲點和/或相機拍攝的照片),可以從攝像機視頻流中識別出目標物體。

當然,即便通過ML/DL技術可以識別出目標物體,仍然遠遠不能滿足一個簡單的ADAS功能的開發。自動駕駛汽車首先要藉助傳感器數據正確地理解現實環境,然後還要具備思考、規劃和反應的能力。更具體來說,就是系統需要能夠正確地控制車輛。

模型預測控制 

基於簡單的自行車模型,可以將運動學和動力學控制方程輸入模型預測控制(MPC)算法。

在當今所有的過程控制中,MPC只是其中一種控制技術。PID當然是用的最多的控制方法,但由於MPC具有多輸入/輸出的優化能力和約束條件,使MPC也超過了10%的佔有率。

MPC是一種基於模型的閉環優化控制策略,大量的預測控制權威性文獻都無一例外地指出, 預測控制最大的吸引力在於它具有顯式處理約束的能力, 這種能力來自其基於模型對系統未來動態行為的預測, 通過把約束加到未來的輸入、輸出或狀態變量上, 可以把約束顯式表示在一個在線求解的二次規劃或非線性規劃問題中。

模型預測控制具有控制效果好、魯棒性強等優點,可有效地克服過程的不確定性、非線性和並聯性,並能方便的處理過程被控變量和操縱變量中的各種約束。

線性時不變(LTI)控制系統,連續狀態空間模型可以這樣描述。

連續狀態空間模型。A、B、C、D是常數狀態空間矩陣。x是狀態向量,y是輸出,u是輸入/控制變量

基於一個簡單的自行車模型,狀態函數可以寫成:

Vy, dot_Vy用於橫向控制,psi, dot_psi用於轉向控制,Vx, dot_Vx用於縱向控制。詳細信息可以從Matlab文檔頁面找到。

MPC的主要思路是預測工廠輸出的產量,優化器會找到控制輸入的最優序列,使工廠的產量儘可能接近設定值。

如下圖中展示了一個典型的場景,圖中是一輛行駛在十字路口的汽車。MPC將考慮到道路圖的曲率,並將道路圖和工廠路徑之間的誤差最小化。MPC的主要優點之一就是具有硬約束和軟約束能力的多輸入多輸出,非常適合ADAS函數中的控制策略。

ACC 

以下的示例演示了這樣一個場景:前方一輛汽車從右邊進入了自車的車道,雷達和相機傳感器識別到了前車,並已確認。為了安全起見,自車必須估算與出前方車輛的相對距離w.r.t.,如果距離小於允許的距離,則自車必須拉開距離,並保持安全距離直至完全停車。直到距離前車足夠遠,然後自車逐漸加速,直到達到預期的速度。

ACC傳感器融合

在該Test Bench中,ACC的傳感器融合模塊具有檢測同一車道(以及傳感器檢測範圍內的其他車道)是否有前車的功能,融合測驗(去除冗餘),將檢測傳遞給MPC,MPC將會根據實際情況相應地減慢或加速自車。

由下圖可見,視覺和雷達識別的對象、仿真時間、自車的縱向速度和路面曲率為輸入參數。傳感器數據融合和前車跟蹤子模塊,包含由於雷達噪聲引起的第一次雷達探測聚類,並將來自視覺和雷達的探測結合輸入到多目標跟蹤器。使用卡爾曼濾波器精確估計檢測的狀態並融合檢測, 然後,利用確定的軌道和道路信息確定自車與前車之間的相對距離和相對速度,實現ACC的功能。

利用MPC算法方案,將時間間隔(可以是駕駛員的反應時間)、縱向速度和駕駛員設定的速度與相對距離、相對速度一起加入自適應巡航控制系統。在這個測試臺上,使用了預構建的ACC控制模塊。也可以構建特定於用戶的MPC模塊。

該ACC模塊的主要功能是跟蹤駕駛員設定的速度,並通過調整自車的縱向加速度來保持與前車的安全距離。該模塊使用了模型預測控制(MPC)計算出最佳控制動作,同時還滿足了安全距離和速度,並約束了一定的加速度。

算法結構細節如下圖所示。然後用戶可以從Matlab中對原始ACC模塊進行相應的修改。

到目前為止,ACC的主要控制已經基本完成。然而,車輛在行駛時,司機還必須要一直保持在車道上。因此,車道跟蹤功能(也就是轉向控制)也需要考慮在內。

隨著MPC縱向加速度的調節,Simulink塊中必須要輸入道路(地圖)信息。在本次的測試用例中,道路幾何簡單地通過常曲率1/R來描述,並已創建於Matlab的工作空間中,可以直接從子系統中使用。

使用MPC調節縱向加速度和曲率的道路更新的位置和偏航角的自車,轉向控制採用PID控制。

MPC能夠對自車的加速度進行調節,結合採用比例積分微分(PID)控制方案,將可以實現轉向控制。

基於自行車模型,可以模擬出自車的位置和偏航角。

到這裡,我們已經具備了運行ACC模擬的所有必要條件。單擊run按鈕,可以查看結果,如下圖所示(只顯示一幀)。

整個仿真結果如下:

當一輛他車低速車行駛進入速度較快的自車的車道時,只要傳感器檢測到低速行駛的前車,在MPC控制的幫助下,自車會先減速以保持安全距離。當前車離開同一車道時,自車再次加速,加速直到駕駛員設定的速度。自車的速度和駕駛員設定的速度如下圖所示,並顯示了自車的相對距離和加速度曲線。

最後這點很重要,ADAS必須使用C或C++部署到特定的ECU上,而Matlab提供了代碼生成器工具箱,可以輕鬆實現這一點。如果需要添加或進一步修改C算法,則可以基於生成的C/C++代碼繼續編寫。

以上回顧了利用Matlab/Simulink實現ACC的Test bench。對於更複雜的或不同的駕駛場景,各位朋友們可以使用本文描述的類似方案來進行進一步的功能開發。

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 菜鳥:簡單神經網絡train and test詳解(雙層)
    avg_cost / total_batch# displayif(epoch+1)% display_step ==0:print("Epoch: %03d/%03d cost: %.9f "%(epoch, training_epochs, avg_cost))feeds ={x: batch_xs, y: batch_ys}train_acc
  • 如何用Matlab/Python/Stata做簡單回歸分析
    NO.3 |Matlab的實現過程 原始碼: load('recall.mat') mean(Y) median(Y) corrcoef([unaid
  • 使用PyTorch實現鳥類音頻檢測卷積網絡模型
    跳入其中,鳥的音頻檢測出現了這樣一個利基(有利可圖的形式),在本文中,我將向您展示如何在BirdVox-70k數據集上使用一個簡單的卷積神經網絡(CNN)來實現這一點。為什麼鳥類的聲音檢測很重要呢?多年來,鳥類音頻檢測應用中深度學習模型的使用一直在不斷發展進步,這也是一些人對此非常感興趣的原因。首先,鳥類移動速度快,體型小,已經很難追蹤。
  • matlab下實現FFT信號分析
    利用matlab做頻譜分析前我們需要了解分析過程中的一些基礎知識,matlab中的 fft 函數用法、fftshift 函數的用法函數 1  fft :作用:快速傅立葉變換。
  • Deep CARs:使用Pytorch學習框架實現遷移學習
    本模型將通過神經網絡來實現目標。更準確地說,是使用一個深度神經網絡,因此得名Deep CARs(深度計算機自動額定值系統)。想要實現這一目標,需要完成兩部分的學習,第1部分:構建汽車分類器;第2部分:部署分類器。本文將著重論述第1部分內容。我們將使用一種叫做遷移學習的方法來訓練分類器。什麼是遷移學習?
  • 快速傅立葉變換FFT在MATLAB中的實現
    繪製時域信號lear;clc;closealla=textread('C:\Users\Administrator\Desktop\matlab\FFT\TIME_X.txt'); %讀取時域數據y=a(:,2); %讀取時域數據Fs=6400; %採集頻率T=1/Fs; %採集時間間隔N=
  • 在MATLAB中如何實現快速傅立葉變換
    繪製時域信號lear;clc;closealla=textread('C:\Users\Administrator\Desktop\matlab\FFT\TIME_X.txt'); %讀取時域數據y=a(:,2); %讀取時域數據Fs=6400; %採集頻率T=1/Fs; %採集時間間隔N=
  • matlab中的成型濾波器設計
    matlab 中成型濾波器設計有好幾個函數:rcosineFd=9600;Fs=38.4e3;[num,den] = rcosine(Fd,Fs,'sqrt',0.25);freqz(num);其中的Fd表示輸入數據的採樣率
  • 什麼是傅立葉變換,如何用MATLAB實現?
    第三場分享的主題是: 傅立葉變換的理解與MATLAB實現直播日期:2021年1月21日(周四)晚18點沒有傅立葉變換,就無法用數學的方法去處理現實世界中的各種各樣的信號。如今幾乎所有信息最終都會數位化,就會用到傅立葉變換及其變種,藉助傅立葉變換才能將信號識別為具體的成分,完成數位化。
  • 誤差分析指標計算之matlab實現
    感謝關注matlab愛好者公眾號!如果公眾號文章對您有幫助,別忘了點擊分享和「在看」哦!
  • 科研作圖之光譜圖繪製(matlab版)
    感謝關注matlab愛好者公眾號!如果公眾號文章對您有幫助,別忘了點擊分享和「在看」哦!
  • 熱傳導方程的差分格式原理與matlab實現
    分別介紹了熱傳導方程的古典顯格式、古典隱格式、Crank-Nicolson格式及其數值求解方法以及matlab代碼。如下給出一個熱傳導方程的初邊值問題的具體算例:下面我們分別利用古典顯格式、古典隱格式、Crank-Nicolson格式來求解,取不同的網格比和步長h來計算,得出數值解和與準確解的誤差。
  • 三門問題及matlab仿真驗證
    今天看到一個問題——三門問題,感覺挺有趣的,自己也親自上手利用matlab仿真模擬了一下,分享給大家。【三門問題】三門問題出自美國的電視遊戲節目Let's Make a Deal,因為是由一個叫蒙提霍爾的人提出的,所以也叫蒙提霍爾問題。
  • 維納濾波原理及其matlab實現
    信號分析檢測與處理的一個十分重要的內容就是從噪聲中提取信號,實現這種功能的有效手段之一是設計一種具有最佳線性過濾特性的濾波器,當伴有噪聲的信號通過這種濾波器的時候,它可以將信號儘可能精確地重現或對信號做出儘可能精確的估計,而對所伴隨噪聲進行最大限度地抑制。維納濾波器就是這種濾波器的典型代表之一。1.
  • matlab矩陣及其運算(三)
    大家好,感謝大家對matlab愛好者公眾號的厚愛!