robopal.robots.grippers 源代码
import numpy as np
REGISTERED_ENDS = {}
[文档]
class BaseEnd(object, metaclass=EndMetaClass):
gripper_joint_names = dict()
gripper_joint_indexes = dict()
gripper_actuator_names = dict()
gripper_actuator_indexes = dict()
# dt will pass in after the environment is instantiated
dt: int = None
_ctrl_range = [-1, 1]
def __init__(self, robot_data, robot_model, agent) -> None:
self.robot_data = robot_data
self.robot_model = robot_model
self.agent_id = agent[-1]
[文档]
def apply_action(self, action: np.ndarray) -> None:
pass
[文档]
def open(self):
self.apply_action(self._ctrl_range[1])
[文档]
def close(self):
self.apply_action(self._ctrl_range[0])
[文档]
def get_finger_observations(self):
pass
[文档]
def reset(self):
pass
[文档]
class RethinkGripper(BaseEnd):
_ctrl_range = [-0.01, 0.02]
[文档]
def apply_action(self, action):
self.robot_data.actuator(f'{self.agent_id}_gripper_l_finger_joint').ctrl[0] = action
self.robot_data.actuator(f'{self.agent_id}_gripper_r_finger_joint').ctrl[0] = action
[文档]
def get_finger_observations(self):
return np.concatenate([
self.robot_data.joint(f'{self.agent_id}_l_finger_joint').qpos,
self.robot_data.joint(f'{self.agent_id}_l_finger_joint').qvel * self.dt
], axis=0)
[文档]
class RobotiqGripper(BaseEnd):
_ctrl_range = [0, 0.83]
[文档]
def apply_action(self, action):
self.robot_data.actuator(f'{self.agent_id}_robotiq_2f_85').ctrl[0] = action
[文档]
def open(self):
self.apply_action(self._ctrl_range[0])
[文档]
def close(self):
self.apply_action(self._ctrl_range[1])
[文档]
class PandaHand(BaseEnd):
_ctrl_range = [0, 255]
[文档]
def apply_action(self, action):
self.robot_data.actuator(f'{self.agent_id}_actuator8').ctrl[0] = action
[文档]
def get_finger_observations(self):
return np.concatenate([
self.robot_data.joint(f'{self.agent_id}_finger_joint1').qpos,
self.robot_data.joint(f'{self.agent_id}_finger_joint1').qvel * self.dt
], axis=0)