急停服務(E-STOP SERVICE)
前言大綱
“estop”服務使用基於心跳鏈接的軟件實現服務,來幫助保證一台或多台機器人外主機之間的通信鏈接。如果沒有正確設置此服務,機器人將不允許為電機供電。
簡而言之,一個或多個預先確定的客戶端必須通過發送特殊消息來確認他們可以與機器人交談。用服務的說法,一個或多個已根據配置註冊的端點必需發送 CheckIn 消息。
客戶可以設置以下“止損位stop levels”之一:
- CUT – 制動器電源立即切斷。
- SETTLE_THEN_CUT – 機器人試圖停下來,坐下,然後切斷制動器電源。
- NONE – 無止損位 no stop level。允許執行器通電。這不會打開制動器。
設置通過以下幾個步驟進行:配置、註冊和簽入。一旦所有註冊的端點都已簽入,就可以打開制動器的電源。
Python 函式庫會為您處理這些步驟。有關示例用法和實現,請參閱 estop_nogui 示例中的 E-Stop example 示例和 bosdyn/client/estop.py 中的客戶端實現。
配置Configuration
發送 SetEstopConfigRequest 的客戶端說“這是我期望存在的端點的確切數量,以及它們必須多久檢查一次。配置中的端點有兩個必須填寫的重要值:
- 角色 role
- 逾時 timeout
有關更多詳細信息,請參閱 protobuf 的文檔。
配置上有一些限制:
- 必須有一個角色設置為 PDB_rooted 的端點。
- PDB_rooted Endpoint 的超時時間必須為 60 秒或更短。
- PDB_rooted 端點在硬體中驗證了其通信,這就是它對其配置有特殊要求的原因。
- 設置好配置後,機器人會等待各個端點自行註冊。在最簡單的情況下,客戶端將設置具有一個端點的配置。
- 通過設置配置,任何當前註冊的端點都會被遺忘。這意味著機器人將表現得好像 CUT 停止水平是由客戶端發送的
註冊Registration
一個或多個客戶端現在必需發送一個或多個 RegisterEstopEndpointRequest 消息。請求必須指定 target_endpoint.role,以及 new_endpoint 中的相關字段。有關更多詳細信息,請參閱 protobuf 的文檔。
在最簡單的情況下,使用單個端點發送配置的同一客戶端將立即將自己註冊為該端點。
簽到CheckIn
註冊的端點現在可以發送 EstopCheckInRequest。每個這樣的請求都包含一個質詢challenge和一個響應response,以幫助保證機器人和響應客戶端之間的實時通信鏈接。響應response必須是對所提供質詢challenge的1個的問候。
客戶端收到的 EstopCheckInResponse 將有一個新的質詢challenge需要響應。端點發送的第一個簽入將沒有有效的質詢challenge/響應response對,因此第一個響應response將提供 INCORRECT_CHALLENGE_RESPONSE 狀態,但可以安全地忽略它。
如果服務器收到不正確的質詢challenge/響應response對,則該簽入不會重置超時。
作業Operation
只要滿足以下條件,急停服務將允許制動器通電:
- 有一個有效的配置
- 配置中的所有端點都已註冊
- 所有註冊的端點都已簽入 NONE 停止級別
- 每個端點上次簽到和現在之間的秒數小於每個端點的超時時間
參考資料
- E-STOP SERVICE
- parlance : 說法
留言
張貼留言
Aron阿龍,謝謝您的留言互動!