隨著智能汽車快速發展,智能汽車產業開始實現重大變革,主要體現為智能駕駛、智能座艙、智能網聯汽車功能的不斷升級,基于域端的操作系統也將逐漸形成,智能駕駛領域對于汽車行駛安全具備很高的要求。在軟件定義汽車已成為共識的趨下,不論是傳感器數量、芯片算力還是單車價值均實現了快速提升。整個過程要求下一代智能駕駛汽車能夠具備車載智能計算平臺,從而確保智能汽車的運算過程及能力能夠滿足現實要求。通常情況下,車載智能計算平臺自下而上可大致劃分為如下幾個方面:
①硬件平臺:AI單元-GPU、FPGA、ASIC芯片、CPU等;
③功能軟件:算法接口API、自動駕駛通用框架模塊、庫組件、中間件;
④應用算法軟件:自動駕駛數據及地圖、感知/規劃/決策算法。
智能汽車車載計算平臺將具備更高算力能力、更大的通信帶寬、以及更優秀的軟件升級能力,同時,最重要的EE架構也將換代升級(包括硬件、軟件、通信架構三大方向升級),伴隨著EE架構從分布式向集中式演進過程中,自動駕駛也從L2向L2+、L3乃至L4逐漸升級。其中無論從芯片、操作系統、中間件、應用層算法、駕駛數據都是實現智能汽車的關鍵,以上這一系列組件的把控將會成為實現智能汽車的重要環節。這將是下一代自動駕駛汽車的發展需求。
作為軟件定義汽車的靈魂,本文將重點論述如上幾種要素中的不被大家熟知的關鍵要素:
操作系統及中間件。
在分布式EE架構下,通常用于實現低等級的駕駛輔助系統,我們比較常用的方式是將計算單元放置于某一個傳感器總成中(比如雷達控制器總成和攝像頭控制器總成),這里的總成相當于分布式中央處理單元。通常前端原始傳感器處理只涉及簡單的、分辨率較低的點云或數字圖像,這里的單元基本只需要調度某一單一任務。因此通常的計算功能只涉及一些簡單的邏輯運算,風險系數也不高。
在智能駕駛逐漸過度到集中式域控制方案時,其傳感器種類和數量大幅增加、需要處理的數據量也是呈現指數級增長。包含涉及的任務量也更多,很多任務還是成多線程同時調度,這就需要將諸如原始感知能力集中到前端AI芯片上。而在集中式域控制器方案中,必須需要有一個強大的實時操作系統才能更好的分配、調度運算和存儲資源。
通常,我們所提到的操作系統通常是指的是其中的內核管理單元,內核實際是負責系統的最基本功能,決定著系統的性能和穩定性。承擔著進程調度、內存管理、設備驅動程序、文件管理和網絡管理等功能。目前,主流的自動駕駛系統的內核開發供應商包括黑莓公司的QNX、開源基金會的Linux以及風河公司的VxWorks幾種。
在自動駕駛領域中,人們更加關注其各個傳感器、軟硬件組件、應用系統、控制算法等的穩定性,安全性、實時性等特征。操作系統作為底層驅動,所承擔的職責處于如上各個子功能的底層。這就使得自動駕駛領域更加關注操作系統的功能安全。對于如上三大主流操作系統內核,只有QNX早在2011年就通過了ISO26262 ASIL-D安全認證,這是第一個通過這項認證的實時操作系統。這也是很多域控制器選型中重點關注的要素,甚至作為是否適配高級自動駕駛系統開發設計的門檻。而安全性也就意味著不可能免費提供,且部分QNX是一種不可更改內核的固化OS內核,也就意味著底層內核不是開源的。
這一點上,Linux和VxWorks相對于QNX而言,就開放很多,幾乎是全開源的,tier1或主機廠可以根據實際需求進行中間件和應用軟件的擴展編寫,甚至可以根據自己的實力動其底層的OS內核驅動軟件,這就大大的擴展了Linux在不同CPU架構上運行的效能,減少對于底層OS內核軟件服務商的依賴,降本的同時也是真正自研軟件的開始。當然,像類似Linux這樣開源的操作系統,其內核的的組件要比QNX復雜得多,從而導致其穩定性也要差很多,且對于主機廠或tier1的開發能力提出了極高的要求,這一技術壁壘經常導致開發進程中的很小bug也會導致整個系統崩潰。
而VxWork這一操作系統,則是從技術上解決了QNX與Linux兩者的弊端,他既解決了QNX不開源的弊端,同時,也在2019年2月,通過了ISO 26262 ASIL-D認證,成為了實現功能安全認證的第二款操作系統。然而這一款操作系統仍舊是收費的,且由于其綜合實力較好,其開發工具鏈費用還相對較高,在講求性價比的主機廠或tier1中應用并不廣泛。
這里我們就需要以自動駕駛系統對芯片及底層驅動的需求,將這幾類操作系統的優劣進行對比了,以便為后續的方案選型做準備。這里我們統計了這三種主流操作系統的不同特性得出如下的比較結論:
幾種操作系統在自動駕駛不同的芯片級廠家中應用范圍是不同的,而由于幾種不同的基礎特征,可能導致主機廠或tier1在芯片選型中也會更加關注其操作系統的是否能夠滿足其性能需求。因為相當一部分主機廠或tier1有能力自研除操作內核以外的其他基礎軟硬件,比如中間件、自動駕駛通用框架、算法API等。
當前,由于主機廠或tier1自身研發能力受限,往往在評估可靠地車載計算平臺時,會結合自身需求及能力選擇適合的操作系統內核,選擇的標準主要包括開放性、可擴展性、易用性、安全性、可靠性及成本等因素。然而,隨著主機廠或tier1在軟件技術能力上的不斷提升,像Linux這種開源的軟件將更加受歡迎,因為他不限制其開發的自主性,且面向未來的架構設計可以實現更高的可兼容性。諸如特斯拉、谷歌這類主機廠具備較高自主研發能力,通常能夠很好地駕馭像Linux這類開源的操作系統。而像百度Robotaxi為了追求安全性與實現性能的綜合性價比,就將感知算法計算能力放在Linux上,非感知算法計算能力放在QNX上。
實際上,真實地操作系統還包括了除操作內核之外的其他應用單元,比如板件支持、中間件、庫組件及與上層接口之間的其他程序驅動單元。對于自動駕駛系統整體運算過程而言,由于其龐大計算量和超高的運算難度,需要在早期將計算任務化整為零,將整個軟件工程分解成若干小任務,分散解決。在系統集成階段時,又需要化零為整,根據需求將各個運算完成的任務整合成一個整體。
本質上,中間件可以認為是一種廣義操作系統,不同于QNX、Linux、Vxworks這些底層OS內核,它是介于上層應用和底層系統之間的一套軟件框架,是對軟硬件資源進行管理、分配和調度的平臺,充當著軟件和硬件解耦的關鍵角色。同時,能為上層的應用軟件提供開發和運行所需的環境,方便開發者快速、高效、靈活地開發和集成自動駕駛軟件。因此,中間件是實現下一代面向服務SOA的重要單元。在一定程度上決定了未來自動駕駛系統能否實現最佳效能。
當前,很多公司所涉及的操作系統自研能力實際都是指的對操作系統內核做補充開發中間件或裁減應用軟件。而主機廠與Tier1在開發能力上的差異性往往體現在其所開發底層操作系統研發的整體框架上,而框架又取決于OS的中間件組合。比如基于QNX內核做開發時,由于底層OS內核不可被更改,主機廠或tier1只能通過疊加自己定制的上層算法來完成中間件的設計。而基于Linux內核開發時,則是先參照自身需求對底層OS內核做軟件裁減配置,再上層適配不同的中間層算法,顯然Linux難度要大得多。
借助于中間件平臺,插拔式設計可以將主機廠的不同硬件配置進行統一定制化開發,整個自動駕駛系統方案,在開發時可以根據需求進行不同拓展,而這里的不同拓展,既可以體現為適配不同的傳感器、芯片、車輛平臺等硬件,也體現為選配不同的軟件算法模塊,實現不同級別的自動駕駛功能。同時,中間件的應用也能確保開發后可以快速高效地進行軟件迭代。
對于中間件的開發而言,需要在底層系統層面,打通OSI(開放式系統互聯)接口,對不同系統的接口進行封裝。具體將以自下而上的自動駕駛系統算法處理模式來說明整個中間件的開發過程。
自動駕駛的感知數據前端處理包括對世界模型的相關數據結構進行定義和描述,中間件將傳感器數據解析成世界模型中的數據表示,分離傳感器數據接入方式和數據解析。
這里需要在基礎平臺庫中,開發和配置自動駕駛系統應用的基礎組件,包括日志、配置、通訊、資源隔離、線程池、內存池、無損隊列,以上功能的開發可以實現傳感器數據抽取、同步等操作。
中間件需要提供了關于數據整合的執行管理、狀態管理、時間同步、通訊、診斷、監控以及一些其他的模塊。從而確保平臺系統、應用功能、系統資源按照正確的配置運行,并且狀態得到高效管理,模塊間可以實現及時有效的通訊,出現問題時可以實現隨時診斷。
某種程度上來說,操作系統內核及其中間件的開發將成為自動駕駛應用背景下的一項“新基建”。尤其是隨著自動駕駛產業化進程的深入,量產紛紛提上各家日程,越來越多人意識到操作系統和中間件的重要性和必要性。操作系統對實時性、功能安全、信息安全的要求都在提高。
總的來說,對使用什么樣的操作系統內核和中間件,車企和芯片公司的話語權是高于操作系統廠商的。
因為主機廠是更加貼近用戶知道需要在底層操作系統基礎上如何做延伸開發以適配更多的軟件功能。