編舞服務Choreography Service
前言大綱
它是什麼?
可以在 YouTube-UpTown Spot 上看到示例腳本。
- 組合多個動作(參見 : 軌道/分層部分 tracks/layering section)。
- 改變移動參數以改變移動行為。
可靠性注意事項
編排框架遠不如其他 Spot 行為健壯。它只應在具有足夠空間和良好牽引力的平坦地板上使用。某些動作組合將不兼容,並會導致機器人墜落。對於單個移動的某些參數組合也是如此。機器人會跌倒。生成一個看起來不錯並且可靠地成功的腳本可能需要一些 反複試驗trial-and-error 。
編舞術語Choreography Terminology
Slices切片
移動始終運行整數個切片。有些移動需要固定數量的切片,有些是可擴展的。有關更多詳細信息,請參閱 : 配置文件部分Config Files section。
軌道/分層Tracks/Layering
- Legs腿
- Body身體
- Arm手臂
- Gripper夾爪
每個舞蹈動作都需要一個或多個這些曲目。使用不同軌跡的動作可以以任意組合同時運行。在 Choreographer 中,軌道在時間線視圖中表示為水平部分。例如,以下是 Choreographer 的屏幕截圖,該腳本結合了四個軌道中的所有三個動作:
由此產生的行為如下所示:
某些移動需要多個軌跡,例如使用身體和腿部軌跡的“跳過Skip”移動或使用手臂和抓手軌跡的“手臂移動相對Arm Move Relative”,如下例所示:
進入/退出條件Entry/Exit conditions
為了表示和強制執行這些要求,所有使用腿部軌跡的移動都具有退出轉場狀態和進入轉場狀態。轉場狀態的選項是:
- Stand站立
- Sit坐
- Kneel下跪
- Sprawl爬行
所有後續的腿跟踪移動必須具有對應於前一條腿跟踪移動的退出狀態的進入狀態。違反此要求的腳本將被 API 拒絕並返回警告,指示哪些移動違反了進入/退出狀態。同樣,當進入狀態與前一條腿移動的退出狀態不匹配時,Choreographer 中的例程將突出顯示紅色移動,例如在此示例中:
API
創建編排序列後,UploadChoreography RPC 會將例程發送給機器人。編排服務將驗證和檢查例程的結構,以確保它是可行的並且在範圍內。
ExecuteChoreography RPC 將在機器人上運行編排序列以完成。編排序列由上傳到機器人的序列的唯一名稱標識。此外,開始時間(在機器人的時間)和開始切片將完全指定機器人何時開始編排序列以及移動。
upload_choreographed_sequence example 演示如何從保存的文本文件中讀取現有例程,將其上傳到機器人,然後執行上傳的編排。
配置文件Config Files
MoveInfoConfig.txt
- name:這個動作的名稱。
- move_length_slices:此移動的默認持續時間(以切片為單位)。
- min_move_length_slices:此移動可以完成的絕對最小切片數。
- is_extendable:這個動作是否可以延長到比平時更長的時間。如果 is_extendable 為真,則可以在 MoveParams 原型的 requests_slices 字段中指定所需的持續時間。
- entry_state:機器人在進入此移動之前必須處於哪個過渡狀態。僅在 control_legs=true 時適用。結構可以支持多個允許的進入狀態,但所有當前的移動只接受一個進入狀態。
- exit_state:機器人在完成這次移動後將處於哪個過渡狀態。僅在 control_legs=true 時適用。下一個腿部軌跡移動必須具有相同的 entry_state。
- min_time:有些動作有最短持續時間,不能走得更快。對於指定了這一點的移動,如果切片持續時間很短(每分鐘切片非常高),它們可能需要比正常切片數量更多的切片。
- max_time:有些動作有最長持續時間,不能再慢了。這適用於可擴展但不能任意長的移動。
- control_arm:這個動作是否需要手臂軌跡。
- control_legs:這個動作是否需要腿部軌跡。
- control_body:這個動作是否需要身體軌跡。
- control_gripper:此移動是否需要夾爪器軌跡。
- display:關於 Choreographer 應該如何顯示動作的信息。
- color:為時間線軌道中的移動繪製框的顏色。
- markers:用於繪製小的灰色垂直線的切片。這些通常對應於觸地和起飛(touchdown and liftoff)等事件,並幫助用戶根據需要(例如在節拍上)排列這些事件。此處的負值表示移動結束前的切片。
- description:移動的文本描述。
- image:要為移動顯示的圖像的位置。
- category:在 Choreographer 的移動選擇器中移動將被分類到的類別名稱。
MoveParamsConfig.txt
MoveParamsConfig 文件為與單個移動關聯的每個參數提供默認值。對於包含數字參數(例如 double、int32)的移動,配置文件還將指定最小值和最大值。
配置文件的格式如下。每個可用的移動都會有一個由空行分隔的文本塊。
每個塊的第一行將有兩個值:
- 動作的名稱。
- 此移動使用 MoveParams proto 中 one of params 字段中的哪個選項來指定其參數。對於沒有參數的移動,第一行中的第二個條目應該是 NONE,並且該文本塊中將沒有其他行。
- 其餘行描述每行一個參數的默認值(可能還有最小值/最大值)。每行中的第一個字段將是參數的名稱。點(“.”)表示原型中的層次結構級別。對於 bool 或 Enum 類型的參數,該行將有兩個字段,第二個字段將是默認值。對於 double 或 int32 類型的參數,將有 4 個字段,按以下順序排列:
- 參數名稱Parameter name
- 最小值Minimum value
- 默認值Default value
- 最大值Maximum value
參考資料
- Choreography Service
- Choreography : 編舞
- Terminology : 術語
留言
張貼留言
Aron阿龍,謝謝您的留言互動!