久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    基于MATLAB&SIMULINK開發自動駕駛系統第四十三講基于多傳感器融合的自適應巡航控制

     小明師兄 2022-07-13 發布于江蘇
    本例介紹了如何利用傳感器融合實現基于傳感器融合的汽車自適應巡航控制器,并且可用于在彎道上行駛的車輛。
    在這個例子中:
    1:結合了傳感器融合和自適應巡航控制器(ACC)的控制系統。提供了兩個ACC的變體:一個經典控制器和一個來自模型預測控制工具箱的自適應巡航控制系統塊。
    2:使用自動駕駛工具箱生成的合成數據,在閉環Simulink模型中測試控制系統。
    3:配置軟件在環仿真的代碼生成設置,并自動生成控制算法的代碼。


    43.1 緒論

    自適應巡航控制系統是一種根據前方路面交通狀況修改被控車輛速度的控制系統。與普通巡航控制一樣,駕駛員為汽車設定一個理想的速度;此外,如果前方車道上有其他車輛行駛速度較慢,自適應巡航控制系統可以使被控車輛減速,控制車輛實現穩定跟隨前車車輛行駛。
    要想讓ACC正常工作,被控車輛必須確定前方車道是彎道還是直道,以及哪輛車是 "領頭車",也就是在車道上排在被控車輛前面的車輛。從被控車輛的角度看,一個典型的場景如下圖所示。被控車輛(藍色)沿著一條彎曲的道路行駛。一開始,領頭車是粉色車。然后,紫色車切入被控車輛的車道,成為領頭車。過了一會兒,紫色車換到另一條車道,粉色車又成為領頭車。之后,粉色車依然是領頭車。ACC設計必須對路面上領頭車的變化做出反應。
    目前的ACC設計主要依靠從毫米波雷達上獲得的測距和測速,其設計在直線道路上工作效果最好。在 "使用模型預測控制的自適應巡航控制系統"(模型預測控制工具箱)中給出了這樣一個系統的例子。從先進的駕駛輔助系統(ADAS)設計轉向更加自動級別更高的系統,ACC必須解決以下挑戰:
    1 估算靠近被控車輛且相對被控車輛有較著橫向運動的車輛的相對位置和速度。
    2 估算被控車輛前面的車道,找出被控車輛前面的哪輛車是同一車道中最近的一輛車。
    3 反應環境中其他車輛的侵略性舉動,特別是當其他車輛切入被控車輛車道時。
    這個例子展示了在現有ACC設計中主要增加兩個功能來應對這些挑戰:增加一個傳感器融合系統和更新基于模型預測控制(MPC)的控制器設計。同時使用視覺和毫米波雷達傳感器的傳感器融合和跟蹤系統具有以下優點:
    1 它將視覺傳感器獲得的較好的位置和速度橫向測量與毫米波雷達傳感器的測距和測距率測量相結合。
    2 視覺傳感器可以探測車道,提供車道相對于被控車輛的橫向位置估計,并定位場景中其他車輛相對于被控車輛車道的位置。這個例子假設了理想的車道探測。
    先進的MPC控制器增加了對環境中其他車輛更激進的操縱做出反應的能力。與使用具有恒定增益的PID設計的經典控制器相比,MPC控制器在保持嚴格的安全距離約束的同時調節被控車輛的速度,控制體驗上更平順,(小編注MPC目前還沒有聽說哪家用在了量產車上)。因此,當環境快速變化時,控制器可以采用類似于人類駕駛員的方式來實施更積極的機動。

    43.2 測試臺模型和仿真結果概述

    要打開Simulink主模型,請使用以下命令。

    open_system('ACCTestBenchExample')
    該模型主要包含兩個子系統。
    1 ACC with Sensor Fusion,它對傳感器融合進行建模,控制車輛的縱向加速度。該組件允許選擇經典或模型預測控制版本的設計。
    2 車輛與環境子系統,它對被控車輛的運動進行建模,并對環境進行建模。毫米波雷達和視覺傳感器的仿真為控制子系統提供融合數據。
    要在運行模型之前運行相關的初始化腳本,在Simulink模型中,單擊 "運行設置腳本",或者在命令提示符下,鍵入以下內容:

    helperACCSetUp
    腳本加載Simulink模型所需的某些常量,如車輛和ACC設計參數。默認的ACC是經典控制器。腳本還創建了定義控制系統參考模型的輸入和輸出所需的總線。這些總線必須在模型編譯前在工作區中定義。當模型編譯時,額外的Simulink總線會由各自的塊自動生成。
    要繪制仿真結果并描繪被控車輛的周圍環境,包括被跟蹤的對象,可以利用Bird's-Eye Scope觀測。Bird's-Eye Scope是一個模型級的可視化工具,它可以用來從Simulink工具條中打開。在 "仿真 "選項卡上,在"回顧結果 "下,單擊鳥眼范圍。打開范圍后,點擊查找信號,設置信號。下面的命令運行仿真到15秒,得到中間的仿真畫面,再一直運行下去。
    到仿真結束收集結果。









    sim('ACCTestBenchExample','StopTime','15') %Simulate 15seconds sim('ACCTestBenchExample') %Simulate to end of scenarioans= Simulink.SimulationOutput:logsout: [1x1Simulink.SimulationData.Dataset] tout: [151x1 double]SimulationMetadata: [1x1Simulink.SimulationMetadata] ErrorMessage: [0x0 char]

    鳥眼范圍顯示了傳感器融合的結果。它顯示了毫米波雷達和視覺傳感器如何探測其傳感器覆蓋區域內的車輛。它還顯示了由多對象跟蹤器塊保持的目標跟蹤信息。黃色的跟蹤顯示的是最重要的物體(MIO):被控車輛前方最近的跟蹤,在其車道上。我們看到,在場景開始時,最重要的對象是被控車輛前方的快速行駛的汽車。當過往的汽車離慢速行駛的汽車越來越近時,它越過了左側車道,傳感器融合體系識別出它是MIO。這輛車離被控車輛更近,速度比它慢很多。ACC必須控制被控車輛減速。
    在下面的經典ACC系統的成果中:
    - 上圖顯示的是小汽車的速度。
    - 中間圖顯示了被控車輛與領先車輛之間的相對距離。
    - 下圖為被控車輛加速度。
    在這個例子中,來自跟蹤和傳感器融合系統的原始數據被用于ACC設計,沒有進行后處理。可以預期看到一些 "尖峰"(中間圖),這是由于傳感器模型的不確定性,特別是當另一輛車切入或離開被控車輛車道時。
    要查看仿真結果,請使用以下命令:

    helperPlotACCResults(logsout,default_spacing,time_gap)
    - 在前11秒,領先車遠遠領先于被控車輛(中圖)。被控車輛加速并達到駕駛員設定的速度V_set(上圖)。
    - 11秒至20秒,另一輛車成為領先車,當該車切入被控車輛車道時(中圖)。當領頭車與被控車輛之間的距離較大時(11-15秒),被控車輛仍以駕駛員設定的速度行駛。當距離變小時(15-20秒),被控車輛會減速以保持與領先車的安全距離(上圖)。
    - 20~34秒,前車移動到另一條車道,新的領頭車出現(中圖)。由于領先車和被控車輛之間的距離很大,被控車輛在27秒時加速,直到達到駕駛員設定的速度。然后,被控車輛繼續以駕駛員設定的速度行駛(上圖)。
    - 底部圖顯示,加速度在[-3,2]m/s^2范圍內。平穩的瞬態行為表明,駕駛員的舒適度是令人滿意的。
    在基于MPC的ACC設計中,基本的優化問題是通過跟蹤駕駛員設定的速度來制定的,但必須強制執行與領先車的安全距離。MPC控制器設計在自適應巡航控制器一節中進行了描述。要運行帶有MPC設計的模型,首先激活MPC變體,然后運行以下命令。這一步需要使用Model Predictive Control Toolbox軟件??梢允褂靡韵麓a檢查該許可證的存在。如果不存在代碼,則描繪了類似結果的樣本。






































    hasMPCLicense =license('checkout','MPC_Toolbox');if hasMPCLicensecontroller_type= 2;sim('ACCTestBenchExample','StopTime','15') %Simulate 15seconds sim('ACCTestBenchExample') %Simulate to end of scenarioelseload data_mpcend
    -->Convertingmodel to discrete time.-->Assumingoutput disturbance added to measured output channel #2 is integrated white noise.Assumingno disturbance added to measured output channel #1.-->The"Model.Noise" property of the "mpc" object is empty. Assumingwhite noise on each measure ans =Simulink.SimulationOutput:logsout: [1x1 Simulink.SimulationData.Dataset] tout: [151x1double]
    SimulationMetadata: [1x1Simulink.SimulationMetadata]ErrorMessage: [0x0 char]
    -->Convertingmodel to discrete time.-->Assumingoutput disturbance added to measured output channel #2 is integrated white noise.Assumingno disturbance added to measured output channel #1.-->The"Model.Noise" property of the "mpc" object is empty.Assuming white noise on each measure

    在基于MPC的ACC的仿真結果中,與經典ACC設計類似,實現了速度和間距控制的目標。與經典ACC設計相比,基于MPC的ACC采用全油門或制動進行加速或減速,因此更加激進。這種行為是由于對相對距離的明確約束。當道路上發生突然變化時,例如當領先車變為慢車時,這種激進行為可能是首選。為了使控制器的控制效果更加平順,打開自適應巡航控制系統塊的掩碼,并降低控制器行為參數的值。如前所述,中間圖中的尖峰是由于傳感器模型的不確定性造成的。
    要查看基于MPC的ACC的仿真結果,請使用以下命令。

    helperPlotACCResults(logsout,default_spacing,time_gap)

    下面將詳細介紹試驗臺模型中各子系統的功能。帶傳感器融合的自適應巡航控制器子系統包含兩個主要組成部分:
    1 跟蹤和傳感器融合子系統
    2 自適應巡航控制器子系統

    open_system('ACCTestBenchExample/ACC with Sensor Fusion')

    43.3 跟蹤和傳感器融合

    跟蹤和傳感器融合子系統處理來自車輛和環境子系統的視覺和雷達探測,并生成被控車輛周圍環境的綜合情況圖。同時,它還能向ACC提供被控車輛前方車道上最近的車的估計。


    open_system('ACCWithSensorFusionMdlRef/Tracking and Sensor Fusion')

    跟蹤和傳感器融合子系統的主要塊是多對象跟蹤器塊,其輸入是所有傳感器探測的組合列表和預測時間。多對象跟蹤器塊的輸出是確認的跟蹤列表。

    探測融合模塊將視覺和毫米波雷達探測信息融合起來。預測時間由車輛與環境子系統中的時鐘來驅動。

    探測聚類塊對多個毫米波雷達探測進行聚類,因為跟蹤器希望每個物體每個傳感器最多探測一個目標。

    findLeadCar MATLAB函數塊利用確認的跟蹤列表和道路的曲率,在同一車道上找到離被控車輛最近并在其前方的哪輛車。這輛車稱為領先車,當車輛駛入和駛出被控車輛前方的車道時,可能會發生變化。該功能提供了領先車相對于被控車輛的位置和速度,以及最重要物體(MIO)跟蹤的索引。

    43.4 自適應巡航控制器

    自適應巡航控制器有兩種變體:一種是經典設計(默認),一種是基于MPC的設計。對于這兩種設計,均采用以下設計原則:配備ACC的車輛(被控車輛)使用傳感器融合來估計與前車的相對距離和相對速度。ACC使被控車輛以駕駛員設定的速度行駛,或與領先車保持安全距離。領先車與被控車輛之間的安全距離定義為:

    其中默認間距,和時隙為設計參數,為被控車輛的縱向速度。ACC根據以下輸入生成被控車輛的縱向加速度:

    - 被控車車的縱向速度。

    - 領頭車與被控車輛之間的相對距離(來自跟蹤與傳感器融合系統)。

    - 領頭車和被控車之間的相對速度(來自跟蹤和傳感器融合系統)。

    考慮到被控車輛的物理限制,縱向加速度被約束在[-3,2]范圍內。

    在經典的ACC設計中,如果相對距離小于安全距離,那么首要目標是減速并保持安全距離。如果相對距離大于安全距離,那么主要目標是在保持安全距離的同時達到駕駛員設定的速度。

    這些設計原則是通過Min和Switch塊來實現的。


    open_system('ACCWithSensorFusionMdlRef/Adaptive Cruise Controller/ACC Classical')

    在基于MPC的ACC設計中,基本的優化問題是在約束條件下,通過跟蹤駕駛員設定的速度來制定的。該約束條件強制要求相對距離總是大于安全距離。

    要配置自適應巡航控制系統塊,請使用幫助者ACCSetUp文件中定義的參數。例如,ACC設計的線性模型 ,并從車輛動力學中獲得。兩個Switch塊實現了簡單的邏輯,以處理來自傳感器的大數(例如,當傳感器沒有探測到MIO時,它可能會返回Inf)。


    open_system('ACCWithSensorFusionMdlRef/Adaptive Cruise Controller/ACC Model PredictiveControl')

    43.5 車輛與環境

    車輛與環境子系統由兩部分組成:

    1 車輛動力學和全球坐標

    2 執行器和傳感器仿真

    open_system('ACCTestBenchExample/Vehicle and Environment')

    車輛動力學子系統使用自動駕駛工具箱中的自行車模型-力輸入塊對車輛動力學進行建模。車輛動力學,輸入(縱向加速度)和前轉向角,用以下方法。

    在狀態向量中,表示橫向速度,表示縱向速度,表示偏航角。車輛的參數在幫助程序ACCSetUp文件中提供。

    車輛動力學的輸出(如縱向速度和橫向速度)是基于車身固定坐標的。為了得到車輛在運動過程中的跟蹤,車身固定坐標通過以下關系轉換成全局坐標。

    偏航角和偏航角率也換算成度的單位。

    駕駛員轉向模型的目標是通過控制前部轉向角,使車輛保持在自己的車道上,并沿著彎曲的道路行駛。這個目標是通過駕駛偏航角誤差和側向位移誤差為零來實現的(見下圖),其中

    所需的偏航角率由Vx/R給出。

    執行器和傳感器仿真子系統生成跟蹤和傳感器融合所需的合成傳感器數據。在運行此示例之前,使用駕駛場景設計器應用程序創建一個具有彎曲道路和多個執行器在道路上移動的場景。然后將該場景中的道路和執行器保存到場景文件ACCTestBenchScenario.mat中。要了解如何定義場景,請點贊、轉發此文,小編后續不斷更新。


    open_system('ACCTestBenchExample/Vehicle and Environment/Actors and Sensor Simulation')

    被控車輛的運動是由控制系統控制的,并不是從場景文件中讀取的。取而代之的是,被控車輛的姿態、速度、偏航角和偏航率被接收為來自車輛動力學塊的輸入,并使用packEgo MATLAB函數塊打包成一個單一的執行器姿態結構。

    Scenario Reader 塊從場景文件 ACCTestBenchScenario.mat 讀取交通參與者姿勢數據。該塊將場景的世界坐標中的執行器姿勢轉換為被控車輛坐標。被上傳到由塊生成的總線上。   在這個例子中,使用了視覺探測生成塊和毫米波雷達探測生成塊。

    這兩個傳感器都是遠距離和前向的,并提供了對被控車輛前部的良好覆蓋范圍,這是ACC的需要。傳感器使用被控車輛坐標中的交通參與者姿勢來生成被控車輛前方的車輛探測列表。最后,以一個時鐘塊為例,說明車輛將有一個集中的時間源。時間由多對象跟蹤器塊使用。

    43.6 場景創建

    駕駛場景設計器應用允許定義道路和在道路上移動的車輛。在本例中, 定義了兩條曲率不變的平行道路。要定義道路, 需要定義:道路中心、道路寬度和傾斜角度(如果需要)。道路中心是通過沿圓弧取樣點選擇的,跨度為60度的恒定曲率半徑的轉彎。

    定義了場景中的所有車輛。為了定義車輛的運動,通過一組航點和速度來定義它們的跟蹤。定義航點的快速方法是選擇前面定義的道路中心的一個子集,并在道路中心的左邊或右邊偏移,以控制車輛行駛的車道。

    這個例子顯示了四輛汽車:一輛快速行駛的汽車在左側車道上,一輛緩慢行駛的汽車在右側車道上,一輛汽車在馬路對面駛來,一輛汽車從右側車道上開始行駛,但隨后移動到左側車道上以超越緩慢行駛的汽車。

    場景可以使用駕駛場景設計器應用程序進行修改,并重新保存到同一個場景文件ACCTestBenchScenario.mat中。當仿真重新運行時,場景閱讀器塊會自動拾取更改。如果要以編程方式構建場景,可以使用助記場景授權功能(helperScenarioAuthoring)。

    plotACCScenario


    43.7 控制邏輯代碼生成

    雖然整個模型不支持代碼生成,但 ACCWithSensorFusionMdlRef 模型被配置為支持使用 Embedded Coder 軟件生成 C 代碼。要檢查是否有訪問Embedded Coder的權限,請運行。


    hasEmbeddedCoderLicense = license('checkout','RTW_Embedded_Coder')

    可以為模型生成一個C函數,并通過運行探索代碼生成報告。



    if hasEmbeddedCoderLicense rtwbuild('ACCWithSensorFusionMdlRef')end

    可以使用軟件在環(SIL)仿真來驗證編譯后的C代碼的行為是否符合預期。要在SIL模式下仿真ACCWithSensorFusionMdlRef引用的模型,請使用。




    if hasEmbeddedCoderLicenseset_param('ACCTestBenchExample/ACC with Sensor Fusion',... 'SimulationMode','Software-in-the-loop (SIL)')end

    當 運行ACCTestBenchExample模型時,將為ACCWithSensorFusionMdlRef模型生成、編譯和執行代碼。這使能夠通過仿真來測試編譯代碼的行為。

    43.8 結論

    本例展示了如何在彎道上用傳感器融合實現一個集成的自適應巡航控制器(ACC),在Simulink中使用自動駕駛工具箱生成的合成數據進行測試,對其進行組件化,并自動生成代碼。



      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章

      主站蜘蛛池模板: 精品亚洲欧美无人区乱码| 欧美黑人XXXX性高清版| 狠狠爱五月丁香亚洲综| 午夜福利试看120秒体验区| 日韩放荡少妇无码视频| 四虎在线成人免费观看| 国产成人无码免费网站| 狠狠综合久久AV一区二区| 国产精品成人午夜福利| 亚洲精品无码成人AV电影网| 好深好湿好硬顶到了好爽| 熟女系列丰满熟妇AV| 毛片免费观看天天干天天爽| 国产片AV国语在线观看手机版| 人人妻人人澡人人爽欧美精品 | 免费观看一区二区三区| 一区二区亚洲人妻精品| 香蕉久久久久久久AV网站| 国产精品麻豆中文字幕| 国产香蕉尹人在线视频你懂的| 亚洲精品中文av在线| 国精品无码一区二区三区左线| 亚洲精品无码久久一线| 欧美又粗又大XXXXBBBB疯狂| 欧美自拍另类欧美综合图片区| 国产精品无码无卡在线播放| 成人精品天堂一区二区三区| 亚洲岛国成人免费av| 亚洲AV无码一区二区三区人| 波多野结衣久久一区二区| 亚洲精品男男一区二区| 亚洲AV无码一区二区三区人| 日本高清视频色WWWWWW色| 国产精品中文第一字幕| 成年男女免费视频网站| 亚洲AV无码午夜嘿嘿嘿| 国产精品二区中文字幕| 欧美激情一区二区久久久| 中国CHINA体内裑精亚洲日本 | 精品国产中文字幕av| 国产V亚洲V天堂无码久久久 |