1. 25 Oct, 2023 3 commits
    • Mayank Mittal's avatar
      Adds support for keyword arguments into `ManagerBase` (#198) · 00702aa3
      Mayank Mittal authored
      # Description
      
      This MR adds support for keyword arguments into the `ManagerBase` class.
      This helps in defining some default arguments into the term function
      call, which makes the configuration for those terms easier. Earlier, we
      had a lot of `SceneEntity("robot")` references, which is redundant for
      most cases that we are interested in.
      
      ## 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`
      - [ ] 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: 's avatarMayank Mittal <12863862+Mayankm96@users.noreply.github.com>
      Co-authored-by: 's avatarFarbod Farshidian <ffarshidian@theaiinstitute.com>
      00702aa3
    • Mayank Mittal's avatar
      Adds body acceleration and heading data to `RigidObjectData` (#200) · cd645f74
      Mayank Mittal authored
      # Description
      
      This MR adds rigid body acceleration and heading data into the
      `RigidObjectData` class.
      
      ## 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
      
      ---------
      Signed-off-by: 's avatarMayank Mittal <12863862+Mayankm96@users.noreply.github.com>
      Co-authored-by: 's avatarNikita Rudin <48368649+nikitardn@users.noreply.github.com>
      cd645f74
    • Mayank Mittal's avatar
      Adds support for drift in `RayCaster` and makes fields in `ContactSensorData` optional (#201) · 514baa4a
      Mayank Mittal authored
      # Description
      
      This MR adds support for 2D drift into the `RayCaster`. It also makes
      certain attributes in the `ContactSensorData` optional since they are
      not needed by default.
      
      ## 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
      - [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
      514baa4a
  2. 21 Oct, 2023 1 commit
    • Mayank Mittal's avatar
      Fix the double ellipsis issue when resolving indices (#196) · c6af307a
      Mayank Mittal authored
      # Description
      
      Earlier in the code, we were using the `Ellipsis` object to index the
      dimensions of the tensor. This led to situations where
      we indexed multi-dimension tensors as: `x[..., ..., 0]`. This now leads
      to errors with Python 3.10.
      
      The MR replaces `Ellipsis` with the `slice(None)` object, which results
      in indexing as: `x[:, :, 0]`.
      
      ## 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: 's avatarFarbod Farshidian <ffarshidian@theaiinstitute.com>
      c6af307a
  3. 19 Oct, 2023 3 commits
    • Mayank Mittal's avatar
      0396cf07
    • Mayank Mittal's avatar
      Adds preview features for black formatter (#192) · aa220dbc
      Mayank Mittal authored
      # Description
      
      Adds `--preview` feature to the black formatter which also takes care of
      the string representations in the code. This feature will become the
      default setting in the next release of black
      (https://github.com/psf/black/issues/1802).
      
      ## 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
      - [ ] I have updated the changelog and the corresponding version in the
      extension's `config/extension.toml` file
      aa220dbc
    • Mayank Mittal's avatar
      Fixes issue with applying actuator model in Articulation (#194) · 36471c3a
      Mayank Mittal authored
      # Description
      
      * Fixed bugs in actuator model implementation for actuator nets.
      Earlier, the DC motor clipping was not working.
      * Fixed bug in applying actuator model in the
      `omni.isaac.orbit.asset.Articulation` class. The new
      implementation caches the outputs from the explicit actuator model into
      the `_joint_pos_*_sim` buffer to
        avoid feedback loops in the tensor operation.
      
      ## 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
      36471c3a
  4. 18 Oct, 2023 4 commits
    • Mayank Mittal's avatar
      Adds semantic tags into spawner configuration (#186) · 570dec32
      Mayank Mittal authored
      # Description
      
      This MR adds support for adding semantic tag labels to the spawner
      config. It uses the format provided by replicator to label something as
      a class type name and class data name. For example: ("fruit",
      "avocado").
      
      ## 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
      570dec32
    • AutonomousHansen's avatar
      Adds method for simulation CLI arguments to the `AppLauncher` class (#160) · 39f95498
      AutonomousHansen authored
      # Description
      
      Adds `add_app_launcher_args` function to the `AppLauncher` class, which
      can be used to add AppLauncher-specific arguments to an existing
      ArgumentParser instance.
      
      Because everything we pass is then passed to SimulationApp as a config,
      the MR also adds the `check_config()` function. This compares the key
      values of a dict and raises a ValueError in the following cases:
      * if they have a key reserved for a SimulationApp config parameter but
      incorrect value types
      * if the value type is correct, it informs the user if a dict item they
      passed will be interpreted as a SimulationApp config parameter.
      Non-SimulationApp relevant keys are cleaned from the dict before it is
      passed to SimulationApp.
      
      Also separated out the giant `AppLauncher.__init__` function into a few
      sub-functions to make things more readable.
      
      ## 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
      - [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: 's avatarAutonomousHansen <50837800+AutonomousHansen@users.noreply.github.com>
      Co-authored-by: 's avatarMayank Mittal <mittalma@leggedrobotics.com>
      39f95498
    • jsmith-bdai's avatar
      Fixes typo in the Dockerfile (#193) · 3473efb6
      jsmith-bdai authored
      # Description
      Docker was failing to build with: `./container.sh start orbit`, because
      there was a missing `;` inside the Dockerfile. The failure was:
      ```
       => ERROR [orbit 3/9] RUN if [[ "${ISAACSIM_VERSION}" == "2022.2"* ]]; then         sed -i 's/\("omni.isaac.quadruped"\s=\s{}\)/"omni.isaac.quadruped" = {order = 10}/g'         /isaac-sim/apps/omni.isaac.sim.python.kit     fi                                   0.4s
      ------                                                                                                                                                                                                                                                                   
       > [orbit 3/9] RUN if [[ "${ISAACSIM_VERSION}" == "2022.2"* ]]; then         sed -i 's/\("omni.isaac.quadruped"\s=\s{}\)/"omni.isaac.quadruped" = {order = 10}/g'         /isaac-sim/apps/omni.isaac.sim.python.kit     fi:
      0.350 /bin/sh: 1: Syntax error: end of file unexpected (expecting "fi")
      ------
      failed to solve: process "/bin/sh -c if [[ \"${ISAACSIM_VERSION}\" == \"2022.2\"* ]]; then         sed -i 's/\\(\"omni.isaac.quadruped\"\\s=\\s{}\\)/\"omni.isaac.quadruped\" = {order = 10}/g'         ${ISAACSIM_PATH}/apps/omni.isaac.sim.python.kit     fi" did not complete successfully: exit code: 2
      ```
      
      This PR adds in the `;`.
      
      ## 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
      3473efb6
    • Mayank Mittal's avatar
      add5d3d5
  5. 14 Oct, 2023 1 commit
  6. 13 Oct, 2023 2 commits
    • David Hoeller's avatar
      Update tasks.json to use Isaac Sim python (#176) · c719c596
      David Hoeller authored
      Minor fix to have the task being setup correctly in docker/ngc.
      Otherwise it might complain that python3 does not exist.
      Signed-off-by: 's avatarDavid Hoeller <dhoeller@ethz.ch>
      c719c596
    • Mayank Mittal's avatar
      Adds action term for inverse kinematics (#182) · b4adf21c
      Mayank Mittal authored
      # Description
      
      This MR simplifies the `DifferentialInverseKinematics` to expect that
      the user gives the right frame for the end-effector pose as inputs.
      Additionally, it adds the action term corresponding to the controller.
      
      ## 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`
      - [ ] 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
      b4adf21c
  7. 12 Oct, 2023 2 commits
    • Mayank Mittal's avatar
      Adds try-catch in all the scripts for safe app closing (#185) · 07fc74d2
      Mayank Mittal authored
      # Description
      
      Propogates the try-except-finally paradigm from the unit tests to all
      the scripts. This ensures a cleaner exit of the script and allows a
      better traceback print.
      
      ```python
      import traceback
      
      import carb
      
      if __name__ == "__main__":
          try:
              # Run the main function
              main()
          except Exception as err:
              carb.log_error(err)
              carb.log_error(traceback.format_exc())
              raise
          finally:
              # close sim app
              simulation_app.close()
      ```
      
      ## 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
      - [ ] I have updated the changelog and the corresponding version in the
      extension's `config/extension.toml` file
      07fc74d2
    • Mayank Mittal's avatar
      Fixes the issue with using callbacks inside python classes (#181) · 8ba18efa
      Mayank Mittal authored
      # Description
      
      In Python, memory management is based on reference counts, where an
      object isn't "truly" deleted if it has variables referring to the memory
      address. More details:
      https://www.pythontutorial.net/advanced-python/python-references/
      
      In Orbit code, we provide "self" to various callbacks, which increments
      the reference counts since they "refer" to the object. This means that
      when we do:
      ```python
      robot = Articulation(cfg=ANYMAL_C_CFG)
      ```
      The reference count is 3: one for the `robot` variable and two for the
      callbacks we launched on separate threads.
      
      Now, if we try to delete the object by doing `del robot`, the reference
      count becomes 2. These correspond to the callbacks that were launched.
      However, the destructor `__del__()` isn't called yet because it is only
      done when all the reference counts are 0.
      
      As a fix, this MR uses a proxy weak reference to "self" when passing it
      to underlying callbacks or other classes. This does not increment the
      reference count for the object; thereby, when the main object is
      deleted, all ts proxy references become invalid as well.
      
      ## 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
      8ba18efa
  8. 04 Oct, 2023 1 commit
    • Mayank Mittal's avatar
      Fixes the visualization markers to use the SpawnerCfg class (#162) · 9a61666c
      Mayank Mittal authored
      # Description
      
      * This MR fixes the `VisualizationMarkers` class to use the
      `SpawnerCfg`. This makes it consistent with how assets are spawned and
      allows more variations.
      * The markers also support instanceable meshes. This is done by
      disabling their instancing (as PointInstancer does not support
      pre-instanced assets) and removing any rigid body APIs from the asset.
      
      Fixes #144 
      
      ## 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
      
      ## Screenshots
      
      https://github.com/isaac-orbit/orbit/assets/12863862/9d1b095b-99ee-4759-ba30-6175cc3b7d78
      
      ## 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
      9a61666c
  9. 26 Sep, 2023 3 commits
    • Mayank Mittal's avatar
    • AutonomousHansen's avatar
      Changes all attribute names for classes in configclass to `class_type` (#161) · d332be8d
      AutonomousHansen authored
      # Description
      
      Currently, the code has a mix of `cls_name` and `cls` in the
      configuration classes. Since `cls` is a reserved key from Python, we
      should avoid using this name for attributes. This MR changes all the
      occurrences to become `class_type` instead.
      
      Fixes #141 
      
      ## 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
      - [x] I have updated the changelog and the corresponding version in the
      extension's `config/extension.toml` file
      
      ---------
      Co-authored-by: 's avatarMayank Mittal <mittalma@leggedrobotics.com>
      d332be8d
    • jsmith-bdai's avatar
      Adds future annotations and docstring arg updates (#165) · 17fc724d
      jsmith-bdai authored
      # Description
      
      Adds `from __future__ import annotations`, cleans up old annotations
      (`List` -> `list`, `Tuple` -> `tuple`, etc) to conform with formatter,
      and removes duplicated type hints in docstrings.
      
      Fixes #140
      
      ## 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
      - [x] I have updated the changelog and the corresponding version in the
      extension's `config/extension.toml` file
      
      ---------
      Co-authored-by: 's avatarMayank Mittal <mittalma@leggedrobotics.com>
      17fc724d
  10. 31 Aug, 2023 1 commit
    • Mayank Mittal's avatar
      Add scene interface and concept of Base and RL environments (#124) · 4686c3da
      Mayank Mittal authored
      # Description
      
      This MR adds the `InteractiveScene` interface, as the central unit that
      contains all simulation elements (or as we call "scene entitites") under
      the same umbrella. By parsing the configuration object, it helps spawn
      different prims and create relevant handles for them to read/write their
      data. Based on the above, it modifies how the managers work. The terms
      expect to extract the entities from the scene for different computations
      (randomizations, rewards, actions, observations, etc.).
      
      The scene and managers together define the `BaseEnv` and `RLEnv` where
      the difference between the two is that the latter includes additional
      managers that are RL specific (rewards, terminations).
      
      Besides these, the MR includes the following improvements:
      * Makes debug visualization of commands consistent by adding them into
      callbacks
      * Handles the simulation pause/play in the `SimulationContext` itself to
      simplify standalone scripts
      * Cleanups and documentation fixes to all the MDP terms
      
      ## 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`
      - [ ] 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
      4686c3da
  11. 24 Aug, 2023 1 commit
    • Mayank Mittal's avatar
      Fixes unit tests of existing features (#134) · 3f2beaf5
      Mayank Mittal authored
      # Description
      
      This PR checks that all the existing scripts in the codebase work as
      expected. The last few merges led to the deletion of some files that
      were no longer available to import in the unit tests. Also renamed files
      in the test to follow the following convention:
      
      * `test_*.py` : A script that tests a feature using unittest fixture
      * `check_*.py`: A script that runs the feature but doesn't necessarily
      put them as a unittest fixture.
      
      ## 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
      3f2beaf5
  12. 23 Aug, 2023 3 commits
    • Mayank Mittal's avatar
      Fixes the terrain importer to use the new spawning functions for materials (#118) · 8c5a0697
      Mayank Mittal authored
      # Description
      
      This MR allows coloring a mesh using its vertex colors. Right now it
      only demonstrates how to do this based on height but one could use it in
      more creative ways. For example, coloring boxes in a different color.
      
      It also updates the `TerrainImporter` to use the visual and physics
      material configuration classes.
      
      ## Type of change
      
      - New feature (non-breaking change which adds functionality)
      - This change requires a documentation update
      
      ## Screenshots
      
      | Random Color | Color by Height |
      | ------ | ----- |
      |
      ![color](https://github.com/isaac-orbit/orbit/assets/12863862/b2c8fa13-aa6f-44ff-a195-509d422a62b6)
      |
      ![tough](https://github.com/isaac-orbit/orbit/assets/12863862/edc14879-8f14-4ebd-9578-a7eaa26eae26)
      |
      
      ## 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
      8c5a0697
    • Pascal Roth's avatar
      Updates sensors to follow structure similar to assets (#123) · 6442cef5
      Pascal Roth authored
      # Description
      
      This MR adapts all the sensor classes to follow a structure similar to
      the `assets` classes. This removes the need to worry about the spawning
      and initialization of sensors manually by the users. It removes the
      `debug_vis` function since that is now handled by a render callback
      automatically (based on the passed configuration for the `debug_vis`
      flag).
      
      Additionally, the camera poses can now be set and obtained different
      conventions:
      
      * `opengl`: the camera is looking down the -Z axis with the +Y axis
      pointing up
      * `ros`: the camera is looking down the +Z axis with the +Y axis
      pointing down
      * `world`: the camera is looking along the +X axis with the -Z axis
      pointing down
      
      ## 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`
      - [ ] 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: 's avatarMayank Mittal <mittalma@leggedrobotics.com>
      6442cef5
    • Mayank Mittal's avatar
      Adds asset classes that follow new APIs (#116) · 5802697c
      Mayank Mittal authored
      # Description
      
      This MR introduces a new set of asset interfaces. These interfaces
      simplify the spawning of assets into the scene and initializing the
      physics handle by hiding that into post-startup physics callbacks.
      Essentially, users no longer need to worry about the `spawn()` and
      `initialize()` calls themselves. The only interface they need to work
      with are the configuration objects. This makes the code more flexible
      and usable.
      
      The assets use the following conventions for function names:
      * `set_xxx()`: this implies that values are set into data buffers (but
      not into the simulator)
      * `write_xxx_to_sim()`: writes data into the simulator
      * `update()`: update all data from the simulator
      
      The above isn't an "ideal" function naming since there is no duality of
      functions (a write has a read method, or a setter has a getter). But I
      think they convey their functionality clearly from the naming. All data
      is accessible only through the `data` class for the asset.
      
      As a side note, the MR also renames all "dof" to "joint" to make it
      consistent with the terminology in robotics.
      
      ## 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`
      - [ ] 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
      
      ---------
      Signed-off-by: 's avatarMayank Mittal <12863862+Mayankm96@users.noreply.github.com>
      Co-authored-by: 's avatarPascal Roth <57946385+pascal-roth@users.noreply.github.com>
      Co-authored-by: 's avatarjsmith-bdai <142246516+jsmith-bdai@users.noreply.github.com>
      5802697c
  13. 22 Aug, 2023 2 commits
    • Mayank Mittal's avatar
      Adds additional parameters and utility functions to Orbit's SimulationContext class (#115) · 0fd5e134
      Mayank Mittal authored
      # Description
      
      * Added new parameters to the `SimulationContext` for setting other
      quantities that can be set using the `PhyxSceneAPI`
      * Added compatibility check to support flatcache/fabric naming in Isaac
      Sim 2022.2 and 2023.1 versions
      
      ## 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
      - [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: 's avatarMayank Mittal <12863862+Mayankm96@users.noreply.github.com>
      Co-authored-by: 's avatarPascal Roth <57946385+pascal-roth@users.noreply.github.com>
      Co-authored-by: 's avatarjsmith-bdai <142246516+jsmith-bdai@users.noreply.github.com>
      0fd5e134
    • Mayank Mittal's avatar
      Adds spawning utilities for different prim creation (#113) · af9bc561
      Mayank Mittal authored
      # Description
      
      This MR includes various utility functions for spawning different prims
      in the stage. There are five types of prims one usually wants to spawn:
      
      * **from files**: load an XForm prim from URDF/USD files
      * **shapes**: create prims using USD API for primitive shapes (capsules,
      cuboids, cones, etc.)
      * **materials**: create visual or physics-based materials
      * **lights**: create different types of light sources
      *  **sensors**: create prim for sensors using USD API (example: cameras)
      
      The spawning functions spawn a single prim and clone the spawned prim
      using a cloner decorator based on the regex resolution of the passed
      prim path.
      
      ```python
      import omni.isaac.orbit.sim as sim_utils
      
      cfg = sim_utils.UsdFileCfg(usd_path=f"{ISAAC_ORBIT_NUCLEUS_DIR}/Robots/FrankaEmika/panda_instanceable.usd")
      
      # spawns single prim
      cfg.func("/World/Robot", cfg)
      # spawns multile prim
      cfg.func("/World/envs/env_.*/Robot", cfg)
      ```
      
      ## 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
      
      ---------
      Signed-off-by: 's avatarMayank Mittal <12863862+Mayankm96@users.noreply.github.com>
      Co-authored-by: 's avatarjsmith-bdai <142246516+jsmith-bdai@users.noreply.github.com>
      af9bc561
  14. 18 Aug, 2023 1 commit
    • Mayank Mittal's avatar
      Adds methods to define physics-based schemas on prims (#120) · 8bf03525
      Mayank Mittal authored
      # Description
      
      This is a follow-up to PR #110. It adds additional methods that allow
      defining i.e. creating the schemas at the specified prim path. This is
      useful when creating your own meshes or prims procedurally. The methods
      also check if there are any conflicting schemas on the prim to which we
      want to apply a new schema. This makes sure that schemas are defined on
      a prim gracefully.
      
      ## 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
      8bf03525
  15. 17 Aug, 2023 2 commits
    • Mayank Mittal's avatar
      Moves URDF loader utility to `sim` module (#111) · 4fe4f0d4
      Mayank Mittal authored
      # Description
      
      Created a new module called `omni.isaac.orbit.sim.loaders`. The goal is
      to put all the asset from file loaders into that directory to make it a
      single module instead of many different ones with different file
      loaders.
      
      ## 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
      - [ ] 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
      4fe4f0d4
    • Mayank Mittal's avatar
      Adds methods to set physics-based schemas (#110) · b124a55d
      Mayank Mittal authored
      # 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: 's avatarMayank Mittal <12863862+Mayankm96@users.noreply.github.com>
      b124a55d
  16. 11 Aug, 2023 1 commit
  17. 03 Aug, 2023 7 commits
    • Mayank Mittal's avatar
      Adds support for callable classes in manager terms (#104) · 16c740f5
      Mayank Mittal authored
      # 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
      16c740f5
    • Mayank Mittal's avatar
      Fixes visualization markers to hide them from camera renderings (#103) · 619337ed
      Mayank Mittal authored
      # 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
      619337ed
    • Mayank Mittal's avatar
      Adds `SimulationContext` into the orbit module (#102) · 2ddb90f0
      Mayank Mittal authored
      # 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
      2ddb90f0
    • Mayank Mittal's avatar
      Cleanups to the actuator model module (#101) · fd72e345
      Mayank Mittal authored
      # 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
      fd72e345
    • Mayank Mittal's avatar
      Splits terrain importer and terrain generator configuration files (#100) · bd87f9c1
      Mayank Mittal authored
      # 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
      bd87f9c1
    • Mayank Mittal's avatar
      Fixes warnings when launching app from AppLauncher class (#99) · 8f8c3700
      Mayank Mittal authored
      # 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
      8f8c3700
    • Pascal Roth's avatar
      Missing comma in the setup.py file of `omni.isaac.orbit_env` extension (#98) · 815de7a2
      Pascal Roth authored
      # 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
      815de7a2
  18. 26 Jul, 2023 2 commits
    • Mayank Mittal's avatar
      Merges refactorings for locomotion environment training (#93) · 4ba7a0f0
      Mayank Mittal authored
      # 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: 's avatarDavid Hoeller <dhoeller@ethz.ch>
      Co-authored-by: 's avatarNikita Rudin <nrudin@nvidia.com>
      Co-authored-by: 's avatarFarbod Farshidian <ffarshidian@theaiinstitute.com>
      4ba7a0f0
    • Mayank Mittal's avatar
      Adds terrain type directly to the terrain importer class (#95) · a9de59fe
      Mayank Mittal authored
      # 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
      a9de59fe