天天看點

Apollo學習筆記(一)概述+大綱

自動駕駛

Apollo學習筆記(一)概述+大綱

自動駕駛正處在告訴發展的階段。寫篇部落格便于以後複習。因為做的是自動駕駛中的某個流程,但是和機器學習無關。是以很多都是略過略過,有時間一定會好好研讀機器學習相關的内容。講真大學大學學機器學習真是給我這個菜雞留下了心理陰影。主要是概述,連起來便于我複習,整個自動駕駛系統分為幾個主要子產品

  • 定位:車必須要知道自己在哪裡,去哪裡
  • 感覺:通過雷達,攝像頭等傳來的資訊,車要感覺自己周圍的障礙物,是車還是人,結合定位地圖的資訊(紅綠燈等)都會傳入規劃
  • 預測:根據傳來的感覺資訊等去預測『其他』的動作,便于做決策
  • 規劃:決策步驟,規劃出一條路徑。
  • 控制:計算機控制車沿着規劃的路徑開。

Apollo

Apollo學習筆記(一)概述+大綱

百度Apollo無人車主要分為四個部分

  • 線控車(這是必備,由計算機支配而不是人為去開)
  • 硬體(感覺,定位等都需要高精度,采集資料來讓我們完成精密計算)需要達到apollo的硬體規格
  • 軟體:自動駕駛=計算機

    1. ubuntu+apollo核心=RTOS實時作業系統

    2. Runtime Framework(自動駕駛都是差不多這幾個子產品,差別在于算法各方面。這幾個子產品又有一個共性都是收資料,處理資料,發資料。比如規劃:收到傳感器等傳來的資料發出自己規劃的路徑資料)是以Runtime Framework Apollo用的是cyber_RT。定義了各個子產品,子產品之間的交流(資料通道),子產品之間傳遞消息的格式(message)等。這樣解耦合,便于apollo的開發。

    3. 子產品(在自動駕駛部分已經介紹過了)通過架構通信,分離。

  • 雲服務(通過網絡通路伺服器,不在車輛之上的服務): 仿真,資料,安全,DuerOS等

Apollo技術改進和亮點

共享記憶體:一次寫入多次讀取

去中心化:所有節點放在一個域内(域的概念:同一個域内通信,不同域内隔離,有時會根據ip配置設定域,做到隔離),從主節點和其他節點變成公共域,每個節點備份全部資訊,消除單點故障風險

資料相容:message 統一格式 protobuf接口語言

仿真環境平台:建構不同的駕駛場景,每個子產品有自己的算法上傳你自己子產品的算法,有評分标準,三維可視化實時路況,打分便于開發者調參。

仿真資料:記錄場景和虛拟場景:障礙物,交通信号燈等資料

ApolloScape資料集:對中國所有公路已完成高精度繪圖

高精度地圖:語義:交通隊燈,速度限制,左轉——重要的精度保證安全。

定位:各種資料(攝像頭+雷達等)+找地标+和地圖對比 坐标變換 資料融合 預處理(删除差的資料),便于建立感覺(地圖上的資訊,信号燈,還有找停車點 )

Apollo Runtime Framework——CyberRT

Apollo是開源項目,github上可以找到,内部有很多文檔。以下隻是個人了解,可能有誤,歡迎大家指正。

  • 子產品——>component 繼承基類,自定義初始化函數和資料處理函數
  • mainboard:看做是程序,加載一個或多個子產品(如果兩個子產品資料互動大,加載到同一個程序内)。cyberRT main函數入口
  • 子產品之間的通信
    • 通信類:Reader/Writer(通過channel通道即元件間資料總線,p2p)

      Service(request/response)

      Param(全局參數傳遞,C/S模式)

    • Node:架構裡最基本的組成單元,子產品包含并通過Node進行通信
    • Message:子產品間通信的消息格式定義
  • DAG:把子產品抽象成點(本來也是通過Node通信),子產品之間的通信抽象成邊,加載整個架構cyber_launch會根據launch file啟動多個mainboards,根據dag file加載子產品進mainboards,
  • 協程:優化線程使用資源配置設定實作的使用者級線程
  • 排程
  • 多路資料融合

    直接上圖吧,根據cyber文檔寫的。想深入,看代碼

    Apollo學習筆記(一)概述+大綱

README

接下來會研讀apollo repo裡的DreamView部分,因為都是開源的,就繼續寫部落格做筆記了。

學習資料很多,最開始一頭霧水,看了大綱明白了很多。bilibili搜百度 apollo會有幾個很好的課程都是度學堂開的

以及最近一周工作跌跌撞撞學了好幾點超級重要

  • 一定要問,多問(不恥下問,會發現很多事豁然開朗,别因為剛工作不好意思)
  • 看文檔和代碼永遠是最好的解決方法(先看再問)

繼續閱讀