-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Fixes implicit actuator limits configs for assets #2952
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
Conversation
|
@Mayankm96 I think this would require your review |
|
@jtigue-bdai would be good to get your feedback on this as well. |
jtigue-bdai
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good. thanks for handling this @ooctipus
| | | joint_names_expr=["slider_to_cart"], | | ||
| | asset_options = gymapi.AssetOptions() | effort_limit=400.0, | | ||
| | asset_options.fix_base_link = True | velocity_limit=100.0, | | ||
| | asset_options = gymapi.AssetOptions() | effort_limit_sim=400.0, | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Be careful. Here this is IsaacGym API.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The gym api code is not modified, the documentation change is on the isaaclab api. Let me know if I misunderstood your comment : )).
| or setting the ``armature`` parameter to a higher value may help. | ||
|
|
||
|
|
||
| Actuator velocity/effort limits considerations |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am wondering if this should move from here to "How To" section where we can describe how to tune your actuator limits. Right now it gets burried into the concept of actuators. We should keep "code" and "concepts" as different things for clarity sake.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree : ))
02c1c6b to
cfb510f
Compare
7e9ebfb to
1e83320
Compare
# Description As discussed by several earlier commit and issues isaac-sim#2135 isaac-sim#1654 isaac-sim#1384 isaac-sim#1509, there is a distinction between motor hardware velocity limit(velocity_limit), effort limit(effort_limit), simulation velocity limit(velocity_limit_sim) and effort limit(effort_limit_sim). ImplicitActuator, lacking the motor model, is inherently non-attributable to velocity_limit or effort_limit, and should be using velocity_limit_sim and effort_limit_sim instead if such limits should be set. However, since most of environment with `ImplicitActuatorCfg` was written before v1.4, when velocity_limit was basically ignored, and velocity_limit_sim did not exist. To not break those environments training, we remove all `velocity_limit` attribute from existing `ImplicitActuatorCfg`, change all `effort_limit` to `effort_limit_sim`, and added documentation to articulate this point . However, even with removing velocity_limit, effort_limit, there could be subtitles interacting with default USD value. USD may have joints that comes with velocity_limit_sim and effort_limit_sim unnoticed by user. Thus, user may thinking sim_limits are uncaped by not specifying limits in Cfg, but is silently set in USD. To make that more clear, this PR added flag: `actuator_value_resolution_debug_print(default to false)` in `ArticulationCfg` that has following behavior: case 1: if USD has default, ActuatorCfg has limits >if limits is same -> we are all good, no warning. >if limits is different -> we warn user we used cfg value. case 2: USD has default, ActuatorCfg no limits -> We warn user saying the USD defaults is used Note that his logging can apply to all other joint attributes where there could be USD-ArticulationCfg conflicts, not limited to `velocity_limit_si,` or `effort_limit_sim` -> such as : stiffness, damping, armature ..... Note this section is also documented in articulation.rst This PR added actuator discrepancy logging into the :class:`ActuatorBase`. ## Type of change <!-- As you go through the list, delete the ones that are not applicable. --> - Bug fix (non-breaking change which fixes an issue) - This change requires a documentation update ## Screenshots Please attach before and after screenshots of the change if applicable. <!-- Example: | Before | After | | ------ | ----- | | _gif/png before_ | _gif/png after_ | To upload images to a PR -- simply drag and drop an image while in edit mode and it should upload the image directly. You can then paste that source into the above before/after sections. --> ## Checklist - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [x] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there <!-- As you go through the checklist above, you can mark something as done by putting an x character in it For example, - [x] I have done this task - [ ] I have not done this task --> --------- Co-authored-by: Kelly Guo <[email protected]>
As discussed by several earlier commit and issues #2135 #1654 #1384 limit(velocity_limit), effort limit(effort_limit), simulation velocity limit(velocity_limit_sim) and effort limit(effort_limit_sim). ImplicitActuator, lacking the motor model, is inherently non-attributable to velocity_limit or effort_limit, and should be using velocity_limit_sim and effort_limit_sim instead if such limits should be set. However, since most of environment with `ImplicitActuatorCfg` was written before v1.4, when velocity_limit was basically ignored, and velocity_limit_sim did not exist. To not break those environments training, we remove all `velocity_limit` attribute from existing `ImplicitActuatorCfg`, change all `effort_limit` to `effort_limit_sim`, and added documentation to articulate this point . However, even with removing velocity_limit, effort_limit, there could be subtitles interacting with default USD value. USD may have joints that comes with velocity_limit_sim and effort_limit_sim unnoticed by user. Thus, user may thinking sim_limits are uncaped by not specifying limits in Cfg, but is silently set in USD. To make that more clear, this PR added flag: `actuator_value_resolution_debug_print(default to false)` in `ArticulationCfg` that has following behavior: case 1: if USD has default, ActuatorCfg has limits >if limits is same -> we are all good, no warning. >if limits is different -> we warn user we used cfg value. case 2: USD has default, ActuatorCfg no limits -> We warn user saying the USD defaults is used Note that his logging can apply to all other joint attributes where there could be USD-ArticulationCfg conflicts, not limited to `velocity_limit_si,` or `effort_limit_sim` -> such as : stiffness, damping, armature ..... Note this section is also documented in articulation.rst This PR added actuator discrepancy logging into the :class:`ActuatorBase`. <!-- As you go through the list, delete the ones that are not applicable. --> - Bug fix (non-breaking change which fixes an issue) - This change requires a documentation update Please attach before and after screenshots of the change if applicable. <!-- Example: | Before | After | | ------ | ----- | | _gif/png before_ | _gif/png after_ | To upload images to a PR -- simply drag and drop an image while in edit mode and it should upload the image directly. You can then paste that source into the above before/after sections. --> - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [x] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there <!-- As you go through the checklist above, you can mark something as done by putting an x character in it For example, - [x] I have done this task - [ ] I have not done this task --> --------- Co-authored-by: Kelly Guo <[email protected]>
# Description As discussed by several earlier commit and issues isaac-sim#2135 isaac-sim#1654 isaac-sim#1384 isaac-sim#1509, there is a distinction between motor hardware velocity limit(velocity_limit), effort limit(effort_limit), simulation velocity limit(velocity_limit_sim) and effort limit(effort_limit_sim). ImplicitActuator, lacking the motor model, is inherently non-attributable to velocity_limit or effort_limit, and should be using velocity_limit_sim and effort_limit_sim instead if such limits should be set. However, since most of environment with `ImplicitActuatorCfg` was written before v1.4, when velocity_limit was basically ignored, and velocity_limit_sim did not exist. To not break those environments training, we remove all `velocity_limit` attribute from existing `ImplicitActuatorCfg`, change all `effort_limit` to `effort_limit_sim`, and added documentation to articulate this point . However, even with removing velocity_limit, effort_limit, there could be subtitles interacting with default USD value. USD may have joints that comes with velocity_limit_sim and effort_limit_sim unnoticed by user. Thus, user may thinking sim_limits are uncaped by not specifying limits in Cfg, but is silently set in USD. To make that more clear, this PR added flag: `actuator_value_resolution_debug_print(default to false)` in `ArticulationCfg` that has following behavior: case 1: if USD has default, ActuatorCfg has limits >if limits is same -> we are all good, no warning. >if limits is different -> we warn user we used cfg value. case 2: USD has default, ActuatorCfg no limits -> We warn user saying the USD defaults is used Note that his logging can apply to all other joint attributes where there could be USD-ArticulationCfg conflicts, not limited to `velocity_limit_si,` or `effort_limit_sim` -> such as : stiffness, damping, armature ..... Note this section is also documented in articulation.rst This PR added actuator discrepancy logging into the :class:`ActuatorBase`. ## Type of change <!-- As you go through the list, delete the ones that are not applicable. --> - Bug fix (non-breaking change which fixes an issue) - This change requires a documentation update ## Screenshots Please attach before and after screenshots of the change if applicable. <!-- Example: | Before | After | | ------ | ----- | | _gif/png before_ | _gif/png after_ | To upload images to a PR -- simply drag and drop an image while in edit mode and it should upload the image directly. You can then paste that source into the above before/after sections. --> ## Checklist - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [x] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there <!-- As you go through the checklist above, you can mark something as done by putting an x character in it For example, - [x] I have done this task - [ ] I have not done this task --> --------- Co-authored-by: Kelly Guo <[email protected]>
As discussed by several earlier commit and issues isaac-sim#2135 isaac-sim#1654 isaac-sim#1384 limit(velocity_limit), effort limit(effort_limit), simulation velocity limit(velocity_limit_sim) and effort limit(effort_limit_sim). ImplicitActuator, lacking the motor model, is inherently non-attributable to velocity_limit or effort_limit, and should be using velocity_limit_sim and effort_limit_sim instead if such limits should be set. However, since most of environment with `ImplicitActuatorCfg` was written before v1.4, when velocity_limit was basically ignored, and velocity_limit_sim did not exist. To not break those environments training, we remove all `velocity_limit` attribute from existing `ImplicitActuatorCfg`, change all `effort_limit` to `effort_limit_sim`, and added documentation to articulate this point . However, even with removing velocity_limit, effort_limit, there could be subtitles interacting with default USD value. USD may have joints that comes with velocity_limit_sim and effort_limit_sim unnoticed by user. Thus, user may thinking sim_limits are uncaped by not specifying limits in Cfg, but is silently set in USD. To make that more clear, this PR added flag: `actuator_value_resolution_debug_print(default to false)` in `ArticulationCfg` that has following behavior: case 1: if USD has default, ActuatorCfg has limits >if limits is same -> we are all good, no warning. >if limits is different -> we warn user we used cfg value. case 2: USD has default, ActuatorCfg no limits -> We warn user saying the USD defaults is used Note that his logging can apply to all other joint attributes where there could be USD-ArticulationCfg conflicts, not limited to `velocity_limit_si,` or `effort_limit_sim` -> such as : stiffness, damping, armature ..... Note this section is also documented in articulation.rst This PR added actuator discrepancy logging into the :class:`ActuatorBase`. <!-- As you go through the list, delete the ones that are not applicable. --> - Bug fix (non-breaking change which fixes an issue) - This change requires a documentation update Please attach before and after screenshots of the change if applicable. <!-- Example: | Before | After | | ------ | ----- | | _gif/png before_ | _gif/png after_ | To upload images to a PR -- simply drag and drop an image while in edit mode and it should upload the image directly. You can then paste that source into the above before/after sections. --> - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [x] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there <!-- As you go through the checklist above, you can mark something as done by putting an x character in it For example, - [x] I have done this task - [ ] I have not done this task --> --------- Co-authored-by: Kelly Guo <[email protected]>
|
Please be careful in future with these MRs! The MR title says it is fixing configs but it actually changed something inside the core actuator class. We MUST, at all cost, make sure MRs are of digestible sizes, especially if they change something in the core framework that may lead to undefined behaviors. |
# Description As discussed by several earlier commit and issues isaac-sim#2135 isaac-sim#1654 isaac-sim#1384 isaac-sim#1509, there is a distinction between motor hardware velocity limit(velocity_limit), effort limit(effort_limit), simulation velocity limit(velocity_limit_sim) and effort limit(effort_limit_sim). ImplicitActuator, lacking the motor model, is inherently non-attributable to velocity_limit or effort_limit, and should be using velocity_limit_sim and effort_limit_sim instead if such limits should be set. However, since most of environment with `ImplicitActuatorCfg` was written before v1.4, when velocity_limit was basically ignored, and velocity_limit_sim did not exist. To not break those environments training, we remove all `velocity_limit` attribute from existing `ImplicitActuatorCfg`, change all `effort_limit` to `effort_limit_sim`, and added documentation to articulate this point . However, even with removing velocity_limit, effort_limit, there could be subtitles interacting with default USD value. USD may have joints that comes with velocity_limit_sim and effort_limit_sim unnoticed by user. Thus, user may thinking sim_limits are uncaped by not specifying limits in Cfg, but is silently set in USD. To make that more clear, this PR added flag: `actuator_value_resolution_debug_print(default to false)` in `ArticulationCfg` that has following behavior: case 1: if USD has default, ActuatorCfg has limits >if limits is same -> we are all good, no warning. >if limits is different -> we warn user we used cfg value. case 2: USD has default, ActuatorCfg no limits -> We warn user saying the USD defaults is used Note that his logging can apply to all other joint attributes where there could be USD-ArticulationCfg conflicts, not limited to `velocity_limit_si,` or `effort_limit_sim` -> such as : stiffness, damping, armature ..... Note this section is also documented in articulation.rst This PR added actuator discrepancy logging into the :class:`ActuatorBase`. ## Type of change <!-- As you go through the list, delete the ones that are not applicable. --> - Bug fix (non-breaking change which fixes an issue) - This change requires a documentation update ## Screenshots Please attach before and after screenshots of the change if applicable. <!-- Example: | Before | After | | ------ | ----- | | _gif/png before_ | _gif/png after_ | To upload images to a PR -- simply drag and drop an image while in edit mode and it should upload the image directly. You can then paste that source into the above before/after sections. --> ## Checklist - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [x] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there <!-- As you go through the checklist above, you can mark something as done by putting an x character in it For example, - [x] I have done this task - [ ] I have not done this task --> --------- Co-authored-by: Kelly Guo <[email protected]>
As discussed by several earlier commit and issues isaac-sim#2135 isaac-sim#1654 isaac-sim#1384 limit(velocity_limit), effort limit(effort_limit), simulation velocity limit(velocity_limit_sim) and effort limit(effort_limit_sim). ImplicitActuator, lacking the motor model, is inherently non-attributable to velocity_limit or effort_limit, and should be using velocity_limit_sim and effort_limit_sim instead if such limits should be set. However, since most of environment with `ImplicitActuatorCfg` was written before v1.4, when velocity_limit was basically ignored, and velocity_limit_sim did not exist. To not break those environments training, we remove all `velocity_limit` attribute from existing `ImplicitActuatorCfg`, change all `effort_limit` to `effort_limit_sim`, and added documentation to articulate this point . However, even with removing velocity_limit, effort_limit, there could be subtitles interacting with default USD value. USD may have joints that comes with velocity_limit_sim and effort_limit_sim unnoticed by user. Thus, user may thinking sim_limits are uncaped by not specifying limits in Cfg, but is silently set in USD. To make that more clear, this PR added flag: `actuator_value_resolution_debug_print(default to false)` in `ArticulationCfg` that has following behavior: case 1: if USD has default, ActuatorCfg has limits >if limits is same -> we are all good, no warning. >if limits is different -> we warn user we used cfg value. case 2: USD has default, ActuatorCfg no limits -> We warn user saying the USD defaults is used Note that his logging can apply to all other joint attributes where there could be USD-ArticulationCfg conflicts, not limited to `velocity_limit_si,` or `effort_limit_sim` -> such as : stiffness, damping, armature ..... Note this section is also documented in articulation.rst This PR added actuator discrepancy logging into the :class:`ActuatorBase`. <!-- As you go through the list, delete the ones that are not applicable. --> - Bug fix (non-breaking change which fixes an issue) - This change requires a documentation update Please attach before and after screenshots of the change if applicable. <!-- Example: | Before | After | | ------ | ----- | | _gif/png before_ | _gif/png after_ | To upload images to a PR -- simply drag and drop an image while in edit mode and it should upload the image directly. You can then paste that source into the above before/after sections. --> - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [x] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there <!-- As you go through the checklist above, you can mark something as done by putting an x character in it For example, - [x] I have done this task - [ ] I have not done this task --> --------- Co-authored-by: Kelly Guo <[email protected]>
Description
As discussed by several earlier commit and issues #2135 #1654 #1384 #1509, there is a distinction between motor hardware velocity limit(velocity_limit), effort limit(effort_limit), simulation velocity limit(velocity_limit_sim) and effort limit(effort_limit_sim).
ImplicitActuator, lacking the motor model, is inherently non-attributable to velocity_limit or effort_limit, and should be using velocity_limit_sim and effort_limit_sim instead if such limits should be set. However, since most of environment with
ImplicitActuatorCfgwas written before v1.4, when velocity_limit was basically ignored, and velocity_limit_sim did not exist. To not break those environments training, we remove allvelocity_limitattribute from existingImplicitActuatorCfg, change alleffort_limittoeffort_limit_sim, and added documentation to articulate this point .However, even with removing velocity_limit, effort_limit, there could be subtitles interacting with default USD value. USD may have joints that comes with velocity_limit_sim and effort_limit_sim unnoticed by user. Thus, user may thinking sim_limits are uncaped by not specifying limits in Cfg, but is silently set in USD.
To make that more clear, this PR added flag:
actuator_value_resolution_debug_print(default to false)inArticulationCfgthat has following behavior:
case 1: if USD has default, ActuatorCfg has limits
>if limits is same -> we are all good, no warning.
>if limits is different -> we warn user we used cfg value.
case 2: USD has default, ActuatorCfg no limits -> We warn user saying the USD defaults is used
Note that his logging can apply to all other joint attributes where there could be USD-ArticulationCfg conflicts, not limited to
velocity_limit_si,oreffort_limit_sim-> such as : stiffness, damping, armature .....Note this section is also documented in articulation.rst
This PR added actuator discrepancy logging into the :class:
ActuatorBase.Type of change
Screenshots
Please attach before and after screenshots of the change if applicable.
Checklist
pre-commitchecks with./isaaclab.sh --formatconfig/extension.tomlfileCONTRIBUTORS.mdor my name already exists there