Skip to content
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

Fixes body IDs selection when computing feet_slide reward for locomotion-velocity task #1277

Merged
merged 4 commits into from
Oct 22, 2024

Conversation

dtc103
Copy link
Contributor

@dtc103 dtc103 commented Oct 20, 2024

Description

Since I want to use Isaac Lab for training a Unitree Go2, I was playing around with the examples to get used to the framwork. While playing around, I got the following error message:

reward = torch.sum(body_vel.norm(dim=-1) * contacts, dim=1)
RuntimeError: The size of tensor a (19) must match the size of tensor b (4) at non-singleton dimension 1

The reward term was added as follows:

sliding_feet = RewTerm(
        func=mdp.feet_slide,
        params={"sensor_cfg": SceneEntityCfg("contact_forces", body_names=".*foot")},
        weight=0.1
    )

After some code investigation, I found out, that inside the feet_slide function the body velocities are queried as "asset.data.body_lin_vel_w[:, asset_cfg.body_ids, :2]". This would return the velocity of all body parts, since asset_cfg.body_ids contains the ids of all body parts.
Therefore we need to change the line to "body_vel = asset.data.body_lin_vel_w[:, sensor_cfg.body_ids, :2]" since we only want the velocity of the body parts that contain the force sensors.
This means we have to change asset_cfg.body_ids to sensor_cfg.body_ids inside the tensor call

Doing this lead to successfully running the simulation without failure.

No additional dependencies are necessary for this fix.

Type of change

  • Bug fix (non-breaking change which fixes an issue)

Screenshots

Please attach before and after screenshots of the change if applicable.

Before After
fix_before fix_after

Checklist

  • I have run the pre-commit checks with ./isaaclab.sh --format
  • 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

@dtc103 dtc103 changed the title Fixed a bug, where the wrong body id's were chosen Fix: Wrong body_id chosen Oct 20, 2024
@dtc103 dtc103 changed the title Fix: Wrong body_id chosen Fix: Wrong body_id chosen in feet_slide reward function Oct 20, 2024
@Mayankm96 Mayankm96 changed the title Fix: Wrong body_id chosen in feet_slide reward function Fixes body IDs selection when computing feet_slide reward for locomotion-velocity task Oct 21, 2024
Copy link
Contributor

@Mayankm96 Mayankm96 left a comment

Choose a reason for hiding this comment

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

Thanks a lot for the fix! Could you also adapt the CHANGELOG file?

Signed-off-by: Mayank Mittal <12863862+Mayankm96@users.noreply.github.com>
Signed-off-by: Mayank Mittal <12863862+Mayankm96@users.noreply.github.com>
@Mayankm96 Mayankm96 merged commit 6bc4d0a into isaac-sim:main Oct 22, 2024
3 of 4 checks passed
@dtc103 dtc103 deleted the feet_slide_fix branch October 23, 2024 11:55
iamdrfly pushed a commit to iamdrfly/IsaacLab that referenced this pull request Nov 21, 2024
…otion-velocity task (isaac-sim#1277)

# Description

Since I wanted to use Isaac Lab for training a Unitree Go2, I played
around with the examples to get used to the framework. While playing
around, I got the following error message:

```
reward = torch.sum(body_vel.norm(dim=-1) * contacts, dim=1)
RuntimeError: The size of tensor a (19) must match the size of tensor b (4) at non-singleton dimension 1
```

The reward term was added as follows:
``` 
sliding_feet = RewTerm(
        func=mdp.feet_slide,
        params={"sensor_cfg": SceneEntityCfg("contact_forces", body_names=".*foot")},
        weight=0.1
    )
``` 

After some code investigation, I found out, that inside the feet_slide
function, the body velocities are queried as
"asset.data.body_lin_vel_w[:, asset_cfg.body_ids, :2]". This would
return the velocity of all body parts, since asset_cfg.body_ids contains
the ids of all body parts.

Therefore we need to change the line to "body_vel =
asset.data.body_lin_vel_w[:, sensor_cfg.body_ids, :2]" since we only
want the velocity of the body parts that contain the force sensors.
This means we have to change `asset_cfg.body_ids` to
`sensor_cfg.body_ids` inside the tensor call

Doing this leads to the successful running of the simulation without failure.

No additional dependencies are necessary for this fix.  

## 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] 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants