• Maurice Rahme's avatar
    Fixes termination term effort limit check logic (#3163) · a60168a2
    Maurice Rahme authored
    # Description
    
    Fix the logic in `joint_effort_out_of_limit()`; this function aims to
    detect effort limit violations by comparing the desired (computed)
    effort against the applied effort, noting that the simulator clips
    applied torque to the limit assign on creation.
    
    Originally, the logic was written such that if the applied and computed
    torques are equal, then a violation has occurred. However, this is wrong
    as shown by the below example:
    
    ```python
    from isaaclab.managers import SceneEntityCfg
    from isaaclab.envs.mdp.terminations import joint_effort_out_of_limit
    
    env = ...  # any ManagerBasedRLEnv with an Articulation named "robot"
    cfg = SceneEntityCfg(name="robot", joint_ids=[0])  # single joint for clarity
    art = env.scene["robot"]
    
    # Case A: no clipping (should be False but returns True now)
    art.data.computed_torque[:] = 0.0
    art.data.applied_torque[:] = 0.0
    assert joint_effort_out_of_limit(env, cfg).item() is False  # CURRENT: True (bug)
    
    # Case B: clipping (should be True but returns False now)
    art.data.computed_torque[:] = 100.0
    art.data.applied_torque[:] = 50.0  # pretend actuator clipped to ±50
    assert joint_effort_out_of_limit(env, cfg).item() is True   # CURRENT: False (bug)
    
    ```
    
    The solution is hence simply to flip the limit detection logic.
    
    Fixes #3155
    
    
    ## Type of change
    
    - Bug fix (non-breaking change which fixes an issue)
    
    ## 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 (N/A)
    - [x] My changes generate no new warnings
    - [x] 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 (N/A)
    - [x] I have added my name to the `CONTRIBUTORS.md` or my name already
    exists there
    a60168a2
Name
Last commit
Last update
.github Loading commit data...
.vscode Loading commit data...
apps Loading commit data...
docker Loading commit data...
docs Loading commit data...
scripts Loading commit data...
source Loading commit data...
tools Loading commit data...
.dockerignore Loading commit data...
.flake8 Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.pre-commit-config.yaml Loading commit data...
CITATION.cff Loading commit data...
CONTRIBUTING.md Loading commit data...
CONTRIBUTORS.md Loading commit data...
LICENSE Loading commit data...
LICENSE-mimic Loading commit data...
README.md Loading commit data...
SECURITY.md Loading commit data...
VERSION Loading commit data...
environment.yml Loading commit data...
isaaclab.bat Loading commit data...
isaaclab.sh Loading commit data...
pyproject.toml Loading commit data...