【自动驾驶】8. MDC通信架构 + DDS + SOME/IP
對于AP框架,感知融合模塊中,由于PreFusion通信數據量大,所以采用帶寬較大的DDS(Data Distribution Service)通信協議,其余節點傳入數據量較小,采用SOME/IP(Scalable Service-Oriented Middleware over IP)通信協議。融合模塊與規控模塊之間通信為DDS通信協議。規劃控制模塊內各節點之間均采用能夠處理大數據量的DDS通信協議。
DDS主要用于內部通信高性能場景,SOME/IP主要用于與外部部件對接的通信場景,如與Classic AUTOSAR對接。
AP的通信協議分為DDS和SOME/IP。DDS的通訊協議又分為SHM(SHare Memory)和UDP(User Datagram Protocol),SHM為域內通訊協議,UDP為芯片間通訊協議。
節點間的交互情況如下:
- CameraPerception節點從Camera中以SHM通信協議獲取圖像信息,對圖像進行初步處理后,將障礙物列表信息輸出給PreFusion節點。
- RadarPerception節點采用SOME/IP通信協議,通過MCU(Microcontroller Unit)從Radar中獲取毫米波雷達信息,并從Gps_localization獲取車輛自身狀態參數(包括自車位置、車速、航向信息等),對獲取到的信息進行初步處理后,將障礙物列表信息輸出給FullFusion節點。
- LidarPerception節點采用SHM通信協議從Lidar中獲取激光雷達信息,采用SOME/IP通信協議從Gps_localization獲取車輛自身狀態參數(包括自車位置、車速、航向信息等),對獲取到的信息進行初步處理后,將障礙物列表信息輸出給FullFusion節點。
- PreFusion節點采用SHM通信協議從Lidar中獲取激光雷達的信息,采用SHM+UDP通信協議從CameraPerception節點獲取障礙物列表信息,以及采用SOME/IP通信協議從Gps_localization節點中獲取車輛自身狀態參數(包括自車位置、車速、航向信息等),再對獲取到的信息進行初步融合,輸出新的障礙物列表信息給FullFusion節點。
- FullFusion節點分別從RadarPerception、LidarPerception和PreFusion節點獲取障礙物列表信息,并從Gps_localization獲取車輛自身狀態參數(包括自車位置、車速、航向信息等),對獲取到的信息進行最終的融合,得到可用的障礙物列表信息,然后將該信息輸出給BehaviorPlan和MotionPlan節點。
- MCU采用SOME/IP的通信協議將GPS/IMU、車輛底盤線控系統等信息輸出給Vsomeipd節點。MCU接收GPS/IMU傳感器信息的方式為串口通訊,接收線控系統信息的方式為CAN總線通訊
- Gps_localization節點接收GPS/IMU信息,獲得車輛自身狀態參數(包括自車位置、車速、航向信息等),然后將這些信息輸出給MissionPlan、BehaviorPlan、MotionPlan、Transform等節點
- MissionPlan節點接收GPS/IMU信息,獲得自車定位,并按照HMI界面設定的終點、途經點,根據高精度地圖信息,規劃出一條從起始點到終點的全局路徑。然后將該路徑以及高精度地圖中其他信息發送出去,供其他節點使用。
- BehaviorPlan節點為行為決策節點。該節點接收周圍環境信息(包括GPS/IMU信息、高精度地圖信息、周圍障礙物信息、車輛自身信息等),經過決策,輸出無人車應當執行的行為,并給出行為相關的邊界信息,提供給MotionPlan節點進行軌跡規劃。
- MotionPlan節點接收GPS/IMU信息,包括行為決策信息、周圍障礙物信息、車輛自身狀態信息等,然后根據這些信息規劃出一條最優的路徑(包含位置坐標和速度信息的曲線),再將最優路徑輸出給Transform節點。
- Transform為坐標轉換節點。該節點的功能為將MotionPlan節點提供的信息從UTM坐標轉換到車輛坐標系,輸出給Control節點。
- Control節點接收Transform節點轉換之后的最優路徑信息,然后結合車輛自身狀態計算車輛橫向及縱向的控制量(方向盤轉角、油門開度、制動強度等),輸出至車輛線控層,由執行器執行相應控制量.
- Vehicle Abstract節點為車輛抽象節點。下行負責將Control節點發送的控制信號進行轉換,并發送至MCU;上行又稱為Vehicle Report節點,負責將MCU采集到的車輛狀態信息進行轉換,并發送至Conctrol、Transform、MotionPlan和BehaviorPlan節點。
- Vsomeipd是信息傳輸路由節點,為采用SOME/IP通信協議的節點提供數據轉換,如:Vehicle Abstract、GPS Abstract節點采用SOME/IP通訊協議將數據傳輸給其他節點(GPS_localization也需要通過Vsomeipd節點進行數據轉換,在圖中為了更好的體現出數據通路沒有畫出),數據經過一定的方式處理后輸出給MCU。
- Vehicle Abstract節點為車輛抽象層,GPS Abstract節點為GPS抽象層,這兩個節點主要負責將Vsomeipd節點輸出的相應數據進行解析,輸出給其余各節點進行決策規劃及控制量的計算。
請提前規劃好Service Interface Id和Service Instance Id,防止發生ID沖突。ID取值范圍為101~150。
- Service Interface:服務接口,定義接口數據類型和通訊協議等,通過不同的Service Interface Id來區別服務接口,該參數需要保證全局唯一。
- Service Instance :服務實例,由Service Interface實例化而來,通過不同的Service Instance Id來區別通訊的服務實例,該參數需要保證全局唯一。
ARXML是AUTOSAR Adaptive Platform用于生成節點之間相互通信的數據類型(以頭文件體現)以及通信規則(以json格式體現)。ARXML主要通過MDC Manifest Configurator工具進行配置。配置前需要規劃接收接口、發送接口、通信的數據類型以及通信方式等。
CM(Communication Management)
如果應用實現不需要調用CM(Communication Management)相關的接口代碼,則只需要配置Application Manifest、Machine Manifest和System Manifest即可。
通信方式
CM包含三種通訊方式:Event、Method與Field。
- Event通訊方式是在服務發現后,從服務端發送數據,由客戶端進行接收,單向傳輸數據。
- Method通訊方式是先由客戶端發送請求,服務端收到請求后會處理客戶請求并返回應答。
- Field通訊方式分為Setter、Getter與Notifier方法。其中Notifier與Event工作模式類似,Getter與Setter與Method方法類似。
SOME/IP協議通訊注意事項
若應用需要使用SOME/IP方式進行通訊,請注意以下幾點:
- 1.必須先啟動someipd,再開啟服務端與客戶端應用進行通訊,且someipd程序必須先于所有應用程序啟動。
someipd是SOMEIP的后臺進程,負責服務發現、數據轉發等功能。
someipd程序的啟動需要通過環境變量指定“vsomeip.json”配置文件,可通過如下方式指定:export SOMEIP_CONFIG_FILE=/<文件目錄>/vsomeip.json
然后,運行someipd可執行文件。someipd可執行文件目錄為/<deb解壓位置>/usr/local/AdaptiveAutoSar/bin - 2.關于“vsomeip.json”配置文件的生成,用戶可以選擇將主機上所有Application的ARXML配置文件全部輸入代碼生成工具生成,也可以選擇手動配置(將各APP單獨生成的“vsomeip.json”文件組合,主要組合“vsomeip.json”中services、applications、clients中的內容)。
- 3.someipd對應配置文件中必須包含該主機對外通訊需要的所有服務信息。
- 4.一臺主機上只允許啟動一個someipd。
- 5.應用于someipd的“vsomeip.json”配置文件必須配置service-Discovery信息。具體配置需要參考配置項。
QoS(Quality of Service)服務質量
總結
以上是生活随笔為你收集整理的【自动驾驶】8. MDC通信架构 + DDS + SOME/IP的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【自动驾驶】7. MDC常用术语、DDS
- 下一篇: 【Linux】32. shell脚本 定