rofunc.learning.RofuncRL.tasks.isaacgymenv.trifinger#

1.  Module Contents#

1.1.  Classes#

TrifingerDimensions

Dimensions of the tri-finger robot.

CuboidalObject

Fields for a cuboidal object.

Trifinger

1.2.  Functions#

lgsk_kernel

Defines logistic kernel function to bound input to [-0.25, 0)

gen_keypoints

compute_trifinger_reward

compute_trifinger_observations_states

random_xy

Returns sampled uniform positions in circle (https://stackoverflow.com/a/50746409)

random_z

Returns sampled height of the goal object.

default_orientation

Returns identity rotation transform.

random_orientation

Returns sampled rotation in 3D as quaternion. Ref: https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.transform.Rotation.random.html

random_orientation_within_angle

Generates random quaternions within max_angle of base Ref: https://math.stackexchange.com/a/3448434

random_angular_vel

Samples a random angular velocity with standard deviation magnitude_stdev

random_yaw_orientation

Returns sampled rotation around z-axis.

1.3.  Data#

project_dir

ARENA_RADIUS

1.4.  API#

rofunc.learning.RofuncRL.tasks.isaacgymenv.trifinger.project_dir = None#
class rofunc.learning.RofuncRL.tasks.isaacgymenv.trifinger.TrifingerDimensions[source]#

Bases: enum.Enum

Dimensions of the tri-finger robot.

Note: While it may not seem necessary for tri-finger robot since it is fixed base, for floating base systems having this dimensions class is useful.

PoseDim = (7,)#
VelocityDim = 6#
StateDim = 13#
WrenchDim = 6#
NumFingers = 3#
JointPositionDim = 9#
JointVelocityDim = 9#
JointTorqueDim = 9#
GeneralizedCoordinatesDim = None#
GeneralizedVelocityDim = None#
ObjectPoseDim = 7#
ObjectVelocityDim = 6#
rofunc.learning.RofuncRL.tasks.isaacgymenv.trifinger.ARENA_RADIUS = 0.195#
class rofunc.learning.RofuncRL.tasks.isaacgymenv.trifinger.CuboidalObject(size: Union[float, Tuple[float, float, float]])[source]#

Fields for a cuboidal object.

@note Motivation for this class is that if domain randomization is performed over the

size of the cuboid, then its attributes are automatically updated as well.

Initialization

Initialize the cuboidal object.

Args:
size: The size of the object along x, y, z in meters. If a single float is provided, then it is assumed that

object is a cube.

radius_3d: float = None#
max_com_distance_to_center: float = None#
min_height: float = None#
max_height = 0.1#
NumKeypoints = 8#
ObjectPositionDim = 3#
KeypointsCoordsDim = None#
property size: Tuple[float, float, float]#

Returns the dimensions of the cuboid object (x, y, z) in meters.

class rofunc.learning.RofuncRL.tasks.isaacgymenv.trifinger.Trifinger(cfg, rl_device, sim_device, graphics_device_id, headless, virtual_screen_capture, force_render)[source]#

Bases: rofunc.learning.RofuncRL.tasks.isaacgymenv.base.vec_task.VecTask

action_dim = None#
create_sim()[source]#
compute_reward(actions)[source]#
compute_observations()[source]#
reset_idx(env_ids)[source]#
pre_physics_step(actions)[source]#
post_physics_step()[source]#
property env_steps_count: int#

Returns the total number of environment steps aggregated across parallel environments.

rofunc.learning.RofuncRL.tasks.isaacgymenv.trifinger.lgsk_kernel(x: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.torch.Tensor, scale: float = 50.0, eps: float = 2) rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.torch.Tensor#

Defines logistic kernel function to bound input to [-0.25, 0)

Ref: https://arxiv.org/abs/1901.08652 (page 15)

Args:

x: Input tensor. scale: Scaling of the kernel function (controls how wide the ‘bell’ shape is’) eps: Controls how ‘tall’ the ‘bell’ shape is.

Returns:

Output tensor computed using kernel.

rofunc.learning.RofuncRL.tasks.isaacgymenv.trifinger.gen_keypoints(pose: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.torch.Tensor, num_keypoints: int = 8, size: Tuple[float, float, float] = (0.065, 0.065, 0.065))#
rofunc.learning.RofuncRL.tasks.isaacgymenv.trifinger.compute_trifinger_reward(obs_buf: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.torch.Tensor, reset_buf: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.torch.Tensor, progress_buf: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.torch.Tensor, episode_length: int, dt: float, finger_move_penalty_weight: float, finger_reach_object_weight: float, object_dist_weight: float, object_rot_weight: float, env_steps_count: int, object_goal_poses_buf: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.torch.Tensor, object_state: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.torch.Tensor, last_object_state: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.torch.Tensor, fingertip_state: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.torch.Tensor, last_fingertip_state: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.torch.Tensor, use_keypoints: bool) Tuple[rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.torch.Tensor, rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.torch.Tensor, Dict[str, rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.torch.Tensor]]#
rofunc.learning.RofuncRL.tasks.isaacgymenv.trifinger.compute_trifinger_observations_states(asymmetric_obs: bool, dof_position: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.torch.Tensor, dof_velocity: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.torch.Tensor, object_state: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.torch.Tensor, object_goal_poses: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.torch.Tensor, actions: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.torch.Tensor, fingertip_state: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.torch.Tensor, joint_torques: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.torch.Tensor, tip_wrenches: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.torch.Tensor)#
rofunc.learning.RofuncRL.tasks.isaacgymenv.trifinger.random_xy(num: int, max_com_distance_to_center: float, device: str) Tuple[rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.torch.Tensor, rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.torch.Tensor]#

Returns sampled uniform positions in circle (https://stackoverflow.com/a/50746409)

rofunc.learning.RofuncRL.tasks.isaacgymenv.trifinger.random_z(num: int, min_height: float, max_height: float, device: str) rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.torch.Tensor#

Returns sampled height of the goal object.

rofunc.learning.RofuncRL.tasks.isaacgymenv.trifinger.default_orientation(num: int, device: str) rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.torch.Tensor#

Returns identity rotation transform.

rofunc.learning.RofuncRL.tasks.isaacgymenv.trifinger.random_orientation(num: int, device: str) rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.torch.Tensor#

Returns sampled rotation in 3D as quaternion. Ref: https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.transform.Rotation.random.html

rofunc.learning.RofuncRL.tasks.isaacgymenv.trifinger.random_orientation_within_angle(num: int, device: str, base: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.torch.Tensor, max_angle: float)#

Generates random quaternions within max_angle of base Ref: https://math.stackexchange.com/a/3448434

rofunc.learning.RofuncRL.tasks.isaacgymenv.trifinger.random_angular_vel(num: int, device: str, magnitude_stdev: float) rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.torch.Tensor#

Samples a random angular velocity with standard deviation magnitude_stdev

rofunc.learning.RofuncRL.tasks.isaacgymenv.trifinger.random_yaw_orientation(num: int, device: str) rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.torch.Tensor#

Returns sampled rotation around z-axis.