Fixes body IDs selection when computing `feet_slide` reward for locomotion-velocity task (#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
Showing
Please register or sign in to comment