Skip to content

Commit

Permalink
Merge branch 'isaac-sim:main' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
isaac-racine authored Jun 10, 2024
2 parents b807c65 + b468546 commit e02a473
Show file tree
Hide file tree
Showing 17 changed files with 548 additions and 24 deletions.
Binary file added docs/source/_static/tasks/locomotion/g1_flat.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/source/_static/tasks/locomotion/g1_rough.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions docs/source/api/lab/omni.isaac.lab.app.rst
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,12 @@ The following details the behavior of the class based on the environment variabl
* ``LIVESTREAM=2`` enables streaming via the `WebRTC Livestream`_ extension. This allows users to
connect in a browser using the WebRTC protocol.

.. note::

Each Isaac Sim instance can only connect to one streaming client.
Connecting to an Isaac Sim instance that is currently serving a streaming client
results in an error for the second user.

* **Enable cameras**: If the environment variable ``ENABLE_CAMERAS`` is set to 1, then the
cameras are enabled. This is useful for running the simulator without a GUI but still rendering the
viewport and camera images.
Expand Down
4 changes: 2 additions & 2 deletions docs/source/features/actuators.rst
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ Actuator groups
---------------

The actuator models by themselves are computational blocks that take as inputs the desired joint commands
and output the the joint commands to apply into the simulator. They do not contain any knowledge about the
and output the joint commands to apply into the simulator. They do not contain any knowledge about the
joints they are acting on themselves. These are handled by the :class:`omni.isaac.lab.assets.Articulation`
class, which wraps around the physics engine's articulation class.

Expand All @@ -67,4 +67,4 @@ The following figure shows the actuator groups for a legged mobile manipulator:
.. seealso::

We provide implementations for various explicit actuator models. These are detailed in
`omni.isaac.lab.actuators <../api/lab.actuators.html>`_ sub-package.
`omni.isaac.lab.actuators <../api/lab/omni.isaac.lab.actuators.html>`_ sub-package.
9 changes: 9 additions & 0 deletions docs/source/features/environments.rst
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,10 @@ Environments based on legged locomotion tasks.
+------------------------------+----------------------------------------------+------------------------------------------------------------------------------+
| |velocity-rough-h1| | |velocity-rough-h1-link| | Track a velocity command on rough terrain with the Unitree H1 robot |
+------------------------------+----------------------------------------------+------------------------------------------------------------------------------+
| |velocity-flat-g1| | |velocity-flat-g1-link| | Track a velocity command on flat terrain with the Unitree G1 robot |
+------------------------------+----------------------------------------------+------------------------------------------------------------------------------+
| |velocity-rough-g1| | |velocity-rough-g1-link| | Track a velocity command on rough terrain with the Unitree G1 robot |
+------------------------------+----------------------------------------------+------------------------------------------------------------------------------+

.. |velocity-flat-anymal-b-link| replace:: `Isaac-Velocity-Flat-Anymal-B-v0 <https://github.com/isaac-sim/IsaacLab/blob/main/source/extensions/omni.isaac.lab_tasks/omni/isaac/lab_tasks/manager_based/locomotion/velocity/config/anymal_b/flat_env_cfg.py>`__
.. |velocity-rough-anymal-b-link| replace:: `Isaac-Velocity-Rough-Anymal-B-v0 <https://github.com/isaac-sim/IsaacLab/blob/main/source/extensions/omni.isaac.lab_tasks/omni/isaac/lab_tasks/manager_based/locomotion/velocity/config/anymal_b/rough_env_cfg.py>`__
Expand Down Expand Up @@ -173,6 +177,9 @@ Environments based on legged locomotion tasks.
.. |velocity-flat-h1-link| replace:: `Isaac-Velocity-Flat-H1-v0 <https://github.com/isaac-sim/IsaacLab/blob/main/source/extensions/omni.isaac.lab_tasks/omni/isaac/lab_tasks/manager_based/locomotion/velocity/config/h1/flat_env_cfg.py>`__
.. |velocity-rough-h1-link| replace:: `Isaac-Velocity-Rough-H1-v0 <https://github.com/isaac-sim/IsaacLab/blob/main/source/extensions/omni.isaac.lab_tasks/omni/isaac/lab_tasks/manager_based/locomotion/velocity/config/h1/rough_env_cfg.py>`__

.. |velocity-flat-g1-link| replace:: `Isaac-Velocity-Flat-G1-v0 <https://github.com/isaac-sim/IsaacLab/blob/main/source/extensions/omni.isaac.lab_tasks/omni/isaac/lab_tasks/manager_based/locomotion/velocity/config/g1/flat_env_cfg.py>`__
.. |velocity-rough-g1-link| replace:: `Isaac-Velocity-Rough-G1-v0 <https://github.com/isaac-sim/IsaacLab/blob/main/source/extensions/omni.isaac.lab_tasks/omni/isaac/lab_tasks/manager_based/locomotion/velocity/config/g1/rough_env_cfg.py>`__


.. |velocity-flat-anymal-b| image:: ../_static/tasks/locomotion/anymal_b_flat.jpg
.. |velocity-rough-anymal-b| image:: ../_static/tasks/locomotion/anymal_b_rough.jpg
Expand All @@ -189,6 +196,8 @@ Environments based on legged locomotion tasks.
.. |velocity-flat-spot| image:: ../_static/tasks/locomotion/spot_flat.jpg
.. |velocity-flat-h1| image:: ../_static/tasks/locomotion/h1_flat.jpg
.. |velocity-rough-h1| image:: ../_static/tasks/locomotion/h1_rough.jpg
.. |velocity-flat-g1| image:: ../_static/tasks/locomotion/g1_flat.jpg
.. |velocity-rough-g1| image:: ../_static/tasks/locomotion/g1_rough.jpg

Navigation
----------
Expand Down
2 changes: 2 additions & 0 deletions docs/source/features/tiled_rendering.rst
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ Tiled Rendering

This feature is only available from Isaac Sim version 4.0.0.

Tiled rendering requires heavy memory resources. We recommend running at most 256 cameras in the scene.

Tiled rendering APIs provide a vectorized interface for collecting data from camera sensors.
This is useful for reinforcement learning environments requiring vision in the loop.
Tiled rendering works by concatenating camera outputs from multiple cameras and rendering
Expand Down
4 changes: 2 additions & 2 deletions docs/source/setup/faq.rst
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,8 @@ to Isaac Lab, please reach out to us.
.. _PhysX: https://developer.nvidia.com/physx-sdk
.. _Isaac Sim: https://developer.nvidia.com/isaac-sim
.. _Isaac Gym: https://developer.nvidia.com/isaac-gym
.. _IsaacGymEnvs: https://github.com/NVIDIA-Omniverse/IsaacGymEnvs
.. _OmniIsaacGymEnvs: https://github.com/NVIDIA-Omniverse/OmniIsaacGymEnvs
.. _IsaacGymEnvs: https://github.com/isaac-sim/IsaacGymEnvs
.. _OmniIsaacGymEnvs: https://github.com/isaac-sim/OmniIsaacGymEnvs
.. _Orbit: https://isaac-orbit.github.io/orbit
.. _Isaac Automator: https://github.com/isaac-sim/IsaacAutomator
.. _migration guides: ../migration/index.html
28 changes: 26 additions & 2 deletions docs/source/setup/installation/cloud_installation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ The result is a fully configured remote desktop cloud workstation, which can be
Installing Isaac Automator
--------------------------

For the most update-to-date and complete installation instructions, please refer to `Isaac Automator <https://github.com/isaac-sim/IsaacAutomator?tab=readme-ov-file#installation>`__.

To use Isaac Automator, first clone the repo:

.. code-block:: bash
Expand Down Expand Up @@ -49,9 +51,31 @@ Running Isaac Automator

To run Isaac Automator, first build the Isaac Automator container:

.. code-block:: bash
.. tabs::

.. tab:: Linux
.. code-block:: bash
./build
.. tab:: Windows
.. code-block:: bash
docker build --platform linux/x86_64 -t isa .
Next, enter the automator container:

.. tabs::

.. tab:: Linux
.. code-block:: bash
./run
.. tab:: Windows
.. code-block:: bash
./build
docker run --platform linux/x86_64 -it --rm -v .:/app isa bash
Next, run the deployed script for your preferred cloud:

Expand Down
2 changes: 1 addition & 1 deletion docs/source/setup/sample.rst
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ from the environments into the respective libraries function argument and return
# run script for training
./isaaclab.sh -p source/standalone/workflows/rsl_rl/train.py --task Isaac-Reach-Franka-v0 --headless
# run script for playing with 32 environments
./isaaclab.sh -p source/standalone/workflows/rsl_rl/play.py --task Isaac-Reach-Franka-v0 --num_envs 32 --checkpoint /PATH/TO/model.pth
./isaaclab.sh -p source/standalone/workflows/rsl_rl/play.py --task Isaac-Reach-Franka-v0 --num_envs 32 --load_run run_folder_name --checkpoint model.pt
All the scripts above log the training progress to `Tensorboard`_ in the ``logs`` directory in the root of
the repository. The logs directory follows the pattern ``logs/<library>/<task>/<date-time>``, where ``<library>``
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -345,7 +345,7 @@ def write_joint_state_to_sim(
physx_env_ids = self._ALL_INDICES
if joint_ids is None:
joint_ids = slice(None)
elif env_ids != slice(None):
if env_ids != slice(None) and joint_ids != slice(None):
env_ids = env_ids[:, None]
# set into internal buffers
self._data.joint_pos[env_ids, joint_ids] = position
Expand Down Expand Up @@ -377,7 +377,7 @@ def write_joint_stiffness_to_sim(
physx_env_ids = self._ALL_INDICES
if joint_ids is None:
joint_ids = slice(None)
elif env_ids != slice(None):
if env_ids != slice(None) and joint_ids != slice(None):
env_ids = env_ids[:, None]
# set into internal buffers
self._data.joint_stiffness[env_ids, joint_ids] = stiffness
Expand Down Expand Up @@ -407,7 +407,7 @@ def write_joint_damping_to_sim(
physx_env_ids = self._ALL_INDICES
if joint_ids is None:
joint_ids = slice(None)
elif env_ids != slice(None):
if env_ids != slice(None) and joint_ids != slice(None):
env_ids = env_ids[:, None]
# set into internal buffers
self._data.joint_damping[env_ids, joint_ids] = damping
Expand Down Expand Up @@ -435,7 +435,7 @@ def write_joint_effort_limit_to_sim(
physx_env_ids = self._ALL_INDICES
if joint_ids is None:
joint_ids = slice(None)
elif env_ids != slice(None):
if env_ids != slice(None) and joint_ids != slice(None):
env_ids = env_ids[:, None]
# move tensor to cpu if needed
if isinstance(limits, torch.Tensor):
Expand Down Expand Up @@ -466,7 +466,7 @@ def write_joint_armature_to_sim(
physx_env_ids = self._ALL_INDICES
if joint_ids is None:
joint_ids = slice(None)
elif env_ids != slice(None):
if env_ids != slice(None) and joint_ids != slice(None):
env_ids = env_ids[:, None]
# set into internal buffers
self._data.joint_armature[env_ids, joint_ids] = armature
Expand All @@ -493,7 +493,7 @@ def write_joint_friction_to_sim(
physx_env_ids = self._ALL_INDICES
if joint_ids is None:
joint_ids = slice(None)
elif env_ids != slice(None):
if env_ids != slice(None) and joint_ids != slice(None):
env_ids = env_ids[:, None]
# set into internal buffers
self._data.joint_friction[env_ids, joint_ids] = joint_friction
Expand Down Expand Up @@ -521,7 +521,7 @@ def write_joint_limits_to_sim(
physx_env_ids = self._ALL_INDICES
if joint_ids is None:
joint_ids = slice(None)
elif env_ids != slice(None):
if env_ids != slice(None) and joint_ids != slice(None):
env_ids = env_ids[:, None]
# set into internal buffers
self._data.joint_limits[env_ids, joint_ids] = limits
Expand Down Expand Up @@ -551,7 +551,7 @@ def set_joint_position_target(
env_ids = slice(None)
if joint_ids is None:
joint_ids = slice(None)
elif env_ids != slice(None):
if env_ids != slice(None) and joint_ids != slice(None):
env_ids = env_ids[:, None]
# set targets
self._data.joint_pos_target[env_ids, joint_ids] = target
Expand All @@ -575,7 +575,7 @@ def set_joint_velocity_target(
env_ids = slice(None)
if joint_ids is None:
joint_ids = slice(None)
elif env_ids != slice(None):
if env_ids != slice(None) and joint_ids != slice(None):
env_ids = env_ids[:, None]
# set targets
self._data.joint_vel_target[env_ids, joint_ids] = target
Expand All @@ -599,7 +599,7 @@ def set_joint_effort_target(
env_ids = slice(None)
if joint_ids is None:
joint_ids = slice(None)
elif env_ids != slice(None):
if env_ids != slice(None) and joint_ids != slice(None):
env_ids = env_ids[:, None]
# set targets
self._data.joint_effort_target[env_ids, joint_ids] = target
Expand All @@ -626,7 +626,7 @@ def set_fixed_tendon_stiffness(
env_ids = slice(None)
if fixed_tendon_ids is None:
fixed_tendon_ids = slice(None)
elif env_ids != slice(None):
if env_ids != slice(None) and fixed_tendon_ids != slice(None):
env_ids = env_ids[:, None]
# set stiffness
self._data.fixed_tendon_stiffness[env_ids, fixed_tendon_ids] = stiffness
Expand All @@ -653,7 +653,7 @@ def set_fixed_tendon_damping(
env_ids = slice(None)
if fixed_tendon_ids is None:
fixed_tendon_ids = slice(None)
elif env_ids != slice(None):
if env_ids != slice(None) and fixed_tendon_ids != slice(None):
env_ids = env_ids[:, None]
# set damping
self._data.fixed_tendon_damping[env_ids, fixed_tendon_ids] = damping
Expand All @@ -680,7 +680,7 @@ def set_fixed_tendon_limit_stiffness(
env_ids = slice(None)
if fixed_tendon_ids is None:
fixed_tendon_ids = slice(None)
elif env_ids != slice(None):
if env_ids != slice(None) and fixed_tendon_ids != slice(None):
env_ids = env_ids[:, None]
# set limit_stiffness
self._data.fixed_tendon_limit_stiffness[env_ids, fixed_tendon_ids] = limit_stiffness
Expand All @@ -707,7 +707,7 @@ def set_fixed_tendon_limit(
env_ids = slice(None)
if fixed_tendon_ids is None:
fixed_tendon_ids = slice(None)
elif env_ids != slice(None):
if env_ids != slice(None) and fixed_tendon_ids != slice(None):
env_ids = env_ids[:, None]
# set limit
self._data.fixed_tendon_limit[env_ids, fixed_tendon_ids] = limit
Expand All @@ -734,7 +734,7 @@ def set_fixed_tendon_rest_length(
env_ids = slice(None)
if fixed_tendon_ids is None:
fixed_tendon_ids = slice(None)
elif env_ids != slice(None):
if env_ids != slice(None) and fixed_tendon_ids != slice(None):
env_ids = env_ids[:, None]
# set rest_length
self._data.fixed_tendon_rest_length[env_ids, fixed_tendon_ids] = rest_length
Expand All @@ -761,7 +761,7 @@ def set_fixed_tendon_offset(
env_ids = slice(None)
if fixed_tendon_ids is None:
fixed_tendon_ids = slice(None)
elif env_ids != slice(None):
if env_ids != slice(None) and fixed_tendon_ids != slice(None):
env_ids = env_ids[:, None]
# set offset
self._data.fixed_tendon_offset[env_ids, fixed_tendon_ids] = offset
Expand Down
Loading

0 comments on commit e02a473

Please sign in to comment.