故障(FAULTS)
前言大綱
Spot 是一款經過精心設計的設備,但在Spot 使用時仍可能會遇到一些意想不到的問題。當出現問題時,無論是在機器人啟動或關閉,都可能會引發故障以通知操作員、開發人員和其他設備。
有多種不同類型的故障與不同類別的問題相關聯。每種類型的故障都是獨立分組的,可以通過機器人狀態(robot state)進行訪問。
系統故障System Faults
系統故障表示機器人上的硬件或軟件故障。它們包括錯誤代碼和消息,並且可以通知用戶任何事情,從某個相機的感知故障到電池過熱。當它們遇到並出現在機器人狀態和平板電腦上時,它們會被內部機器人系統所提升出來的。解決這些故障需要跟進錯誤代碼和消息概述的特定問題。
行為錯誤Behavior Faults
行為故障跟踪與行為命令相關的故障,如果某個行為故障會阻止後續命令的執行,則會發出警告。行為故障包括 ID、原因和可清除狀態。可以通過機器人命令服務清除可清除的行為故障,該服務可通過 Spot Python SDK 中提供的 "機器人命令客戶端robot command client" 訪問。行為故障出現在機器人狀態和平板電腦上。
服務故障Service Faults
第三方外掛負載和服務可能會在連接到 Spot 的硬件或軟件上遇到意外問題。外部服務故障可以通過 API 故障服務進行上報和清除,可通過 Spot Python SDK 中提供的 "故障客戶端 fault client" 訪問。這些故障可能與 API 服務、註冊的外掛負載或兩者都有關聯。 API 的所有其他使用者都能夠查看外部引發的故障並確定它們可能如何響應不同的錯誤。
服務故障還支持外掛負載和服務活躍度監控。向機器人註冊的外掛負載或服務可以通過在註冊時設置活動超時來選擇加入。註冊後,外部設備必須通過反復向機器人發出心跳來保持活動狀態。如果外掛載荷或服務超時,機器人會代表外部設備自動引發服務故障。Python SDK 中提供的外掛負載和目錄保持活動類簡化了這個過程。
服務故障指南Service Fault Guidelines
與系統故障和行為故障不同,API 用戶共同負責服務故障的提出、管理和反應。重要的是要考慮到您正在編寫的應用程序可能不是 Spot 的唯一 API 用戶。為了確保所有開發人員都能夠利用故障系統,這裡列出了一些指導原則。
- 正確的關聯故障(Associate faults correctly ) : 盡可能精確地關聯新故障使它們對可能正在監視某些區域中的故障的其他服務和外掛載荷有用。如果您的故障與負載上的特定服務有關(例如服務崩潰、無法檢索數據),則應填充服務名稱字段。否則,如果故障與大負載有關(例如硬件故障、過熱),則應將服務名稱字段留空並設置負載 GUID。當填充了服務名稱且負載 GUID 為空時,故障服務會根據服務運行的位置自動填充負載信息。
- 清除自有故障Clear owned faults : 一旦問題得到解決,服務或外掛負載應清除它們可能引發的任何服務故障。留下故障,可能會導致影響其他用戶的長期和不必要的故障。
- 不清除未知故障 Do not clear unknown faults : 與應用程序外部的負載或服務相關的故障,不應以編程方式任意清除。 相反,操作者或開發人員應直接解決問題並確定是否可以正確解決或忽略它。
- 僅對相關故障做出反應Only react to faults of relevance : 與應用程序無關的故障應該被忽略。這可能並不總是很明顯,但故障 ID 的服務名稱或外掛負載 GUID 可能表明故障是否相關。
- 不要向故障服務發送垃圾郵件Do not spam the fault service : Spot Python SDK 提供外掛負載和目錄保持活躍類別。這些 keepalives 活躍類別 可以很容易地使用 Spot 實現活性檢查和保持定期心跳。
- 維護故障 ID Maintain fault IDs : 在大多數情況下,故障 ID 是恆定的。單個故障 ID 應代表應用程序中可能發生的一個可能問題,即使問題的描述有所不同。在程序開始時,定義所有可能的故障 ID 是一種很好的做法。 然後可以將預定義的故障 ID 附加到完整故障並在需要時引發,或者可用於清除可能已引發的該故障 ID 的先前實例。
留言
張貼留言
Aron阿龍,謝謝您的留言互動!