Lift#
Task key: lift.
lift is a single-arm baseline task. A cube is spawned inside the robot
workspace and the agent must lift it to a fixed target height.
Goal#
Lift the cube until it reaches the goal height.
Keep the cube’s XY position close to the goal marker.
Quickstart#
import dexsuite as ds
env = ds.make(
"lift",
manipulator="franka",
gripper="robotiq",
arm_control="osc_pose",
gripper_control="joint_position",
render_mode="human",
)
obs, info = env.reset()
obs, reward, terminated, truncated, info = env.step(env.action_space.sample())
env.close()
Task Entities#
cube: a rigid cube that starts on the table.goal: a fixed, non-colliding sphere placed above the cube spawn.
Observations#
Observations follow the DexSuite convention:
obs["state"]is a nested dict of torch tensors (robot state + task state).obs["cameras"]is a dict of rendered camera outputs (if cameras are enabled).
Lift adds (under obs["state"]["other"]):
cube_pos(shape(n_envs, 3))cube_quat(shape(n_envs, 4), wxyz convention)target_pos(shape(n_envs, 3))
The base environment also adds:
other["action"]andother["last_action"](flat action tensors)
Actions#
DexSuite uses a single, flat action tensor:
Single env: shape
(D,)Batched envs: shape
(n_envs, D)
D depends on your robot + controller choices. Use env.action_space.shape
to inspect it.
env.step(...) accepts a torch tensor, a NumPy array, or a Python sequence.
Inputs are converted to a float32 torch tensor on the environment device.
Termination#
Success: cube reaches the target height (within tolerance) and its XY position is within 5 cm of the target.
Failure: the tool center point (TCP) leaves the workspace AABB.
Truncation: the episode reaches the horizon.
Simulation Settings#
The lift baseline uses:
SIM_DT = 0.01SUBSTEPS = 1HORIZON = 600control steps
SimOptions.control_hz controls the control frequency; physics steps run at
SIM_DT with SUBSTEPS substeps per physics step.
Source#
Dexsuite/dexsuite/environments/single/baselines/lift.py