(轉)Apollo 2.0 框架及源碼分析(三) | 感知模塊 | Radar & Fusion

https://zhuanlan.zhihu.com/p/33852112

preview

文章提到了幾個點:

一、雷達radar部分:

Apollo 2.0 的座標體系是以 Lidar 爲基準的。Apollo 可能認爲 Velodyne 的位置是最準確的,因此 Camera 的位置標定參考 Velodyne, Radar 的標定參考 Camera。

阿波羅的感知幾乎都依賴高精地圖預先做ROI處理,以減少傳感器數據處理的計算量浪費。

radar部分的代碼,用到了一些方法來判斷radar返回的對象是不是背景雜波。

Apollo 推薦使用的毫米波爲Continental 的 ARS 408-21。ARS 408-21的介紹文檔裏也有簡單提到,它可以對障礙物進行分類。但可靠性未知。該radar能追蹤120個objects:大陸的Radar能夠detect到超過120個object(沒有進行過fusion的只有一點的cluster single point cluster)。 這種量產的Radar一般自帶簡單的detection和tracking算法。所以raw_object會有id,一般自帶的算法會有 id, heading, velocity,object size, distance這些信息。在實際的測試過程中,該ID號是不能夠作爲跟蹤關聯的依據的,因爲ID號在障礙物交叉的時候會出錯。因此還應該再做一次關聯!

preview

二、融合部分(radar 和 lidar):

object-level 的數據融合,該部分的輸入爲各傳感器處理後的得到的object。

preview

 

多源信息的數據融合中,根據數據抽象層次,融合可分爲三個級別:

  • 數據級融合 傳感器裸數據融合,精度高、實時性差,要求傳感器是同類的
  • 特徵級融合 融合傳感器抽象的特徵向量(速度,方向等),數據量小、損失部分信息
  • 決策級融合 傳感器自身先做出決策,融合決策結果,精度低、通信量小、抗干擾強

Apollo 應該是在特徵層面對 objects 進行了融合。每當節點收到新的一幀數據的時候,融合部分就被調用。融合部分的輸入爲 SensorObjects, 輸出爲融合後的 object, 其大體的流程如下圖所示。

preview

傳感器的數據融合有兩部分內容比較重要,即 數據關聯 和 動態預估

數據關聯用的是基於幾何距離的HM匈牙利算法。

動態預估用的是:使用了非簡化的估計誤差協方差矩陣 \mathbf {P} _{k|k} 更新公式:

  • 標準卡爾曼濾波:{\displaystyle \mathbf {P} _{k|k}=(\mathbf{I-\mathbf {K} _{k}\mathbf {H} _{k}})\mathbf {P} _{k|k-1}}
  • Apollo:{\displaystyle \mathbf {P} _{k|k}=(\mathbf{I-\mathbf {K} _{k}\mathbf {H} _{k}})\mathbf {P} _{k|k-1}}(\mathbf{I-\mathbf {K} _{k}\mathbf {H} _{k}})^{\mathbf{T}}+ \mathbf{K}_{k}\mathbf{R}_{k}\mathbf {K} _{k}^{\mathrm {T}}

結合 Wikipedia 上關於卡爾曼濾波的介紹,我先總結下該問題的背景:

  1. Apollo 使用的估計誤差協方差矩陣 \mathbf {P} _{k|k} 的更新公式是所謂的 Joseph form,而標準卡爾曼濾波通常使用的是簡化版的更新公式
  2. 簡化版的更新公式計算量小,實踐中應用廣,但只在 卡爾曼增益爲最優 時有效
  3. 必須使用 Joseph form 的兩種情況:
  • 使用了非最優卡爾曼增益
  • 算法精度過低,造成了數值穩定性相關的問題

阿波羅平臺的計算力強大,因此爲了算法精度,選擇了非簡化的P

 

 

三、總結:

preview

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章