Skip to content

Conversation

@ooctipus
Copy link
Collaborator

@ooctipus ooctipus commented Jul 16, 2025

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 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

  • 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.

Checklist

  • I have run the pre-commit checks with ./isaaclab.sh --format
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • I have updated the changelog and the corresponding version in the extension's config/extension.toml file
  • I have added my name to the CONTRIBUTORS.md or my name already exists there

@pascal-roth
Copy link
Collaborator

@Mayankm96 I think this would require your review

@kellyguo11
Copy link
Contributor

@jtigue-bdai would be good to get your feedback on this as well.

Copy link
Collaborator

@jtigue-bdai jtigue-bdai left a 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

@kellyguo11 kellyguo11 changed the title Fix implicit actuator limits Fixes implicit actuator limits Jul 21, 2025
| | 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, |
Copy link
Contributor

@Mayankm96 Mayankm96 Jul 26, 2025

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.

Copy link
Collaborator Author

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
Copy link
Contributor

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.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree : ))

@Mayankm96 Mayankm96 changed the title Fixes implicit actuator limits Fixes implicit actuator limits configs for assets Jul 26, 2025
@Mayankm96 Mayankm96 added bug Something isn't working documentation Improvements or additions to documentation labels Jul 26, 2025
@ooctipus ooctipus force-pushed the fix_implicit_actuator_limits branch from 02c1c6b to cfb510f Compare July 28, 2025 18:04
@ooctipus ooctipus force-pushed the fix_implicit_actuator_limits branch from 7e9ebfb to 1e83320 Compare July 29, 2025 22:23
@kellyguo11 kellyguo11 merged commit 74c674c into main Jul 29, 2025
4 of 5 checks passed
@kellyguo11 kellyguo11 deleted the fix_implicit_actuator_limits branch July 29, 2025 23:16
zuxinrui pushed a commit to zuxinrui/IsaacLab that referenced this pull request Jul 31, 2025
# 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]>
kellyguo11 added a commit that referenced this pull request Aug 7, 2025
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]>
StephenWelch pushed a commit to StephenWelch/IsaacLab that referenced this pull request Aug 17, 2025
# 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]>
StephenWelch pushed a commit to StephenWelch/IsaacLab that referenced this pull request Aug 17, 2025
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]>
@Mayankm96
Copy link
Contributor

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.

@ooctipus @kellyguo11 @jtigue-bdai

george-nehma pushed a commit to george-nehma/IsaacLab-Dreamerv3 that referenced this pull request Oct 24, 2025
# 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]>
george-nehma pushed a commit to george-nehma/IsaacLab-Dreamerv3 that referenced this pull request Oct 24, 2025
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]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants