Skip to content

Scenes And Task Kinds

Scene construction belongs to the retargeting recipe. The observation supplies target-independent objects, terrain, contacts, and landmarks; the recipe chooses how those facts enter a robot problem.

Task kind Typical scene
robot_only Ground and robot motion
object_interaction Ground plus observed or configured objects
climbing Terrain, holds, or climbing structures

Robot Only

from retarget import RobotOnlySceneRecipe

scene_recipe = RobotOnlySceneRecipe(
    ground_range=(-1.0, 1.0),
    ground_size=15,
)

Pass this to RoleRetargetingRecipe. See examples/basic_robot_only.py for the complete experiment.

Object Interaction

For a configured object:

from retarget import (
    ObjectSpec,
    ObjectTrajectory,
    SceneSpec,
    StaticSceneRecipe,
)

object_spec = ObjectSpec(
    name="box",
    sample_points=box_points,
    trajectory=ObjectTrajectory.identity(frame_count, fps=fps),
)
scene_recipe = StaticSceneRecipe(
    SceneSpec.object_interaction(object_spec)
)

For captured objects, an ObservationRecipe should instead create ObservedObject with geometry and a PoseTrack. The adaptation recipe converts that track into the runtime ObjectTrajectory.

See examples/object_interaction.py and the skateboarding recipes.

Climbing

from retarget import SceneSpec, StaticSceneRecipe, TerrainSpec

scene_recipe = StaticSceneRecipe(
    SceneSpec.climbing(
        terrain=TerrainSpec(name="holds", sample_points=hold_points)
    )
)

HolosomaClimbObservationRecipe demonstrates the captured-object version, and HolosomaClimbRetargetingRecipe demonstrates robot-specific geometry policy.

Semantic Contacts

SemanticContactSequence remains independent of robot links. Only a retargeting recipe resolves each ContactSubject through robot roles into a runtime ContactPlan.

This split is important when reusing one observation for robots with different foot, hand, or collision-link layouts.