Skip to content

validate_postcondition fires before motion execution completes #221

Description

@MarvinDufner

ActionDescription.perform() calls validate_postcondition() immediately after execute() returns, assuming the action's effects are done. However, execute() submits motions via SequentialPlan.perform(), which only collects goals for giskard without blocking until they complete. Actual motion execution is deferred until the outer ExecutionEnvironment flushes. This means validate_postcondition() and all post_perform callbacks fire before any motion has run:

  result = self.execute()          # submits motions, returns immediately
  for post_cb in ...:
      post_cb(self)                # world state unchanged
  self.validate_postcondition(result)  # world state still unchanged       

Any postcondition that checks world state (object grasped, robot at target pose, etc.) will silently produce incorrect results.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

PyCRAMbugSomething isn't working

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions