如何設(shè)計(jì)自動(dòng)駕駛系統(tǒng)的狀態(tài)機(jī)_第1頁
如何設(shè)計(jì)自動(dòng)駕駛系統(tǒng)的狀態(tài)機(jī)_第2頁
如何設(shè)計(jì)自動(dòng)駕駛系統(tǒng)的狀態(tài)機(jī)_第3頁
如何設(shè)計(jì)自動(dòng)駕駛系統(tǒng)的狀態(tài)機(jī)_第4頁
如何設(shè)計(jì)自動(dòng)駕駛系統(tǒng)的狀態(tài)機(jī)_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第第頁如何設(shè)計(jì)自動(dòng)駕駛系統(tǒng)的狀態(tài)機(jī)狀態(tài)機(jī)模塊在(自動(dòng)駕駛)系統(tǒng)中扮演著關(guān)鍵的角色,它負(fù)責(zé)管理和控制各個(gè)功能的狀態(tài)轉(zhuǎn)換和行為執(zhí)行。今天我們來聊聊如何設(shè)計(jì)自動(dòng)駕駛系統(tǒng)的狀態(tài)機(jī)

0.閑談

作為自動(dòng)駕駛系統(tǒng)(工程師),從參與項(xiàng)目開始,就必不可少的與狀態(tài)管理模塊打交道,因?yàn)闋顟B(tài)機(jī)在系統(tǒng)運(yùn)行的全功能周期內(nèi)起管理作用。狀態(tài)機(jī)這個(gè)模塊,從技術(shù)實(shí)現(xiàn)角度來說,并沒有什么難度,在網(wǎng)上有很多關(guān)于FSM(Fini(te)-statemachine)的介紹文章,有興趣可以自行了解。但如何設(shè)計(jì)得巧妙、周到、精致,卻很考驗(yàn)設(shè)計(jì)者的底蘊(yùn)與對系統(tǒng)的理解。

大部分的(AD)AS功能都需要狀態(tài)機(jī)進(jìn)行狀態(tài)管理,筆者手中就有不下十幾份狀態(tài)機(jī)的設(shè)計(jì)文檔,包括FCW/LDW/AEB/(AC)C/LKA/NOP/APA/AVP等等,設(shè)計(jì)大相徑庭,但細(xì)細(xì)想來內(nèi)核卻大同小異。其中NOP功能的狀態(tài)跳轉(zhuǎn)還是比較復(fù)雜的,涉及橫向、縱向控制與功能降級等邏輯,需要長期的雕琢與迭代才能設(shè)計(jì)出符合項(xiàng)目要求的效果。

筆者最近也在負(fù)責(zé)APA功能的狀態(tài)機(jī)設(shè)計(jì),雖然比較簡單,但還是想借此機(jī)會(huì)對狀態(tài)機(jī)模塊做一點(diǎn)總結(jié),也是對以往工作的回顧。

1.模塊概述

狀態(tài)機(jī)模塊的主要作用是跟蹤系統(tǒng)的當(dāng)前狀態(tài),并根據(jù)特定的事件和條件進(jìn)行狀態(tài)轉(zhuǎn)換。它可以根據(jù)(傳感器)數(shù)據(jù)、車輛狀態(tài)和系統(tǒng)輸入來判斷當(dāng)前功能的可用性和執(zhí)行條件。狀態(tài)機(jī)模塊還能夠監(jiān)控系統(tǒng)的運(yùn)行情況,及時(shí)響應(yīng)來自駕駛決策或用戶的指令,并根據(jù)需要觸發(fā)相應(yīng)的功能執(zhí)行。

狀態(tài)機(jī)模塊通過定義和維護(hù)一組狀態(tài),以及狀態(tài)之間的轉(zhuǎn)換條件和行為,確保系統(tǒng)在不同的場景和條件下正確地執(zhí)行相應(yīng)的功能。例如,當(dāng)(檢測)到前方車輛與本車距離過近時(shí),F(xiàn)CW功能會(huì)被觸發(fā),狀態(tài)機(jī)模塊會(huì)根據(jù)預(yù)設(shè)的邏輯條件和行為來切換到相應(yīng)的預(yù)警狀態(tài),并觸發(fā)聲音或振動(dòng)等警示措施。

狀態(tài)機(jī)模塊的設(shè)計(jì)需要考慮各個(gè)功能之間的優(yōu)先級、依賴關(guān)系和沖突情況。它需要具備靈活性和可擴(kuò)展性,以應(yīng)對不同的道路情況和交通場景。比如cat-in、cat-out情景、自動(dòng)變道時(shí)的變道空間判斷等等。同時(shí),狀態(tài)機(jī)模塊還需要具備高效的(算法)和實(shí)時(shí)性能,以保證系統(tǒng)的快速響應(yīng)和可靠性。

總之,狀態(tài)機(jī)模塊在自動(dòng)駕駛系統(tǒng)中扮演著決策和控制的關(guān)鍵角色。通過有效地管理和控制各個(gè)功能的狀態(tài)轉(zhuǎn)換和行為執(zhí)行,狀態(tài)機(jī)模塊能夠確保系統(tǒng)的穩(wěn)定性、安全性和可靠性,它是實(shí)現(xiàn)ADAS功能的基礎(chǔ)模塊之一。

2.設(shè)計(jì)原理

狀態(tài)機(jī)的設(shè)計(jì)原理是基于狀態(tài)、事件和轉(zhuǎn)換的概念。狀態(tài)表示系統(tǒng)或功能在某一時(shí)刻的特定狀態(tài),事件表示觸發(fā)狀態(tài)轉(zhuǎn)換的條件,而轉(zhuǎn)換則表示狀態(tài)之間的切換過程。

首先,需要定義系統(tǒng)或功能的各個(gè)狀態(tài)。狀態(tài)可以是具體的行為狀態(tài),也可以是抽象的控制狀態(tài)。每個(gè)狀態(tài)都代表了系統(tǒng)的一個(gè)特定方面或功能,例如“Standby”、“OFF”、“Parking”等。

接下來,定義觸發(fā)狀態(tài)轉(zhuǎn)換的事件。事件可以是傳感器的觸發(fā)(信號(hào))、用戶的輸入指令或系統(tǒng)內(nèi)部的條件判斷。通過檢測事件的發(fā)生,狀態(tài)機(jī)能夠判斷是否需要進(jìn)行狀態(tài)轉(zhuǎn)換。

然后,定義狀態(tài)之間的轉(zhuǎn)換條件和行為。轉(zhuǎn)換條件是判斷是否可以進(jìn)行狀態(tài)轉(zhuǎn)換的邏輯條件,例如滿足一定的時(shí)間限制、特定的傳感器數(shù)據(jù)或用戶指令。轉(zhuǎn)換行為是在狀態(tài)轉(zhuǎn)換時(shí)執(zhí)行的操作,例如觸發(fā)警報(bào)、調(diào)整車速或切換到下一個(gè)狀態(tài)。

為了更好地設(shè)計(jì)和管理狀態(tài)機(jī),可以使用狀態(tài)表和狀態(tài)轉(zhuǎn)換圖。狀態(tài)表是一個(gè)表格,列出了系統(tǒng)的各個(gè)狀態(tài)和相應(yīng)的轉(zhuǎn)換條件。狀態(tài)轉(zhuǎn)換圖則是通過節(jié)點(diǎn)和箭頭表示各個(gè)狀態(tài)和轉(zhuǎn)換,直觀地展示了狀態(tài)之間的關(guān)系和轉(zhuǎn)換規(guī)則。

EA示例狀態(tài)轉(zhuǎn)換圖

EA示例狀態(tài)表

在設(shè)計(jì)狀態(tài)機(jī)時(shí),需要確保其特性,包括確定性、完備性和可達(dá)性。

確定性表示每個(gè)狀態(tài)都有明確的轉(zhuǎn)換規(guī)則,不會(huì)出現(xiàn)歧義或沖突。

完備性表示系統(tǒng)的所有可能狀態(tài)都被考慮到,并定義了相應(yīng)的轉(zhuǎn)換規(guī)則。

可達(dá)性表示系統(tǒng)能夠從任意初始狀態(tài)達(dá)到目標(biāo)狀態(tài),確保狀態(tài)機(jī)的可靠性和穩(wěn)定性。

通過使用狀態(tài)機(jī)的設(shè)計(jì)原理,可以清晰地定義系統(tǒng)的各個(gè)狀態(tài)和轉(zhuǎn)換規(guī)則,確保系統(tǒng)在不同的條件下正確地執(zhí)行相應(yīng)的行為和功能。同時(shí),狀態(tài)機(jī)的設(shè)計(jì)原理也為系統(tǒng)的擴(kuò)展和維護(hù)提供了便利,使得系統(tǒng)能夠適應(yīng)不斷變化的需求和環(huán)境。

4.定義狀態(tài)

狀態(tài)定義:明確定義系統(tǒng)中的狀態(tài),確保每個(gè)狀態(tài)都是清晰且互斥的。每個(gè)狀態(tài)應(yīng)該具有明確的含義和行為。

不同的自動(dòng)駕駛功能可能具有不同的狀態(tài)機(jī),狀態(tài)的定義是由功能決定的,系統(tǒng)需要在不同的條件下正確地執(zhí)行相應(yīng)的行為和功能。同時(shí),狀態(tài)機(jī)的設(shè)計(jì)原理也應(yīng)該為系統(tǒng)的擴(kuò)展和維護(hù)提供了便利,使得系統(tǒng)能夠適應(yīng)不斷變化的需求和環(huán)境;比如在NOP功能設(shè)計(jì)時(shí),應(yīng)考慮到如何與LCC/ACC等功能進(jìn)行切換。

L0的ADAS功能,比如FCW/LDW/B(SD)等等基本不涉及車輛控制,僅起到預(yù)警作用。其狀態(tài)定義也較為簡單,可以分為以下幾個(gè)狀態(tài):

OFF:系統(tǒng)關(guān)閉,未進(jìn)行工作。

Standby:系統(tǒng)滿足運(yùn)行條件,正在待機(jī)。

Warning:符合預(yù)警觸發(fā)條件,正在報(bào)警。

Inhibit:預(yù)警被用戶抑制。

Error:系統(tǒng)故障。

根據(jù)國標(biāo)法規(guī)要求,Warning狀態(tài)中可能還包括Pre-Warning狀態(tài)。

L1的AEB/LCC等功能僅涉及橫向或縱向的單一控制,比如AEB主要負(fù)責(zé)緊急制動(dòng)功能,會(huì)在FCWWarning后增加Brake的狀態(tài)。而ACC根據(jù)功能定義,會(huì)存在SpeedControl、DistanceControl、Override、TempStop等狀態(tài)。LCC則會(huì)存在LaneKeeping等狀態(tài)。由此可以看出,狀態(tài)機(jī)主要是為功能服務(wù),圍繞核心功能而分解為不同狀態(tài)。

StateFlow邏輯系統(tǒng)建模教材圖來源于筆者

由于L2級別的NOP功能需要同時(shí)對車輛進(jìn)行橫向、縱向控制,主狀態(tài)中的橫向控制和縱向控制狀態(tài)會(huì)同時(shí)在運(yùn)行,受限于ODD范圍還存在降級的要求,比如SafeStop等狀態(tài),邏輯相對復(fù)雜,對兼容性要求較高。

而泊車功能狀態(tài)機(jī),當(dāng)然會(huì)存在Searching(搜索車位)、Parking(泊車過程)、Suspend(泊車中斷)、Completed(泊車完成)等狀態(tài)。

5.事件定義

事件定義:識(shí)別系統(tǒng)中可能發(fā)生的事件,并為每個(gè)事件定義清晰的觸發(fā)條件。事件可以是傳感器輸入、用戶操作或其他系統(tǒng)內(nèi)外的變化。

舉例說明,在很多系統(tǒng)中,OFF->Standby的觸發(fā)事件為“車輛的為IGNON狀態(tài)”即車輛已經(jīng)上電,這個(gè)事件可以被認(rèn)為是車輛狀態(tài)輸入。Stadnby->Active的觸發(fā)事件可能為“用戶點(diǎn)擊中控屏幕上的功能開啟按鍵”,這個(gè)事件可以被認(rèn)為是用戶操作,等等。

如果系統(tǒng)中存在多個(gè)事件,并且它們可以同時(shí)發(fā)生,那么需要考慮事件的優(yōu)先級。事件優(yōu)先級決定了在多個(gè)事件同時(shí)觸發(fā)時(shí),哪個(gè)事件會(huì)被優(yōu)先處理。例如,緊急制動(dòng)事件可能具有比前方障礙物檢測預(yù)警事件具備更高的優(yōu)先級。

6.轉(zhuǎn)換規(guī)則

轉(zhuǎn)換規(guī)則:確定狀態(tài)之間的轉(zhuǎn)換規(guī)則,即在特定事件發(fā)生時(shí)如何從一個(gè)狀態(tài)轉(zhuǎn)換到另一個(gè)狀態(tài)。轉(zhuǎn)換規(guī)則應(yīng)該考慮到系統(tǒng)的邏輯和約束條件。

當(dāng)我們考慮轉(zhuǎn)換規(guī)則時(shí),應(yīng)當(dāng)盡量全面而細(xì)致,確保狀態(tài)機(jī)的完備性,即確保狀態(tài)之間的所有可能轉(zhuǎn)換都已經(jīng)定義和覆蓋。缺乏完備性可能導(dǎo)致系統(tǒng)出現(xiàn)未定義的行為或狀態(tài)異常,從而使?fàn)顟B(tài)機(jī)跳入死循環(huán)無法跳出bug。通過仔細(xì)分析系統(tǒng)需求和設(shè)計(jì),期望確保所有可能的狀態(tài)轉(zhuǎn)換都被考慮和定義。

7.動(dòng)作和行為

動(dòng)作和行為:為每個(gè)狀態(tài)和狀態(tài)轉(zhuǎn)換定義相應(yīng)的動(dòng)作和行為。這些動(dòng)作可以是執(zhí)行特定的功能、發(fā)送控制命令、更新狀態(tài)變量等。

當(dāng)我們考慮狀態(tài)時(shí),可以輔以該狀態(tài)下的工作描述。比如在APA自動(dòng)泊車系統(tǒng)中,當(dāng)我們進(jìn)入Parking狀態(tài)后,狀態(tài)機(jī)應(yīng)當(dāng)負(fù)責(zé)與車輛(控制系統(tǒng))進(jìn)行握手,握手成功后由Control模塊進(jìn)行控車。(此處僅為舉例,握手也可以由其他模塊完成)

8.錯(cuò)誤處理

錯(cuò)誤處理:考慮系統(tǒng)可能發(fā)生的錯(cuò)誤和異常情況,并為其設(shè)計(jì)相應(yīng)的處理機(jī)制。包括錯(cuò)誤狀態(tài)的定義、錯(cuò)誤處理流程以及恢復(fù)機(jī)制,一般統(tǒng)一由Error狀態(tài)進(jìn)行處理和管理。

9.代碼生成與測試

狀態(tài)機(jī)是一個(gè)比較有歷史的東西,很多廠家為了它做了相關(guān)的開發(fā),方便我們使用和測試?,F(xiàn)在有很多成熟的能夠自動(dòng)生成狀態(tài)機(jī)代碼的工具,筆者以前也參與過相關(guān)項(xiàng)目,(公司)使用的是(MATLAB)/(Simulink)中的一個(gè)工具庫StateFlow,還為此斥巨資30大洋買過一本書,簡單聊聊。

Stateflow是MATLAB/(Sim)ulink中的一個(gè)工具,用于建模和設(shè)計(jì)復(fù)雜的狀態(tài)機(jī)。它提供了一個(gè)圖形化界面,可以輕松地創(chuàng)建、編輯和調(diào)試狀態(tài)機(jī)模型,并自動(dòng)生成相應(yīng)的代碼。

Stateflow的主要功能包括以下幾個(gè)方面:

狀態(tài)機(jī)建模:Stateflow提供了豐富的建模元素,如狀態(tài)、轉(zhuǎn)換、事件、條件、動(dòng)作等,可以直觀地描述系統(tǒng)的狀態(tài)和狀態(tài)之間的轉(zhuǎn)換關(guān)系。通過拖拽和連接這些建模元素,可以輕松地構(gòu)建狀態(tài)機(jī)模型,并定義狀態(tài)之間的轉(zhuǎn)換條件和相應(yīng)的動(dòng)作。

事件驅(qū)動(dòng):Stateflow基于事件驅(qū)動(dòng)的模型執(zhí)行方式。系統(tǒng)的狀態(tài)轉(zhuǎn)換是通過觸發(fā)事件來驅(qū)動(dòng)的??梢远x各種類型的事件,如輸入信號(hào)、(定時(shí)器)、條件判斷等。當(dāng)滿足轉(zhuǎn)換條件時(shí),Stateflow會(huì)相應(yīng)地執(zhí)行轉(zhuǎn)換并觸發(fā)相應(yīng)的動(dòng)作。

動(dòng)作執(zhí)行:在狀態(tài)轉(zhuǎn)換過程中,可以指定特定的動(dòng)作或行為。這些動(dòng)作可以是簡單的賦值操作、函數(shù)調(diào)用,或者是復(fù)雜的算法邏輯。Stateflow提供了豐富的動(dòng)作語言和函數(shù)庫,可以靈活地定義狀態(tài)轉(zhuǎn)換過程中需要執(zhí)行的動(dòng)作。

狀態(tài)檢測:Stateflow提供了靈活的狀態(tài)檢測機(jī)制,可以檢測系統(tǒng)處于的當(dāng)前狀態(tài),以及特定條件下的狀態(tài)轉(zhuǎn)換。這些檢測可以用于系統(tǒng)的監(jiān)控、故障檢測和安全保護(hù)等方面。

代碼生成:一旦完成狀態(tài)機(jī)的建模和設(shè)計(jì),Stateflow可以自動(dòng)生成相應(yīng)的代碼,以便集成到實(shí)際的系統(tǒng)中。生成的代碼可以是C/(C++)代碼、MATLAB函數(shù)或Simulink模塊,可以與其他系統(tǒng)組件進(jìn)行無縫集成。

StateFlow開發(fā)界面圖來源于(網(wǎng)絡(luò))

開發(fā)界面如上圖所示,總的來說該軟件還是比較好用的,上手簡單,對于代碼能力要求較低,只要跑通流程后,后續(xù)開發(fā)和維護(hù)的難度較小。在調(diào)試方面,該軟件也非常出色,能夠拉出每個(gè)信號(hào)的值直接進(jìn)行(仿真)驗(yàn)證,有助于快速定位和解決問題。

剛畢業(yè)那陣幾個(gè)同屆的小姑娘在軟件組就是負(fù)責(zé)開發(fā)狀態(tài)機(jī)的,后來都做得有聲有色以至于現(xiàn)在都去了各大供應(yīng)商卷了,畢竟這種技能一般還是在(Ti)er1零部件供應(yīng)商那邊比較有用

10.結(jié)語

以上是筆者總結(jié)的一些狀態(tài)機(jī)設(shè)計(jì)的要點(diǎn),根據(jù)具體的應(yīng)用場景和系統(tǒng)需求,可能會(huì)有其他特定的要求和

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論