Skip to content

[Question] How to define one RL “step” as a full grasp execution (not physics dt) in Isaac Lab? #3599

@qkrwnduf1997

Description

@qkrwnduf1997

Question

Hi Isaac Lab team,

I’m working on 4-DoF robotic grasp pose detection from RGB-D images. The setup is top-down RGB-D sensing and gripper&manipulator to grasp and relocate objects.

Observation: single RGB-D image (top-down)
Action: grasp pose (x,y,z,yaw)
Reward: binary success (1 if the executed grasp succeeds, 0 otherwise)

Desired step semantics: one RL step = one complete grasp attempt (move → close → lift → success/fail), not the physics timestep dt.

From what I can tell, Isaac Lab’s stepping appears tied to the physics timestep, and most examples are continuous control (joint velocity/torque) with a reward each dt. In my case, I need to aggregate multiple simulation timesteps into a single RL step and return one reward only after the grasp attempt completes.

Questions

  • Is there an official/recommended way in Isaac Lab to define a higher-level RL step that bundles many simulation timesteps into one environment step (i.e., event-driven or option/macro-action style stepping)?

  • Are there reference examples where a single agent step triggers a closed-loop sequence over several physics steps (e.g., pick-and-place or grasp attempts) and returns a single terminal/non-terminal reward at the end of that sequence?

  • If the intended approach is to run internal controllers over multiple substeps, what’s the recommended pattern (e.g., custom pre_physics_step / post_physics_step with an internal state machine, step-skipping/frame-skip, or a callback to signal “grasp-attempt complete” before exposing step() to the agent)?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions