电竞比分网-中国电竞赛事及体育赛事平台

分享

基于Some IP的ADAS系統(tǒng)架構(gòu)

 Neal199 2025-04-19 發(fā)布于安徽
之前系列文章中提到,關(guān)于自適應(yīng) AUTOSAR (AP Autosar)平臺(tái)是基于面向服務(wù)SOA的通信,以實(shí)現(xiàn)對(duì)底層硬件和其他軟件組件的更大獨(dú)立性。而在經(jīng)典AUTOSAR(Classic Autosar)中,ECU提取和 SWC 描述本地靜態(tài)存儲(chǔ)在相關(guān) ECU 上的 ROM 組件中。這些共同定義了整個(gè)系統(tǒng)內(nèi)ECU的行為,不能隨意交換。

另一方面,在新平臺(tái)中,每個(gè)應(yīng)用程序都有一個(gè)所謂的清單文件Manifest,該文件描述了應(yīng)用程序提供和需要的所有接口、方法和服務(wù)。Manifest與應(yīng)用程序的機(jī)器代碼一起,這形成了一個(gè)可以在任何自適應(yīng) AUTOSAR ECU 上執(zhí)行的單元。清單和應(yīng)用程序代碼都被持久存儲(chǔ)并加載到正在執(zhí)行的 ECU 的 RAM 中執(zhí)行,每個(gè)應(yīng)用程序都在單獨(dú)的虛擬地址空間中執(zhí)行,以排除應(yīng)用程序之間的交互。

底層平臺(tái)是(至少符合 PSE51 的)POSIX 操作系統(tǒng),這意味著任何兼容的應(yīng)用程序都可以在現(xiàn)有的 ECU 上運(yùn)行。應(yīng)用程序作為單獨(dú)的進(jìn)程執(zhí)行,并且可以使用標(biāo)準(zhǔn)化庫(kù)和接口 訪問(wèn)操作系統(tǒng)和抽象硬件的功能。
 
圖片

從應(yīng)用程序的角度來(lái)看,與其他應(yīng)用程序或進(jìn)程的通信是局部透明的,即與遠(yuǎn)程 ECU 上的應(yīng)用程序的通信在同一 ECU 上運(yùn)行的應(yīng)用程序的連接是相同的。因此,應(yīng)用程序之間的通信路徑可以在運(yùn)行時(shí)確定——這可以實(shí)現(xiàn)應(yīng)用程序的動(dòng)態(tài)(重新)分配,而不會(huì)對(duì)其他應(yīng)用程序的功能產(chǎn)生負(fù)面影響。為了實(shí)現(xiàn)這一點(diǎn)功能,SOME/IP 協(xié)議可用作中間件。

圖片

基于Some IP的ADAS系統(tǒng)架構(gòu)

下圖顯示了一種通用的車(chē)輛架構(gòu),其中使用了經(jīng)典和自適應(yīng) AUTOSAR ECU。由于對(duì)于安全相關(guān)組件的實(shí)時(shí)要求和絕對(duì)穩(wěn)健性要求,該架構(gòu)保留 CAN 總線控制的 AUTOSAR 經(jīng)典 ECU 用于動(dòng)力總成集群(例如發(fā)動(dòng)機(jī)控制、制動(dòng)系統(tǒng)、安全氣囊)。此外,與復(fù)雜的 ADAS 系統(tǒng)(例如車(chē)道偏離警告或停車(chē)輔助系統(tǒng))和傳感器系統(tǒng)(例如雷達(dá)或攝像頭)相比,這些組件只需要相對(duì)較低的數(shù)據(jù)速率就能實(shí)現(xiàn)其功能。平臺(tái)之間的連接由中央網(wǎng)關(guān)(也稱(chēng)為主機(jī))建立。因此,消息可以在基于經(jīng)典AUTOSAR架構(gòu)的CAN信號(hào)下,將總線結(jié)合與面向服務(wù)的通信中實(shí)現(xiàn)相應(yīng)的功能及信號(hào)輸出。
 
圖片

下面使用一個(gè)簡(jiǎn)化模型對(duì)整體的通信過(guò)程對(duì)如上示例進(jìn)行詳細(xì)的說(shuō)明。其中,實(shí)線連接表示基于以太網(wǎng)的 SOME/IP 網(wǎng)絡(luò)。虛線表示無(wú)線接口,虛線表示有線連接(通過(guò)CAN總線)。
 
圖片

上圖中的模型由五個(gè)通信節(jié)點(diǎn)組成,其中包含Π 網(wǎng)關(guān)、Π ADAS、Π 連接性器、Π HMI 和Π 傳感器。每個(gè)節(jié)點(diǎn)代表一個(gè)物理上獨(dú)立的 ECU,節(jié)點(diǎn)之間的所有通信都通過(guò) SOME/IP 進(jìn)行。描述了分布在這些節(jié)點(diǎn)上的許多自適應(yīng) AUTOSAR 應(yīng)用程序。對(duì)系統(tǒng)重要的其他車(chē)載網(wǎng)絡(luò)或無(wú)線電通信的接口顯示為抽象云。

SOME/IP 協(xié)議旨在為車(chē)輛內(nèi)基于 IP 的通信定義統(tǒng)一的中間件。該協(xié)議基于現(xiàn)有的 TCP/UDP 堆棧,因此通過(guò)創(chuàng)建局部透明性為應(yīng)用程序之間的通信創(chuàng)建了更高級(jí)別的抽象。該屬性表示應(yīng)用程序不需要知道哪個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)提供了所需的功能或?qū)で蟮男畔?。如果這是在同一個(gè) ECU 上,則通過(guò)本地通信通道(例如共享內(nèi)存、進(jìn)程間通信、管理程序接口)提供信息。另一方面,如果信息在另一個(gè)(已知)網(wǎng)絡(luò)節(jié)點(diǎn)上可用,則中間件執(zhí)行必要的網(wǎng)絡(luò)通信,然后將數(shù)據(jù)傳輸?shù)綉?yīng)用程序。

圖片

SOA服務(wù)中如何使用SOME/IP

根據(jù)面向服務(wù)的范式,所謂的服務(wù)構(gòu)成了 SOME/IP 協(xié)議的中心元素。服務(wù)被定義為以下各項(xiàng)的邏輯組合提供給其他服務(wù)的方法Method、數(shù)據(jù)字段Field和事件Event。Event事件表示服務(wù)狀態(tài)的抽象變化,并允許有效實(shí)現(xiàn)類(lèi)似于 CAN 協(xié)議的面向信號(hào)的通信。

例如,可以通過(guò)相應(yīng)字段Field的通知方法來(lái)定義何時(shí)觸發(fā)此類(lèi)事件。一個(gè)服務(wù)Service的一個(gè)或多個(gè)事件可以組合成一個(gè)所謂的事件組??蛻?hù)端訂閱一個(gè)服務(wù)中的一個(gè)或多個(gè)事件組以接收訂閱組中包含的事件通知。使用多播可以有效地傳遞事件實(shí)施,訂閱客戶(hù)的數(shù)量應(yīng)該增加。

SOME/IP 支持三種基本版本的 Notifier 方法。最簡(jiǎn)單的形式 Update-on-Change 會(huì)在相應(yīng)字段的值發(fā)生更改時(shí)立即發(fā)送通知。如果只有顯著的值更改會(huì)觸發(fā)事件,則可以配置所謂的ε更改通知器。為此,為該字段定義了一個(gè) ε 值。一旦發(fā)送的最后一個(gè)值的變化超過(guò)定義的 ?,就會(huì)觸發(fā)通知。第三個(gè)選項(xiàng)是 Cyclecic 更新。為此,字段Field的當(dāng)前值會(huì)以指定的時(shí)間間隔發(fā)送,而不管值可能發(fā)生變化。

圖片

輔助駕駛中的SOA服務(wù)通信原理

在下文中,如上示例架構(gòu)被擴(kuò)展為包括合適的應(yīng)用程序(由它們的服務(wù)、事件組和方法表示)。它們具有許多相互依賴(lài)關(guān)系,可用于闡明協(xié)議的工作原理。

下圖顯示了 ECU 級(jí)別的依賴(lài)關(guān)系。
 
圖片

從上圖所表示,基礎(chǔ)的連接架構(gòu)上看,主要包括如下幾個(gè)模塊:

ADAS/ADS,此應(yīng)用程序代表駕駛員輔助系統(tǒng)/自動(dòng)駕駛系統(tǒng)的集合。該服務(wù)包括許多配置方法(config)和一個(gè)事件組(警告),在識(shí)別出的危險(xiǎn)事件中發(fā)送警告消息。為了提供這些功能,ADAS/ADS應(yīng)用程序需要大量傳感器數(shù)據(jù),這些數(shù)據(jù)由事件組(SensorData 和 CANread)提供。

 adSensor此服務(wù)捆綁了許多高級(jí)傳感器,并通過(guò) sensorData 事件組EventGroup將它們的數(shù)據(jù)提供給其他服務(wù)。除了純粹的被動(dòng)傳感器操作外,C2X 系統(tǒng)尤其還允許傳輸消息,例如警告后面的車(chē)輛交通擁堵或緊急制動(dòng)。該服務(wù)為此功能提供傳輸方法。

如果檢測(cè)到的危險(xiǎn)超過(guò)閾值,應(yīng)用程序也會(huì)獨(dú)立做出反應(yīng)以防止事故發(fā)生(例如通過(guò)啟動(dòng)緊急制動(dòng))。為此,ADAS 應(yīng)用程序必須能夠觸發(fā)某些 CAN 消息,這可以使用 CANwrite 方法實(shí)現(xiàn)。此外,可能需要通過(guò)無(wú)線電接口(例如 C2X)傳輸警告消息,這就是為什么還需要 adSensor 服務(wù)的傳輸方法的原因。

Bridge網(wǎng)橋網(wǎng)關(guān)服務(wù)提供基于以太網(wǎng)的 SOME/IP 網(wǎng)絡(luò)和 CAN 總線之間的接口,以實(shí)現(xiàn)基本的車(chē)輛功能。CANread 事件組將某些 CAN 消息作為事件提供,而 CANwrite 方法允許對(duì) CAN 總線進(jìn)行受控寫(xiě)訪問(wèn)。

IProxy代理服務(wù)器,網(wǎng)關(guān)還提供了使用車(chē)輛手機(jī)接口訪問(wèn)互聯(lián)網(wǎng)的代理服務(wù)。使用服務(wù)可以使用 iRequest 方法注冊(cè)并接收必要的訪問(wèn)信息作為響應(yīng)。

Multimedia多媒體,該服務(wù)使用 iRequest 方法允許多媒體應(yīng)用程序(例如導(dǎo)航系統(tǒng)或在線搜索請(qǐng)求)訪問(wèn) Internet。此外,這會(huì)訪問(wèn)來(lái)自 adSensor 服務(wù)的某些傳感器數(shù)據(jù)。這是必要的,例如,顯示倒車(chē)攝像頭的視頻流或根據(jù)行駛速度自動(dòng)調(diào)整播放音量。

Settings設(shè)置這是一個(gè)控制界面,將驅(qū)動(dòng)程序所做的各種設(shè)置轉(zhuǎn)發(fā)給系統(tǒng)。為此需要受影響服務(wù)的相應(yīng)設(shè)置方法,例如 config 和特殊的 CANwrite 方法。

Dashboard儀表板,此服務(wù)在車(chē)輛駕駛艙中以易于訪問(wèn)的形式顯示所有重要的車(chē)輛信息和警告。為此,該服務(wù)需要大量的信息源,特別是事件組警告、sensorData 和 CANread 是令人感興趣的。

Blackbox黑匣子,從本質(zhì)上講,黑匣子服務(wù)是內(nèi)部通信的純粹被動(dòng)觀察者,它收集數(shù)據(jù)以在發(fā)生事故時(shí)進(jìn)行后續(xù)診斷或用于診斷目的。為此,該服務(wù)訂閱系統(tǒng)中的所有事件組,并提供 logMe 方法。其他服務(wù)可以調(diào)用此方法來(lái)啟用從他們自己的服務(wù)傳輸?shù)乃邢⒌娜罩居涗洝@?,?duì)于允許(部分)自動(dòng)駕駛的服務(wù)來(lái)說(shuō),這很有趣。如果發(fā)生事故,整個(gè)記錄的通信可以提供有關(guān)事故原因的信息。例如,可以使用 iRequest 方法的 Internet 連接將診斷數(shù)據(jù)從服務(wù)傳輸(匿名)到制造商。
 
圖片

一組示例性 SOME/IP 服務(wù)及其依賴(lài)關(guān)系的概述,SOME/IP 標(biāo)準(zhǔn)定義了四個(gè)中心通信概念。

RPC 遠(yuǎn)程過(guò)程調(diào)用,分為 Fire&Forget 和 Request-Response。在第一個(gè)變體中,客戶(hù)端調(diào)用服務(wù)器提供的方法,但不期望返回值。Fire&Forget 請(qǐng)求因此特別適用于控制命令。請(qǐng)求-響應(yīng)變體是遠(yuǎn)程方法調(diào)用的經(jīng)典形式,調(diào)用客戶(hù)端會(huì)收到包含返回碼和包含任何返回值。

Field字段,客戶(hù)端可以使用 get 或 set 方法讀取和更改服務(wù)的數(shù)據(jù)字段。此外,每個(gè)字段都可以有一個(gè) Notifier 方法,將字段的當(dāng)前值傳輸給感興趣的客戶(hù)端。

Publish-Subscrib發(fā)布-訂閱,一項(xiàng)服務(wù)可以提供一個(gè)或多個(gè)事件組,感興趣的客戶(hù)可以訂閱這些事件組。一旦屬于事件組的字段的狀態(tài)以定義的方式發(fā)生變化,服務(wù)就會(huì)向所有訂閱客戶(hù)端發(fā)送一個(gè)帶有新?tīng)顟B(tài)的通知幀(事件),這種機(jī)制允許有效地實(shí)現(xiàn)面向信號(hào)的通信。
 
圖片

SOA服務(wù)具有系統(tǒng)內(nèi)唯一的 16 位服務(wù) ID。與服務(wù)的IP地址和端口一起,可以清楚地識(shí)別服務(wù)。功能相同的服務(wù)的多個(gè)實(shí)例是有可能的,并且由 16 位服務(wù)實(shí)例 ID 唯一標(biāo)識(shí),保留實(shí)例 ID 0xFFFF 允許對(duì)所有實(shí)例進(jìn)行尋址。為了使 SOME/IP 幀頭盡可能小,僅在其中指定服務(wù) ID。服務(wù)實(shí)例 ID 僅在 SOME/IP 服務(wù)發(fā)現(xiàn)期間使用。因此,位于同一 ECU 上的兩個(gè)服務(wù)實(shí)例不得在同一TCP/UDP 端口上接收和發(fā)送,以防止錯(cuò)誤尋址。服務(wù)提供的每個(gè)方法和事件通知也有一個(gè) 16 位的方法 ID,它唯一地標(biāo)識(shí)服務(wù)上下文中的方法。按照慣例,最高有效位 (MSB) 是事件的“1”和方法的“0”。另一方面,事件組具有在整個(gè)系統(tǒng)中唯一的 16 位 ID。服務(wù) ID 和方法 ID 的串聯(lián)唯一標(biāo)識(shí)了 SOME/IP 消息的接收者,因此稱(chēng)為消息 ID。消息 ID(連同 IP 地址和端口號(hào))足以將消息發(fā)送到正確的服務(wù)器。

圖片

ADAS/ADS系統(tǒng)中的服務(wù)發(fā)現(xiàn)

客戶(hù)端和服務(wù)器之間需要某種形式的會(huì)話處理來(lái)區(qū)分不同的客戶(hù)端請(qǐng)求。SOME/IP 提供了請(qǐng)求 ID 的使用,它由兩個(gè) 16 位字段客戶(hù)端 ID 和會(huì)話 ID 組成。客戶(hù)端 ID 此標(biāo)識(shí)符唯一地指定 ECU 內(nèi)的客戶(hù)端應(yīng)用程序。ID 到應(yīng)用程序的分配可以由 ECU 自由管理。會(huì)話 ID 在最簡(jiǎn)單的情況下,此標(biāo)識(shí)符是一個(gè)簡(jiǎn)單的計(jì)數(shù)器,它隨著來(lái)自客戶(hù)端的每個(gè)新請(qǐng)求而遞增,以區(qū)分每個(gè)先前的請(qǐng)求。SOME/IP 標(biāo)準(zhǔn)規(guī)定,對(duì)于從客戶(hù)端到服務(wù)器的第一條消息,會(huì)話 ID 的值為 0x01假設(shè)會(huì)話處理對(duì)于帶有響應(yīng)的 RPC 是強(qiáng)制性的,對(duì)于“Fire&Forget” 的遠(yuǎn)距離進(jìn)程通信RPC 和Event事件是可選的。

SOME/IP 中間件的先決條件是了解所提供的服務(wù)、它們?cè)谥邱{系統(tǒng)中的當(dāng)前狀態(tài)和位置。對(duì)于這個(gè)中心任務(wù),SOME/IP 定義了服務(wù)發(fā)現(xiàn) (SD) 協(xié)議。服務(wù)是使用 ECU(比如高階域控制器HPC) 的 SOME/IP-SD 進(jìn)程發(fā)現(xiàn)的,并分為本地(針對(duì)在同一HPC上運(yùn)行的所有服務(wù))和系統(tǒng)范圍(針對(duì)網(wǎng)絡(luò)內(nèi) ECU (如座艙域控制器CSC、底盤(pán)域控制器VDC、車(chē)身域控制器PDC)上可用的服務(wù))提供發(fā)現(xiàn)服務(wù)的能力。一旦 ECU 完成本地服務(wù)發(fā)現(xiàn),它就會(huì)將組合的 SOME/IP-SD 消息作為 IP 多播發(fā)送到所有其他 ECU。這樣的消息包含一個(gè)或多個(gè) offerService 和 findService 子消息。offerService 消息描述了 ECU 的本地服務(wù)(比如雷達(dá)/攝像頭探測(cè)目標(biāo)的服務(wù)Objects)及其所有相關(guān)選項(xiàng)(如需要該傳感器發(fā)送的具體哪個(gè)目標(biāo)信息)。此類(lèi)消息的所有接收者都可以使用 SOME/IP 以這種方式提供的服務(wù)。如果本地?zé)o法解決服務(wù)的依賴(lài)關(guān)系,則發(fā)送相應(yīng)的 findService 消息。讀取此類(lèi)部分消息的接收者然后檢查其本地服務(wù)是否匹配。如果找到,則接收者回復(fù)另一條 SOME/IP-SD 消息,其中包含所尋求服務(wù)的 offerService 條目。

下圖顯示了一個(gè)示例服務(wù)發(fā)現(xiàn)的過(guò)程。
 
圖片

系統(tǒng)啟動(dòng)均發(fā)生在 SOME/IP-SD 進(jìn)程啟動(dòng)后,它會(huì)經(jīng)歷三個(gè)階段:初始等待、重復(fù)和進(jìn)入主程序。

Initial Wait初始等待  系統(tǒng)啟動(dòng)后,進(jìn)程在實(shí)際服務(wù)發(fā)現(xiàn)開(kāi)始之前進(jìn)入等待階段。此等待期用于完成本地服務(wù)發(fā)現(xiàn),也使慢速系統(tǒng)能夠啟動(dòng),然后參與 SOME/IP-SD 協(xié)議。在最好的情況下,網(wǎng)絡(luò)中的所有 SOME/IP-SD 進(jìn)程都已準(zhǔn)備就緒,并且每個(gè) ECU 交換單個(gè) SOME/IP-SD 消息集(Message Set)就足以發(fā)現(xiàn)網(wǎng)絡(luò)中的所有服務(wù)。

Repetition重復(fù)多播  等待階段結(jié)束后,SOME/IP-SD 進(jìn)程開(kāi)始通過(guò) IP 多播將組合消息發(fā)送到預(yù)先配置的多播地址(參見(jiàn)上面子圖 a),且這個(gè)過(guò)程會(huì)定期重復(fù)。該階段的間隔和總長(zhǎng)度是系統(tǒng)參數(shù),可以任意選擇。這些參數(shù)的典型選擇是例如總持續(xù)時(shí)間為 40 毫秒,間隔長(zhǎng)度為 10 毫秒。

Main主程序  重復(fù)階段之后是主階段,一直持續(xù)到 ECU 運(yùn)行時(shí)間結(jié)束。在此階段,如果發(fā)現(xiàn)至少一個(gè)本地服務(wù)對(duì)應(yīng)于請(qǐng)求中的條目,SD 進(jìn)程將響應(yīng)傳入的 findService 請(qǐng)求(請(qǐng)參閱c 和d 圖)。此外,可以定期發(fā)送 SOME/IP-SD 消息的循環(huán)更新,例如更新所提供服務(wù)的有效時(shí)間、生存時(shí)間及延遲時(shí)間等。

要?jiǎng)?chuàng)建 SOME/IP-SD 消息,該過(guò)程必須具有有關(guān)在 ECU 本地運(yùn)行的所有服務(wù)的準(zhǔn)確信息。創(chuàng)建消息的 offerService 和 findService 條目需要充分掌握SOME/IP 標(biāo)準(zhǔn)信息定義。

圖片

總結(jié)

SOME/IP 可以看作是一種基于對(duì)象的面向服務(wù)的體系結(jié)構(gòu)。信息通過(guò)實(shí)例化服務(wù)對(duì)象提供給系統(tǒng),這些由客戶(hù)端應(yīng)用程序訪問(wèn),客戶(hù)端應(yīng)用程序?yàn)樗麄兿胍L問(wèn)的每個(gè)服務(wù)實(shí)例實(shí)例化相應(yīng)的“代理”對(duì)象??蛻?hù)端應(yīng)用程序通過(guò)將代理對(duì)象附加到服務(wù)對(duì)象,并使用它來(lái)監(jiān)視事件Event和字段Field,從而得以有效的訂閱信息。他們還可以調(diào)用服務(wù)對(duì)象上的操作來(lái)執(zhí)行遠(yuǎn)程過(guò)程調(diào)用RPC或讀/寫(xiě)特定字段。

SOME/IP特別注重協(xié)議的可擴(kuò)展性,使低性能ECU和功能強(qiáng)大的ECU都可以使用相同的協(xié)議進(jìn)行通信,為了實(shí)現(xiàn)可擴(kuò)展性,SOME/IP的幾個(gè)可互操作版本是可能的。對(duì)于最小版本,整個(gè) SOME/IP-SD 協(xié)議可以被一個(gè)靜態(tài)配置文件替換,其中包含所有必要的信息。另外,可以省略 TCP 的實(shí)現(xiàn)。為了與更復(fù)雜的實(shí)現(xiàn)互操作,只需需要 SOME/IP 序列化,并且需要支持之前介紹的通信類(lèi)型即可。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多