Skip to content

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Question] The correct way of integrating external frame tracking to an ActionTerm #1186

Closed
ozhanozen opened this issue Oct 8, 2024 · 0 comments
Labels
dev team Issue or pull request created by the dev team

Comments

@ozhanozen
Copy link
Contributor

Hi Isaac Lab team,

I would like to ask how to properly integrate the pose tracking of a frame—external to the articulation asset—within an ActionTerm implementation.

Here is the context:
I am currently working on PR #913, which includes the ActionTerm implementation for the operational space controller. Sometimes it is beneficial to apply the control on a coordinate frame that is attached to the target object we are interacting with (e.g., we want to use force control along the rotation axis of a screw while controlling the position in the other axes). This requires tracking the pose of this coordinate frame (or an object), which can potentially move. While this is relatively straightforward for the controller implementation itself (and direct workflows), it is unclear how to do it for the ActionTerm (and manager-based workflows). I have checked the existing ActionTerm implementations, and they mostly use only the internal information of the articulation asset. I didn't see any example of injecting information from other assets (e.g., the pose of a rigid object).

For the moment, I did the following as a workaround:

One provides the path of a RigidObject, whose pose should correspond to this external coordinate frame, within the ActionTermCfg. Internally, ActionTerm creates a FrameTransformer, whose task frame argument is this RigidObject. This FrameTransformer is used to track the world pose of this frame and its pose w.r.t. the robot root frame is calculated and used by the controller. While this works, there are a few caveats:

  • There has to be a RigidObject to track. One cannot simply provide an arbitrary tensor free from an asset, which I guess is a limitation of the manager-based workflows.
  • FrameTransformer requires another RigidObject as a source frame to be provided, which is actually not needed for the controller. I arbitrarily assign the first RigidObject child of the articulation asset but not use this information later.
  • ActionTerm needs to handle the FrameTransformer operations manually.

Is this a proper way of integrating external frame information to the ActionTerm or would you suggest something else? I am asking the question outside of the PR, as it might also be relevant for other future ActionTerm implementations.

I appreciate your feedback.

@mpgussert mpgussert added the dev team Issue or pull request created by the dev team label Oct 10, 2024
@isaac-sim isaac-sim locked and limited conversation to collaborators Oct 10, 2024
@mpgussert mpgussert converted this issue into discussion #1206 Oct 10, 2024

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

Labels
dev team Issue or pull request created by the dev team
Projects
None yet
Development

No branches or pull requests

2 participants