機器人服務(ROBOT SERVICES)
前言大綱
Spot 軌跡知識是有關多個狀態源,包括機器人的當前實體狀態、其相機捕獲的圖像以及周圍的地形和物件。此狀態信息可用於決定,如何控制機器人或如何從更進階別的應用程序,以命令機器人。Spot 上可用的不同狀態服務有:
- 機器人狀態服務(Robot State Service)
- 影像服務(Image Service)
- 本地電網服務(Local Grid Service)
- 真實世界物件服務(World Object Service)
- 急停服務 E-Stop Service
- 電力服務 Power Service
- 機器人指揮服務 Robot Command Service
急停服務 E-Stop Service
首先設置急停配置;這指定了預期的端點(至少一個)及其超時,在啟用電機電源之前,必須註冊並簽入所有端點。
電機通電時更改為急停配置,會突然關閉,建議客戶先關閉電機電源。
電源服務power
電源服務允許客戶端打開和關閉電機。
要啟動,客戶端應發送帶有 REQUEST_ON 的 PowerCommandRequest RPC。這可能需要幾秒鐘。
要關閉,鼓勵客戶端在正常操作中使用機器人命令服務中的 SafePowerOffCommand RPC。這個 RPC 部分是機器人命令服務的一部分,因為它在關閉電機電源之前協調讓機器人輕輕坐下。要快速關閉,客戶端應發送帶有 REQUEST_OFF 的 PowerCommandRequest RPC。
機器人命令robot-command
鼓勵客戶端發送短期命令並不斷重新發送它們,以便機器人在客戶端出現問題時停止。對於較長的命令,客戶端應緩存(cashe) CommandResponse 返回的 id ,並輪詢關聯的 CommandFeedbackRequest 以監視命令。
機器人狀態robot-state
機器人的硬件配置是通過一個 urdf 和 骨架模型(skeleton model)來描述的,它代表了機器人的每個關節和鏈接,可以使用 GetRobotHardwareConfiguration RPC 來訪問。這種配置表示完全表達了機器人相對於彼此的關節狀態,可用於可視化機器人模型。也可以在此處找到基礎機器人及其幾何形狀的 urdf 模型。
完整的機器人狀態包括有關電池和電源狀態、網絡通信狀態、已知急停狀態、足部狀態、系統和行為故障以及機器人的運動學狀態的信息。GetRobotState RPC 可以為當前時間戳提供此狀態信息。
- 電池和電源狀態 BatteryState、PowerState:電池和電源信息可用於確定機器人是否成功開機或關機、電池當前電量或電池是否過熱。應用程序可以使用此信息來確定何時暫停應用程序的進程或機器人是否需要新電池。
- 通信網絡狀態 CommsState:機器人可以報告正在使用的通信網絡的類型,因此機器人是接入點(access point) 還是客戶端本身。
- 急停狀態 EStopState:機器人可以同時有多個不同的急停,包括軟件和硬件急停,機器人狀態服務會跟踪這些急停的名稱以及它們是否被激活。如果任何一個 E-Stop 被激活,那麼機器人將無法打開制動器的電源。
- 系統故障狀態 SystemFaultState:系統故障可以通知用戶某個相機的感知故障或電池是否過熱。機器人狀態服務追踪可能影響機器人操作的活動故障以及已發生的歷史故障,可用於診斷意外的機器人行為。故障可能與機器人的軟件和硬件有關,並用錯誤代碼和消息以及嚴重程度進行描述。應用程序可以使用此信息來監控機器人的健康狀況,並在出現故障時做出適當的響應。例如,平板電腦應用程序會在出現感知錯誤時向用戶發出警告,因為這會顯著影響機器人在地形導航的能力。
- 行為故障狀態 BehaviorFaultState:與系統故障類似,行為故障會跟踪與行為命令相關的錯誤,如果某個行為故障會阻止後續命令的執行,則會發出警告。故障通過 id來描述、故障的潛在原因,以及是否可以清除。應用程序可以監控這些故障並響應可清除的故障;很多時候,行為錯誤可以被清除,應用程序可以繼續其正常執行。
- 運動狀態 KinematicState:機器人的運動狀態描述了機器人身體和關節在世界範圍內的當前估計位置。它包括機器人當前已知幀的變換快照以及關節狀態和身體速度。
機器人狀態服務還跟踪機器人的不同參數,可以使用 GetRobotMetrics RPC 訪問此信息。
圖像image
Spot 可以有許多不同的圖像源,包括本機平台上的相機或任何其他實現圖像服務原型定義的外掛負載,如 Spot CAM。影像服務提供了一種使用 ListImageSources RPC 列出所有這些不同來源的方法,然後使用 GetImage RPC 查詢這些來源的影像。
圖像可以是常規的基於像素的視覺圖像,其中數據值對應於灰度(或顏色)強度。它們也可以是深度圖像,其中數據值對應於從相機傳感器測量的深度。要將深度數據與視覺圖像數據對齊,請使用 depth_in_visual_frame 源,它將深度重新投影到與視覺圖像相同的投影上。
由於圖像可能包含大量數據,因此還可以使用不同類型的編碼和壓縮方案來傳輸圖像,以減少通過線路發送的數據的大小。
圖像服務提供了一個 Format 字段來描述圖像的編碼:
- JPEG:具有可調圖像質量的有損壓縮。
- RLE:運行長度編碼。
- RAW:原始未壓縮的圖像數據。
本地網格local-grid
Spot 使用其傳感器和有關其身體的信息來了解附近的地形和障礙物。此信息存儲為基於網格的地圖,其中網格的每個單元格都有一個參數化維度,並與幀框樹快照中指定的真實世界中的特定位置相關。
網格單元包含有關 Spot 周圍環境和地形的信息。本地網格服務不會隨著時間的推移存儲或組合網格,而是根據 Spot 的當前位置和環境為每個時間實例創建一個網格。
本地網格服務中可用的不同類型的網格是“terrain”、“terrain_valid”、“intensity”、“no_step”和“obstacle_distance”網格。與影像服務類似,可以使用 GetLocalGridTypes RPC 列出這些格網源,然後可以使用 GetLocalGrids RPC 請求格網數據。
Spot 機器人對地形高度的估計存儲在“地形terrain”網格中,其中給定單元格的每個數據值代表世界的 z-height 高度。該網格源可以與“terrain_valid”網格結合以過濾具有無效高度估計值的單元格。如果高度估計對於 Spot 的傳感器來說過於極端,則單元格可能被視為無效。 此外,每個地形網格單元的強度值作為原始灰度值存儲在“強度intensity”網格源中,可用於為地形網格著色。
Spot 將牆壁、大型障礙物,甚至太高(高度 > 40 厘米)的平台都視為障礙物。機器人附近障礙物的信息存儲在“obstacle_distance”網格中,其中每個網格單元中的數據值代表到最近障礙物區域的有記號距離。
從障礙物外部測量正距離,從障礙物內部測量負距離。例如,該圖像顯示了一個被 Spot 視為障礙物的框,以及帶有以任意單位表示距離的單元格值的假“obstacle_distance”網格。了解與最近障礙物的距離可用於在應用程序中確定機器人能夠行走的位置或為機器人創建安全屏障,使其必須與所有障礙物保持一定距離。
除了檢測障礙物外,Spot 還可以利用自身身體以及附近地形和障礙物的信息來判斷它是否能夠在某個位置踩踏。“no_step”網格將此信息作為布林值存儲在每個網格單元中
世界物件服務world-object
真實世界物件服務提供了一種跟踪和存儲在 Spot 周圍世界中檢測到的物件的方法。一個真實世界物件被認為是場景中的一個更高階別的項目,它有一些與之相關的語義信息。例如,真實世界物件可以是 AprilTag 基準(fiducial)、門把手、樓梯或為除錯(debugging)目的繪製的虛擬物件。
雖然這些物件都有不同的相關屬性,但它們也分享的人類可讀的名稱、真實世界物件服務分配的 id、表示最近檢測到物件的時間的獲取時間戳以及轉換等共同屬性。 具有給定採集時間戳的變換信息的快照(在幾何和幀部分Geometry and Frames 中描述)。當首次檢測到對象時,該服務會為其分配一個有保證的唯一 ID。該服務將在檢測過程中將此 ID 與物件關聯。
目前,真實世界物件服務最常見的用例,是從機器人的本機相機中公開 Spot 對 AprilTag 基準點的內部檢測。基准通常用作地面實況參考對象,特別是在 GraphNav 系統中用於初始化機器人的定位。在機器人的本機相機中檢測到的任何基準點都將作為真實世界物件通過該服務返回。ListWorldObjects RPC 將返回 Spot 在過去 15 秒內檢測到的所有真實世界物件,並且可以過濾以僅返回特定類型的物件或特定時間戳後的物件。
除了追踪 Spot 的本機相機檢測到的物件外,真實世界物件服務還允許用戶使用 MutateWorldObjects RPC 通知 Spot 可以使用本機相機或通過其他相機檢測到的其他物件。例如,如果使用 Spot CAM 的應用程序在比基礎平台大得多的範圍內檢測到基準點,則可以將此信息添加到世界物件服務中,並用於提高依賴於基準點或影響不同行為的應用程序的性能。
MutateWorldObjects RPC 允許在感知場景中添加、更改/修改或刪除物件。向場景添加物件的請求,將通知 Spot 新物件,並將此新物件的唯一 ID 返回給客戶端應用程序。從場景中更改或刪除物件的請求將僅應用於外部應用程序添加的物件,並且需要在物件首次添加到場景中時由真實世界物件服務分配的物件 id 才能正確識別要添加的物件 修改或刪除。Spot 基礎平台檢測到的真實世界物件不能被外部應用程序修改或刪除。
將物件變異和添加到 Spot 的感知場景中的能力可用於增強現有應用程序的性能,例如 GraphNav,或可用於與多個客戶端就不同物件進行通信。例如,一個客戶端應用程序可以在外部 GPU 上運行以檢測某個物件的邊界框; 此客戶端可以將此信息作為真實世界物件服務中的圖像坐標發送到 Spot,以便不同的客戶端應用程序可以使用這些坐標來獲取此物件在視覺幀框中的位置。
參考資料
- ROBOT SERVICES
- severity : 嚴重性。
- 骨架模型(skeleton model)
- 地形terrain
留言
張貼留言
Aron阿龍,謝謝您的留言互動!