發表文章

目前顯示的是 8月, 2021的文章

BDDF 文件格式(BDDF file format)

動機 存儲在 Spot 機器人上的數據以 BDDF 格式下載。 BDDF 是由波士頓動力公司創建的一種文件格式,用於存儲帶時間戳的數據以及元數據。 它支持二進制 blob 和 POD(“plain old data”),例如整數或浮點數。 創建 BDDF 是為了滿足以下組要求: 寫起來安全又便宜Safe and cheap to write 。 這種格式在機器人內部和外部使用。 因此,它旨在在將數據保存到磁盤的同時,將磁盤和 CPU 使用率降至最低、可預測。 此外,它的設計使得寫入文件的所有數據都是可恢復的(例如,當正在寫入文件時軟件死機或計算機電源被切斷)。 不需要額外的處理No additional processing required 。 BDDF 旨在供用戶工具使用,而無需處理為其他格式。 因此,它包含一個索引,以便可以有效地訪問任意數據。 索引如下: 可用於確定文件中包含的數據的種類和時間跨度。 支持按種類和時間跨度高效提取數據。 安全的Secure 。很少或沒有解析邏輯。讀取 BDDF 只需要處理簡單的成幀,並解析一些 protobuf 消息。 一般的General 。 BDDF 可以存儲任何編碼的數據。 Streamable.可流式傳輸 。數據是基於查詢以這種格式從機器人流式傳輸的,因此它的設計使得可以在不向流中向後查找的情況下寫入格式。這就是索引和校驗和位於文件末尾的原因。 組織 文件的結構是具有簡單框架的“區塊”序列。一些區塊存儲有關文件及其內容的描述性信息,而一些區塊存儲數據。 BDDF 可以存儲二進制“blob”和“普通舊數據plain old data”(POD)值,例如整數或浮點數。 存儲的數據被組織成“數據系列”。數據系列為: 是消息類型或 POD 類型。 由一系列帶時間戳的數據塊組成。 有解釋數據塊內容的系列描述。 有一個系列標識符來“命名name”文件中的數據系列。 具有一組索引名稱,用於附加到系列中每個數據塊的索引值 (int64) 列表。 在數據文件中,數據系列使用系列索引進行尋址。 在一個數據系列中,一個數據塊由一個整數係列索引尋址。 在 BDDF 文件的末尾,一個文件索引列出了文件中所有的數據系列和系列索引的位置。 識別數據系列 根據可能存儲在數據系列中的內容的大類,可能以不同的方式描述該系列。 出於這個原因,我...

數據緩衝區概述(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_CRITICAL 或 SYSTEM_CRITICAL 。 客戶端可以選擇任何合適的級別,但 SYSTEM_...

外掛負載與 API 集成(Integrate Payloads with the API)

圖片
前言大綱 2.1 版本側重於通過創建數據採集管道來簡化傳感外掛載荷與機器人的集成。本文檔概述了開發人員如何編寫必要的 API 服務來集成他們的傳感器。數據採集管道適用於任何外掛載荷,但是對於收集圖像數據的外掛載荷(例如 360 相機)和收集其他數據類型和格式的外掛載荷(例如激光雷達或氣體傳感器)採取不同的開發步驟。 為了完全集成傳感器,有效載荷需要根據將收集和存儲的數據類型實現波士頓動力 API ImageService 或 DataAcquisitionPluginService 。這些服務會註冊到robot上的目錄服務,數據採集服務會自動檢測新的服務並與它們通信以獲取數據採集請求。下圖顯示了預期的通信圖。 相機外掛載荷Camera Payloads 要將以已知格式(例如 raw bytes  或 JPEG)輸出圖像數據的相機外掛負載與數據採集管道集成,開發人員需要實現 ImageService 。 數據採集服務將自動識別任何目錄註冊的影像服務,為影像源創建 ImageAcquistionCapabilities ,並能夠使用標準 ImageService RPC 為每個服務收集影像數據。對於相機外掛負載,開發人員需要實現圖像服務類。為了簡化影像服務的實現, image_service_helpers.py 中提供了一組基礎影像服務輔助函數。 對於圖像服務中可用的每個圖像源,應創建 VisualImageSource 幫助器類來創建必要的原型,以響應來自圖像服務的 gRPC 請求、請求和解碼來自特定圖像源的圖像數據,以及創建或清除 特定於圖像源的故障。構造子函數需要提供圖像源名稱(作為字符串),然後是一個從 CameraInterface 繼承並覆蓋捕獲圖像數據和解碼數據的函數的類。可選地,圖像中的像素行數和列數可以在 VisualImageSource 構造函數中作為整數值提供。 增益和曝光時間可以作為動態確定值的函數或 VisualImageSource 構造函數中的固定浮點值提供。 可以使用 CameraBaseImageServicer 類創建圖像服務,該類是一個幫助器類,將管理狀態並響應圖像服務所需的 RPC( ListImageSources RPC 和 GetImage RPC)。 圖像服務助手類的構...

數據採集輸出(Data Acquisition Output)

前言大綱 從數據採集捕獲中存儲的數據可以通過機器人的 REST 端點下載。下載數據時,結果將在包含與發送到端點的特定查詢參數匹配的所有數據的 zip 文件中返回。 壓縮文件結構 包含來自遠程操作會話和名為“檢查”的任務運行的數據的示例 zip 文件: downloaded_file.zip └───teleop_2020-10-29T183020Z │ │ metadata.json │ │ basic-position-data.csv │ │ detailed-position-data.csv │ │ SpotCAM All 1 spot-cam-pano.jpg │ │ SpotCAM All 1 spot-cam-ptz.jpg │ │ SpotCAM ir nodata 2 spot-cam-ir.jpg │ ... └───2020-10-29T185610Z_Inspection │ metadata.json │ basic-position-data.csv │ detailed-position-data.csv │ SpotCAM All 1 spot-cam-pano.jpg │ SpotCAM All 1 spot-cam-ptz.jpg │ SpotCAM ir nodata 2 spot-cam-ir.jpg ... 存儲數據中的每個單獨組都將位於其自己的目錄中。目錄名稱將是 group_name ,格式為 <mission start timestamp>_<mission name> 用於自動行走任務,或 teleop_<session start timestamp> 用於遙控捕獲。 在每個組的目錄中,作為該組一部分捕獲的圖像將使用 <action name> <image service name>-<image source name>.jpg 格式的文件名保存。將有一個 metadata.json 文件,其中包含在該組期間捕獲的所有相關元數據,以及用於基本或詳細位置數據的可選 CSV 文件(如果...

數據採集概述(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 為了簡化數據採集過程,平板電腦包含將上述捕獲功能組合成具有唯一名稱的行動的功能。因此,行動是捕獲功能的組合,配置了特定的超時以等待捕獲完成。然後可以在機器人遙控或...

About Spot Data(關於Spot數據)

前言 本節介紹有關如何在 Spot 服務中捕獲、存儲和檢索數據的各種概念。 大綱 數據採集概述(Data Acquisition Overview) 數據採集輸出(Data Acquisition Output) 外掛負載與 API 集成(Integrate Payloads with the API) 數據緩衝區概述(Data Buffer Overview) BDDF 文件格式(BDDF file format) 參考資料 Spot Data 特色、摘要,Feature、Summary: 關鍵字、標籤,Keyword、Tag:

手臂服務(Arm Services)

操縱服務 此 API 為步行到世界上的物品和撿起物品提供高級控制。該服務將機器人帶到物體旁,而不是在它上面。這個想法是你想要互動或操縱物件。對於指定抓取,有可用的參數 指定抓取深度 物品緊緊壓在抓手的手掌上或僅用指尖擠壓。 關於抓握方向的限制。 “只從這個方向抓”或“只做自上而下的抓” 機器人可以移動多少把手 哪個相機源用來產生圖像(用於校正校準錯誤) 請參閱以下使用此服務的示例: 步行到物體Walk to Object :命令機器人走向物體以準備抓住它。該示例打開一個圖像視圖,並讓用戶通過在圖像中單擊來選擇一個對象。 抓取Grasp :展示如何根據對像在像素空間中的圖像坐標自主抓取對象。它打開一個圖像視圖,讓用戶通過單擊圖像來選擇一個對象。 ArmSurfaceContact 服務 在推動表面時控制末端執行器。此模式適用於繪製、擦除和其他需要高精度位置移動並同時用力向下推的類似行為。該服務類似於 RobotCommand 服務中可用的 ArmCartesianCommand 消息,但專門用於此類任務,並且具有更高的位置精度。 請參閱以下使用此服務的示例: 表面接觸Surface Contact :請求末端執行器軌跡移動,同時對地面施加一些力。 GCode :一個 G Code 解釋器,可以用人行道粉筆劃畫。 門服務Door Service 門服務是開門的框架。我們提供兩種命令類型: 自動Auto :  此消息要求用戶指定一個位置來搜索門把手以及一些門參數。Spot 自主地抓住把手,打開門,然後走過去。 暖啟動Warmstart :在暖啟動中,假設機器人已經抓住門把手。機器人會跳過自動抓取階段,立即開始開門,然後穿過門口。 請參閱以下示例以使用此服務: 開門Door Opening :本示例同時使用 ManipulationAPIService 和 DoorService 來讓 Spot 半自主地開門。它打開圖像顯示並要求用戶選擇門把手和門鉸鏈。接收到輸入後,它使用 ManipulationAPIService 估計 3D 空間中的把手位置,並將機器人與門把手對齊。然後它使用 DoorService 發出自動開門請求。 參考資料 Arm Services G Code,是最為廣泛使用的數控程式語言,有多個版本,主要在計算機輔助製造中用...

手臂概念(Arm Concepts)

圖片
同步命令SynchronizedCommand 手臂和夾具命令已合併到 SynchronizedCommand 消息中。此頂級請求允許您指定移動性、手臂和抓手命令的任意組合。通過將單個命令打包成一條消息,我們保證所有命令同時到達機器人。對於沒有手臂的機器人,任何 arm_command 或 Gripper_command 都將被忽略。 message SynchronizedCommand { message Request { ArmCommand.Request arm_command = 1; MobilityCommand.Request mobility_command = 2; GripperCommand.Request gripper_command = 3; } } ArmCommand 消息支持以下命令: Cartesian Moves : 控制 "笛卡爾空間 Cartesian space" 中的末端執行器。指定末端執行器的混合位置和扳手軌跡 關節運動Joint Move s :  控製手臂的關節角度。 預定義姿勢Predefined Poses Move : 將手臂移動到一些預定義的配置 手臂速度Arm Velocity : 末端執行器的速度控制。 凝視Gaze t 指定末端執行器到真實世界的一點上。 拖動Drag : 拖動夾持器中的物件。 停止Stop : 停止並保持手臂就位。 請求Requests 如果您發送的 SynchronizedCommand 只填寫了一部分消息,則只會覆蓋這些命令。例如,考慮以下偽代碼: Time t = 0 message SynchronizedCommand { message Request { ArmCommand.Request arm_command = stow; MobilityCommand.Request mobility_command = stand; GripperCommand.Request gripper_command = close; } } Time t = 2 message Synchron...

手臂和夾具規格(Arm and Gripper Specification

圖片
關節活動範圍和鏈接長度 Link lengths are in mm. 手臂規格Arm specifications Degrees of freedom: 6 + gripper Length at full extension: 984 mm Max. reach height on robot: 1800 mm Mass/weight, including gripper: 8 kg Max. endpoint speed: 10 m/s Lift capacity*: Up to 11 kg Continuous lift capacity at 0.5 m extension*: 5 kg Drag capacity * (on carpet): Up to 25 kg Operating temp: -20 C to 45 C Ingress protection:  Water and dust resistant * At 22 C. 夾具規格Gripper specifications Depth : 90 mm Peak clamp force (at tip of opening): 130 N Integrated sensors: ToF, IMU, 4K RGB Accessory port: Gigabit Ethernet, 50W power, camera sync (PPS) 夾具可以抓取多大的物體 機器人手臂能夠握住任何適合周圍夾爪的物體。一般來說,這意味著人可以撿起的物體也可以由機器人管理。 夾具安全 繼續遵守建議的距離機器人 3 米的安全距離。當機器人處於活動狀態時,請勿觸摸手臂或抓手(或機器人)。 夾點 夾持器有一個小的間隙,提供了一些避免完全夾住的可能性。但是,在抓握/握住物體時總是可以捏住。使用時限制人與夾持器的交互。 切勿將手或手指放在要抓握或被抓握的物體與夾爪之間。把手遠離。 切勿在機器人通電時嘗試打開夾具。切勿試圖干擾抓握和攜帶。遠離活躍的機器人。 參考資料 Arm and gripper specifications 特色、摘要,Feature、Summary: 關鍵字、標籤,Keyword、Tag:

關於Spot手臂與夾具(About Spot Arm and Gripper)

前言 從 SDK 的 2.3.0 版本開始,已包含了手臂和夾具的命令。對機械臂和夾具的直接控制已添加到同步命令消息中,允許操作員請求移動性、機械臂和夾具命令的任意組合。我們還添加了新服務來支持這些操縱、開門和表面接觸。有關更多詳細信息,請參閱以下部分。 大綱 手臂和夾具規格(Arm and Gripper Specification) 手臂概念(Arm Concepts) 手臂服務(Arm Services) 參考資料 Spot Arm and Gripper 特色、摘要,Feature、Summary: 關鍵字、標籤,Keyword、Tag:

編舞使用者指南Choreographer User Guide

圖片
前言大綱 Choreographer 是一種用於創作舞蹈並在機器人上執行它們的工具。它允許您從預定和可自定義的動作列表中構建編舞序列。您只需將動作添加到編舞時間線,根據自己的喜好調整其參數,然後按 “開始編舞Start Choreography” 即可。 運行編舞 Choreographer 是一個可執行程序,我們將通過 支持中心  Support Center 的下載鏈接為您提供。要運行該程序,只需從我們提供給您的鏈接下載並執行它。請注意,Choreographer 可執行文件僅適用於 Windows。如果您希望從 Mac 或 Linux 運行 Choreographer,我們將需要為您提供 Python 輪子和安裝說明(僅限進階使用)。如果是這種情況,請與我們聯繫。 如果您希望運行連接到 Spot 的 Choreographer,請參閱“ 將機器人連接到編舞Connecting Robots to Choreographer” 部分。 編舞安全 在機器人上測試您的編舞順序時,請始終牢記基本安全程序。確保您的 Spot 周圍有足夠的空間,讓所有 Spot 彼此至少相距兩米,並確保您和其他任何人都不會接近跳舞的 Spot。除非電機已關閉,否則切勿接近您的 Spot。 界面概覽 Choreographer 界面由七個主要區域組成。他們是: 動作列表 - 在這裡您可以找到我們所有預定義的動作,按一般類別排序。 舞蹈時間線 - 這是編舞的主要區域,它顯示您的舞蹈隨時間推移的表現。每個移動都是一個不同的塊,如果移動參數允許,可以單擊它來編輯參數、拖動、複製粘貼或可能拉伸或收縮。 機器人控制 - 機器人控制是一排按鈕,您可以使用它們向連接到 Choreographer 的任何機器人發送命令,包括開始和停止您的舞蹈,以及打開或關閉機器人的電機。(注意,當你沒有連接到任何機器人時,這一行是禁用的,如上所示。) 動作名稱 - 當您在移動列表中選擇一個移動時,其名稱和描述將顯示在此處。 機器人預覽 - 此部分為您提供所選動作期間機器人身體和手臂的預覽。請注意,此部分僅針對直接定位機器人身體的選擇移動或控製手臂的移動出現。 動作參數 - 當您選擇可自定義的移動時,其不同的可調整參數將顯示在此處。您可以修改它們以調整機器人在此移動過程中的行為方式。請務必進行...

編舞安裝Install Choreographer

前言大綱 Choreographer 是一款應用程序,可輕鬆創作具有高級動作和參數的編舞,並通過音樂同步在機器人上執行例程。應用程序和編舞服務需要特殊許可才能使用。可以從 2.1 版本的“下載頁面”中的 支持中心Support Center  下載該應用程序。此外,支持中心提供了有關如何使用 Choreographer 創建例程、修改動作、連接到機器人以執行例程以及調試常見問題解答部分的問題的深入文檔。 系統要求 Choreographer 支持 64 位 Microsoft Windows 10 和 64 位 Ubuntu 18.04 Linux。運行 Choreographer 應用程序不需要其他系統依賴項。但是, Choreographer 應用程序要獨立使用 Choreography SDK,必須安裝 python 3 以及 bosdyn-choreography-protos 和 bosdyn-choreography-client Wheels 。 安裝和運行編舞 Choreographer 應用程序是一個可執行文件,可以直接在筆記電腦上運行。從支持中心 2.1 下載頁面下載 choreographer.exe (或 choreographer 可執行文件,具體取決於系統操作系統)。 Linux 機器注意事項 :編舞文件下載後可能需要手動轉換為可執行文件。在命令行中與編排器文件相同的目錄中運行以下命令: sudo chmod +x choreographer 要在沒有連接任何機器人的情況下運行 Choroeographer,只需雙擊可執行文件將其打開。 要使用機器人運行 Choreographer,請從命令行啟動 Choreographer,在下載可執行文件的目錄中,使用以下選項: On windows: choreographer.exe --hostname {ROBOT_IP} --user {USERNAME} --password {PASSWORD} On Linux: ./choreographer --hostname {ROBOT_IP} --user {USERNAME} --password {PASSWORD} --hostname 是機器人的 IP 地址或將連接到 Choreographer 的 Sp...

移動參考指南Move Reference Guide

圖片
前言大綱 這提供了一個在高層次上描述每個移動的指南,移動使用的任何參數,以及使用默認參數演示移動的 gif(對於大多數移動for most moves))。有關移動的更多信息可以在 原型定義proto definitions  中找到。 身體動作Body Moves rotate_body旋轉體 rotate_body_sharp body_hold body_const sway搖擺 random_rotate twerk扭動 butt_circle 步進移動Step Moves step 小跑trot 踏步pace turn_2step pace_2step crawl爬行 動態移動Dynamic Moves running_man bourree hop跳躍 jog skip front_up jump 過渡動作Transition Moves sit stand_up sit_to_sprawl蔓延 random_stretch隨機伸展 stand_to_kneel膝蓋站立 kneel_to_stand跪地站立 kneel_to_stand_fast self_right自己站起來 跪的動作Kneel moves kneel_leg_move kneel_leg_move2 kneel_circles Arm moves手臂動作 nod點頭 stow unstow shoulder_left shoulder_right arm_move arm_move_relative workspace_arm_move figure8_move gripper chicken_head 身體動作Body Moves rotate_body旋轉體 將身體旋轉到所需的方向。名義上需要一拍(4 個切片slices),但可以延長以減慢速度。 參數 效果 rotation 想要身體的旋轉方向。 return_to_start_pose 如果為 true,將在此移動結束時返回到之前的身體姿勢。如果為false,將保持在指定位置。 ...