Skip to content

Commit 14e7a56

Browse files
committed
fix(gripper): gripper state as list as defined by gym space
gripper wrapper now expects a list of the gripper state as defined by the gym.space.Box
1 parent 229ffa5 commit 14e7a56

10 files changed

Lines changed: 24 additions & 24 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ if __name__ == "__main__":
9090

9191
for _ in range(10):
9292
# move 1cm in x direction (forward) and close gripper
93-
act = {"tquat": [0.01, 0, 0, 0, 0, 0, 1], "gripper": 0}
93+
act = {"tquat": [0.01, 0, 0, 0, 0, 0, 1], "gripper": [0]}
9494
obs, reward, terminated, truncated, info = env.step(act)
9595
print(obs)
9696
```

examples/fr3/fr3_env_cartesian_control.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,11 @@ def main():
6161
for _ in range(100):
6262
for _ in range(10):
6363
# move 1cm in x direction (forward) and close gripper
64-
act = {"tquat": [0.01, 0, 0, 0, 0, 0, 1], "gripper": 0}
64+
act = {"tquat": [0.01, 0, 0, 0, 0, 0, 1], "gripper": [0]}
6565
obs, reward, terminated, truncated, info = env_rel.step(act)
6666
for _ in range(10):
6767
# move 1cm in negative x direction (backward) and open gripper
68-
act = {"tquat": [-0.01, 0, 0, 0, 0, 0, 1], "gripper": 1}
68+
act = {"tquat": [-0.01, 0, 0, 0, 0, 0, 1], "gripper": [1]}
6969
obs, reward, terminated, truncated, info = env_rel.step(act)
7070

7171

examples/fr3/fr3_readme.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,6 @@
6767

6868
for _ in range(10):
6969
# move 1cm in x direction (forward) and close gripper
70-
act = {"tquat": [0.01, 0, 0, 0, 0, 0, 1], "gripper": 0}
70+
act = {"tquat": [0.01, 0, 0, 0, 0, 0, 1], "gripper": [0]}
7171
obs, reward, terminated, truncated, info = env.step(act)
7272
print(obs)

examples/fr3/grasp_demo.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ def __init__(self, env: gym.Env):
1919
self.unwrapped: RobotEnv = cast(RobotEnv, self.env.unwrapped)
2020
self.home_pose = self.unwrapped.robot.get_cartesian_position()
2121

22-
def _action(self, pose: Pose, gripper: float) -> dict[str, Any]:
23-
return {"xyzrpy": pose.xyzrpy(), "gripper": gripper}
22+
def _action(self, pose: Pose, gripper: list[float]) -> dict[str, Any]:
23+
return {"xyzrpy": pose.xyzrpy(), "gripper": [gripper]}
2424

2525
def get_object_pose(self, geom_name) -> Pose:
2626
model = self.env.get_wrapper_attr("sim").model
@@ -50,7 +50,7 @@ def plan_linear_motion(self, geom_name: str, delta_up: float, num_waypoints: int
5050
goal_pose *= Pose(translation=np.array([0, 0, delta_up]), quaternion=np.array([1, 0, 0, 0])) # type: ignore
5151
return self.generate_waypoints(end_eff_pose, goal_pose, num_waypoints=num_waypoints)
5252

53-
def execute_motion(self, waypoints: list[Pose], gripper: float = GripperWrapper.BINARY_GRIPPER_OPEN) -> dict:
53+
def execute_motion(self, waypoints: list[Pose], gripper: list[float] = GripperWrapper.BINARY_GRIPPER_OPEN) -> dict:
5454
for i in range(len(waypoints)):
5555
obs = self.step(self._action(waypoints[i], gripper))
5656
return obs

examples/fr3/grasp_digit_demo.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ def __init__(self, env: gym.Env):
1919
self.unwrapped: RobotEnv = cast(RobotEnv, self.env.unwrapped)
2020
self.home_pose = self.unwrapped.robot.get_cartesian_position()
2121

22-
def _action(self, pose: Pose, gripper: float) -> dict[str, Any]:
22+
def _action(self, pose: Pose, gripper: list[float]) -> dict[str, Any]:
2323
return {"xyzrpy": pose.xyzrpy(), "gripper": gripper}
2424

2525
def get_object_pose(self, geom_name) -> Pose:
@@ -48,7 +48,7 @@ def plan_linear_motion(self, geom_name: str, delta_up: float, num_waypoints: int
4848
goal_pose *= Pose(translation=np.array([0, 0, delta_up]), quaternion=np.array([1, 0, 0, 0])) # type: ignore
4949
return self.generate_waypoints(end_eff_pose, goal_pose, num_waypoints=num_waypoints)
5050

51-
def execute_motion(self, waypoints: list[Pose], gripper: float = GripperWrapper.BINARY_GRIPPER_OPEN) -> dict:
51+
def execute_motion(self, waypoints: list[Pose], gripper: list[float] = GripperWrapper.BINARY_GRIPPER_OPEN) -> dict:
5252
for i in range(len(waypoints)):
5353
obs = self.step(self._action(waypoints[i], gripper))
5454
return obs

examples/fr3/grasp_ompl_demo.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,9 @@ def __init__(self, env: gym.Env, planner: MjOMPL):
4545
self.planner = planner
4646

4747
def _action(self, pose: Pose, gripper: float) -> dict[str, Any]:
48-
return {"xyzrpy": pose.xyzrpy(), "gripper": gripper}
48+
return {"xyzrpy": pose.xyzrpy(), "gripper": [gripper]}
4949

50-
def _jaction(self, joints: np.ndarray, gripper: float) -> dict[str, Any]:
50+
def _jaction(self, joints: np.ndarray, gripper: list[float]) -> dict[str, Any]:
5151
return {"joints": joints, "gripper": gripper}
5252

5353
def get_object_pose(self, geom_name) -> Pose:
@@ -102,7 +102,7 @@ def generate_waypoints(self, start_pose: Pose, end_pose: Pose, num_waypoints: in
102102
def step(self, action: dict) -> dict:
103103
return self.env.step(action)[0]
104104

105-
def execute_motion(self, waypoints: list[Pose], gripper: float = GripperWrapper.BINARY_GRIPPER_OPEN) -> dict:
105+
def execute_motion(self, waypoints: list[Pose], gripper: list[float] = GripperWrapper.BINARY_GRIPPER_OPEN) -> dict:
106106
for i in range(len(waypoints)):
107107
obs = self.step(self._jaction(waypoints[i], gripper)) # type: ignore
108108
return obs

examples/so101/so101_env_cartesian_control.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,21 +49,21 @@ def main():
4949
env_rel.get_wrapper_attr("sim").open_gui()
5050
obs, info = env_rel.reset()
5151

52-
act = {"tquat": [0.03, 0, 0, 0, 0, 0, 1], "gripper": 1}
52+
act = {"tquat": [0.03, 0, 0, 0, 0, 0, 1], "gripper": [1]}
5353
obs, reward, terminated, truncated, info = env_rel.step(act)
5454

5555
for _ in range(100):
5656
for _ in range(5):
5757
# move 1cm in x direction (forward) and close gripper
58-
act = {"tquat": [-0.01, 0, 0, 0, 0, 0, 1], "gripper": 0}
58+
act = {"tquat": [-0.01, 0, 0, 0, 0, 0, 1], "gripper": [0]}
5959
obs, reward, terminated, truncated, info = env_rel.step(act)
6060
print(info, obs)
6161
if truncated or terminated:
6262
logger.info("Truncated or terminated!")
6363
return
6464
for _ in range(5):
6565
# move 1cm in negative x direction (backward) and open gripper
66-
act = {"tquat": [0.01, 0, 0, 0, 0, 0, 1], "gripper": 1}
66+
act = {"tquat": [0.01, 0, 0, 0, 0, 0, 1], "gripper": [1]}
6767
obs, reward, terminated, truncated, info = env_rel.step(act)
6868
if truncated or terminated:
6969
logger.info("Truncated or terminated!")

examples/ur5e/ur5e_env_cartesian_control.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,12 +70,12 @@ def main():
7070
for _ in range(100):
7171
for _ in range(10):
7272
# move 1cm in x direction (forward) and close gripper
73-
act = {"tquat": [0.01, 0, 0, 0, 0, 0, 1.0], "gripper": 0}
73+
act = {"tquat": [0.01, 0, 0, 0, 0, 0, 1.0], "gripper": [0]}
7474
obs, reward, terminated, truncated, info = env_rel.step(act)
7575
sleep(0.6)
7676
for _ in range(10):
7777
# move 1cm in negative x direction (backward) and open gripper
78-
act = {"tquat": [-0.01, 0, 0, 0, 0, 0, 1.0], "gripper": 1}
78+
act = {"tquat": [-0.01, 0, 0, 0, 0, 0, 1.0], "gripper": [1]}
7979
obs, reward, terminated, truncated, info = env_rel.step(act)
8080
sleep(0.6)
8181

extensions/rcs_panda/src/rcs_panda/panda_env_cartesian_control.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,14 @@ def main():
2929
for _ in range(100):
3030
for _ in range(10):
3131
# move 1cm in x direction (forward) and close gripper
32-
act = {"tquat": [0.01, 0, 0, 0, 0, 0, 1], "gripper": 0}
32+
act = {"tquat": [0.01, 0, 0, 0, 0, 0, 1], "gripper": [0]}
3333
obs, reward, terminated, truncated, info = env_rel.step(act)
3434
if truncated or terminated:
3535
logger.info("Truncated or terminated!")
3636
return
3737
for _ in range(10):
3838
# move 1cm in negative x direction (backward) and open gripper
39-
act = {"tquat": [-0.01, 0, 0, 0, 0, 0, 1], "gripper": 1}
39+
act = {"tquat": [-0.01, 0, 0, 0, 0, 0, 1], "gripper": [1]}
4040
obs, reward, terminated, truncated, info = env_rel.step(act)
4141
if truncated or terminated:
4242
logger.info("Truncated or terminated!")

python/rcs/envs/base.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import copy
44
import logging
55
from enum import Enum, auto
6-
from typing import Annotated, Any, Literal, TypeAlias, cast
6+
from typing import Annotated, Any, ClassVar, Literal, TypeAlias, cast
77

88
import gymnasium as gym
99
import numpy as np
@@ -684,8 +684,8 @@ def close(self):
684684
class GripperWrapper(ActObsInfoWrapper):
685685
# TODO: sticky gripper, like in aloha
686686

687-
BINARY_GRIPPER_CLOSED = 0
688-
BINARY_GRIPPER_OPEN = 1
687+
BINARY_GRIPPER_CLOSED: ClassVar[list[float]] = [0]
688+
BINARY_GRIPPER_OPEN: ClassVar[list[float]] = [1]
689689

690690
def __init__(self, env, gripper: common.Gripper, binary: bool = True):
691691
super().__init__(env)
@@ -715,7 +715,7 @@ def observation(self, observation: dict[str, Any], info: dict[str, Any]) -> tupl
715715
self._last_gripper_cmd if self._last_gripper_cmd is not None else self.BINARY_GRIPPER_OPEN
716716
)
717717
else:
718-
observation[self.gripper_key] = self.gripper.get_normalized_width()
718+
observation[self.gripper_key] = [self.gripper.get_normalized_width()]
719719

720720
return observation, info
721721

@@ -730,7 +730,7 @@ def action(self, action: dict[str, Any]) -> dict[str, Any]:
730730
if self.binary:
731731
self.gripper.grasp() if gripper_action == self.BINARY_GRIPPER_CLOSED else self.gripper.open()
732732
else:
733-
self.gripper.set_normalized_width(gripper_action)
733+
self.gripper.set_normalized_width(next(gripper_action))
734734
self._last_gripper_cmd = gripper_action
735735
del action[self.gripper_key]
736736
return action

0 commit comments

Comments
 (0)