數據採集概述(Data Acquisition Overview)
前言大綱
Spot 2.1 版本具有用於獲取、存儲和檢索傳感器數據的新系統。這些功能在 Teleop 模式下可用,用戶從客戶端控制機器人,例如平板電腦,在 Autowalk 模式下,平板電腦通過重放記錄的任務來控制機器人。此數據採集功能包括幾個新服務及其關聯的客戶端。
數據採集服務Data Acquisition service:將捕獲圖像、機器人元數據並委託給插件以捕獲自定義傳感器數據的協調服務。
數據採集插件服務Data Acquisition Plugin services:用戶實現的服務,可以從傳感器捕獲數據並將其保存到商店中。
數據採集存儲服務Data Acquisition Store service:用於將數據和元數據保存到磁盤以供以後檢索的接口。
圖像服務Image services:以新方式使用的現有界面。用戶實現的圖像服務現在將顯示在用於駕駛的平板電腦中,並且可以由數據採集Data Acquisition 服務自動捕獲。
高階概念High-level concepts
捕捉能力
捕獲功能是由"數據採集插件Data Acquisition Plugin" 服務或 "圖像Image" 服務捕獲的數據類型的人類可讀標識符。Data Acquisition 服務從系統中註冊的所有 Data Acquisition Plugin 服務和 Image 服務編譯此捕獲功能列表。每個 "數據採集插件Data Acquisition Plugin" 服務都會報告它提供的捕獲功能。例如,捕獲 GPS 數據的插件可以報告名為“GPS”的捕獲能力。當插件向目錄服務註冊時,數據採集Data Acquisition 服務從插件請求此信息。數據採集Data Acquisition 服務還將系統中註冊的影像服務列出的所有影像源報告為捕獲功能。平板電腦從 Data Acquisition Plugin 服務和來自 Data Acquisition 服務的 Image 服務請求捕獲功能的完整列表。
行動Actions
為了簡化數據採集過程,平板電腦包含將上述捕獲功能組合成具有唯一名稱的行動的功能。因此,行動是捕獲功能的組合,配置了特定的超時以等待捕獲完成。然後可以在機器人遙控或任務記錄期間通過 SDK 或平板電腦以編程方式觸發這些捕獲行動,使用平板電腦上的 Red Plus 按鈕,如下面的屏幕截圖所示。
採集請求Acquisition request:
在 Teleop 或 Autowalk 期間,觸發的操作會向 Data Acquisition 服務發送獲取請求,即 AcquireDataRequest 消息。一個獲取請求包含四個部分:
- 動作標識符Action identifier:每個獲取請求中的動作標識符由平板電腦自動創建。它包含三個字段:
- action_name:每個獲取請求的唯一名稱,基於它被配置為觸發獲取的操作名稱。
- group_name:動作集合的名稱,例如任務或遠程捕獲會話,其中包括多個獲取動作。請參閱下面的組部分Groups。
- timestamp:觸發獲取請求時的時間戳。
- 採集請求Acquisition requests:從影像服務或數據採集插件觸發的數據採集列表。此列表對應於在被觸發的操作中配置的捕獲功能列表。
- 元數據Metadata:用戶指定的字符串與捕獲的數據相關聯。該信息可以在平板電腦的動作觸發屏幕中指定。
- 最小超時Minimum timeout:可選的持續時間,用於延長數據請求可能需要的時間,以防插件錯誤地指定其超時。允許的時間量將是此持續時間和對插件或其他捕獲源發出的任何請求中的最大值。這是用戶在配置操作時指定的值。
獲取請求的結果是 圖像Image 服務和 數據獲取插件Data Acquisition Plugin 服務收集請求的數據並將其存儲在機器人中以供稍後下載。
群組Groups
群組是一組獲取請求,例如任務或遠程捕獲會話。它們簡化了捕獲數據的組織。例如,特定組的所有捕獲數據都存儲在下載數據的同一文件夾中。Data Store 客戶端接口還提供用於列出特定組的操作的方法。
數據通道Data Channels
每種類型的數據都存儲在系統中的不同通道中。在 數據採集插件Data Acquisition Plugin 服務的情況下,插件確定在系統中存儲數據時的通道名稱。在 圖像 Image 服務的情況下,用於存儲圖像的通道被指定為{圖像服務名稱}_{相機源名稱}{image service name}_{camera source name}。系統使用通道名稱以及動作和組名稱來組織數據,如下圖所示。
下載數據Downloaded Data
用戶可以使用平板電腦或任何其他客戶端通過機器人上的 REST 端點下載獲取的數據。REST 端點需要數據下載的開始和結束時間,以及一組通道名稱,以防用戶只對下載一組特定的數據類型感興趣。數據下載為 zip 文件,每個組都有單獨的文件夾。每個組文件夾包含組合在一個名為 metadata.json 的文件中的所有元數據以及一組用於圖像和非圖像數據的文件。
系統架構System architecture
上述功能在系統中構建,如下圖所示。在系統初始化期間,Data Acquisition 服務會聚合來自 Image 服務和 Data Acquisition Plugin 服務的捕獲功能列表,並且用戶在平板電腦中配置操作。平板電腦或任務服務向 數據獲取Data Acquisition 服務發送獲取請求以獲取數據。數據採集Data Acquisition 服務將採集請求發送到正確的 圖像 Image服務和 數據採集插件Data Acquisition Plugin 服務以收集數據。然後將收集到的數據通過 Data Store 服務發送到 Data Buffer 服務。Data Buffer 服務將收集的數據寫入文件,以便可以從 REST 接口下載這些數據。
數據採集服務提供以下 RPC:
- GetServiceInfo - 此 RPC 在數據採集服務以及數據採集插件服務中定義。它報告了數據採集或數據採集插件服務提供的採集功能的完整列表。 啟動時,Data Acquisition 服務 ping 所有已註冊的 Image 服務和 Data Acquisition Plugin 服務的功能。 它通過用於圖像Image 服務的 ListImageSources RPC 和用於 數據採集插件Data Acquisition Plugin 服務的 GetServiceInfo 來實現。然後,數據採集Data Acquisition 服務將所有這些功能聚合到它通過此 RPC 報告的列表中。平板電腦使用此 RPC 來確定獲取能力。
- AcquireData - 此 RPC 命令 Data Acquisition 服務來獲取和存儲數據。它包含由 GetServiceInfo RPC 報告的功能的子集。Data Acquisition 服務將請求分解為 GetImage RPC 請求到相應 Image 服務和 AcquirePluginData RPC 請求到相應 Data Acquisition Plugin 服務。AcquirePluginData Data Acquisition Plugin RPC 與這個 RPC 非常相似。
- GetStatus - 此 RPC 在數據採集服務以及數據採集插件服務中定義。它報告特定 AcquireData 或 AcquirePluginData 請求的狀態。
- CancelAcquisition - 此 RPC 在 Data Acquisition 服務以及 Data Acquisition Plugin 服務中定義。它取消特定 AcquireData 請求 或 AcquirePluginData 請求。
留言
張貼留言
Aron阿龍,謝謝您的留言互動!