您的位置:首頁>科技>正文

如何評價百度開放的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模組繼承關係合理, 代碼可擴展性良好

Next Article
喜欢就按个赞吧!!!
点击关闭提示