前言
繼上次簡單討論了 自駕車的 software stack 之後,今天想來討論從 sensor 收到 data,到 perception module 要使用這些 data 之間,一個很重要的功能 - Sensor Fusion,把各種 sensor 的 data 整合起來,形成更好用的 data。
簡單舉個例子,lidar data 是沒有顏色資訊的 3D point cloud,camera data 是有顏色的 2D image,單純把這兩者結合起來,就會變成有 RGB 色彩資訊的 3D RGB-D point cloud。
會用到的 Sensor
在 perception 的應用(汽車行人辨識、紅綠燈辨識、移動物體 tracking、防碰撞等等)中,主要用到的 sensor 有三種 - Camera, Lidar 跟 Radar。大家應該都大概知道這些 sensor 是什麼,所以我就稍稍講一點各 sensor 的特色。
Camera:應該不用多說,是唯一有提供色彩資訊的 sensor,舉凡辨識紅綠燈、汽車方向燈、各種路標等等,都一定要用到 camera。camera 的缺點是,資料量很大,不管是 30 fps 或 60 fps,加上一台車上會有多個 camera,需要處理的資料量其實不小。
Lidar:lidar 主要的功能就是獲取精準的深度資訊,這對於精準判斷各種距離非常重要,尤其是在小巷子、或是遇到併排停車需要繞過去但也要避免對向來車時,幾十公分的誤差可能就會產生擦撞。
Radar:radar 最大的特色是可以看得很遠(Long-range 的可以看到 200 公尺以上),而且收到的資料最不會受下雨、下雪、起霧等壞天氣的影響, 所以 radar 像是 sensor 中的安全網。
使用 Sensor Fusion 的理由
了解我們有上面這幾種 sensor 跟這些 sensor 的特色後,就可以知道一個重要的事實:這些 sensor 的資料可以互補。而且在多年的研究努力後,使用 sensor fusion 確實能產生更 robust、更精準的 data,而不是反而產生混亂的資料。這其實不是一件簡單的事,因為各種 sensor 收資料的頻率可能不同、各 sensor 的誤差可能也不同、各 sensor 資料的座標軸原點也不同、自駕車開一開可能有某 sensor 掛掉或被鳥屎打到...等等挑戰。
Sensor Fusion 的應用
3D object detection
3D object detection 應該是最重要的應用之一,因為要辨識行人、汽車、腳踏車、機車甚至是路上可能會有的各種其他東西,有一種做法是,先把 lidar 跟 camera 合起來產生有 RGB 資訊的 point cloud,再從 point cloud 中去辨識物體。
另一種方法,則是先取出 image 跟 point cloud 的 feature,再從這些 feature 中直接取出想要的資訊,下面的架構圖是延伸閱讀 2 的 PointFusion 架構:
Moving object detection and tracking
自駕車要能安全行駛,絕對要能夠偵測有哪些物體在移動、追蹤這些移動物體,後續才能讓 prediction module 預測這些移動物體的軌跡,這還是一個很活躍的研究領域,有興趣的讀者可以去看看延伸閱讀 3 的 paper,然後可以看哪些 paper 引用它,追到更新的 paper。下面放一張延伸閱讀 3 paper 提出的架構圖:
可以看到裡面使用了 lidar, camera 跟 radar。
occupancy grid mapping
Grid mapping 是一種抽象化 data 的方式,直接看下圖:
用這種表示方法,navigation 的路徑規劃可以先專注在 2D 的路徑上,而不用去管 3D 的各種資訊。如果對這應用很有興趣,可以去看看延伸閱讀 4。
總結
今天簡單地介紹了 sensor fusion,也講到了重要的應用,雖然今天只討論了 perception 裡面需要用到的概念,但 sensor fusion 的應用不僅於此,例如我們可以結合 Lidar、GPS 跟 IMU 來定位自駕車的位置,不過今天就只討論比較視覺上的應用,之後有機會再跟大家討論不同的主題,或深入討論某些有趣的 paper!