摘要:在汽車行業,AUTOSAR是一個由汽車原始設備制造商(OEM)、供應商和其他行業成員組成的國際聯盟,他們于2003年發布了第一個參考架構AUTOSAR Classic,它的重點不在于獨立于底層硬件的動態應用,但是隨著SOA和自動駕駛的日益重要,2018年發布的第二個標準Adaptive AUTOSAR則解決了這些需求。 然而汽車行業并不是第一個面臨向動態和靈活的通信模式轉變的行業,在物理系統和機器人技術的環境中,也發生了類似的演變,在這個背景下,廣泛使用的ROS1(一套開源的庫和工具集,用于軟件架構開發)無法滿足實時性、安全性和跨平臺互操作性的需求,其繼任者ROS2以及EDMS等中間件解決了這些缺點,并實現了面向服務的通信。這些中間件在研究環境中被廣泛使用,用于實現軟件封裝和通信,也在汽車電氣/電子架構的背景下得到了應用。現在甚至有經過認證的解決方案,滿足電氣和/或電子系統的功能安全標準(ISO26262)和必要的汽車安全完整性級別(ASIL),關于ADAS功能和高度連接的車輛背景下的面向服務的架構(SOAs),仍有許多問題有待解決。
01.
AP?AUTOSAR以及ROS的概念
1、AP?AUTOSAR的概念
Adaptive AUTOSAR是一個官方定義的術語,將其描述為 “用于自適應應用程序(ARA)的AUTOSAR運行時。提供兩種類型的接口,即服務和API,該平臺由功能集群組成,這些功能集群又分組在服務中,并且構成了自適應AUTOSAR基礎” 。實際上,它是另一個機器人框架,由以下所稱的功能集群組成:該框架的規范由AUTOSAR聯盟開發。然后由Vector、ETAS、Elektrobit、東軟睿馳、Mathworks、Aubass等公司進行實際實現,開發工作由聯盟成員完成,只有規范是公開發布的,Adaptive AUTOSAR基于用于在單核微控制器上編程應用程序的經典AUTOSAR。
汽車的電子/電氣(E/E)架構作為一個系統,包括軟件(SW)和硬件(HW)組件以及機械部件。傳統的分布式架構的特點是HW和SW緊密耦合在許多電控單元(ECU)上。相反面向服務的架構使應用軟件和執行硬件相互獨立,為了實現這種松耦合的架構,操作系統(OS)和中間件起著關鍵作用。中間件層主要負責ECU之間的通信,因此,中間件的要求包括在整個車輛架構內或與云和后端基礎設施進行抽象和虛擬化通信的執行,這些系統組件之間的通信在系統開發期間可能是未知的,因此,在互連系統中,通信是動態的,需要在運行時靈活地建立鏈接,在連接車輛中產生的大量數據和面向服務的架構導致了新協議在E/E架構中的集成。作為自適應AUTOSAR規范中指定的動態通信的汽車參考架構,將功能應用程序和一個符合POSIX標準的操作系統與名為自適應應用程序運行環境(ARA)的模塊化層分開。
在ARA中,定義了接口和服務,用于指定操作系統訪問和一個通信中間件,以基于以太網實現面向服務的架構。自適應AUTOSAR的首個版本中,指定了可擴展的面向服務的IP中間件(SOME/IP)作為相應的標準化架構的中間件協議。 2、ROS的概念 ? ROS框架是一個由軟件工具、庫、協議和API組成的集合,旨在簡化為復雜的多傳感器、多執行器系統開發軟件的任務。在大多數情況下,機器人框架的使用決定了開發軟件的一般架構原則。例如軟件是集中式還是分散式,實時還是非實時等,關鍵組成部分是中間件,它是將機器人框架的眾多組件粘合在一起的關鍵,中間件的最基本任務是提供自主車輛中軟件節點之間的通信基礎設施。
ROS框架的典型用例是提供系統的上層(軟件)和低層(硬件)組件之間的基本接口。這些接口和組件包括各種操作系統(OS)特定的驅動程序,單個開發人員開發這些驅動程序可能需要很長時間。ROS的架構如下圖所示:
02
1、EDMS的概念 ? 自適應AUTOSAR規范和ROS兩者的關鍵區別在于ROS采用“先編碼,再規范“的方法,因為ROS在機器人領域已經使用和驗證了12年,自適應AUTOSAR部分是從零開始編寫的,部分采用了經過驗證的技術,如SOME/IP3、DLT4和UDS5,自適應AUTOSAR遵循” 先規范,再生成代碼“的方法。
EDMS?(ETAS Deterministic?Middleware Solution)是博世智能駕駛架構平臺對標ROS開發的中間件。
在大型社區和數據記錄、回放、可視化和調試等工具方面,EDMS表現出色,它還可以與其他語言(如Python和Java)進行綁定,EDMS利用常見的開源工具,而不是由各個AUTOSAR供應商提供的工具,因此用戶群規模較小,自適應AUTOSAR使用面向服務的SOME/IP,而EDMS使用面向數據的DDS,前者只能在UDP和TCP之間切換,而后者具有QoS(服務質量)。由于DDS的存在,EDMS中的數據傳輸非常高效快速,這得益于共享內存(SHM)和零拷貝實現。
首先,標準平臺軟件支持 EDMS AD 中間件。由 POSIX 操作系統(QNX 或 Linux)加上特定的硬件加速器、CUDA、Nvsci 等以及 DDS 或 SOME/IP 等標準通信堆棧組成。
除了 AD 中間件,平臺軟件在 EDMS中由博世的 VRTE AUTOSAR 自適應實現完成。AUTOSAR Adaptive 非常有用,因為它可用于直接托管對安全性和確定性沒有強烈要求的非 AD 功能。因此,EDMS可以為此類“標準”uP 應用程序提供完整的 AUTOSAR Adaptive API(具有標準中定義的所有功能)。
此外,EDMS還使用 VRTE 為 EDMS運行時提供基本服務,例如日志記錄或診斷。因此,EDMS應用程序可以在 EDMS VCU 中與 AUTOSAR 自適應應用程序一起無縫運行。
EDMS可以提供額外的設施來支持和加速 AD/ADAS 開發,同時還可以在同一臺機器上啟用 AUTOSAR 自適應應用程序,這兩個元素都構建在一個通用的基礎架構框架上,可以在 EDMS應用程序和自適應應用程序之間實現快速高效的通信。
EDMS提供AD 中間件和全面的工具和元素。EDMS運行時,也稱為“中間件”,是 EDMS在 ECU 上運行的方面。作為中間件,運行時位于體系結構中的操作系統和硬件之上。它提供 EDMS部署、構建和重新計算工具使用的執行控制、通信服務和數據記錄服務,以支持 AD/ADAS 應用程序的開發和執行。EDMS中間件 API是 為 AD 應用程序設計的“簡約”API,可改進涵蓋通信、執行和數據捕獲的穩健應用程序開發。
2、?EDMS的特點
EDMS是一個獨立的軟件包,但在實際項目中它將與 AUTOSAR Adaptive 并行存在,因為有幾個功能不是 EDMS的一部分(例如ECU間通信、診斷通信、持久性、密碼學等) ? 主要特點: ·確定性行為可實現高效開發和基于仿真的驗證 ·高性能通信中間件 ·支持高達 ASIL-D 的功能安全 ·實現高效的 ADAS/AD 軟件開發 ·與 AUTOSAR 中間件解決方案一起工作 客戶價值 ·加速 ADAS/AD 開發周期 ·無縫集成到不同的 DevOps 環境中 ·通過取證重新計算加快調試速度通過可重現的基于仿真的驗證 ·大幅減少物理測試里程
EDMS旨在解決 AD 問題域,因此確定的要求——硬件獨立性、需要快速迭代開發的開放世界問題解決、支持收集驗證和驗證證據等,旨在由 EDMS解決。
EDMS通過利用多種技術解決了AD/ADAS開發的問題。EDMS亮點包括: ·高性能面向服務的通信——零拷貝 IPC 提供 AD/ADAS 中使用的大數據集所需的恒定時間縮放和高帶寬 (>10GB/s) ·從 HW 和 OS 抽象——一種與 HW 無關的開發方法將功能開發與部署到平臺分開——這支持 SW 重用和重新定位以及靈活和可擴展的部署——EDMS中間件可以部署到嵌入式微處理器,以便在實驗室中運行應用程序,在測試車,并在生產中 ·高性能數據記錄輔助可重復執行的時間和數據確定性?收集安全和驗證證據的分析 通過重新計算V&V 的確定性重新計算,記錄可以從試駕數據中調試問題。在這里,通過重新計算支持優化開發周期,允許通過重新計算活動中一組可運行對象的歷史執行進行驗證,并在試駕或實驗室設置中記錄數據。 ? 03.
EDMS的完整工具鏈? ? ?
1、開發環節 YAAA 是一種基于文本的域特定語言(DSL),專為 AD 開發而設計。使用 DSL 意味著模型易于人類閱讀,因此可以輕松審查,此外,通用源代碼控制機制可用于合并更改或以與管理項目源代碼完全相同的方式控制訪問。 YAAA 不僅支持活動和可運行對象的規范,還支持數據如何在可運行對象之間流動,例如可運行對象 A 產生的數據由可運行對象 B 使用。
YAAA 還可以指定 SW 中的活動如何被觸發—是定期觸發還是由數據觸發——以及runnables的執行預算。基于該模型,可以離線驗證時序約束,或者可以在運行時監控違規情況。
基于 DSL,YAAA 支持與編譯器一樣的工具鏈集成。實際上,EDMS中就包含了這樣一個編譯器 YAAAC,它基于 YAAA 模型為 EDMS提供代碼生成。
YAML-as- architecture方法的基礎是將代碼和架構放在一起,以便它們可以作為一個整體進行管理;架構即代碼的方法。所有工件都是在基于文本的環境中使用基于 YAML 的模板定義的,例如您最喜歡的編輯器。
EDMS包括編輯器插件等便利功能,可通過語法高亮顯示等 “必備“ 功能簡化流程。一個例子是廣泛使用的 Visual Studio Code 的編輯器擴展插件;這既支持通常的自動完成編碼支持,YAAA DSL 的語法高亮顯示,也支持通過 GNU 調試器 (GDB) 進行的調試支持。
雖然 YAAA 非常適合確保開發人員將代碼和架構作為一個整體來管理——從而確保它們保持同步——但有時獲取架構的圖形視圖還是很有用的。對于可視化, EDMS提供了YAAA-Vis ,它使用由 YAAAC 生成的可點擊的基于 Web 的架構可視化。
?2、部署和編譯環節
YAAA-Vis 可視化由YAAA 代碼生成器 (YAAAC) 支持。 YAAAC 是一個命令行工具,它生成所有中間件相關的源代碼和配置文件,這些源代碼和配置文件是構建和部署由 YAAA 模型和功能用戶代碼描述的 YAAA 應用程序所必需的。
生成的文件取決于所選的中間件類型/版本。YAAA-Vis 支持只是 YAAAC 的輸出之一。其他包括,特別是對于 CARMA 中間件,各種代碼工件: ·發布-訂閱通信機制所需的代理和骨架頭文件 ·建模活動、ECU 本地調度組件和 ECU 間通信網關的主要文件 ·運行時配置的清單文件和啟動腳本 生成的源代碼和功能用戶代碼隨后針對選定的目標架構進行編譯和鏈接。生成的可執行文件已準備好部署到目標硬件并在其上執行。
如前所述,代碼生成只是 YAAAC 的任務之一。它還用于使其他外部工具可以訪問加載的 YAAA 模型的內部表示,方法是將模型導出為基于文本的表示,或者通過 Python API 提供對模型的動態訪問。在任何一種情況下,外部工具都可以訪問完整的模型內容,例如所描述的軟件架構、硬件架構或部署信息。YAAA-VIS 只是此類外部工具的一個示例,正如我們所見,它用于生成軟件和硬件架構的圖形表示,可以是靜態 SVG 圖像,也可以是交互式 HTML 頁面。
3、駕駛環節
EDMS中間件稱為 CARMA,由支持 EDMS執行(包括調度、高帶寬通信和訪問 HWA)的客戶端庫和通信/運行時庫組成。 EDMS中間件旨在在實驗室、測試車和生產中無縫部署。同樣的中間件也可以部署到開發人員 PC/計算集群,以及在微處理器上測試運行后重新計算相同的應用程序,而無需修改應用程序代碼。為此,我們需要 EDMS中的應用程序模型。
EDMS應用程序包含活動——這些活動可以是任何任務,例如作為 AD/ADAS 應用程序的一部分執行的圖像感知。活動由時間或數據觸發,并且包含由 EDMS工具中定義的依賴項連接的可運行鏈,作為應用程序架構設計的一部分。
ADAM(Awesome Decentralized Activation Management)的庫,它負責以時間和數據驅動模式激活活動,以支持確定性和并發性。該庫不直接由應用程序使用,而是提供一個 EDMS內部客戶端 API,該 API 在 EDMS生成的代碼中使用,以生成反映活動設計的活動可執行文件。
ADAM 是一個去中心化的激活庫,這意味著在并行運行的不同活動之間沒有同步(按設計)。ADAM 支持數據驅動激活(連接注冊的Iceoryx接收器以在數據到達時激活活動)和時間驅動激活(允許設置周期時間和偏移量)。
?4、 通信環節
高效、高帶寬的通信對于 AD/ADAS 至關重要。傳統的汽車軟件具有適度的通信需求——例如,引擎控制軟件的消耗通常可能遠低于 1MB/s——當我們考慮駕駛輔助或自動駕駛軟件時,所需的帶寬范圍為 100MB/s-1GB/s 或更高。
EDMS通信使用Iceoryx 。Iceoryx 使用真正的零拷貝、共享內存方法,允許將數據從發布者傳輸到訂閱者,而無需中間件中的任何副本。這確保了數據傳輸具有恒定的延遲,無論有效負載的大小如何。
在 EDMS中使用具有恒定開銷的真正零拷貝通信具有許多有趣且重要的屬性。特別是,通信的擴展性非常好,隨著消息大小的增加,帶寬也會增加——這是因為唯一的成本是固定的開銷,因此無論消息大小如何,成本都是一樣的!
EDMS中間件包括通信管理服務器。這為中間件處理了兩個關鍵任務;首先作為連接發布者/訂閱者的代理,其次,作為共享內存管理器控制器段分配以支持零拷貝。
值得注意的是,VRTE 還將 ARA::COM 連接到 Iceoryx,因此 EDMS/VRTE 支持 EDMS應用程序和 AUTOSAR 自適應應用程序之間的快速高效通信。
最后,EDMS還支持將 Iceoryx 綁定到 ROS,稱為 ROS 網關。用戶可以在定義 ROS 和 Iceoryx 之間的綁定的網關中定義對象(在任一方向,因此到或從 Iceoryx)。當 ROS 運行時處于活動狀態時,根據網關對象的配置,傳入的 ROS 消息將傳入/傳出 Iceoryx。
5、 記錄和存儲環節
日志記錄對于 AD/ADAS 開發非常重要——這同樣適用于開發階段和現場。
EDMS提供了一個數據記錄庫,它采用涵蓋數據測量和記錄的 “整體 “記錄方法。為了啟用取證分析,EDMS日志記錄支持無干擾、確定性執行和可靠的數據傳輸。
EDMS Logging 涵蓋了多種信息,超越了傳統的日志框架: ?·基于文本的日志消息,附帶消息參數和嚴重性(致命、錯誤、警告、信息……), ·附加跟蹤上下文(數據流、執行順序……)的跟蹤消息, ·附加時間上下文(時間點,跨度標識符,...)的分析消息, ·事件,可能沒有附加數據(即事件標識符)和 ·具有超高帶寬(>1GB/秒)能力的標記有效負載消息(數據測量系統) ? “整體“日志記錄方法要求所有這些類型的數據都可以在一個共同的邏輯時間軸中使用,以用于取證分析目的。這使開發人員能夠使用特殊的回放和(圖形)分析工具重現和跟蹤系統行為。
EDMS工具不僅僅是設計和部署, EDMS產品的很大一部分是重新計算和模擬支持——關閉 AD 開發周期的外觀。
TaPe (Trace Player)通過重新計算活動內一組可運行對象的歷史執行來啟用驗證,并在試駕或實驗室設置期間記錄數據。可運行程序可以在開發人員機器或嵌入式目標上的重新計算中執行。支持使用調試器(例如gdb )調試單個可運行對象的功能代碼。
TaPe允許通過快速驗證加速 AD 開發周期——例如,當現場記錄的執行可以帶回實驗室并逐步詳細分析 SW 響應時,調試會變得更加高效。
EDMS Open Loop ( DoL ) Player 允許通過將記錄或模擬數據輸入可運行、(多個)活動、ECU 或完整的 AD 系統來進行驗證和驗證。它可以在開發人員 PC、嵌入式目標或云端執行。
EDMS DoLPlayer支持虛擬發布和新開發代碼的輕松確定性執行,從可運行級別到完整的 AD 系統,用于調試和回歸測試。EDMS DoLPlayer驗證也可以集成到 CI/CD 系統中以提供快速驗證。
除了數據記錄,EDMS Flow Tracing庫還可以記錄系統中的所有可運行和活動執行——包括執行之間交換的消息的元信息。 ? 記錄工具代碼生成過程中的可運行對象和活動(因此由 EDMS工具支持)。 Flow Tracing 庫為代碼生成提供了必要的代碼模板,并提供了一個庫來處理執行期間記錄數據的聚合和發布。
Flow Tracing 數據用于 EDMS工具Robolyzer應用程序中的分析,以及用于TaPe中的重新計算和確定性開環 ( DoL ) 播放器。
對于高效記錄,數據采集是在沒有轉換為通用數據表示的開銷的情況下完成的。這意味著直接捕獲原始內存內容,在某些情況下甚至在嵌入式目標上使用零拷貝機制(例如通過使用 DMA)。通過這樣做,數據布局正是目標上使用的內存布局,所有填充和數據大小都由目標 ABI 產生。由于只傳輸不透明的二進制數據塊,因此目標上不會發生數據的成員序列化,也不需要復雜的傳輸協議。使用這種寫入優化的方法,“序列化”負載完全轉移到數據攝取過程(因此稱為延遲延遲方法)。Serialize 庫(即libserialize )用于理解特定源 ABI 并將它們翻譯(即反序列化)為 ABI 和處理系統的表示。之后,數據位于內存中的本地消費者布局中,并且可以進一步處理,就好像它是在消費機器上本地生成的一樣。
6、分析環節
記錄數據后,現在需要對其進行分析——為此,EDMS提供了Robolyzer。 Robolyzer使開發人員和架構師能夠分析自動駕駛應用程序的多 ECU 系統中的執行行為和數據流。該應用程序既可以在開發人員機器上使用來分析本地數據,也可以部署到數據存儲和處理后端以連續 分析來自試駕的大數據集。基于 Web 的用戶界面顯示統計數據,例如執行時間和激活間隔,以提供完整系統行為的概覽。為了評估軟件組件的演變,可以隨時間比較多個測量。
Robolyzer提供甘特圖可視化,提供對記錄行為的詳細調查到單個執行的級別和執行之間的數據流。
正如我們之前在談論工具時所看到的,EDMS支持通過TaPe播放器進行重新計算。回想一下, TaPe是一種輕量級重放解決方案,專注于取證重放,用于調試各個Runnable的功能行為,而不考慮 EDMS中間件以及初始化完整系統或時序模擬的需要。 Robolyzer和TaPe集成在一起,允許在開發人員機器或嵌入式目標上方便地選擇和重新計算執行( TaPe也可以通過交互式命令行界面單獨使用)。
04.
EDMS總結??
EDMS(汽車操作系統)是一個 EDMS SDK,用于開發和運行 ADAS/AD 應用程序,包括基于 μP/POSIX 的平臺和開發工具的運行時。它使軟件工程師能夠開發在安全性、性能、效率、可維護性和可用性方面具有最高標準的AD應用程序。 EDMS SDK 的主要目標是: ·與硬件無關的功能開發 ·快速高效的開發周期 ·安全性和驗證證據 這些目標將通過協調所謂的“AD 開發周期”來實現,該周期允許迭代和數據驅動的開發。EDMS SDK 為該 AD 周期中的不同開發步驟提供了貢獻,完全或部分參見虛線。完整的 AD 周期可以通過其他博世產品進行補充:
? 上述 EDMS-Circle確定了以下階段: 設計和開發:對于此步驟,EDMS提供了架構建模語言 (YAAA) 和圖形架構可視化 YAAA-Vis。
部署:代碼生成 (YAAAC),用于將 ADAS/AD 應用程序綁定到運行時。
編譯:使用 EDMS cmake 參考實現從所有自動生成和手動提供的源創建可執行文件。可以根據項目需要進行擴展。
驅動:在此步驟中,EDMS提供 Carma 運行時以及在車輛或其他物理目標環境中執行的 ADAS/AD 應用程序。
測量:提供對正在運行的軟件的測量(和校準)訪問。 該步驟可以由相應的數據采集系統補充。
記錄:保存在車輛或其他物理目標中運行軟件時測量的數據,以便立即或稍后分析。
數據鏈接:此步驟包含博世產品,用于存儲數據以進行聯合分析。
驗證、驗證、重播、重新計算、模擬、分析:對于此步驟,EDMS提供了兩個元素:用于取證的 TaPe。DoL 用于FreeCompute和Credible ReCompute。這可以通過其他博世產品進行擴展,以實現進一步的模擬用例,例如 HoL、SiL、SoL。
編輯:黃飛
?
評論
查看更多