robosuite.controllers.parts.gripper package#

Submodules#

robosuite.controllers.parts.gripper.gripper_controller module#

class robosuite.controllers.parts.gripper.gripper_controller.GripperController(sim, joint_indexes, actuator_range, part_name=None, naming_prefix=None)#

Bases: object

General controller interface.

Requires reference to mujoco sim object, relevant joint_indexes to that robot, and whether an initial_joint is used for nullspace torques or not

Parameters:
  • sim (MjSim) – Simulator instance this controller will pull robot state updates from

  • eef_name (str) – Name of controlled robot arm’s end effector (from robot XML)

  • joint_indexes (dict) –

    Each key contains sim reference indexes to relevant robot joint information, namely:

    ’joints’:

    list of indexes to relevant robot joints

    ’qpos’:

    list of indexes to relevant robot joint positions

    ’qvel’:

    list of indexes to relevant robot joint velocities

  • actuator_range (2-tuple of array of float) – 2-Tuple (low, high) representing the robot joint actuator range

property actuator_limits#

Torque limits for this controller

Returns:

  • (np.array) minimum actuator torques

  • (np.array) maximum actuator torques

Return type:

2-tuple

clip_torques(torques)#

Clips the torques to be within the actuator limits

Parameters:

torques (Iterable) – Torques to clip

Returns:

Clipped torques

Return type:

np.array

property control_limits#

Limits over this controller’s action space, which defaults to input min/max

Returns:

  • (np.array) minimum action values

  • (np.array) maximum action values

Return type:

2-tuple

property name#

Name of this controller

Returns:

controller name

Return type:

str

static nums2array(nums, dim)#

Convert input @nums into numpy array of length @dim. If @nums is a single number, broadcasts it to the corresponding dimension size @dim before converting into a numpy array

Parameters:
  • nums (numeric or Iterable) – Either single value or array of numbers

  • dim (int) – Size of array to broadcast input to env.sim.data.actuator_force

Returns:

Array filled with values specified in @nums

Return type:

np.array

reset_goal()#

Resets the goal – usually by setting to the goal to all zeros, but in some cases may be different (e.g.: OSC)

abstract run_controller()#

Abstract method that should be implemented in all subclass controllers, and should convert a given action into torques (pre gravity compensation) to be executed on the robot. Additionally, resets the self.new_update flag so that the next self.update call will occur

scale_action(action)#

Clips @action to be within self.input_min and self.input_max, and then re-scale the values to be within the range self.output_min and self.output_max

Parameters:

action (Iterable) – Actions to scale

Returns:

Re-scaled action

Return type:

np.array

property torque_compensation#

Gravity compensation for this robot arm

Returns:

torques

Return type:

np.array

update(force=False)#

Updates the state of the robot arm, including end effector pose / orientation / velocity, joint pos/vel, jacobian, and mass matrix. By default, since this is a non-negligible computation, multiple redundant calls will be ignored via the self.new_update attribute flag. However, if the @force flag is set, the update will occur regardless of that state of self.new_update. This base class method of @run_controller resets the self.new_update flag

Parameters:

force (bool) – Whether to force an update to occur or not

update_initial_joints(initial_joints)#

Updates the internal attribute self.initial_joints. This is useful for updating changes in controller-specific behavior, such as with OSC where self.initial_joints is used for determine nullspace actions

This function can also be extended by subclassed controllers for additional controller-specific updates

Parameters:

initial_joints (Iterable) – Array of joint position values to update the initial joints

robosuite.controllers.parts.gripper.simple_grip module#

This is a controller that controls the fingers / grippers to do naive gripping. No matter how many fingers the gripper has, they all move in the same direction.

class robosuite.controllers.parts.gripper.simple_grip.SimpleGripController(sim, joint_indexes, actuator_range, input_max=1, input_min=-1, output_max=1, output_min=-1, policy_freq=20, qpos_limits=None, interpolator=None, use_action_scaling=True, **kwargs)#

Bases: GripperController

Controller for controlling robot arm via impedance control. Allows position control of the robot’s joints.

NOTE: Control input actions assumed to be taken relative to the current joint positions. A given action to this controller is assumed to be of the form: (dpos_j0, dpos_j1, … , dpos_jn-1) for an n-joint robot

Parameters:
  • sim (MjSim) – Simulator instance this controller will pull robot state updates from

  • eef_name (str) – Name of controlled robot arm’s end effector (from robot XML)

  • joint_indexes (dict) –

    Each key contains sim reference indexes to relevant robot joint information, namely:

    ’joints’:

    list of indexes to relevant robot joints

    ’qpos’:

    list of indexes to relevant robot joint positions

    ’qvel’:

    list of indexes to relevant robot joint velocities

  • actuator_range (2-tuple of array of float) – 2-Tuple (low, high) representing the robot joint actuator range

  • input_max (float or Iterable of float) – Maximum above which an inputted action will be clipped. Can be either be a scalar (same value for all action dimensions), or a list (specific values for each dimension). If the latter, dimension should be the same as the control dimension for this controller

  • input_min (float or Iterable of float) – Minimum below which an inputted action will be clipped. Can be either be a scalar (same value for all action dimensions), or a list (specific values for each dimension). If the latter, dimension should be the same as the control dimension for this controller

  • output_max (float or Iterable of float) – Maximum which defines upper end of scaling range when scaling an input action. Can be either be a scalar (same value for all action dimensions), or a list (specific values for each dimension). If the latter, dimension should be the same as the control dimension for this controller

  • output_min (float or Iterable of float) – Minimum which defines upper end of scaling range when scaling an input action. Can be either be a scalar (same value for all action dimensions), or a list (specific values for each dimension). If the latter, dimension should be the same as the control dimension for this controller

  • policy_freq (int) – Frequency at which actions from the robot policy are fed into this controller

  • qpos_limits (2-list of float or 2-list of Iterable of floats) – Limits (rad) below and above which the magnitude of a calculated goal joint position will be clipped. Can be either be a 2-list (same min/max value for all joint dims), or a 2-list of list (specific min/max values for each dim)

  • interpolator (Interpolator) – Interpolator object to be used for interpolating from the current joint position to the goal joint position during each timestep between inputted actions

  • **kwargs – Does nothing; placeholder to “sink” any additional arguments so that instantiating this controller via an argument dict that has additional extraneous arguments won’t raise an error

Raises:

AssertionError – [Invalid impedance mode]

property control_limits#

Returns the limits over this controller’s action space, overrides the superclass property Returns the following (generalized for both high and low limits), based on the impedance mode: :returns: - (np.array) minimum action values

  • (np.array) maximum action values

Return type:

2-tuple

property name#

Name of this controller

Returns:

controller name

Return type:

str

reset_goal()#

Resets joint position goal to be current position

run_controller()#

Calculates the torques required to reach the desired setpoint

Returns:

Command torques

Return type:

np.array

set_goal(action, set_qpos=None)#

Sets goal based on input @action. If self.impedance_mode is not “fixed”, then the input will be parsed into the delta values to update the goal position / pose and the kp and/or damping_ratio values to be immediately updated internally before executing the proceeding control loop.

Note that @action expected to be in the following format, based on impedance mode!

Mode ‘fixed’:

[joint pos command]

Mode ‘variable’:

[damping_ratio values, kp values, joint pos command]

Mode ‘variable_kp’:

[kp values, joint pos command]

Parameters:
  • action (Iterable) – Desired relative joint position goal state

  • set_qpos (Iterable) – If set, overrides @action and sets the desired absolute joint position goal state

Raises:

AssertionError – [Invalid action dimension size]

Module contents#