或許很多小夥伴會納悶,自動駕駛的中間件是什麼?可能大家聽得最多的就是深不可測的人工智能算法,各種感知融合,各類路徑規劃……但是,再高深的智能決策算法,如果沒有底層操作系統的支持,那麼自動駕駛汽車的一切都将是空談。
而目前關于自動駕駛“中間件”的文章少之又少,小編将近日閱讀的自動駕駛中間件的相關文獻進行如下總結,方便各位快速了解。
01 什麼是自動駕駛“中間件”
中間件是介于應用系統和系統軟件之間的一類軟件,它使用系統軟件所提供的基礎服務,銜接網絡上應用系統的各個部分或不同的應用,能夠達到資源共享、功能共享的目的。
自動駕駛的中間件,也屬于廣義上的操作系統,但是它和QNX、Linux這些底層系統并不一樣。本質上它是介于上層應用和底層系統之間的一套軟件框架,是對軟硬件資源進行管理、分配和調度的平台,充當着軟件和硬件解耦的關鍵角色。它為上層的應用軟件提供開發和運行所需的環境,方便開發者快速、高效、靈活地開發和集成自動駕駛軟件。
中間件的主要任務是負責各類應用軟件模塊之間的通信以及對系統資源的調度。它的優點,是可以大大降低應用層軟件的開發難度,使研發工程師可以完全把注意力集中到功能算法的開發上。
總的來說,中間件是整個軟件架構的核心組成部分。
02 為什麼要“中間件”
衆所周知,在智能汽車、機器人等領域,各個軟件系統的不同部分之間需要傳輸大量數據。在過去的幾十年中,由最初的發動機控制系統,發展到當下熱門的輔助駕駛/自動駕駛等等,汽車電子技術有了革命性的發展。
而現代基本的軟件設計原則是模塊化。模塊化可以提高可維護性、代碼重用性并隔離故障。在現代操作系統中,将單個模塊映射到軟件進程非常方便,這些進程可以位于相同的計算設備上,也可以位于物理上獨立的計算設備上。
模塊化為開發提供了便利,但也引入了對通信中間件的需求。因為模塊設計人員必須仔細考慮在模塊之間共享哪些信息,如何将這些信息封送編碼到消息中,如何将封送的消息從一個模塊傳遞到另一個模塊,以及如何在接收到消息後解碼。
通信中間件的引入整體上可以幫助開發人員提高工作效率。盡管消息傳遞系統引入了複雜性,但它也提供了分析和内省的機會。特别是,可以通過專門設計用于幫助系統開發的模塊捕獲和分析消息。這些模塊可以将消息記錄到磁盤,提供關于帶寬、消息速率等方面的統計信息。
具體來說,中間件通常對傳感器、計算平台等資源進行抽象,對算法、子系統、功能采取模塊化的管理,通過提供的統一接口,讓開發人員能夠專注于各自業務層面的開發,而無需了解無關的細節。這樣最直接的好處就是,整個系統的開發效率得到提高,軟件部署得以簡化,整體的擴展性也獲得了提升。
03 “中間件”平台如何服務自動駕駛
開發自動駕駛的中間件,就像是修公路一樣,如果修得寬、修得好,那它能通行的車也會越多,通行的速度也會更快。如果中間件能打下一個好的基礎,那麼整個自動駕駛方案開發和應用的質量、效率也都會有不錯的保障。
自動駕駛需要接收不同的傳感器信号,然後進行感知、規劃和控制,并由轉向、油門和制動這些硬件系統來完成整個過程。所以自動駕駛的中間件會涉及到ECU管理、傳感器管理、車輛模型管理、通信管理、任務管理、數據管理、安全管理、診斷管理、OTA管理、可視化管理。
自動駕駛的應用有着高可靠、高性能、高并發以及模塊化的需求特征,而實時、安全、開放的自動駕駛中間件平台是實現這些的關鍵之一,同時也是推動“軟件定義汽車”的重要基礎。
不同車廠的硬件配置存在巨大差異,而同一車廠内的不同品牌、不同車型也會存在不同。借助于中間件平台,插拔式設計便成為可能,這使得在開發時可以根據需求進行不同拓展,開發後也可以快速高效地進行軟件叠代。
而這裡的不同拓展,既可以體現為适配不同的傳感器、芯片、車輛平台等硬件,也體現為選配不同的軟件算法模塊,實現不同級别的自動駕駛功能。對于主流的嵌入式平台、深度學習框架以及底層系統,中間件平台相當于連接它們的潤滑劑。
同馮諾依曼瓶頸有些相似的是,無論頂層應用算法多麼優秀,一個低效的中間件都會在開發的過程中演變為一個巨大的瓶頸,進而會慢慢地拖垮整個系統的運行。因此,在以後的研發中,自動駕駛中間件應同智能的算法和可靠的硬件設備一樣得到重視。
有話要說...