配置外掛載荷軟件 Configuring payload software
前言大綱
要記錄負載數據並除錯負載問題,為 Spot 平台開發的負載應遵守以下準則:
- 負載收集並生成自己的日誌數據。
- 外掛負載生成並發送自己的文本註釋以標記機器人日誌以供保存。
- 每個外掛負載組件都提供對自己的除錯數據的訪問。
- 負載上的邏輯決定了要記錄哪些數據以及何時記錄這些數據。
外掛負載 API 服務
API 提供了兩種用於管理和註冊外掛載荷和外掛載荷服務的服務:
- 外掛載荷服務
- 外掛載荷註冊服務
機器人目錄服務用於註冊外掛負載可能提供的服務,以便它們可以在機器人上公開。
- 目錄服務
- 目錄註冊服務
服務和負載故障
故障服務使外部客戶端能夠提出服務故障,外部客戶端可以通過機器人狀態讀取並自動顯示在平板電腦中。服務故障是一種故障,既可以來自機器人,也可以來自外部客戶端。每個服務故障都與一個服務、一個外掛載荷或兩者相關聯。
服務故障使服務和外掛載荷能夠輕鬆地向操作員顯示有關當前系統健康狀況的信息。故障應有助於操作員外掛調試和解決操作過程中出現的任何機器人外問題。
故障文檔 Fault documentation 提供了有關可用於 Spot 的不同類型故障的更多上下文。
目錄服務 RPC
RPC | 說明 |
---|---|
GetServiceEntry | 獲取有關特定服務的信息。 |
ListServiceEntries | 列出請求時的所有已知服務。 |
DirectoryRegistrationService RPCs
RPC | 說明 |
---|---|
RegisterService | 由系統調用以通過機器人目錄宣布它正在託管的新服務。 |
UnregisterService | 由系統調用以從機器人目錄中註銷服務。 |
UpdateService | 更新託管服務的系統的 ServiceEntry。 |
PayloadService RPCs
RPC | 說明 |
---|---|
ListPayloads | 查詢機器人以獲取當前註冊的外掛載荷列表。 |
PayloadRegistrationService RPCs
RPC | 說明 |
---|---|
RegisterPayload | 向機器人註冊新的外掛載荷。 |
GetPayloadAuthToken | 獲取身份驗證令牌以啟用外掛負載。 |
註冊外掛載荷
此代碼段示例使用 API 將外掛負載配置設置傳達給 Spot。 該示例首先註冊一個外掛載荷,然後列出機器人上的所有外掛載荷,包括新註冊的V載荷。
...
# Authenticate robot before being able to use it
robot.authenticate(config.username, config.password)
# Create a payload registration client
payload_registration_client = robot.ensure_client(
PayloadRegistrationClient.default_service_name)
# Create a payload
payload = payload_protos.Payload()
payload.GUID = '78b076a2-b4ba-491d-a099-738928c4410c'
payload.name = 'Client Registered Payload Ex'
payload.description = 'This payload was created and registered by the register_payload.py client example.'
payload.label_prefix.append("test_payload")
payload.is_authorized = False
payload.is_enabled = False
payload.is_noncompute_payload = False
# Register the payload
payload_registration_client.register_payload(payload)
# Create a payload client
payload_client = robot.ensure_client(PayloadClient.default_service_name)
# List all payloads
payloads = payload_client.list_payloads()
print(payloads)
...
有關詳細信息,請參閱 : Spot SDK 中的 Python 負載註冊代碼示例 the Python payload registration code example in the Spot SDK。
外掛載荷自註冊
外掛載荷註冊 API 使開發人員能夠部署外掛載荷,當他們開機時向機器人註冊自己,而無需在外掛載荷上存儲用戶憑據。
在管理員操作員使用機器人的管理控制台接受負載後,負載註冊過程完成。如果外掛負載已自行註冊,它應該出現在管理控制台的外掛負載部分。
Payloads 可以註冊 API 服務。示例:LIDAR 負載註冊 RemoteService 回調以在機器人任務期間觸發掃描。
負載和服務註冊不需要機器人用戶憑據。
一旦外掛負載獲得授權,其唯一的 GUID 和秘密組合就可以用作憑據來請求訪問受限的用戶令牌,該令牌將授予對身份驗證、目錄、機器人狀態和目錄註冊服務的權限。授予的用戶令牌的有效期為 12 小時。
註冊示例
Spot SDK Python 代碼示例包括負載註冊和服務註冊示例,提供示例腳本、原型和依賴項列表: Spot SDK 中的自註冊 Python 代碼示例 Self-registration Python code examples in the Spot SDK.。
配置和授權外掛負載
與任何軟件客戶端一樣,外掛負載可以使用登錄憑據訪問 API。但是,對於自註冊,外掛載荷可以完成基本註冊並訪問主機服務,而無需傳遞硬編碼的用戶憑據。
相反,外掛負載由管理員在管理控制台外掛負載頁面上手動授權。為確保負載授權不被惡意負載使用,每個負載必須在註冊時提供唯一的 GUID 和機密(密碼)。然後可以使用 GUID 和機密來請求授予對 API 基本組件(目錄、目錄註冊、機器人狀態)的訪問權限的用戶令牌。
負載設備網絡配置
機器人的默認私有 IP 地址是 192.168.80.3。用戶可以通過機器人的管理控制台配置這些屬性。使用網絡設置將機器人的網絡配置從 WiFi AP 更改為 WiFi 客戶端。
機器人的後部以太網端口可以通過 Web 界面配置為用戶所需的 IP 地址。默認情況下,其 IP 設置為 10.0.0.3。
負載設備應使用以下網絡配置:
- 前端或後端負載端口的 IP v4 主機地址 192.168.50.5 或 192.168.50.6
- 不要對前後V載荷端口使用相同的 IP 地址
- 網絡掩碼 255.255.255.0
- 默認網關網關將設置為 192.168.50.3
- 在端口 20022、20080 或 20443 上發送到機器人 IP 地址的 TCP 流量將在端口 22、80 或 443 上轉發到 192.168.50.5。
- 在端口 21000-22000 上發送到機器人 IP 地址的 TCP/UDP 流量將轉發到同一端口上的 192.168.50.5。
- 在端口 30022、30080 或 30443 上發送到機器人 IP 地址的 TCP 流量將在端口 22、80 或 443 上轉發到 192.168.50.6。
- 在端口 31000-32000 上發送到機器人的 TCP/UDP 流量將被轉發到 192.168.50.6。
負載端口轉發表
說明 | Robot port | Target | Protocol |
---|---|---|---|
Standard Forwards 1 | 20000 + [22, 80, 443] | 192.168.50.5:[22, 80, 443] | TCP |
Fixed Forwards 1 | 21000-22000 | 192.158.50.5:21000-22000 | TCP/UDP |
Standard Forwards 2 | 30000 + [22, 80, 443] | 192.168.50.6:[22, 80, 443] | TCP |
Fixed Forwards 2 | 31000-32000 | 192.158.50.6:31000-32000 | TCP/UDP |
端口 20443、20022、30443 和 30022 的機器人端口轉發現在偽裝。它們應該允許有效載荷響應轉發到機器人任何端口上的機器人的流量。
所有其他轉發的端口都是純粹的端口轉發,這意味著負載接收到的數據包仍然具有發送方的原始地址。這些端口轉發將僅連接到連接到機器人的 LAN 之一上的主機或位於機器人網頁中配置的默認路由上的主機。
配置外掛載荷質量屬性
為了正確移動,機器人需要知道它所攜帶的任何有效載荷的物理特性。這包括相對於機器人基礎連桿的質心位置、慣性矩和其他值。
負載自註冊服務作為 Spot 2.0 SDK 的一部分提供。
以下負載配置表顯示了 Spot CORE 負載的配置值,它們將出現在機器人的管理控制台 GUI 中。
在使用 RegisterPayload RPC 註冊 Spot 負載開發客戶端應用程序時,此表提供了參考。
位置(米)
項目 | 數值 | 單位 |
---|---|---|
X | -0.16 | m |
Y | 0 | m |
Z | 0 | m |
方向(弧度)
項目 | 數值 | 單位 |
---|---|---|
Yaw | 0 | rad. |
Roll | 0 | rad. |
Pitch | 0 | rad. |
總質量(公斤)
項目 | 數值 | 單位 |
---|---|---|
2.0 | kg |
質心位置 (m)
項目 | 數值 | 單位 |
---|---|---|
X | -0.13 | m |
Y | 0 | m |
Z | 0.045 | m |
張量轉動慣量 Moment of inertia tensor (kg-m2)
項目 | 數值 | 單位 |
---|---|---|
XX | 0.00675 | kg-m2 |
XY | 0 | kg-m2 |
XZ | 0 | kg-m2 |
YY | 0.0126167 | kg-m2 |
YZ | 0 | kg-m2 |
ZZ | 0.0166667 | kg-m2 |
邊界框:中心 (m)
項目 | 數值 | 單位 |
---|---|---|
X | -0.13 | m |
Y | 0 | m |
Z | 0.045 | m |
邊界框:方向(弧度)ZXY
項目 | 數值 | 單位 |
---|---|---|
Yaw | 0 | rad. |
Roll | 0 | rad. |
Pitch | 0 | rad. |
邊界框:XYZ 範圍 (m)
項目 | 數值 | 單位 |
---|---|---|
X | 0.13 | m |
Y | 0.095 | m |
Z | 0.045 | m |
Spot SDK 中的 payload.proto 文件提供了有關字段和數據類型的詳細信息。
參考資料
- Payload Software Interface
- Moment of inertia tensor : 轉動慣量張量
留言
張貼留言
Aron阿龍,謝謝您的留言互動!