Skip to content

simulo.FrameTransformer

Computes transformations between reference frames.

Useful for computing relative poses between robot links and objects in the scene, commonly used for manipulation tasks.

Example:

import simulo
# Track end-effector relative to base
frame_tf = simulo.FrameTransformer(
source_frame="/World/Robot/base",
target_frames=[
simulo.FrameTransformerTarget(
prim_path="/World/Robot/ee_link",
),
simulo.FrameTransformerTarget(
prim_path="/World/Object",
),
],
)
scene.add(frame_tf, at="/World/frame_transformer")
# Read transforms
transforms = frame_tf.read_transforms() # dict of target_name -> (pos, quat)
simulo.FrameTransformer(
path: Optional[str] = None,
source_frame: Optional[str] = None,
target_frames: Optional[List[FrameTransformerTarget]] = None,
update_period: float = 0.0,
enabled: bool = True,
debug_vis: bool = False,
)
FrameTransformer.read_transforms() -> torch.Tensor

Get transformations from source to all targets.

Returns:

Transforms tensor of shape (num_envs, num_targets, 7). Each transform is (x, y, z, qw, qx, qy, qz).

Raises:

  • RuntimeError — If sensor not initialized
FrameTransformer.read_target_positions() -> torch.Tensor

Get target positions relative to source frame.

Returns:

Positions tensor of shape (num_envs, num_targets, 3).

Raises:

  • RuntimeError — If sensor not initialized
FrameTransformer.read_target_orientations() -> torch.Tensor

Get target orientations relative to source frame.

Returns:

Orientations tensor of shape (num_envs, num_targets, 4). Quaternions in (w, x, y, z) format.

Raises:

  • RuntimeError — If sensor not initialized