1. “PickCube-v1”
info["success"]
:用于指示任務是否成功完成
布爾型張量,在環境的evaluate()
方法中計算并返回:
"success": is_obj_placed & is_robot_static
這確保了機器人不僅能將物體準確放置在目標位置,而且能夠穩定地保持靜止,模擬現實世界中的穩定抓取和放置任務;
狀態量 | 說明 |
---|---|
is_obj_placed | 立方體的位置與目標位置(綠色球體)之間的 L2距離≤ goal_thresh (0.025m) |
is_robot_static | 機器人的關節速度小于0.2 |
is_obj_placed
:判斷物體是否被成功放置在目標位置
is_obj_placed = (torch.linalg.norm(self.goal_site.pose.p - self.cube.pose.p, axis=1)<= self.goal_thresh
)
具體功能:
- 通過計算紅色立方體與綠色目標球體之間的L2距離來判斷
- 當距離小于或等于
goal_thresh
(0.025m)時返回True
- 作為任務成功條件的一部分(還需要機器人靜止)
- 在獎勵函數中用于增強靜態獎勵部分
在evaluate函數中的應用:
- 與
is_robot_static
相結合判斷任務是否成功完成 - 成功放置物體但機器人未靜止不算作任務成功
在獎勵計算中的應用:
- 當物體放置在目標位置時,增加靜態獎勵;
- 當滿足成功條件時(物體放置且機器人靜止),給予成功獎勵值5;[code]
is_robot_static
:判斷機器人是否處于靜止狀態
當機器人成功抓取立方體并將其移動到目標位置后,系統會檢查機器人是否穩定靜止,以確保任務完成的穩定性和質量。
is_robot_static = self.agent.is_static(0.2)
該變量通過調用 BaseAgent
類中的 is_static()
方法實現,具體檢查機器人的關節速度(“q velocity”)是否低于0.2。如果所有關節速度都小于此閾值,則認為機器人處于靜止狀態。