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

Adds new features and fixes for v0.2 release #129

Merged
merged 168 commits into from
Dec 22, 2023
Merged

Adds new features and fixes for v0.2 release #129

merged 168 commits into from
Dec 22, 2023

Conversation

Mayankm96
Copy link
Contributor

@Mayankm96 Mayankm96 commented Oct 4, 2023

Description

This branch will be merged to main after the following checklist is completed:

  • Add managers for actions, termination, curriculum, and domain randomization
  • Add spawner interfaces and scene manager to create new scenes
  • Add support for loading assets from URDF format directly
  • Add support for loading assets from mesh format (OBJ, FBX, STL) directly
  • Add sensor support for USD Cameras (batched data)
  • Add functionalities for procedural terrain generation
  • Make the visualization marker class configurable
  • Migrate environment base to use gymnasium library
  • Fix existing environment configurations and demo scripts
  • Add support for docker container
  • Add flags for off-screen rendering and remote deployment
  • State contributors and developers explicitly in CONTRIBUTORS.md

Fixes #106

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • This change requires a documentation update

Checklist

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

farbod-farshidian and others added 30 commits June 28, 2023 09:22
# Description

Adds a helper class that converts a urdf description into an
instanceable usd file with separate meshes.

If a `usd_dir` is provided, the conversion is lazy: It only performs
conversion if the provided `UrdfLoaderCfg` or the main URDF file is
modified. The current implementation does not automatically trigger USD
generation if only mesh files are changed.

Fixes #35 

## 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
`./orbit.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

---------

Co-authored-by: Mayank Mittal <[email protected]>
…ent variables (#33)

# Description

Adds the class `AppLauncher` which takes configuration arguments to the
Isaac Sim `SimulationApp` and several environment variables. It launches
the SimulationApp and corresponding extensions in a controlled manner
allowing users to decide between different remote deployments, ROS
bridges, and viewport rendering.

AppLauncher can then be queried for logic on other SimulationApp
operations e.g. whether or not `SimulationContext.step()` should render
or not based on the resolved flags `AppLauncher.VIEWPORT` and
`AppLauncher.RENDER`.

Fixes #32 

## 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
`./orbit.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

---------

Co-authored-by: Farbod Farshidian <[email protected]>
Co-authored-by: Mayank Mittal <[email protected]>
# Description

<!--
Thank you for your interest in sending a pull request. Please make sure
to check the contribution guidelines.

Link: https://isaac-orbit.github.io/orbit/source/refs/contributing.html
-->

This PR ports in the functions for procedurally generating different
terrains. The terrains can be generated as heightfields (2.5 D elevation
map) or meshes (through `trimesh`).

There are two separate classes:
* `TerrainGenerator`: This class only procedurally generates terrains
based on the passed sub-terrain configuration. It creates the trimesh
object and contains the origins of each terrain in the mesh.
Additionally, it performs caching of the sub-terrain meshes based on
their configuration. By default, caching is disabled since most
developers will change not only the config, but also the function.
* `TerrainImporter`: This class mainly deals with importing terrains
from different possible sources and adding them to the simulator. In
addition to importing terrains, it also stores them into a dictionary
called `warp_meshes` that later can be used for ray-casting. The types
of terrain sources are as follows:
* `import_ground_plane`: creates a grid plane which is default in
isaacsim/orbit.
    * `import_mesh`: takes a trimesh object
    * `import_usd`: takes a USD file and adds reference to it

<!-- As a practice, it is recommended to open an issue to have
discussions on the proposed pull request.
This makes it easier for the community to keep track of what is being
developed or added, and if a given feature
is demanded by more than one party. -->

## Type of change

<!-- As you go through the list, delete the ones that are not
applicable. -->

- New feature (non-breaking change which adds functionality)

## Screenshots


![terrains](https://github.com/isaac-orbit/orbit/assets/12863862/05f889d0-b98e-4063-a810-89d9116c2dfe)

<!--
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
`./orbit.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

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

# Description

<!--
Thank you for your interest in sending a pull request. Please make sure
to check the contribution guidelines.

Link: https://isaac-orbit.github.io/orbit/source/refs/contributing.html
-->

Previously, we were having separate markers for frames, spheres, and
height scanners, each of them having minute differences. This PR
includes a more general wrapping around the
[`USDGeom.PointInstancer`](https://graphics.pixar.com/usd/dev/api/class_usd_geom_point_instancer.html)
to configure markers through configclass object. Additionally, it moves
to faster
[`pxr.Vt`](https://docs.omniverse.nvidia.com/kit/docs/kit-manual/latest/api/pxr.html#module-pxr.Vt)
arrays instead of keeping a list of
[`pxr.Gf`](https://docs.omniverse.nvidia.com/kit/docs/kit-manual/latest/api/pxr.html#module-pxr.Gf)
arrays.

The old markers still exist for now until we move to v1.0 release. They
are present in the `omni.isaac.orbit.compat` module.

<!-- As a practice, it is recommended to open an issue to have
discussions on the proposed pull request.
This makes it easier for the community to keep track of what is being
developed or added, and if a given feature
is demanded by more than one party. -->

## Type of change

<!-- As you go through the list, delete the ones that are not
applicable. -->

- New feature (non-breaking change which adds functionality)
- Breaking change (fix or feature that would cause existing
functionality to not work as expected)
- This change requires a documentation update

## Checklist

- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./orbit.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

<!--
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
-->
# Description

<!--
Thank you for your interest in sending a pull request. Please make sure
to check the contribution guidelines.

Link: https://isaac-orbit.github.io/orbit/source/refs/contributing.html
-->

Previously the `make_plane` function was always offsetting the terrain
origin such that the origin of the plane coincides with (0, 0). This was
done because when adding a ground plane, we wanted the origin to match
the simulation origin. However, it introduced a bug in sub-terrain
generator where we assume that all sub-terrains are origin at (size_x *
0.5, size_y * 0.5).

The PR fixes this issue by making an explicit argument to `make_plane`
called `centered`. Also adds comments to make it clear what the
sub-terrain generator and terrain importer does.

<!-- As a practice, it is recommended to open an issue to have
discussions on the proposed pull request.
This makes it easier for the community to keep track of what is being
developed or added, and if a given feature
is demanded by more than one party. -->

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

## Screenshots

| Before | After |
| ------ | ----- |
|
![bug](https://github.com/isaac-orbit/orbit/assets/12863862/1ce9db23-b97b-44d9-8a4e-1c543eab914b)|
![fix](https://github.com/isaac-orbit/orbit/assets/12863862/b347077b-daa6-4d76-a307-4e97450ccce9)
|


## Checklist

- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./orbit.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

<!--
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
-->
# Description

Adds a directory `docker` in the root of the repo, containing a
`Dockerfile`, `dockerfile-compose.yaml`, `.env`, and utility script
`container.sh` that wraps docker-compose CLI commands. The instructions
in the documentation specify the installation steps and how to get the
Isaac Sim docker image for completeness.

To run a container, the user needs to create NGC credentials via the
NVIDIA Developers program. After that they can run the script to launch
the container:

```bash
./docker/container.sh start
./docker/container.sh enter
```

Also added an argument `-o` or `--docker` to the `orbit.sh` that calls
the above script. The above then becomes:

```bash
./orbit.sh -o start 
./orbit.sh -o enter
```

Fixes #23 

## Type of change

- New feature (non-breaking change which adds functionality)

## Checklist

- [X] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./orbit.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
- [ ] I have updated the changelog and the corresponding version in the
extension's `config/extension.toml` file

---------

Co-authored-by: Mayank Mittal <[email protected]>
# Description

<!--
Thank you for your interest in sending a pull request. Please make sure
to check the contribution guidelines.

Link: https://isaac-orbit.github.io/orbit/source/refs/contributing.html
-->

As a step towards supporting sensors as "Views", this PR upgrades the
`SensorBase` class to follow a similar definition as `RobotBase` and
updates the sensor implementations as well. Now, the following sensors
are supported:

* `Camera`: This spawns a USD camera object and instantiates it with
replicator OmniGraph for different synthetic data
* `RayCaster`: This is a virtual sensor that uses a warp kernel for
raycasting against static meshes.
* `ContactSensor`: This wraps around the `RigidContactView` from PhysX
to provide the contact forces on encapsulated prims.

Note: Currently camera rendering is not truly parallelized. They are
called sequentially inside the `Camera` to fetch their data.
Additionally, some camera data such as bounding boxes are not possible
to get in the torch backend. Due to this, they are not supported in the
new `Camera` class.

Old the old sensor implementations have been moved to the
`omni.isaac.orbit.compat.sensors` module for backwards compatibility. We
will remove them once we have moved to v1.0.

Fixes #3

<!-- As a practice, it is recommended to open an issue to have
discussions on the proposed pull request.
This makes it easier for the community to keep track of what is being
developed or added, and if a given feature
is demanded by more than one party. -->

## Type of change

<!-- As you go through the list, delete the ones that are not
applicable. -->

- New feature (non-breaking change which adds functionality)
- Breaking change (fix or feature that would cause existing
functionality to not work as expected)
- This change requires a documentation update

## Checklist

- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./orbit.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

<!--
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
-->
# Description

The `launch.json` file is very user-specific. Previously this was always
getting pushed along with other commits which led to merge conflicts
when merging branches from different users.

Now, the `launch.json` is generated from a template if it doesn't
already exist in the `.vscode` directory. The users can modify the
`.vscode/launch.json` as they please afterward, but their changes won't
get pushed to git itself.

Fixes #46

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

## Checklist

- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./orbit.sh --format`
- [ ] 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
- [ ] I have updated the changelog and the corresponding version in the
extension's `config/extension.toml` file
…sent (#76)

# Description

Previously, type annotation was always required to make the terms follow
the order in which they are defined in the configclass. If this was not
done, then the terms were getting sorted alphabetically which made it
different from the expected behavior (user-defined order).

On further inspection, turned out that in our wrappers for configclass,
we were using `dir(cls)` to parse the class members, which sorts all the
members of the class alphabetically. Changing it to `cls.__dict__` fixed
this issue since in Python 3.7 onwards, dictionaries follow the
user-defined ordering.

Since this behavior changes the way config terms are parsed, the old
configclass still exists inside the
`omni.isaac.orbit.compat.utils.configclass` module so that people can
still run policies trained with the old ordering.

## Type of change

- Bug fix (non-breaking change which fixes an issue)
- Breaking change (fix or feature that would cause existing
functionality to not work as expected)

## Checklist

- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./orbit.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
# Description

* Fixes the `omni.isaac.orbit.utils.math.quat_apply_yaw` to compute the
yaw quaternion correctly.
* Adds functions to convert string and callable objects in the
`omni.isaac.orbit.utils.string` module. The function can deal with both
module functions and lambda expressions.

## Type of change

- Bug fix (non-breaking change which fixes an issue)
- New feature (non-breaking change which adds functionality)

## Checklist

- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./orbit.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
# Description

This PR introduces the concept of command generators that can be used
for goal-conditioned environments. The idea is that these classes can be
used for task specification and the same environment can be configured
for different task logics (position-based locomotion vs velocity based
control).

Currently, the included command generators are specific to locomotion
(SE(2) control). They have their own visualization schemes (arrows,
boxes etc.) that can be useful for debugging.

## 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
`./orbit.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
…n each term's configuration (#61)

# Description

This PR modifies the `ObservationManager` and `RewardManager` to change
their default behavior. Earlier they expected that users inherit from
the class and define member functions inside it to compute the terms.
The function name was resolved from the term name itself. However, this
prevented the reuse of common terms and the rewriting of a lot of code
across environments.

The changes made in this PR add another argument `func` to the term
dictionary which now expects a function directly. This way users can use
the same function multiple times for different terms. Example:

```python
def get_contact_force(env, bodies):
   ....
   
class ObservationManagerCfg:

   term_1 = {"func": get_contact_force, "bodies": "base"}
   term_2 = {"func": get_contact_force, "bodies": ".*_FOOT"}
```

The older class implementations have been moved to
`omni.isaac.orbit.compat.utils.mdp` for compatibility.

Additionally, we include `ManagerBase` and `ManagerBaseTermCfg` as a
base class to ensure a better signature on how configuration terms are
handled.

## Type of change

- Breaking change (fix or feature that would cause existing
functionality to not work as expected)
- This change requires a documentation update

## Checklist

- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./orbit.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

---------

Co-authored-by: Mayank Mittal <[email protected]>
# Description

This PR adds the following managers similar to how we currently handle
observation and reward terms.

* **Termination Manager**: Iterates over all the configured terms and
computes the done signals as an OR operator over each term's output.
Additionally, `time_outs` are handled separately as they are optional
(i.e. only used in fixed-length episodic learning).
* **Randomization Manager**: Handles various randomization (such as
resetting the state of the environments, and modifying various physics
attributes).
* **Curriculum Manager**: Iterates over all the configured terms and
sets the curriculum setting into the environment accordingly.

## 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
`./orbit.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

---------

Co-authored-by: David Hoeller <[email protected]>
Co-authored-by: Nikita Rudin <[email protected]>
# Description

This MR adds checks to the `dataclass` wrapper called `configclass` to extend its support for types.  This supports type hinting annotations such as `type`, `Type[Myclass]`, and `ClassVar[type]`.

It also adds a method called `replace` to the configclass that calls the [`dataclasses.replace`](https://docs.python.org/3/library/dataclasses.html#dataclasses.replace) function. This has been added for the convenience of users.

## Type of change

- Bug fix (non-breaking change which fixes an issue)
- New feature (non-breaking change which adds functionality)

## Checklist

- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./orbit.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
# Description

This MR fixes the issue with multiple inheritances in the
`omni.isaac.orbit.utils.configclass` decorator. Earlier, if the
inheritance tree was more than one level deep and the lowest-level
configuration class was not updating its values from the middle-level
classes.

This was happening because in the middle-level classes, the default
values were being updated to dataclass fields and were not visible
anymore in the dictionary of the class itself. The configclass now
checks for their values in the `__dataclass_fields__` of the class as
well.

This was a regression in behavior but has been fixed now with a unit
test to capture deeper inheritance in configclass.

## 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
`./orbit.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
# Description

So far we have only been able to run the training script in headless
mode. However, this has posed limitations in our workflows since we
always want to check the policy in between the training iterations and
not just at the end.

This MR creates a simple UI that allows toggling between full rendering
and no rendering.
* In full-rendering, the environment is rendered at every `env.step()`
call, i.e. it happens at the environment frequency (not the physics dt
or rendering dt).
* In no-rendering, the environment rendering is disabled. However, we
still throttle the UI at every five environment steps to still allow UI
interactions (otherwise keyboard and mouse interactions get blocked).

Additionally, the MR fixes the behavior of UI interactions when hitting
the pause/stop buttons:
* When paused: the environment blocks itself and waits for play to
happen.
* When stopped: the environment closes itself and shutdowns the
simulation app, instead of just throwing an error.

However, there is no free cost here. Running with the GUI still causes
some slowdowns. For training `Isaac-Ant-v0` with RL-Games, the following
numbers are obtained:
* headless: ~170,000 FPS (sim), ~98,000 FPS (total)
* UI with no-rendering: ~150,000 FPS (sim), 88,000 FPS (total)
* UI with full-rendering: ~40,000 FPS (sim), 25,000 FPS (total)

## Type of change

- New feature (non-breaking change which adds functionality)
- Breaking change (fix or feature that would cause existing
functionality to not work as expected)

## Screenshots

https://github.com/isaac-orbit/orbit/assets/12863862/2bc61fdc-c392-43ed-bbd5-12c743ca3150

## Checklist

- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./orbit.sh --format`
- [ ] 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
# Description

* Changed the behavior of the
`omni.isaac.orbit.terrains.TerrainImporter` class. It now expects the
terrain type to be specified in the configuration object. This allows
the user to specify everything in the configuration object and not have
to do an explicit call to import a terrain.
* Fixed setting of quaternion orientations inside the
`omni.isaac.orbit.markers.Visualizationmarkers` class. Earlier, the
orientation was being set into the point instancer in the wrong order
(`wxyz` instead of `xyzw`).

## Type of change

- Bug fix (non-breaking change which fixes an issue)
- Breaking change (fix or feature that would cause existing
functionality to not work as expected)

## Checklist

- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./orbit.sh --format`
- [ ] 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
# Description

This MR merges all the refactorings done to make the legged locomotion
environment training work. It includes the following:
* `ActionManager` class: To handle various action terms and provide
flexibility for HRL.
* Actuator simplification: We no longer have actuator groups. All that
is handled externally to the robot.
* Sensor optimization: Lazy sensor updates (only updated when `data` is
called)
* Update to new RSL-RL library
* TerrainImporter: It does import on initialization instead of expecting
input from users.

This MR breaks the behavior of the following (many of which need to be
fixed):
* `RobotBase` : Now there are two methods `write_commands_to_sim` and
`refresh_sim_data` that dictate sim read/write.
* `ActuatorGroups`: Doesn't exist anymore.
* `SensorBase`: Drop for the support of different backends (was not
supported earlier but now more explicit)

Fixes #37 , #36 

## Type of change

- Bug fix (non-breaking change which fixes an issue)
- New feature (non-breaking change which adds functionality)
- Breaking change (fix or feature that would cause existing
functionality to not work as expected)
- This change requires a documentation update

## Checklist

- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./orbit.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
- [x] I have updated the changelog and the corresponding version in the
extension's `config/extension.toml` file

---------

Co-authored-by: David Hoeller <[email protected]>
Co-authored-by: Nikita Rudin <[email protected]>
Co-authored-by: Farbod Farshidian <[email protected]>
#98)

# Description

Missing comma in the `setup.py` of the extension led to installation
errors when calling `./orbit.sh -i`.

## 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
`./orbit.sh --format`
- [ ] 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
# Description

Previously, while launching the simulation app, there were warnings at
the start of the file that complained that:

```
[Warning] [omni.isaac.kit.simulation_app] Modules: ['omni.isaac.orbit', 'omni.isaac.orbit.app', 'omni.isaac.kit.app_framework'] were loaded before SimulationApp was started and might not be loaded correctly.
[Warning] [omni.isaac.kit.simulation_app] Please check to make sure no extra omniverse or pxr modules are imported before the call to SimulationApp(...)
```

This is because of a manual check inside the `SimulationApp` class where
they check the `sys.modules` against "accepted" packages that are
hardcoded. The PR fixes this issue by removing the orbit packages from
`sys.modules` before launching the simulation app.

## 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
`./orbit.sh --format`
- [ ] 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
# Description

Earlier the `TerrainGeneratorCfg` and `TerrainImporterCfg` were in the
same file. However, this leads to some issues with circular dependencies
when referring to the `TerrainImporter` as an attribute of the
`TerrainImporterCfg` (i.e. providing the class name as a member of the
config object).

The MR fixes the above circular dependency. Also, it moves all the
terrain parameters to its configuration object to make the terrain
initialization consistent with the other asset constructors.

## Type of change

- Breaking change (fix or feature that would cause existing
functionality to not work as expected)

## Checklist

- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./orbit.sh --format`
- [ ] 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
# Description

This MR adds some missing documentation to the actuator module. It also
splits the `actuator.py` file into `actuator_base.py` and
`actuator_pd.py` files to make it clear where the base class exists.

## Type of change

- Breaking change (fix or feature that would cause existing
functionality to not work as expected)
- This change requires a documentation update

## Checklist

- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./orbit.sh --format`
- [ ] 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
# Description

This MR adds our own `SimulationContext` class that inherits the one
from Isaac Sim. This is motivated by two reasons:

* We want to make the configuration of the simulation context consistent
with the rest of the APIs.
* We want to override some of the functions from the `SimulationContext`
that suit our needs better.

## Type of change

- New feature (non-breaking change which adds functionality)
- Breaking change (fix or feature that would cause existing
functionality to not work as expected)
- This change requires a documentation update

## Checklist

- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./orbit.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
# Description

Previously, the visualization markers would get rendered in the camera
images. However, this is often undesirable since the markers are only
used for debug visualizations. This behavior turns these off by default.

## 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
`./orbit.sh --format`
- [ ] 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
# Description

This PR adds support for callable classes to the `term_cfg.func`
attribute. This is needed for complex behaviors where users may want to
define certain persistent behaviors as part of the terms.

The callable class should take in the term configuration object and the
environment instance as inputs to its constructor. Additionally, they
should implement the `__call__` function with the signature expected by
the manager.

For example, in the case of observation terms, this looks like:

```python
class complex_function_class:
    def __init__(self, cfg: ObservationTermCfg, env: object):
        self.cfg = cfg
        self.env = env
        # define some variables
        self.history_length = 2
        self._obs_history = torch.zeros(self.env.num_envs, self.history_length, 2, device=self.env.device)

    def __call__(self, env: object) -> torch.Tensor:
        new_obs = torch.rand(env.num_envs, 2, device=env.device)
        # update history
        self._obs_history[:, 1:] = self._obs_history[:, :1].clone()
        self._obs_history[:, 0] = new_obs
        # return obs
        return new_obs
```

## 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
`./orbit.sh --format`
- [ ] 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
# Description

Previously, the configclass was overwriting a user-defined configclass
which isn't desirable. This MR adds a function to allow configclasses to
support
[`__post_init__`](https://docs.python.org/3/library/dataclasses.html#post-init-processing).

## 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
`./orbit.sh --format`
- [ ] 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

---------

Co-authored-by: Nikita Rudin <[email protected]>
Co-authored-by: Mayank Mittal <[email protected]>
# Description

This MR introduces wrappers around different [USD
Physics](https://openusd.org/dev/api/usd_physics_page_front.html) and
[PhysX
solver](https://docs.omniverse.nvidia.com/kit/docs/omni_usd_schema_physics/104.2/index.html)
schemas. The functions allow modifying the properties on an asset prim
using configuration objects.

The schemas supersede the current `omni.isaac.orbit.utils.kit.py` which
did the same job but had duplication in the implementations.

## 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
`./orbit.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

---------

Signed-off-by: Mayank Mittal <[email protected]>
Dhoeller19 and others added 24 commits December 18, 2023 16:44
# Description

This MR adds the locomotion velocity task for the Cassie robot.

## Type of change

- New feature (non-breaking change which adds functionality)

## Checklist

- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./orbit.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
- [ ] 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
# Description

This MR reorganizes the sensor tutorials. Hence, there is only one sensor
tutorial introducing spawning sensors to an `InteractiveScene` and
some minimal tutorials for other sensors. The USD camera tutorial is
converted into a how-to save camera image.

Note: the how-to has to be fixed in a separate PR as we have to see what
is the best way to save images efficiently, the Replicator Writer might
have been updated in the meantime.

## 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
`./orbit.sh --format`
- [ ] 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
- [ ] 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

---------

Co-authored-by: Mayank Mittal <[email protected]>
# Description

A few demo and tutorial doesn't use all of AppLauncher's CLI args,
supply their own --headless args, or still use SimulationApp-- this
fixes that.

## 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
`./orbit.sh --format`
- [ ] 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
- [ ] 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
# Description

This pull request fixes fetching actuator parameters from USD. Before,
when you had multiple actuator groups, each of which takes actuator
parameters directly from the articulation's USD, only the first actuator
group values were correctly set.

## 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
`./orbit.sh --format`
- [ ] 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
- [ ] 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
# Description

Earlier, the markers set "invisible" to secondary rays on the
wrong prim (XForm instead of mesh). For context, this property is used
when we don't want to see the marker prims on secondary rendering
operations used to compute depth and semantic images. However,
the markers are still visible on RGB.

This MR makes sure that the marker prims are invisible to these rays by
setting the property on the correct prim.

## Type of change

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

## Screenshots

| Before | After |
| ------ | ----- |
|
![earlier](https://github.com/isaac-orbit/orbit/assets/12863862/140f0afb-86bc-48e9-9812-7e7d9489cecb)
|
![now](https://github.com/isaac-orbit/orbit/assets/12863862/643b1ed3-b454-4a94-b2e7-256aed012d13)
|

## Checklist

- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./orbit.sh --format`
- [ ] 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
# Description

Currently, the ray-cast and camera sensors don't support having regex
expression in the leaves. While we must address this (#313), we add this
to our future plans.

For now, this MR adds a check to make sure users are aware and don't do
a wrong operation.

## 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
`./orbit.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
#322)

# Description

This will cause the carb logs to be also be captured by the isaac-logs
volume.

## Type of change

- New feature (non-breaking change which adds functionality)

## Checklist

- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./orbit.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
- [ ] 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
# Description

Our previous reasoning of not updating the sensors since the 'scene' is
not updated does not work well on resets. It was done assuming the
update is called right after reset. However, nowhere in the code, this
seems to be the case anymore.

This MR makes sure sensors are always updated when they are reset. The
reset method should set values to zeros or defaults when the sensor data
is invalid.

## Type of change

- Bug fix (non-breaking change which fixes an issue)
- This change requires a documentation update

## Checklist

- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./orbit.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
- [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
# Description

This MR makes sure the IK example works properly again. It adds the IK
action space to the lift environment. Additionally, it fixes the state
machine for the lift environment.

## Type of change

- Bug fix (non-breaking change which fixes an issue)
- This change requires a documentation update

## Checklist

- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./orbit.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
# Description

This MR reviews the how-tos documentation and ensures they are all
somewhat consistent.

## Type of change

- This change requires a documentation update

## Checklist

- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./orbit.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
- [ ] 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
# Description

Currently, the command to play a trained RL model is lacking the flag
that will make it use the latest checkpoint, despite that behavior
being described as expected in the surrounding text. This MR adds the flag.

It also removes a statement that 'by default' the above command will
load the latest checkpoint, because it could be potentially confusing as
that behavior is only 'by default' when you use the flag.

## 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
`./orbit.sh --format`
- [ ] 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
- [ ] 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
…293)

# Description

Add a dependency to resolve an opencv-python error when trying to log
runs with weight and biases in a singularity setup on a SLURM cluster.

## 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
`./orbit.sh --format`
- [ ] 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
- [ ] 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
# Description

This MR fixes the minor issues to ensure the data collection and
environment tests work.

## 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
`./orbit.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
- [ ] 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
# Description

This MR adds the documentation on how to import an asset into USD
format.

## Type of change

- New feature (non-breaking change which adds functionality)

## Checklist

- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./orbit.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
- [ ] 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
# Description

Since we now handle the PhysX views directly, we need to make sure they
are deleted properly when the simulation is stopped. This MR adds the
missing implementation for invalidating the views in all sensors and
asset classes.

## 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
`./orbit.sh --format`
- [ ] 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
# Description

Moves the robot configs from orbit core to orbit assets.

## Type of change

- New feature (non-breaking change which adds functionality)

## Checklist

- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./orbit.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

---------

Co-authored-by: Mayank Mittal <[email protected]>
After the great tutorial refactor of 2023, the installation guide wasn't
updated. This PR updates the path there.

Please include a summary of the change and which issue is fixed. Please
also include relevant motivation and context.
List any dependencies that are required for this change.

Fixes #334 

<!-- As a practice, it is recommended to open an issue to have
discussions on the proposed pull request.
This makes it easier for the community to keep track of what is being
developed or added, and if a given feature
is demanded by more than one party. -->

## 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
`./orbit.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
- [ ] 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
# Description

Adjust the line numbers in the tutorials and how-to's to account for
latest changes in the code files.

## 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
`./orbit.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
- [ ] 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
# Description

Ensures that a viewport is available when `--livestream/LIVESTREAM > 0`
in AppLauncher. See [this
PR](isaac-orbit/IsaacLab#310) for more details.

## 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
`./orbit.sh --format`
- [ ] 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
# Description

Adds current environments to the docs with a description, an image, and
a link to the environment.

## Type of change

- New feature (non-breaking change which adds functionality)

## Checklist

- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./orbit.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
- [ ] 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
# Description

This MR fixes the code highlighting in the troubleshooting docs. It was
referring to Isaac Sim stuff which we don't need to do anymore.

## Type of change

- Bug fix (non-breaking change which fixes an issue)
- This change requires a documentation update

## Checklist

- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./orbit.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
- [ ] 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
@Mayankm96 Mayankm96 merged commit 91858d0 into main Dec 22, 2023
@Mayankm96 Mayankm96 deleted the devel branch December 22, 2023 08:25
Dhoeller19 added a commit that referenced this pull request Sep 20, 2024
# Description

Updates asset and docker paths to Isaac Sim 4.2

## Type of change

- New feature (non-breaking change which adds functionality)

## Checklist

- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./isaaclab.sh --format`
- [ ] 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
- [ ] 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
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants