You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Browse filesBrowse the repository at this point in the historyBrowse files
authored
Adds WrenchComposer to handle temporary/permanent wrenches (isaac-sim#3287)
# Description
Adds the ability to compose forces onto rigid bodies, rigid body
collections and articulations.
This should help implement drones, boats, and satellites into the
framework.
## Usage
```python
# Permanent forces can now be composed:
# Adding two forces in a single step on the same body
asset.permanent_wrench_composer.set_forces_and_torques(forces=torch.ones(1, 1, 3), env_ids=[0], object_ids=[0])
# Compose local and global forces together
asset.permanent_wrench_composer.add_forces_and_torques(forces=torch.ones(1, 1, 3), env_ids=[0], object_ids=[1], is_global=True)
# Adding torques to the same body
asset.permanent_wrench_composer.add_forces_and_torques(torques=torch.ones(1, 1, 3), env_ids=[0], object_ids=[0])
#Adding forces and torques to the same body
asset.permanent_wrench_composer.add_forces_and_torques(forces=torch.ones(1, 1, 3), torques=torch.ones(1, 1, 3), env_ids=[0], object_ids=[0])
# Adding forces and torques to the same body with different positions
asset.permanent_wrench_composer.add_forces_and_torques(forces=torch.ones(1, 1, 3), torques=torch.ones(1, 1, 3), env_ids=[0], object_ids=[0], positions=torch.ones(1, 1, 3))
# Adding forces and torques to the same body with different positions in the global frame. Note, it composes local and global wrenches seamlessly.
asset.permanent_wrench_composer.add_forces_and_torques(forces=torch.ones(1, 1, 3), torques=torch.ones(1, 1, 3), env_ids=[0], object_ids=[0], positions=torch.ones(1, 1, 3), is_global=True)
# We can now apply instantaneous wrenches that are only applied for a single simulation step:
asset.instantaneous_wrench_composer.add_forces_and_torques(forces=torch.ones(1, 1, 3), env_ids=[0], object_ids=[0])
asset.instantaneous_wrench_composer.add_forces_and_torques(forces=torch.ones(1, 1, 3), env_ids=[0], object_ids=[0])
asset.instantaneous_wrench_composer.add_forces_and_torques(forces=torch.ones(1, 1, 3), env_ids=[0], object_ids=[0])
# The instantaneous wrenches and the permanent wrenches are composed automatically when the wrenches are written to the simulation. The instantaneous wrenches are reseted after being written to the sim.
```
Fixesisaac-sim#3286
## Type of change
- New feature (non-breaking change which adds functionality)
- This change requires a documentation update
## 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
- [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
- [x] I have added my name to the `CONTRIBUTORS.md` or my name already
exists there
---------
Signed-off-by: Antoine RICHARD <antoiner@nvidia.com>
Signed-off-by: Kelly Guo <kellyg@nvidia.com>
Co-authored-by: Mayank Mittal <12863862+Mayankm96@users.noreply.github.com>
Co-authored-by: Kelly Guo <kellyg@nvidia.com>
Copy file name to clipboardExpand all lines: source/isaaclab/docs/CHANGELOG.rst
+24Lines changed: 24 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,30 @@
1
1
Changelog
2
2
---------
3
3
4
+
0.53.2 (2026-01-14)
5
+
~~~~~~~~~~~~~~~~~~~
6
+
7
+
Added
8
+
^^^^^
9
+
10
+
* Added :class:`~isaaclab.assets.utils.wrench_composer.WrenchComposer` to compose forces and torques at the body's center of mass frame.
11
+
* Added :meth:`~isaaclab.assets.Articulation.instantaneous_wrench_composer` to add or set instantaneous external wrenches to the articulation.
12
+
* Added :meth:`~isaaclab.assets.Articulation.permanent_wrench_composer` to add or set permanent external wrenches to the articulation.
13
+
* Added :meth:`~isaaclab.assets.RigidObject.instantaneous_wrench_composer` to add or set instantaneous external wrenches to the rigid object.
14
+
* Added :meth:`~isaaclab.assets.RigidObject.permanent_wrench_composer` to add or set permanent external wrenches to the rigid object.
15
+
* Added :meth:`~isaaclab.assets.RigidObjectCollection.instantaneous_wrench_composer` to add or set instantaneous external wrenches to the rigid object collection.
16
+
* Added :meth:`~isaaclab.assets.RigidObjectCollection.permanent_wrench_composer` to add or set permanent external wrenches to the rigid object collection.
17
+
* Added unit tests for the wrench composer.
18
+
* Added kernels for the wrench composer in the :mod:`isaaclab.utils.warp.kernels` module.
19
+
20
+
Changed
21
+
^^^^^^^
22
+
23
+
* Deprecated :meth:`~isaaclab.assets.Articulation.set_external_force_and_torque` in favor of :meth:`~isaaclab.assets.Articulation.permanent_wrench_composer.set_forces_and_torques`.
24
+
* Deprecated :meth:`~isaaclab.assets.RigidObject.set_external_force_and_torque` in favor of :meth:`~isaaclab.assets.RigidObject.permanent_wrench_composer.set_forces_and_torques`.
25
+
* Deprecated :meth:`~isaaclab.assets.RigidObjectCollection.set_external_force_and_torque` in favor of :meth:`~isaaclab.assets.RigidObjectCollection.permanent_wrench_composer.set_forces_and_torques`.
26
+
* Modified the tests of the articulation, rigid object, and rigid object collection to use the new permanent and instantaneous external wrench functions and test them.
0 commit comments