陳君毅,劉力豪,周堂瑞,邢星宇
(同濟大學汽車學院,上海201804)
安全是汽車的基本要求,自動駕駛系統的出現賦予了汽車安全性新的內涵。其中因外部環境因素、功能局限與人為誤用導致的安全問題屬于預期功能安全的研究范疇[1]。決策系統是自動駕駛汽車的“大腦”,其功能為根據環境及自車信息,決策獲得安全舒適的駕駛行為,指導自動駕駛汽車的運動,對于乘員人身安全有著至關重要的影響,其安全性值得深入分析。
決策系統是一個典型的軟件密集型系統,相比傳統的汽車電子電氣系統它承擔更高等級的駕駛任務,具備更加復雜的邏輯。傳統安全分析方法,例如基于事件鏈或流行病學模型的分析方法認為事故的根本原因在于系統中單個或多個組件的故障,難以覆蓋系統功能局限與環境擾動帶來的危險;且在分析邏輯復雜的軟件密集型系統時效率有限[2],難以應用在自動駕駛決策系統的安全分析上。
囿于傳統安全分析方法的局限,近年來部分學者將以STPA方法為代表的現代安全分析方法引入自動駕駛系統的安全性研究中。Mahajan等[3]將STPA方法應用于車道輔助保持系統(lane keeping assistance,LKA),得到LKA系統的安全要求;Abdulkhaleq等[4]對一個使用有限狀態機的汽車自適應巡航系統(adaptive cruise control,ACC)進行了STPA分析,得到ACC系統的安全要求;Bagschik等[5]在德國高速公路無人駕駛保護車(僅具備跟車行駛功能)上應用STPA方法,得到了該車的危險事件;筆者在前期研究中提出了一種基于STPA的符合ISO 26262的安全分析方法,并應用于一輛SAE L3級的自動駕駛清掃車上[6],導出了該車的功能安全要求。
上述研究使用STPA方法對自動駕駛系統的安全性進行分析,但仍有兩個關鍵問題未被解決。一是研究僅進行安全分析,止于導出危險事件或者提出安全要求,缺乏對分析結果的進一步應用,也未驗證分析結果的合理性和有效性;二是分析多按照功能展開且多數僅針對較低等級自動駕駛功能,缺少對同時具備巡航、換道、泊車等多種功能的高級自動駕駛決策系統的研究。在更高等級自動駕駛系統中,系統復雜性的提升給分析帶來了新的挑戰。
針對上述問題,本文提出一種涵蓋安全分析、策略設計以及試驗驗證三個環節的安全性開發方法,并在一個LV4城市自動駕駛決策系統的原型階段進行了應用。
現有安全標準[1,7]要求在自動駕駛系統開發過程中開展安全分析。對于高等級自動駕駛系統,由于運行場景和內部邏輯的復雜化,采用整體分析的視角將導致難以利用系統內部結構有效信息。而典型架構的自動駕駛系統的感知認知、決策規劃和控制執行模塊解耦度高,且根據各模塊的不同特點適合采取不同的分析方式。基于Leveson[8-9]提出的STPA方法,結合高等級自動駕駛決策系統的特點,本文提出一種面向自動駕駛決策系統的安全性開發方法,如圖1所示。
該方法以系統本身的功能作為分析起點,結合分析對象的具體程序構建控制結構圖和過程模型;并基于分析結果增加了策略設計以及試驗驗證步驟,形成自動駕駛決策系統安全性開發的迭代閉環。方法共包含8個步驟:
(1)建立系統控制結構。根據系統功能定義建立整車的控制結構,從決策系統的原型程序中提取過程模型;
(2)確定安全關鍵控制行為(control action,CA)。在整車控制結構中確定與事故直接相關的控制指令;
(3)識別不安全控制行為(unsafe control action,UCA)。考察各安全關鍵控制行為的錯誤模式,識別系統的不安全控制行為;

圖1 本文所提出的安全性開發方法Fig.1 Proposed safety development method
(4)分析不安全控制行為原因。原因可以逐級往前推理,對決策規劃系統而言,可以推理到感知結果;
(5)識別潛在危險事件;
(6)試驗驗證危險事件;
(7)設計安全策略(safety strategy,SS)。針對經驗證有效的危險事件,通過改進原系統或者限制使用場景的方式,使安全性約束(safety constraint,SC)重新得到保證;
(8)試驗驗證安全策略。
以上8個步驟最終所得的有效安全策略在系統中經過實現,為一輪完整的安全迭代過程。在系統經過修改后,可進行重新分析和回歸測試,通過多次迭代,使得整體系統風險降低至可接受水平。
所提出的安全性開發方法在一個L4級城市自動駕駛決策系統[10]的原型階段進行了應用。該決策系統基于有限狀態機構建,并在MATLAB/Simulink中完成了原型實現,涵蓋4個子功能:①沿全局路徑的循跡,包括無前車的定速巡航和有前車的跟車巡航;②主動換道,在巡航通行效率過低時會考慮進行主動變道;③路口通行,通過交通信號燈控制的路口;④自主泊車,在路邊停車位進行垂直車位泊車或者平行車位泊車。
根據上述系統功能定義確定整車控制結構,如圖2所示。城市自動駕駛系統可建立包含5個層次的控制結構,分別為:感知層、決策層、控制層、執行層和環境層。環境層元素的信息通過傳感器被感知層獲取,經過處理獲得決策層所需的輸入;決策層綜合環境和自車信息,決策出車輛下一時刻應該采取的動作,即期望速度和期望位置;控制層接收決策層的輸出,將其轉化為底層控制指令供車輛執行機構使用;執行層是整車的物理實體,直接與環境層交互。

圖2 整車控制結構圖Fig.2 Control structure of autonomous vehicles
本文城市自動駕駛決策系統使用狀態機(finite state automata,FSA)構建,從其Simulink程序中提取核心狀態機模型,反映系統在決策過程中的控制邏輯;并結合功能定義構建決策系統的過程模型,如圖3所示。

圖3 決策系統狀態機過程模型Fig.3 FSA-based process model of the decisionmaking system
從整車控制結構圖中確定安全關鍵控制行為,即直接與事故相關的控制信號或指令。依據是否直接與現實世界交互這一條件,控制結構圖中的5個層級可以分為物理層和邏輯層。物理層包括執行層和環境層,位于控制結構圖的底部;邏輯層包括感知層、決策層和控制層,位于控制結構圖的上游。事故(人身安全、財產損失)發生在物理層中,因此邏輯層對物理層施加的控制行為,是自動駕駛決策系統對現實世界造成影響的途徑。如果邏輯層對物理層施加了錯誤的控制行為,則可能導致事故發生。這一路徑上傳遞的控制行為即安全關鍵控制行為。對自動駕駛決策系統而言,它包括了期望速度(A1)和期望位置(A2)兩個控制行為,記為集合A。
通過考察安全關鍵控制行為的錯誤模式,識別不安全控制行為。在STPA通用分類方法[9]的基礎上提出了以下8種錯誤模式,用M表示它們的集合:
(1)M1需要提供控制信號,但未提供;
(2)M2不需要提供控制信號,但提供;
(3)M3提供了正確的控制信號,但時機過早;
(4)M4提供了正確的控制信號,但時機過晚;
(5)M5提供的控制信號持續時間過長;
(6)M6提供的控制信號持續時間過短;
(7)M7提供的控制信號數值過大;
(8)M8提供的控制信號數值過小;
值得注意的是,這些錯誤模式并非所有情況下都會導致危險。例如,在跟車時即使提供較小的期望速度,也不會導致自車與目標車發生碰撞,只是導致行駛效率變低。所以需要對不同運行情況作分別分析。對城市自動駕駛決策系統而言,可以用功能狀態指代這些不同的運行情況。從狀態機過程模型中可提取出以下9個功能狀態,分別為:定速巡航(S1),跟車巡航(S2),換道(S3),換道后保持(S4),交通信號燈處理(S5),路口中決策(S6),尋找車位(S7),平行泊車(S8)和垂直泊車(S9)。用S表示功能狀態的集合。
作集合A、M和S的笛卡爾積,可得到潛在不安全控制行為集,記為Up,即

STPA方法要求分析人員依據經驗對潛在不安全控制行為進行篩選,排除在特定情況下不成立的選項。篩選過程可表示為式(2),其中f(·)代表了篩選規則,F表示用于過濾的布爾矩陣,最終結果記為U。這樣,識別不安全控制行為的問題轉化成構建過濾矩陣的問題。

以自主泊車功能(S7、S8、S9)為例,說明不安全控制行為識別的過程。尋找車位時(S7),車輛保持勻速沿道路前進,通過超聲波雷達掃描庫位深度,判斷泊車是否可行并辨別庫位類型,決策系統應該輸出恒定為2 m·s-1的速度和0位置(與全局路徑偏移為0);尋位成功后,自車根據庫位類型選擇垂直(S8)或平行方式(S9)泊入庫內,決策系統輸出2 m·s-1的速度以及軌跡規劃器決定的位置。根據上述分析,建立過濾矩陣如表1所示,矩陣元素取值為1或0,分別表示該位置的潛在不安全控制行為是否應納入考慮。例如,(A1,M1,S7)尋找車位時,需要提供期望速度但未提供,會導致車輛停在原地,任務無法完成,但不會導致事故發生,所以過濾矩陣中對應位置的值為0,該潛在不安全控制行為不被考慮。

表1 自主泊車功能的不安全控制行為Tab.1 UCAs of the auto-parking function
對于完整系統,共分析獲得70個不安全控制行為。各功能狀態的不安全控制行為數目如表2所示。

表2 各功能狀態的不安全控制行為數目Tab.2 UCA Numbers of each function state
考察控制結構中決策層的信息流,可知其最終輸出結果取決于三個方面:決策系統自身、感知層輸入的環境信息和感知層輸入的定位導航信息。因此不安全控制行為的原因可被歸納為以下三個類別,記為CR(category of reason):
(1)CR1決策系統未獲得正確的環境信息:感知層未提供給決策層正確的環境信息;或者提供了正確的信息,但傳輸途徑出現問題。結果表現為決策系統不能正確獲取周圍障礙物與交通參與者的信息;
(2)CR2決策系統未獲得正確的車輛狀態:感知層未提供給決策層正確的車輛狀態信息;或者提供了正確的信息,但傳輸途徑出現問題。結果表現為決策系統不能正確獲取自車的位置與速度信息;
(3)CR3決策系統自身存在安全缺陷,包括:CR3.1狀態轉移條件設置出錯或判斷出錯,結果表現為決策系統轉移到了與實際任務不符合的狀態;CR3.2轉移條件過于敏感引起狀態震蕩,表現為決策系統在兩個或多個狀態之間反復切換,不能正常輸出控制指令;CR3.3處于正確的狀態,但計算出了錯誤的結果。由決策系統參數設置有誤或算法設計缺陷造成;CR3.4設計時缺少必須狀態,導致決策系統不具備處理相關危險的能力;CR3.5決策系統計算得到了正確的輸出,但輸出通道上存在干擾、時延等問題,導致最終輸出的期望速度和期望位置信號與計算結果不一致。
結合所得無人駕駛決策系統自主泊車功能的不安全控制行為,最終分析得到了10個原因,它們各自所屬的類別,以及和不安全控制行為之間的關系如表3所示。

表3 自主泊車功能的不安全控制行為原因Tab.3 Reasons of UCAs of the auto-parking function
根據分析獲得的不安全控制行為及其原因構建潛在危險事件。將事故定義為車輛與行人、車輛或者障礙物發生碰撞,造成人身安全或財產損失,系統危險為導致事故發生的宏觀車輛行為,由不安全控制行為引發。危險事件被定義為因為不安全控制行為原因R,造成系統危險H,與環境中元素發生事故D,可以使用如(Ri,Hj,Dk)的有序元組進行形式化描述。對該城市自動駕駛決策系統可推導出以下系統危險,并提出對應的安全性約束C,如表4所示。表中還展示了事故、系統危險、不安全控制行為以及不安全控制行為原因之間的追溯關系,根據定義即可構建得到系統的危險事件。

表4 自主泊車功能事故、系統危險、安全性約束Tab.4 Accidents,hazards,and safety constraints of the auto-parking function
以危險事件(R9,H8,D3)為例,說明危險事件的驗證步驟。危險事件為因決策系統缺少緊急制動狀態,導致泊車過程中車輛未避讓闖入庫位的行人,發生碰撞。使用PreScan聯合MATLAB/Simulink的仿真平臺進行了驗證,試驗場景如圖4所示。自車為黑色車,將泊入中間平行庫位,在車輛開始泊車后,有一行人走入庫位中。

圖4 自主泊車工況典型危險試驗場景Fig.4 Testing Scenario of the auto-parking function
安全性分析指出,由于自車在完成庫位檢測開始倒車入庫后,其行為被確定,不再受外界環境影響,也不具備緊急制動機制。如果此時有行人進入車位,自車不會避讓。盡管此時車速較低,但仍然可能發生碰撞。通過仿真環境對安全分析結果進行驗證,試驗結果表明,自車最終會與行人發生碰撞,碰撞過程如圖5所示。
對經過驗證的危險事件,可以針對性設計安全策略,以使安全性約束重新得到保障。安全策略的設計可從正向和反向兩個方面進行。正向為提升系統本身的能力,修復其錯誤,使系統在原本的潛在危險場景下不發生事故;反向為限制系統的運行場景,通過要求、標準或法規禁止系統在原本的潛在危險場景下運行,達到避免事故的目標。從正向和反向兩個角度考慮,本文對分析得到的危險事件提出了以下的安全策略,如表5所示。

圖5 自主泊車工況典型危險事件下的事故過程Fig.5 Process of the accident during auto-parking
本文以安全策略SS8在泊車規劃模塊中增加緊急制動狀態為例進行說明。該安全策略的作用為,在車輛泊車過程中,實時檢測庫位中是否存在闖入的行人或車輛等動態物體,如果存在且碰撞檢測標志為真,則轉移到緊急制動狀態,輸出0值期望速度,以避免碰撞發生。搭載安全策略后的泊車狀態機程序如圖6所示,其中淺色區域內即為添加的緊急制動狀態。當碰撞檢測標志“CrashCheck”為真時,保存工作現場并從泊車狀態轉移到緊急制動狀態,輸出0期望速度;當“CrashCheck”為假時,退出緊急制動狀態,恢復工作現場,繼續完成泊車。
在與2.6節中相同的危險場景下,對實現了上述安全策略的系統進行了驗證試驗。自車安全完成泊車任務,圖7展示了試驗過程中自車的泊車過程。在搭載安全策略前后的試驗中,還記錄了自車和行人的運動學信息,包括位置、速度、航向角等。

表5 自主泊車功能的安全策略Tab.5 Safety Strategy of the auto-parking function

圖6 添加緊急制動狀態后的泊車狀態機程序Fig.6 FSA of the auto-parking function with AEB state
圖8展示了泊車過程中自車速度以及自車與行人相對距離的變化。在34.1 s時搭載安全策略前后的自車均完成了第一次泊車規劃,速度降低至0。未搭載安全策略的車輛隨即重新加速執行第二次泊車規劃,而未注意避讓后方闖入庫位的行人,導致最終在36.4 s時發生碰撞(相對距離為0);搭載安全策略后的車輛檢測到行人,在34 s~38 s間保持速度為0、安全距離大于2 m,等待行人通過。
以上測試結果表明,搭載安全策略后車輛及時避讓,避免了與行人發生碰撞,提出的安全策略有效避免了事故發生。

圖7 實現安全策略后的自主泊車全過程Fig.7 Process of auto-parking with the safety strategy implemented

圖8 搭載安全策略前后泊車過程中的自車速度和相對距離Fig.8 Speed and relative distance during autoparking
針對自動駕駛決策系統的安全性問題,提出了一種基于STPA的安全性開發方法。該方法涵蓋安全分析、策略設計和測試驗證三個環節,形成完整的安全性開發迭代閉環。所提出的方法在一個城市自動駕駛決策系統的原型開發階段中進行了實踐。針對決策系統的特點,使用狀態機構建過程模型,建立了包含了4個功能模塊、9個功能狀態的控制結構,分析獲得了8個錯誤模式下的70個不安全控制行為。針對其中3個泊車相關的功能狀態,分析得到了10個不安全控制行為原因和8個系統危險,提出了9個安全策略。以在泊車規劃模塊中增加緊急制動狀態這一安全策略為例,進行了系統改進,通過模型在環仿真的方式對實現安全策略前后的系統進行了對照試驗。試驗結果表明,分析得到的危險事件確實發生,設計的安全策略提高了泊車過程的安全性。
此外,該研究也存在一定的局限性,將在后續的研究中完善:①安全分析過程中不安全控制行為的篩選依賴分析人員的工程經驗或領域知識,后續將進一步研究知識與客觀指標相結合的篩選方法;②分析過程中使用自然語言,不同分析人員得出的分析結果難以達到完全一致,后續將研究使用計算機技術和形式化語言進行分析的方法;③安全分析在定性的層面進行,后續將根據定性安全分析的結果進一步研究定量安全分析方法。
作者貢獻聲明:
陳君毅:研究命題的提出與構思,論文修訂
劉力豪:安全分析,策略設計和仿真試驗,論文撰寫
周堂瑞:安全分析,論文修訂
邢星宇:策略設計,數據整理,論文修訂