華文網

如何評價百度開放的Apollo計畫源碼?

AI科技大本營此前特別採訪到宇通無人駕駛客車Team Leader,

中科院微電子所副研究員韓威,CSDN主編孟岩,PerceptIn 聯合創始人劉少山,深入詳解百度開源的Apollo計畫源碼。

韓威:

百度這次開源的代碼,架構設計合理,模組劃分清晰,可擴展性較好,便於開發者維護和應用。代碼品質較高,注釋偏少,總體來說工程化思想不錯。但功能叫較為單一和簡單,只是尋跡行駛,複雜環境感知及定位等核心技術有待進一步開放。

孟岩:

1.跟 TensorFlow 一樣,Apollo 整個項目使用 bazel 作為構建工具,

以 docker 形式發佈,並提供了安裝構建的說明文檔,有經驗的開發者不難構建成功。但目前的文檔還很不完善,很多模組中的文檔是空的,僅靠閱讀文檔恐怕難有大的收穫。如果想在 Apollo 這個方向上走得比較深入,必須進入代碼層面。由於整個項目是用 C++ 寫的,代碼非常規範,熟悉 C++ 的人並不難讀懂。但今天熟悉這種語言的人越來越少,實際上閱讀 Apollo 源碼的門檻還是比較高的。

2.代碼主要是由 C++ 構成,

大部分代碼與 C++ 98 相容,但也使用了 unique_ptr, unordered_map 等 C++ 11 元件。整個專案環境要求 boost 庫,但仔細查看代碼,發現真正對 boost 庫的依賴只有寥寥幾處,而且基本都為 C++ 11 所覆蓋。由此可見,Apollo 還是希望盡可能降低對於 C++ 編譯器的要求,允許使用僅滿足 C++ 98 TR2的 C++ 編譯器對項目進行編譯。這對於智慧駕駛系統的開發十分有意義,因為可能有些平臺仍在使用老舊的 C++ 編譯器。

3.核心代碼位於 modules 子目錄下,其中包含車載CAN匯流排系統 canbus,

Web 顯示系統 dreamview,全球定位系統驅動 gnss,人機交互系統 hmi,感測器資料處理系統 perception等重要模組。但目前放出的代碼主要是框架和介面,使用 Apollo 的企業需要圍繞這個框架和介面開發相應的驅動程式和介面程式。

4.C++代碼品質上乘,單元測試使用 gtest,序列化採用 protobuf,數學計算使用 Eigen 庫,都是各領域一流的庫,可以看得出這支團隊高超的代碼素養。但同時,想要參與 Apollo 的代碼貢獻,其人的技術水準也必須要相當之高。

PerceptIn 聯合創始人劉少山總體評價:

1)整體架構規劃合理,層次清晰;2)模組化、封裝隔離性方面的考慮周到 3)代碼可擴展性比較好;4)代碼風格良好且統一

1. 代碼目錄結構:1)建議增加exmaples資料夾,提供tutorial及程式樣例

2. 代碼使用:1)提供常見作業系統下的依賴庫和安裝方式;2)缺少詳細的api文檔;3)缺少樣例,缺少文檔支持,比較難上手

3. 代碼品質:1)現有模組的代碼風格符合規範;2)控制模組輸入、輸出規劃和演算法設計合理;3)Localization模組繼承關係合理,

代碼可擴展性良好