數據緩衝區概述(Data Buffer Overview)

前言大綱

“數據緩衝區”是一個系統,它使 API 客戶端能夠使用 API 將數據記錄到機器人。 這些數據與內部機器人服務記錄的數據相結合,讓用戶更好地了解機器人操作,並為開發人員提供更好的工具來開發和調試他們的新服務。 客戶端能夠查詢機器人數據服務以獲取有關存儲在機器人上的數據的信息,以及從 HTTP 服務器下載數據。 數據獲取服務使用數據緩衝區作為存儲獲取的傳感器數據的機制。 

機器人分配 60 GB 用於數據緩衝存儲。 記錄的數據保存在數據頁中的持久存儲中。 在 Spot v2.1 中,所有數據頁都是磁盤上的 BDDF 文件。 當超過 60 GB 的限制時,數據文件將按最舊優先的順序刪除,直到這些文件使用的磁盤空間低於該臨界值。

支持的數據類型

儘管 API 客戶端可能會記錄任意數據,但 數據緩衝區服務 Data Buffer service 使客戶端能夠記錄可能被特殊處理的 特定結構化類型structured types並簡化後續分析。

短信Text Messages

支持信息、錯誤、警告和調試級別的基本文本日誌,以及源文件和行號。 API 客戶端和服務可以使用數據緩衝區作為他們自己的文本日誌系統的後端。 客戶端可以通過 RecordTextMessages RPC 記錄文本消息。

操作員評論

基於文本的消息,但主要用作機器人操作員插入評論的機制,以描述例如值得注意的機器人或任務觀察,或機器人未按預期執行的情況。 操作員註釋沒有級別、文件或行號。 這些消息顯示在日誌下載頁面的時間線上。 此外,日誌註釋時間附近的內部日誌數據會保留更長的時間,以便可以選擇發送到波士頓動力公司進行調試和故障分析。 客戶端可以通過 RecordOperatorComments RPC 記錄操作員評論。

事件

事件消息被附加到機器人事件日記中,從而能夠構建機器人或任務時間線。 典型用途包括機器人跌倒或校準事件,但客戶可以添加任何在審查任務或機器人性能時有用的上下文構建事件。 每個事件都記錄有一個“級別”枚舉,指定事件的重要性或關鍵性。 大多數事件將以 LOW、MEDIUM 或 HIGH 級別枚舉,但最重要的事件可能會枚舉為 MISSION_CRITICALSYSTEM_CRITICAL。 客戶端可以選擇任何合適的級別,但 SYSTEM_CRITICAL 事件准保留用於波士頓動力公司生成的內部事件。 客戶端可以通過 RecordEvents RPC 記錄事件。

信號

信號消息可以記錄數字時間序列數據。 客戶端必須首先記錄描述要記錄的時間序列數據的“schema” 消息,包括每個變數的名稱和類型。 這使後處理工具能夠正確解析下載的信號日誌。 機器人返回 schema ID,客戶端可以繼續記錄與該模式相關聯的隨時間變化的值。 客戶端可以通過 RegisterSignalSchema RPC 註冊模式並通過 RecordSignalTicks RPC 記錄信號。 信號數據在 2.1 版本中沒有得到很好的支持,但在未來的版本中應該會提供使用這些數據的工具。

Blobs二進位大型物件

Blob 消息使客戶端能夠將任意二進制消息數據記錄到機器人。 例如,這可能包括傳感器數據產品、用戶定義的結構和消息、整個文件等。數據緩衝區本身不解析二進制數據,但要求客戶端在日誌記錄請求中指定 type_id channel通道。 type_id 指定存儲在不透明 blob 中的數據類型,後處理所需。 channel 通道是一系列消息的名稱。 客戶端可以通過 RecordDataBlobs RPC 記錄 blob。 數據採集系統Data Acquisition system   將採集的數據作為 blob 記錄到數據緩衝區中,以備日後檢索。

內部日誌的數據

在內部,機器人將其數據的子集記錄到外部客戶端可以訪問的數據緩衝區。 此數據集可能會在未來版本中擴展。 當前集合包括機器人跌倒、SpotCheck、通信丟失的事件,以及所有 gRPC 請求/響應和 Spot IO 數據獲取。 為了提高性能,gRPC 消息中的大字段可能會從日誌中刪除。

數據服務

數據服務是一個 gRPC 服務,它允許客戶端查詢有關已記錄到機器人的數據的信息。用戶可以:
  • 查詢包含指定時間範圍內數據的頁面
  • 查詢記錄到機器人的事件和評論
  • 查詢整體數據緩衝區狀態,包括當前記錄到機器人的數據量
  • 刪除機器人上的單個數據頁

資料下載

原始數據下載

通過在 URL /v1/data-buffer/bddf/ 處使用 GET 請求查詢機器人的 HTTPS REST 接口,可以將數據下載為 BDDF 文件。 查詢限制為一小時。 必須在 from_secfrom_nsec 參數中指定單個開始時間。 同樣,必須在 to_sec to_nsec 參數中指定單個結束時間。 如果未指定時間範圍或超過 3600 秒,則查詢失敗並返回 HTTP 403 (Bad Request)。 event_level_min 參數只能指定一次。 所有其他參數可以組合指定零次或多次。
  • from_sec 或 from_nsec:如果設置,則在指定的紀元時間之後下載數據,分別以秒和納秒為單位。
  • to_sec 或 to_nsec:如果設置,則在指定的紀元時間之前下載數據,分別以秒和納秒為單位。
  • type:過濾 blob 的 type_id。
  • channel:過濾 blob 的通道。
  • schema_name:過濾schema和信號消息的模式名稱。
  • schema_source:過濾信號消息的schema源。
  • grpc_service:按名稱過濾 grpc 服務。
  • event_level_min:按級別過濾事件。

數據採集下載Data Acquisition Download

如前所述,數據採集服務使用數據緩衝區來存儲捕獲的數據。 通過在 URL /v1/data-buffer/daq-data/ 處使用 GET 請求查詢 HTTPS 服務器來檢索數據。 這些請求將 bosdyn.api.DataAcquisitionObject bosdyn.api.AssociatedMetadata 類型的數據 blob 作為 ZIP 文件返回。 默認情況下,返回所有此類物件,但可以通過以下參數進行過濾:
  • from_sec 或 from_nsec:如果設置,則在指定的紀元時間之後下載數據,分別以秒和納秒為單位。這些是相互排斥的,並且只能指定一次。
  • to_sec 或 to_nsec:如果設置,則在指定的紀元時間之前下載數據,分別以秒和納秒為單位。這些是相互排斥的,並且只能指定一次。
  • channel:過濾與記錄的 blob 關聯的通道channel。可以指定零次或多次。

授權

從機器人下載數據的所有請求都必須使用包含在 HTTP 標頭中的用戶令牌作為不記名令牌進行授權。可以通過 API auth 服務授權來獲取用戶令牌。

範例

下面顯示了使用 cURL 的示例數據下載。 此示例假設用戶在文件 user.token 中具有有效的用戶令牌,並且機器人主機名或 IP 地址存儲在 $ROBOT 環境變量中。 這將下載紀元時間戳 1601524800 1601611200 之間的數據採集數據,對應於 2020 年 10 月 1 日星期四上午 12:00:00 GMT-04:00,到 2020 年 10 月 2 日星期五上午 12:00:04: GMT-00 00.
curl -O -J \
    -H "Authorization: Bearer $(cat user.token)"
    "https://$ROBOT/v1/data-buffer/daq-data/?from_sec=1601524800&to_sec=1601611200"

BDDF (Boston Dynamics Data Format)

從機器人下載的原始數據通常會以 BDDF(Bosdyn 下載數據格式)文件的形式返回。 BDDF 是由波士頓動力公司開發的一種開放文件格式,可以保存任意 POD(純舊數據plain old data)或消息樣式數據。 BDDF 文件易於讀寫,提供對嵌入消息的高效隨機訪問或可以流式傳輸,並且安全,因為它們需要很少或不需要解析邏輯。 更多細節可以在 BDDF documentation中找到。

參考資料

  • Data Buffer Overview
  • Blobs : 二進位大型物件,在資料庫管理系統中,將二進位資料儲存為一個單一個體的集合。Blob通常是影像、聲音或多媒體檔案。 它由迪吉多公司的工程師吉姆·史塔基發明。 常作為專有軟體的資料儲存型式,其格式由軟體開發者自訂,且非人類可讀的特性,使其在儲存、流通上達到閉源效果。
  • epoch :時代,紀元

特色、摘要,Feature、Summary:

關鍵字、標籤,Keyword、Tag:

留言

這個網誌中的熱門文章

Ubuntu 常用指令、分類與簡介

iptables的觀念與使用

網路設定必要參數IP、netmask(遮罩)、Gateway(閘道)、DNS

了解、分析登錄檔 - log

Python 與SQLite 資料庫

Blogger文章排版範本

Pandas 模組

如何撰寫Shell Script

查詢指令或設定 -Linux 線上手冊 - man

下載網頁使用 requests 模組