Robot Vehicle 1.0 (RV-1.0) 感測器資料擷取是透過一台高效能電腦運行在 Ubuntu 系統,經由 ROS2 網路針對區域網路中,所有符合 vehicle_interfaces 的感測器資料進行高速數據儲存。
資料擷取程式 (Data Collection Process, DCP) 的設計非常彈性,只要是符合 vehicle_interfaces 的資料型態,不論感測器端 topic 名稱或發送間隔時間的不同, DCP 都有能力進行識別與儲存。若感測器 topic 名稱和 node 名稱符合 RV-1.0 所制定的規範時, DCP 可以針對該感測器的節點進行管理。
DCP 會隨時監看 ROS2 網路中的 topic ,若找到符合 vehicle_interfaces 的 topic ,則對該感測器進行訂閱 (紅色框) 。
對於高數據資料 (如深度影像) 或特殊數據格式 (如檢測結果) 等資料, DCP 提供儲存佇列,將儲存時間較長的資料加入額外的排程進行處理 (橙色框) 。
目前 DCP 的資料擷取模式是由一台高效能電腦,即時地對每一刻時間戳記進行當下感測器資料的取樣,並由該電腦統一打上時間戳記。所以 DCP 並不是記錄所有感測器送出來的封包,而是記錄 DCP 當下即時收到的感測器資料。
而目前 DCP 的資料擷取效率為:在 860 Mbps 頻寬下,以 10 ms 間隔進行取樣,可以表示為 (860 Mbps, 100 Hz) 。實驗中包含多個深度影像與彩色影像感測器,與多個 GPS、IMU、距離感測器等。在 100 Hz 的取樣速率下對於影像、GPS 和距離感測器等資料是很夠用的,而對於 IMU 來說可應用於低速載具的場合,剛好可以滿足我們 Robot Vehicle 1.0 的需求。
將實驗中的 DCP 資料擷取效果視覺化呈現後,可以看出藍色線段為每個樣本時間間隔,線段理想值應為 10 ms 。
紅色線段為時間累積誤差,以起始樣本為基準計算出理想時間戳記與實際時間戳記的差異,線段理想值應為 0 。
黃色線段為絕對時間累積誤差,將紅色線段的誤差累積,線段理想值應為 0 。
下圖為取樣間隔分布,理想應在 10 ms產生一條垂直線。
上圖實驗時間長度為 8 分鐘,以100Hz進行取樣,理想取樣數為 48000 筆。實驗最終取樣 47999 筆,資料遺失率為 0.2 個千分比。 DCP 在實驗結果中顯示出它的資料擷取有良好的穩定性
實驗資料顯示,對於資料取樣的間隔 (藍色線) 幾乎穩定落在 10 ms 的標準值;而時間累積誤差 (紅色線) 由於取樣中途發生一次取樣間隔超過 20 ms 的跳動導致資料遺失,最終時間累積誤差落在近 10 ms 的位置,剛好是一次取樣的間隔;最後,對於絕對時間累積誤差 (黃色線) 在每發生一次跳動時都會大幅增加誤差值,最終的誤差落在約 260 ms 。就結果而言,實驗在 8 分鐘內只產生 10 ms 的累積誤差,絕對累積誤差也僅 250 ms。對於資料準確度可以參考累積誤差 (紅色線) ,而對於系統穩定性可以參考絕對累積誤差 (黃色線) 。