diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 14d97bae19..74c3e2488b 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -39,6 +39,7 @@ Guidelines for modifications: * Brayden Zhang * Calvin Yu * Chenyu Yang +* David Yang * HoJin Jeon * Jean Tampon * Jia Lin Yuan @@ -61,6 +62,7 @@ Guidelines for modifications: * Yang Jin * Zhengyu Zhang * Ziqi Fan +* Qian Wan ## Acknowledgements diff --git a/docs/index.rst b/docs/index.rst index 346ea2cf62..7c4a037ceb 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -76,6 +76,7 @@ Table of Contents source/features/tiled_rendering source/features/environments source/features/actuators + source/features/reproducibility .. source/features/motion_generators .. toctree:: diff --git a/docs/locale/zh_CN/LC_MESSAGES/source/api/lab/omni.isaac.lab.envs.po b/docs/locale/zh_CN/LC_MESSAGES/source/api/lab/omni.isaac.lab.envs.po index b4b7269fce..3e9d527ae2 100644 --- a/docs/locale/zh_CN/LC_MESSAGES/source/api/lab/omni.isaac.lab.envs.po +++ b/docs/locale/zh_CN/LC_MESSAGES/source/api/lab/omni.isaac.lab.envs.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Isaac Lab 1.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-07 08:08+0000\n" +"POT-Creation-Date: 2024-09-13 10:42+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Ziqi Fan \n" "Language: zh_CN\n" @@ -484,27 +484,35 @@ msgstr "" #: of omni.isaac.lab.envs.direct_rl_env.DirectRLEnv.reset:3 #: omni.isaac.lab.envs.manager_based_env.ManagerBasedEnv.reset:3 msgid "" +"This function calls the :meth:`_reset_idx` function to reset all the " +"environments. However, certain operations, such as procedural terrain " +"generation, that happened during initialization are not repeated." +msgstr "" + +#: of omni.isaac.lab.envs.direct_rl_env.DirectRLEnv.reset:7 +#: omni.isaac.lab.envs.manager_based_env.ManagerBasedEnv.reset:7 +msgid "" "The seed to use for randomization. Defaults to None, in which case the " "seed is not set." msgstr "" -#: of omni.isaac.lab.envs.direct_rl_env.DirectRLEnv.reset:4 -#: omni.isaac.lab.envs.manager_based_env.ManagerBasedEnv.reset:4 +#: of omni.isaac.lab.envs.direct_rl_env.DirectRLEnv.reset:8 +#: omni.isaac.lab.envs.manager_based_env.ManagerBasedEnv.reset:8 msgid "" "Additional information to specify how the environment is reset. Defaults " "to None. .. note:: This argument is used for compatibility with " "Gymnasium environment definition." msgstr "" -#: of omni.isaac.lab.envs.direct_rl_env.DirectRLEnv.reset:4 -#: omni.isaac.lab.envs.manager_based_env.ManagerBasedEnv.reset:4 +#: of omni.isaac.lab.envs.direct_rl_env.DirectRLEnv.reset:8 +#: omni.isaac.lab.envs.manager_based_env.ManagerBasedEnv.reset:8 msgid "" "Additional information to specify how the environment is reset. Defaults " "to None." msgstr "" -#: of omni.isaac.lab.envs.direct_rl_env.DirectRLEnv.reset:6 -#: omni.isaac.lab.envs.manager_based_env.ManagerBasedEnv.reset:6 +#: of omni.isaac.lab.envs.direct_rl_env.DirectRLEnv.reset:10 +#: omni.isaac.lab.envs.manager_based_env.ManagerBasedEnv.reset:10 msgid "" "This argument is used for compatibility with Gymnasium environment " "definition." @@ -527,8 +535,8 @@ msgstr "" msgid "Returns" msgstr "" -#: of omni.isaac.lab.envs.direct_rl_env.DirectRLEnv.reset:8 -#: omni.isaac.lab.envs.manager_based_env.ManagerBasedEnv.reset:8 +#: of omni.isaac.lab.envs.direct_rl_env.DirectRLEnv.reset:12 +#: omni.isaac.lab.envs.manager_based_env.ManagerBasedEnv.reset:12 #: omni.isaac.lab.envs.manager_based_env.ManagerBasedEnv.step:11 msgid "A tuple containing the observations and extras." msgstr "" @@ -581,6 +589,16 @@ msgstr "" msgid "Physics simulation configuration." msgstr "" +#: of +#: omni.isaac.lab.envs.manager_based_env_cfg.ManagerBasedEnvCfg:1::1 +msgid ":py:obj:`seed `\\" +msgstr "" + +#: of omni.isaac.lab.envs.direct_rl_env_cfg.DirectRLEnvCfg:1::1 +#: omni.isaac.lab.envs.manager_based_env_cfg.ManagerBasedEnvCfg:1::1 +msgid "The seed for the random number generator." +msgstr "" + #: of #: omni.isaac.lab.envs.manager_based_env_cfg.ManagerBasedEnvCfg:1::1 msgid ":py:obj:`decimation `\\" @@ -670,6 +688,23 @@ msgstr "" msgid "Physics simulation configuration. Default is SimulationCfg()." msgstr "" +#: ../../docstring of omni.isaac.lab.envs.DirectRLEnvCfg.seed:1 +#: omni.isaac.lab.envs.ManagerBasedEnvCfg.seed:1 +#: omni.isaac.lab.envs.ManagerBasedRLEnvCfg.seed:1 +msgid "" +"The seed for the random number generator. Defaults to None, in which case" +" the seed is not set." +msgstr "" + +#: ../../docstring of omni.isaac.lab.envs.DirectRLEnvCfg.seed:5 +#: omni.isaac.lab.envs.ManagerBasedEnvCfg.seed:5 +#: omni.isaac.lab.envs.ManagerBasedRLEnvCfg.seed:5 +msgid "" +"The seed is set at the beginning of the environment initialization. This " +"ensures that the environment creation is deterministic and behaves " +"similarly across different runs." +msgstr "" + #: ../../docstring of omni.isaac.lab.envs.DirectRLEnvCfg.decimation:3 #: omni.isaac.lab.envs.ManagerBasedEnvCfg.decimation:3 #: omni.isaac.lab.envs.ManagerBasedRLEnvCfg.decimation:3 @@ -1417,6 +1452,10 @@ msgstr "" msgid ":py:obj:`sim `\\" msgstr "" +#: of omni.isaac.lab.envs.direct_rl_env_cfg.DirectRLEnvCfg:1::1 +msgid ":py:obj:`seed `\\" +msgstr "" + #: of omni.isaac.lab.envs.direct_rl_env_cfg.DirectRLEnvCfg:1::1 msgid ":py:obj:`decimation `\\" msgstr "" diff --git a/docs/locale/zh_CN/LC_MESSAGES/source/api/lab/omni.isaac.lab.sensors.patterns.po b/docs/locale/zh_CN/LC_MESSAGES/source/api/lab/omni.isaac.lab.sensors.patterns.po index 4b07240ec8..3a5cd44296 100644 --- a/docs/locale/zh_CN/LC_MESSAGES/source/api/lab/omni.isaac.lab.sensors.patterns.po +++ b/docs/locale/zh_CN/LC_MESSAGES/source/api/lab/omni.isaac.lab.sensors.patterns.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Isaac Lab 1.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-03 12:23+0800\n" +"POT-Creation-Date: 2024-09-13 10:42+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Ziqi Fan \n" "Language: zh_CN\n" @@ -308,6 +308,16 @@ msgid "" "tensors are (N, H * W, 3) and (N, H * W, 3) respectively." msgstr "" +#: of +#: omni.isaac.lab.sensors.ray_caster.patterns.patterns_cfg.PinholeCameraPatternCfg:4 +msgid "" +"Focal length as well as the aperture sizes and offsets are set as a tenth" +" of the world unit. In our case, the world unit is meters, so all of " +"these values are in cm. For more information, please check: " +"https://docs.omniverse.nvidia.com/materials-and-" +"rendering/latest/cameras.html" +msgstr "" + #: of #: omni.isaac.lab.sensors.ray_caster.patterns.patterns_cfg.PinholeCameraPatternCfg:1::1 msgid "" @@ -329,7 +339,7 @@ msgstr "" #: of #: omni.isaac.lab.sensors.ray_caster.patterns.patterns_cfg.PinholeCameraPatternCfg:1::1 -msgid "Horizontal aperture (in mm)." +msgid "Horizontal aperture (in cm)." msgstr "" #: of @@ -341,7 +351,7 @@ msgstr "" #: of #: omni.isaac.lab.sensors.ray_caster.patterns.patterns_cfg.PinholeCameraPatternCfg:1::1 -msgid "Vertical aperture (in mm)." +msgid "Vertical aperture (in cm)." msgstr "" #: of @@ -429,7 +439,7 @@ msgstr "" #: ../../docstring of #: omni.isaac.lab.sensors.patterns.PinholeCameraPatternCfg.horizontal_aperture:1 -msgid "Horizontal aperture (in mm). Defaults to 20.955mm." +msgid "Horizontal aperture (in cm). Defaults to 20.955 cm." msgstr "" #: ../../docstring of @@ -446,7 +456,7 @@ msgstr "" #: ../../docstring of #: omni.isaac.lab.sensors.patterns.PinholeCameraPatternCfg.vertical_aperture:1 -msgid "Vertical aperture (in mm). Defaults to None." +msgid "Vertical aperture (in cm). Defaults to None." msgstr "" #: ../../docstring of @@ -461,15 +471,11 @@ msgstr "" #: ../../docstring of #: omni.isaac.lab.sensors.patterns.PinholeCameraPatternCfg.vertical_aperture:7 msgid "" -"ext{vertical aperture} = ext{horizontal aperture} imes\n" +"\\text{vertical aperture} = \\text{horizontal aperture} \\times " +"\\frac{\\text{height}}{\\text{width}}\n" "\n" msgstr "" -#: ../../docstring of -#: omni.isaac.lab.sensors.patterns.PinholeCameraPatternCfg.vertical_aperture:9 -msgid "rac{ ext{height}}{ ext{width}}" -msgstr "" - #: ../../docstring of #: omni.isaac.lab.sensors.patterns.PinholeCameraPatternCfg.horizontal_aperture_offset:1 msgid "Offsets Resolution/Film gate horizontally. Defaults to 0.0." diff --git a/docs/locale/zh_CN/LC_MESSAGES/source/api/lab/omni.isaac.lab.sensors.po b/docs/locale/zh_CN/LC_MESSAGES/source/api/lab/omni.isaac.lab.sensors.po index de4426b5aa..716d79efda 100644 --- a/docs/locale/zh_CN/LC_MESSAGES/source/api/lab/omni.isaac.lab.sensors.po +++ b/docs/locale/zh_CN/LC_MESSAGES/source/api/lab/omni.isaac.lab.sensors.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Isaac Lab 1.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-07 07:55+0000\n" +"POT-Creation-Date: 2024-09-13 10:42+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Ziqi Fan \n" "Language: zh_CN\n" @@ -744,6 +744,7 @@ msgid "``\"rgb\"``: A rendered color image." msgstr "" #: of omni.isaac.lab.sensors.camera.camera.Camera:9 +#: omni.isaac.lab.sensors.camera.tiled_camera.TiledCamera:11 #: omni.isaac.lab.sensors.ray_caster.ray_caster_camera.RayCasterCamera:12 msgid "" "``\"distance_to_camera\"``: An image containing the distance to camera " @@ -1067,7 +1068,9 @@ msgstr "" #: of omni.isaac.lab.sensors.camera.camera.Camera.set_intrinsic_matrices:18 #: omni.isaac.lab.sensors.ray_caster.ray_caster_camera.RayCasterCamera.set_intrinsic_matrices:4 -msgid "Focal length to use when computing aperture values. Defaults to 1.0." +msgid "" +"Focal length to use when computing aperture values (in cm). Defaults to " +"1.0." msgstr "" #: of omni.isaac.lab.sensors.camera.camera.Camera.set_intrinsic_matrices:19 @@ -1648,11 +1651,11 @@ msgstr "" msgid "The following sensor types are supported:" msgstr "" -#: of omni.isaac.lab.sensors.camera.tiled_camera.TiledCamera:11 -msgid "``\"depth\"``: An image containing the distance to camera optical center." +#: of omni.isaac.lab.sensors.camera.tiled_camera.TiledCamera:12 +msgid "``\"depth\"``: An alias for ``\"distance_to_camera\"``." msgstr "" -#: of omni.isaac.lab.sensors.camera.tiled_camera.TiledCamera:14 +#: of omni.isaac.lab.sensors.camera.tiled_camera.TiledCamera:15 msgid "" "Please note that the fidelity of RGB images may be lower than the " "standard camera sensor due to the tiled rendering process. Various ray " @@ -1661,7 +1664,7 @@ msgid "" "improving the fidelity of the RGB images." msgstr "" -#: of omni.isaac.lab.sensors.camera.tiled_camera.TiledCamera:20 +#: of omni.isaac.lab.sensors.camera.tiled_camera.TiledCamera:21 msgid "" "This feature is available starting from Isaac Sim 4.0. Before this " "version, the tiled rendering APIs were not available." @@ -1772,6 +1775,10 @@ msgid "" "\\(eyes\\, targets\\[\\, ...\\]\\)" msgstr "" +#: ../../docstring of omni.isaac.lab.sensors.TiledCamera.SUPPORTED_TYPES:4 +msgid "The ``\"depth\"`` type is an alias for ``\"distance_to_camera\"``." +msgstr "" + #: of #: omni.isaac.lab.sensors.camera.tiled_camera_cfg.TiledCameraCfg:1::1 msgid ":py:obj:`OffsetCfg `\\" @@ -3017,8 +3024,7 @@ msgstr "" msgid ":py:obj:`pattern_cfg `\\" msgstr "" -#: ../../docstring of omni.isaac.lab.sensors.RayCasterCameraCfg.pattern_cfg:1 -#: omni.isaac.lab.sensors.RayCasterCfg.pattern_cfg:1 +#: ../../docstring of omni.isaac.lab.sensors.RayCasterCfg.pattern_cfg:1 #: omni.isaac.lab.sensors.ray_caster.ray_caster_cfg.RayCasterCfg.OffsetCfg:1::1 msgid "The pattern that defines the local ray starting positions and directions." msgstr "" @@ -3281,6 +3287,20 @@ msgid "" "`\\" msgstr "" +#: of +#: omni.isaac.lab.sensors.ray_caster.ray_caster_camera_cfg.RayCasterCameraCfg.OffsetCfg:1::1 +msgid "" +":py:obj:`pattern_cfg " +"`\\" +msgstr "" + +#: ../../docstring of omni.isaac.lab.sensors.RayCasterCameraCfg.pattern_cfg:1 +#: omni.isaac.lab.sensors.ray_caster.ray_caster_camera_cfg.RayCasterCameraCfg.OffsetCfg:1::1 +msgid "" +"The pattern that defines the local ray starting positions and directions " +"in a pinhole camera pattern." +msgstr "" + #: of omni.isaac.lab.sensors.RayCasterCameraCfg.OffsetCfg.pos:1::1 msgid ":py:obj:`pos `\\" msgstr "" diff --git a/docs/locale/zh_CN/LC_MESSAGES/source/api/lab/omni.isaac.lab.sim.po b/docs/locale/zh_CN/LC_MESSAGES/source/api/lab/omni.isaac.lab.sim.po index 8b256316d3..f8a60610d5 100644 --- a/docs/locale/zh_CN/LC_MESSAGES/source/api/lab/omni.isaac.lab.sim.po +++ b/docs/locale/zh_CN/LC_MESSAGES/source/api/lab/omni.isaac.lab.sim.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Isaac Lab 1.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-03 05:00+0000\n" +"POT-Creation-Date: 2024-08-15 23:47+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Ziqi Fan \n" "Language: zh_CN\n" @@ -17,7 +17,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.16.0\n" +"Generated-By: Babel 2.15.0\n" #: ../../source/api/lab/omni.isaac.lab.sim.rst:2 msgid "omni.isaac.lab.sim" @@ -252,7 +252,6 @@ msgid "Different rendering modes for the simulation." msgstr "" #: of omni.isaac.lab.sim.simulation_context.SimulationContext:1 -#: omni.isaac.lab.sim.simulation_context.SimulationContext.RenderMode:1 msgid "**Methods:**" msgstr "" @@ -469,7 +468,7 @@ msgid "**Attributes:**" msgstr "" #: of -#: omni.isaac.lab.sim.simulation_context.SimulationContext.RenderMode:1::1 +#: omni.isaac.lab.sim.SimulationContext.RenderMode.NO_GUI_OR_RENDERING:1::1 msgid "" ":py:obj:`NO_GUI_OR_RENDERING " "`\\" @@ -477,42 +476,42 @@ msgstr "" #: ../../docstring of #: omni.isaac.lab.sim.SimulationContext.RenderMode.NO_GUI_OR_RENDERING:1 -#: omni.isaac.lab.sim.simulation_context.SimulationContext.RenderMode:1::1 +#: omni.isaac.lab.sim.SimulationContext.RenderMode.NO_GUI_OR_RENDERING:1::1 msgid "" "The simulation is running without a GUI and off-screen rendering is " "disabled." msgstr "" #: of -#: omni.isaac.lab.sim.simulation_context.SimulationContext.RenderMode:1::1 +#: omni.isaac.lab.sim.SimulationContext.RenderMode.NO_GUI_OR_RENDERING:1::1 msgid "" ":py:obj:`NO_RENDERING " "`\\" msgstr "" #: ../../docstring of +#: omni.isaac.lab.sim.SimulationContext.RenderMode.NO_GUI_OR_RENDERING:1::1 #: omni.isaac.lab.sim.SimulationContext.RenderMode.NO_RENDERING:1 -#: omni.isaac.lab.sim.simulation_context.SimulationContext.RenderMode:1::1 msgid "No rendering, where only other UI elements are updated at a lower rate." msgstr "" #: of -#: omni.isaac.lab.sim.simulation_context.SimulationContext.RenderMode:1::1 +#: omni.isaac.lab.sim.SimulationContext.RenderMode.NO_GUI_OR_RENDERING:1::1 msgid "" ":py:obj:`PARTIAL_RENDERING " "`\\" msgstr "" #: ../../docstring of +#: omni.isaac.lab.sim.SimulationContext.RenderMode.NO_GUI_OR_RENDERING:1::1 #: omni.isaac.lab.sim.SimulationContext.RenderMode.PARTIAL_RENDERING:1 -#: omni.isaac.lab.sim.simulation_context.SimulationContext.RenderMode:1::1 msgid "" "Partial rendering, where the simulation cameras and UI elements are " "updated." msgstr "" #: of -#: omni.isaac.lab.sim.simulation_context.SimulationContext.RenderMode:1::1 +#: omni.isaac.lab.sim.SimulationContext.RenderMode.NO_GUI_OR_RENDERING:1::1 msgid "" ":py:obj:`FULL_RENDERING " "`\\" @@ -520,19 +519,12 @@ msgstr "" #: ../../docstring of #: omni.isaac.lab.sim.SimulationContext.RenderMode.FULL_RENDERING:1 -#: omni.isaac.lab.sim.simulation_context.SimulationContext.RenderMode:1::1 +#: omni.isaac.lab.sim.SimulationContext.RenderMode.NO_GUI_OR_RENDERING:1::1 msgid "" "Full rendering, where all the simulation viewports, cameras and UI " "elements are updated." msgstr "" -#: of -#: omni.isaac.lab.sim.SimulationContext.RenderMode.NO_GUI_OR_RENDERING:1::1 -msgid "" -":py:obj:`__new__ " -"`\\ \\(value\\)" -msgstr "" - #: of omni.isaac.lab.sim.simulation_context.SimulationContext.__init__ #: omni.isaac.lab.sim.simulation_context.SimulationContext.get_setting #: omni.isaac.lab.sim.simulation_context.SimulationContext.render diff --git a/docs/locale/zh_CN/LC_MESSAGES/source/api/lab/omni.isaac.lab.sim.spawners.po b/docs/locale/zh_CN/LC_MESSAGES/source/api/lab/omni.isaac.lab.sim.spawners.po index 44e8a8f1da..c2f61be995 100644 --- a/docs/locale/zh_CN/LC_MESSAGES/source/api/lab/omni.isaac.lab.sim.spawners.po +++ b/docs/locale/zh_CN/LC_MESSAGES/source/api/lab/omni.isaac.lab.sim.spawners.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Isaac Lab 1.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-03 12:23+0800\n" +"POT-Creation-Date: 2024-09-13 10:42+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Ziqi Fan \n" "Language: zh_CN\n" @@ -2334,8 +2334,19 @@ msgid "" "rendering/latest/cameras.html>`__." msgstr "" +#: of omni.isaac.lab.sim.spawners.sensors.sensors_cfg.PinholeCameraCfg:7 +msgid "..note ::" +msgstr "" + +#: of omni.isaac.lab.sim.spawners.sensors.sensors_cfg.PinholeCameraCfg:6 +msgid "" +"Focal length as well as the aperture sizes and offsets are set as a tenth" +" of the world unit. In our case, the world unit is Meter s.t. all of " +"these values are set in cm." +msgstr "" + #: of omni.isaac.lab.sim.spawners.sensors.sensors_cfg.FisheyeCameraCfg:7 -#: omni.isaac.lab.sim.spawners.sensors.sensors_cfg.PinholeCameraCfg:6 +#: omni.isaac.lab.sim.spawners.sensors.sensors_cfg.PinholeCameraCfg:10 msgid "" "The default values are taken from the `Replicator camera " "`__" @@ -2412,7 +2423,7 @@ msgstr "" #: of #: omni.isaac.lab.sim.spawners.sensors.sensors_cfg.PinholeCameraCfg:1::1 -msgid "Horizontal aperture (in mm)." +msgid "Horizontal aperture (in cm)." msgstr "" #: of @@ -2552,7 +2563,7 @@ msgstr "" #: ../../docstring of #: omni.isaac.lab.sim.spawners.sensors.FisheyeCameraCfg.horizontal_aperture:1 #: omni.isaac.lab.sim.spawners.sensors.PinholeCameraCfg.horizontal_aperture:1 -msgid "Horizontal aperture (in mm). Defaults to 20.955mm." +msgid "Horizontal aperture (in cm). Defaults to 20.955 cm." msgstr "" #: ../../docstring of diff --git a/docs/locale/zh_CN/LC_MESSAGES/source/api/lab/omni.isaac.lab.terrains.po b/docs/locale/zh_CN/LC_MESSAGES/source/api/lab/omni.isaac.lab.terrains.po index 7c02d44ea3..37be9b5a47 100644 --- a/docs/locale/zh_CN/LC_MESSAGES/source/api/lab/omni.isaac.lab.terrains.po +++ b/docs/locale/zh_CN/LC_MESSAGES/source/api/lab/omni.isaac.lab.terrains.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Isaac Lab 1.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-07 07:55+0000\n" +"POT-Creation-Date: 2024-09-13 10:42+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Ziqi Fan \n" "Language: zh_CN\n" @@ -876,7 +876,8 @@ msgstr "" msgid "" "The terrain generation has its own seed parameter. This is set using the " ":attr:`TerrainGeneratorCfg.seed` parameter. If the seed is not set and " -"the caching is disabled, the terrain generation will not be reproducible." +"the caching is disabled, the terrain generation may not be completely " +"reproducible." msgstr "" #: of @@ -1120,7 +1121,16 @@ msgstr "" #: ../../docstring of omni.isaac.lab.terrains.TerrainGeneratorCfg.seed:1 msgid "" "The seed for the random number generator. Defaults to None, in which case" -" the seed is not set." +" the seed from the current NumPy's random state is used." +msgstr "" + +#: ../../docstring of omni.isaac.lab.terrains.TerrainGeneratorCfg.seed:4 +msgid "" +"When the seed is set, the random number generator is initialized with the" +" given seed. This ensures that the generated terrains are deterministic " +"across different runs. If the seed is not set, the seed from the current " +"NumPy's random state is used. This assumes that the seed is set elsewhere" +" in the code." msgstr "" #: ../../docstring of omni.isaac.lab.terrains.TerrainGeneratorCfg.curriculum:1 diff --git a/docs/locale/zh_CN/LC_MESSAGES/source/api/lab/omni.isaac.lab.utils.po b/docs/locale/zh_CN/LC_MESSAGES/source/api/lab/omni.isaac.lab.utils.po index 18dadd7236..948ccde1b9 100644 --- a/docs/locale/zh_CN/LC_MESSAGES/source/api/lab/omni.isaac.lab.utils.po +++ b/docs/locale/zh_CN/LC_MESSAGES/source/api/lab/omni.isaac.lab.utils.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Isaac Lab 1.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-25 14:27+0000\n" +"POT-Creation-Date: 2024-09-13 10:42+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Ziqi Fan \n" "Language: zh_CN\n" @@ -17,7 +17,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.16.0\n" +"Generated-By: Babel 2.15.0\n" #: ../../source/api/lab/omni.isaac.lab.utils.rst:2 msgid "omni.isaac.lab.utils" @@ -1821,7 +1821,7 @@ msgstr "" #: of omni.isaac.lab.utils.math.quat_rotate:1 #: omni.isaac.lab.utils.math.scale_transform:1::1 -msgid "Rotate a vector by a quaternion." +msgid "Rotate a vector by a quaternion along the last dimension of q and v." msgstr "" #: of omni.isaac.lab.utils.math.scale_transform:1::1 @@ -1832,7 +1832,9 @@ msgstr "" #: of omni.isaac.lab.utils.math.quat_rotate_inverse:1 #: omni.isaac.lab.utils.math.scale_transform:1::1 -msgid "Rotate a vector by the inverse of a quaternion." +msgid "" +"Rotate a vector by the inverse of a quaternion along the last dimension " +"of q and v." msgstr "" #: of omni.isaac.lab.utils.math.scale_transform:1::1 @@ -2228,8 +2230,6 @@ msgstr "" #: of omni.isaac.lab.utils.math.is_identity_pose:7 #: omni.isaac.lab.utils.math.quat_from_angle_axis:6 #: omni.isaac.lab.utils.math.quat_from_euler_xyz:9 -#: omni.isaac.lab.utils.math.quat_rotate:3 -#: omni.isaac.lab.utils.math.quat_rotate_inverse:3 msgid "The quaternion in (w, x, y, z). Shape is (N, 4)." msgstr "" @@ -2239,6 +2239,8 @@ msgstr "" #: of omni.isaac.lab.utils.math.quat_apply:3 #: omni.isaac.lab.utils.math.quat_from_matrix:5 +#: omni.isaac.lab.utils.math.quat_rotate:3 +#: omni.isaac.lab.utils.math.quat_rotate_inverse:3 msgid "The quaternion in (w, x, y, z). Shape is (..., 4)." msgstr "" @@ -2323,10 +2325,14 @@ msgid "A quaternion with only yaw component." msgstr "" #: of omni.isaac.lab.utils.math.quat_apply:4 +#: omni.isaac.lab.utils.math.quat_rotate:4 +#: omni.isaac.lab.utils.math.quat_rotate_inverse:4 msgid "The vector in (x, y, z). Shape is (..., 3)." msgstr "" #: of omni.isaac.lab.utils.math.quat_apply:6 +#: omni.isaac.lab.utils.math.quat_rotate:6 +#: omni.isaac.lab.utils.math.quat_rotate_inverse:6 msgid "The rotated vector in (x, y, z). Shape is (..., 3)." msgstr "" @@ -2335,14 +2341,10 @@ msgid "The orientation in (w, x, y, z). Shape is (N, 4)." msgstr "" #: of omni.isaac.lab.utils.math.quat_apply_yaw:4 -#: omni.isaac.lab.utils.math.quat_rotate:4 -#: omni.isaac.lab.utils.math.quat_rotate_inverse:4 msgid "The vector in (x, y, z). Shape is (N, 3)." msgstr "" #: of omni.isaac.lab.utils.math.quat_apply_yaw:6 -#: omni.isaac.lab.utils.math.quat_rotate:6 -#: omni.isaac.lab.utils.math.quat_rotate_inverse:6 msgid "The rotated vector in (x, y, z). Shape is (N, 3)." msgstr "" diff --git a/docs/locale/zh_CN/LC_MESSAGES/source/api/lab_tasks/omni.isaac.lab_tasks.utils.po b/docs/locale/zh_CN/LC_MESSAGES/source/api/lab_tasks/omni.isaac.lab_tasks.utils.po index 3fd9f72773..a4011c8c90 100644 --- a/docs/locale/zh_CN/LC_MESSAGES/source/api/lab_tasks/omni.isaac.lab_tasks.utils.po +++ b/docs/locale/zh_CN/LC_MESSAGES/source/api/lab_tasks/omni.isaac.lab_tasks.utils.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Isaac Lab 1.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-07 07:55+0000\n" +"POT-Creation-Date: 2024-09-13 10:42+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Ziqi Fan \n" "Language: zh_CN\n" @@ -174,25 +174,25 @@ msgstr "" #: of omni.isaac.lab_tasks.utils.parse_cfg.get_checkpoint_path #: omni.isaac.lab_tasks.utils.parse_cfg.load_cfg_from_registry #: omni.isaac.lab_tasks.utils.parse_cfg.parse_env_cfg -msgid "Raises" +msgid "Returns" msgstr "" #: of omni.isaac.lab_tasks.utils.parse_cfg.get_checkpoint_path:19 -msgid "When no runs are found in the input directory." -msgstr "" - -#: of omni.isaac.lab_tasks.utils.parse_cfg.get_checkpoint_path:20 -msgid "When no checkpoints are found in the input directory." +msgid "The path to the model checkpoint." msgstr "" #: of omni.isaac.lab_tasks.utils.parse_cfg.get_checkpoint_path #: omni.isaac.lab_tasks.utils.parse_cfg.load_cfg_from_registry #: omni.isaac.lab_tasks.utils.parse_cfg.parse_env_cfg -msgid "Returns" +msgid "Raises" +msgstr "" + +#: of omni.isaac.lab_tasks.utils.parse_cfg.get_checkpoint_path:21 +msgid "When no runs are found in the input directory." msgstr "" #: of omni.isaac.lab_tasks.utils.parse_cfg.get_checkpoint_path:22 -msgid "The path to the model checkpoint." +msgid "When no checkpoints are found in the input directory." msgstr "" #: of omni.isaac.lab_tasks.utils.parse_cfg.load_cfg_from_registry:3 @@ -220,13 +220,13 @@ msgid "The entry point key to resolve the configuration file." msgstr "" #: of omni.isaac.lab_tasks.utils.parse_cfg.load_cfg_from_registry:27 -#: omni.isaac.lab_tasks.utils.parse_cfg.parse_env_cfg:10 msgid "" -"The parsed configuration object. This is either a dictionary or a class " -"object." +"The parsed configuration object. If the entry point is a YAML file, it is" +" parsed into a dictionary. If the entry point is a Python class, it is " +"instantiated and returned." msgstr "" -#: of omni.isaac.lab_tasks.utils.parse_cfg.load_cfg_from_registry:29 +#: of omni.isaac.lab_tasks.utils.parse_cfg.load_cfg_from_registry:30 msgid "If the entry point key is not available in the gym registry for the task." msgstr "" @@ -248,7 +248,13 @@ msgid "" " which case it is left unchanged." msgstr "" +#: of omni.isaac.lab_tasks.utils.parse_cfg.parse_env_cfg:10 +msgid "The parsed configuration object." +msgstr "" + #: of omni.isaac.lab_tasks.utils.parse_cfg.parse_env_cfg:12 -msgid "If the task name is not provided, i.e. None." +msgid "" +"If the configuration for the task is not a class. We assume users always " +"use a class for the environment configuration." msgstr "" diff --git a/docs/locale/zh_CN/LC_MESSAGES/source/features/environments.po b/docs/locale/zh_CN/LC_MESSAGES/source/features/environments.po index dd2917ba92..712e3cdd5b 100644 --- a/docs/locale/zh_CN/LC_MESSAGES/source/features/environments.po +++ b/docs/locale/zh_CN/LC_MESSAGES/source/features/environments.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Isaac Lab 1.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-07 07:55+0000\n" +"POT-Creation-Date: 2024-09-13 10:42+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Ziqi Fan \n" "Language-Team: zh_CN \n" @@ -80,13 +80,9 @@ msgstr "|humanoid|" msgid "humanoid" msgstr "humanoid" -#: ../../source/features/environments.rst -msgid "|humanoid-link|" -msgstr "|humanoid-link|" - -#: ../../source/features/environments.rst -msgid "|humanoid-direct-link|" -msgstr "|humanoid-direct-link|" +#: ../../source/features/environments.rst:27 +msgid "|humanoid-link| |humanoid-direct-link|" +msgstr "|humanoid-link| |humanoid-direct-link|" #: ../../source/features/environments.rst:27 msgid "Move towards a direction with the MuJoCo humanoid robot" @@ -100,13 +96,9 @@ msgstr "|ant|" msgid "ant" msgstr "ant" -#: ../../source/features/environments.rst -msgid "|ant-link|" -msgstr "|ant-link|" - -#: ../../source/features/environments.rst -msgid "|ant-direct-link|" -msgstr "|ant-direct-link|" +#: ../../source/features/environments.rst:30 +msgid "|ant-link| |ant-direct-link|" +msgstr "|ant-link| |ant-direct-link|" #: ../../source/features/environments.rst:30 msgid "Move towards a direction with the MuJoCo ant robot" @@ -120,21 +112,13 @@ msgstr "|cartpole|" msgid "cartpole" msgstr "cartpole" -#: ../../source/features/environments.rst -msgid "|cartpole-link|" -msgstr "|cartpole-link|" - -#: ../../source/features/environments.rst -msgid "|cartpole-direct-link|" -msgstr "|cartpole-direct-link|" - -#: ../../source/features/environments.rst -msgid "|cartpole-camera-rgb-link|" -msgstr "|cartpole-camera-rgb-link|" - -#: ../../source/features/environments.rst -msgid "|cartpole-camera-dpt-link|" -msgstr "|cartpole-camera-dpt-link|" +#: ../../source/features/environments.rst:33 +msgid "" +"|cartpole-link| |cartpole-direct-link| |cartpole-camera-rgb-link| |cartpole-" +"camera-dpt-link|" +msgstr "" +"|cartpole-link| |cartpole-direct-link| |cartpole-camera-rgb-link| |cartpole-" +"camera-dpt-link|" #: ../../source/features/environments.rst:33 msgid "Move the cart to keep the pole upwards in the classic cartpole control" @@ -240,13 +224,9 @@ msgstr "|cube-allegro|" msgid "cube-allegro" msgstr "cube-allegro" -#: ../../source/features/environments.rst -msgid "|cube-allegro-link|" -msgstr "|cube-allegro-link|" - -#: ../../source/features/environments.rst -msgid "|allegro-direct-link|" -msgstr "|allegro-direct-link|" +#: ../../source/features/environments.rst:80 +msgid "|cube-allegro-link| |allegro-direct-link|" +msgstr "|cube-allegro-link| |allegro-direct-link|" #: ../../source/features/environments.rst:80 msgid "In-hand reorientation of a cube using Allegro hand" @@ -260,17 +240,9 @@ msgstr "|cube-shadow|" msgid "cube-shadow" msgstr "cube-shadow" -#: ../../source/features/environments.rst -msgid "|cube-shadow-link|" -msgstr "|cube-shadow-link|" - -#: ../../source/features/environments.rst -msgid "|cube-shadow-ff-link|" -msgstr "|cube-shadow-ff-link|" - -#: ../../source/features/environments.rst -msgid "|cube-shadow-lstm-link|" -msgstr "|cube-shadow-lstm-link|" +#: ../../source/features/environments.rst:83 +msgid "|cube-shadow-link| |cube-shadow-ff-link| |cube-shadow-lstm-link|" +msgstr "|cube-shadow-link| |cube-shadow-ff-link| |cube-shadow-lstm-link|" #: ../../source/features/environments.rst:83 msgid "In-hand reorientation of a cube using Shadow hand" @@ -324,13 +296,9 @@ msgstr "|velocity-flat-anymal-c|" msgid "velocity-flat-anymal-c" msgstr "velocity-flat-anymal-c" -#: ../../source/features/environments.rst -msgid "|velocity-flat-anymal-c-link|" -msgstr "|velocity-flat-anymal-c-link|" - -#: ../../source/features/environments.rst -msgid "|velocity-flat-anymal-c-direct-link|" -msgstr "|velocity-flat-anymal-c-direct-link|" +#: ../../source/features/environments.rst:123 +msgid "|velocity-flat-anymal-c-link| |velocity-flat-anymal-c-direct-link|" +msgstr "|velocity-flat-anymal-c-link| |velocity-flat-anymal-c-direct-link|" #: ../../source/features/environments.rst:123 msgid "Track a velocity command on flat terrain with the Anymal C robot" @@ -344,13 +312,9 @@ msgstr "|velocity-rough-anymal-c|" msgid "velocity-rough-anymal-c" msgstr "velocity-rough-anymal-c" -#: ../../source/features/environments.rst -msgid "|velocity-rough-anymal-c-link|" -msgstr "|velocity-rough-anymal-c-link|" - -#: ../../source/features/environments.rst -msgid "|velocity-rough-anymal-c-direct-link|" -msgstr "|velocity-rough-anymal-c-direct-link|" +#: ../../source/features/environments.rst:126 +msgid "|velocity-rough-anymal-c-link| |velocity-rough-anymal-c-direct-link|" +msgstr "|velocity-rough-anymal-c-link| |velocity-rough-anymal-c-direct-link|" #: ../../source/features/environments.rst:126 msgid "Track a velocity command on rough terrain with the Anymal C robot" diff --git a/docs/locale/zh_CN/LC_MESSAGES/source/how-to/import_new_asset.po b/docs/locale/zh_CN/LC_MESSAGES/source/how-to/import_new_asset.po index e292ba8ddc..b915cb6a75 100644 --- a/docs/locale/zh_CN/LC_MESSAGES/source/how-to/import_new_asset.po +++ b/docs/locale/zh_CN/LC_MESSAGES/source/how-to/import_new_asset.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Isaac Lab 1.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-07-05 06:36+0000\n" +"POT-Creation-Date: 2024-09-13 10:42+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Ziqi Fan \n" "Language-Team: zh_CN \n" @@ -61,12 +61,13 @@ msgid "" "The recommended workflow from NVIDIA is to use the above importers to " "convert the asset into its USD representation. Once the asset is in USD " "format, you can use the Omniverse Kit to edit the asset and export it to " -"other file formats." +"other file formats. Isaac Sim includes these importers by default. They can " +"also be enabled manually in Omniverse Kit." msgstr "" "NVIDIA 建议的工作流程是使用上述导入器将资产转换为其 USD 表示形式。一旦资产以 USD 格式存在,您可以使用 Omniverse Kit " -"对资产进行编辑,并将其导出到其他文件格式。" +"对资产进行编辑,并将其导出到其他文件格式。Isaac Sim 默认包含这些导入程序。它们也可以在 Omniverse Kit 中手动启用。" -#: ../../source/how-to/import_new_asset.rst:25 +#: ../../source/how-to/import_new_asset.rst:26 msgid "" "An important note to use assets for large-scale simulation is to ensure that" " they are in `instanceable`_ format. This allows the asset to be efficiently" @@ -79,69 +80,72 @@ msgstr "" "格式。这允许资产有效地加载到内存中,并在场景中多次使用。否则,资产将多次加载到内存中,可能导致性能问题。有关实例化资产的更多详细信息,请查看 Isaac" " Sim `文档`_ 。" -#: ../../source/how-to/import_new_asset.rst:33 +#: ../../source/how-to/import_new_asset.rst:34 msgid "Using URDF Importer" msgstr "使用 URDF 导入器" -#: ../../source/how-to/import_new_asset.rst:35 +#: ../../source/how-to/import_new_asset.rst:36 msgid "" -"Isaac Sim includes the URDF and MJCF importers by default. These importers " -"support the option to import assets as instanceable assets. By selecting " -"this option, the importer will create two USD files: one for all the mesh " -"data and one for all the non-mesh data (e.g. joints, rigid bodies, etc.). " -"The prims in the mesh data file are referenced in the non-mesh data file. " -"This allows the mesh data (which is often bulky) to be loaded into memory " -"only once and used multiple times in a scene." +"For using the URDF importer in the GUI, please check the documentation at " +"`URDF importer`_. For using the URDF importer from Python scripts, we " +"include a utility tool called ``convert_urdf.py``. This script creates an " +"instance of :class:`~sim.converters.UrdfConverterCfg` which is then passed " +"to the :class:`~sim.converters.UrdfConverter` class." msgstr "" -"Isaac Sim 默认包含 URDF 和 MJCF 导入器。这些导入器支持将资产导入为实例化资产的选项。通过选择此选项,导入器将创建两个 USD " -"文件:一个用于所有网格数据,一个用于所有非网格数据(例如关节、刚体等)。网格数据文件中的 prims " -"在非网格数据文件中被引用。这样,网格数据(通常很庞大)只需加载到内存中一次,并在场景中多次使用。" - -#: ../../source/how-to/import_new_asset.rst:42 -msgid "" -"For using these importers from the GUI, please check the documentation for " -"`MJCF importer`_ and `URDF importer`_ respectively." -msgstr "要从 GUI 使用这些导入器,请分别查看 `MJCF 导入器`_ 和 `URDF 导入器`_ 的文档。" - -#: ../../source/how-to/import_new_asset.rst:45 -msgid "" -"For using the URDF importers from Python scripts, we include a utility tool " -"called ``convert_urdf.py``. Internally, this script creates an instance of " -":class:`~sim.converters.UrdfConverterCfg` which is then passed to the " -":class:`~sim.converters.UrdfConverter` class. The configuration class " -"specifies the default values for the importer. The important settings are:" +"要在GUI中使用URDF导入器,请查阅 `URDF 导入器`_ 的文档。要在Python脚本中使用URDF导入器,我们提供了一个名为 ``convert_urdf.py`` 的实用工具。这个脚本创建了 :class:`~sim.converters.UrdfConverterCfg` 的一个实例,然后将其传递给 :class:`~sim.converters.UrdfConverter` 类。" + +#: ../../source/how-to/import_new_asset.rst:39 +msgid "" +"The URDF importer has various configuration parameters that can be set to " +"control the behavior of the importer. The default values for the importer's " +"configuration parameters are specified are in the " +":class:`~sim.converters.UrdfConverterCfg` class, and they are listed below. " +"We made a few commonly modified settings to be available as command-line " +"arguments when calling the ``convert_urdf.py``, and they are marked with " +"``*``` in the list. For a comprehensive list of the configuration " +"parameters, please check the the documentation at `URDF importer`_." msgstr "" -"要从 Python 脚本中使用 URDF 导入器,我们包含了一个名为 ``convert_urdf.py`` 的实用工具。在内部,此脚本创建了一个 " -":class:`~sim.converters.UrdfConverterCfg` 的实例,然后将其传递给 " -":class:`~sim.converters.UrdfConverter` 类。配置类指定了导入器的默认值。重要的设置包括 :" +"URDF 导入器具有各种配置参数,可以设置来控制导入器的行为。导入器的配置参数的默认值在 " +":class:`~sim.converters.UrdfConverterCfg` 类中指定,并列在下方。我们将一些常修改的设置作为命令行参数在调用 " +"``convert_urdf.py`` 时可用,并在列表中用 ``*`` 标记。要获取配置参数的详细列表,请查看 `URDF 导入器`_ 的文档。" -#: ../../source/how-to/import_new_asset.rst:50 +#: ../../source/how-to/import_new_asset.rst:42 msgid "" -":attr:`~sim.converters.UrdfConverterCfg.fix_base` - Whether to fix the base " -"of the robot. This depends on whether you have a floating-base or fixed-base" -" robot." +":attr:`~sim.converters.UrdfConverterCfg.fix_base*` - Whether to fix the base" +" of the robot. This depends on whether you have a floating-base or fixed-" +"base robot. The command-line flag is ``--fix-base`` where when set, the " +"importer will fix the base of the robot, otherwise it will default to " +"floating-base." msgstr "" -":attr:`~sim.converters.UrdfConverterCfg.fix_base` - " -"是否修正机器人的基座。这取决于您是否拥有浮动基座还是固定基座的机器人。" +":attr:`~sim.converters.UrdfConverterCfg.fix_base*` - " +"是否固定机器人的基座。这取决于你是否有浮动基座或固定基座的机器人。命令行标志是 ``--fix-" +"base`` ,设置时,导入器将固定机器人的基座,否则它将默认为浮动基座。" -#: ../../source/how-to/import_new_asset.rst:52 +#: ../../source/how-to/import_new_asset.rst:45 msgid "" -":attr:`~sim.converters.UrdfConverterCfg.make_instanceable` - Whether to " -"create instanceable assets. Usually, this should be set to ``True``." +":attr:`~sim.converters.UrdfConverterCfg.make_instanceable*` - Whether to " +"create instanceable assets. Usually, this should be set to ``True``. The " +"command-line flag is ``--make-instanceable`` where when set, the importer " +"will create instanceable assets, otherwise it will default to non-" +"instanceable." msgstr "" -":attr:`~sim.converters.UrdfConverterCfg.make_instanceable` - " -"是否创建实例化资产。通常情况下,应该将其设置为 ``True`` 。" +":attr:`~sim.converters.UrdfConverterCfg.make_instanceable*` - " +"是否创建可实例化资产。通常,这应该设置为 ``True`` 。命令行标志是 ``--make-" +"instanceable`` ,当设置时,导入器将创建可实例化资产,否则将默认为非可实例化。" -#: ../../source/how-to/import_new_asset.rst:54 +#: ../../source/how-to/import_new_asset.rst:48 msgid "" -":attr:`~sim.converters.UrdfConverterCfg.merge_fixed_joints` - Whether to " +":attr:`~sim.converters.UrdfConverterCfg.merge_fixed_joints*` - Whether to " "merge the fixed joints. Usually, this should be set to ``True`` to reduce " -"the asset complexity." +"the asset complexity. The command-line flag is ``--merge-joints`` where when" +" set, the importer will merge the fixed joints, otherwise it will default to" +" not merging the fixed joints." msgstr "" -":attr:`~sim.converters.UrdfConverterCfg.merge_fixed_joints` - " -"是否合并固定关节。通常情况下,应将其设置为 ``True`` 以减少资产复杂性。" +":attr:`~sim.converters.UrdfConverterCfg.merge_fixed_joints*` - " +"是否合并固定关节。通常应将此设置为 ``True`` 以减少实体的复杂性。命令行标志是 ``--merge-" +"joints`` ,设置时,导入器将合并固定关节,否则将默认不合并固定关节。" -#: ../../source/how-to/import_new_asset.rst:56 +#: ../../source/how-to/import_new_asset.rst:51 msgid "" ":attr:`~sim.converters.UrdfConverterCfg.default_drive_type` - The drive-type" " for the joints. We recommend this to always be ``\"none\"``. This allows " @@ -150,7 +154,7 @@ msgstr "" ":attr:`~sim.converters.UrdfConverterCfg.default_drive_type` - " "关节的驱动类型。我们建议始终设置为 ``\"none\"`` 。这允许使用执行器模型更改驱动配置。" -#: ../../source/how-to/import_new_asset.rst:59 +#: ../../source/how-to/import_new_asset.rst:54 msgid "" ":attr:`~sim.converters.UrdfConverterCfg.default_drive_stiffness` - The drive" " stiffness for the joints. We recommend this to always be ``0.0``. This " @@ -159,7 +163,7 @@ msgstr "" ":attr:`~sim.converters.UrdfConverterCfg.default_drive_stiffness` - " "关节的驱动刚度。我们建议始终设置为 ``0.0`` 。这允许使用执行器模型更改驱动配置。" -#: ../../source/how-to/import_new_asset.rst:62 +#: ../../source/how-to/import_new_asset.rst:57 msgid "" ":attr:`~sim.converters.UrdfConverterCfg.default_drive_damping` - The drive " "damping for the joints. Similar to the stiffness, we recommend this to " @@ -168,12 +172,24 @@ msgstr "" ":attr:`~sim.converters.UrdfConverterCfg.default_drive_damping` - " "关节的驱动阻尼。类似于刚度,我们建议始终将其设置为 ``0.0`` 。" -#: ../../source/how-to/import_new_asset.rst:66 -#: ../../source/how-to/import_new_asset.rst:138 +#: ../../source/how-to/import_new_asset.rst:61 +msgid "" +"Note that when instanceable option is selected, the importer will create two" +" USD files: one for all the mesh data and one for all the non-mesh data " +"(e.g. joints, rigid bodies, etc.). The prims in the mesh data file are " +"referenced in the non-mesh data file. This allows the mesh data (which is " +"often bulky) to be loaded into memory only once and used multiple times in a" +" scene." +msgstr "" +"请注意,当选择了可实例化选项时,导入器将创建两个USD文件:一个存储所有网格数据,另一个存储所有非网格数据(如关节、刚体等)。网格数据文件中的基元在非网格数据文件中被引用。这使得网格数据(通常体积庞大)只需要加载一次并在场景中多次使用。" + +#: ../../source/how-to/import_new_asset.rst:68 +#: ../../source/how-to/import_new_asset.rst:145 +#: ../../source/how-to/import_new_asset.rst:194 msgid "Example Usage" msgstr "示例用法" -#: ../../source/how-to/import_new_asset.rst:68 +#: ../../source/how-to/import_new_asset.rst:70 msgid "" "In this example, we use the pre-processed URDF file of the ANYmal-D robot. " "To check the pre-process URDF, please check the file the `anymal.urdf`_. The" @@ -182,43 +198,44 @@ msgstr "" "在此示例中,我们使用了 ANYmal-D 机器人的经过处理的 URDF 文件。要检查经过处理的 URDF,请查看文件 `anymal.urdf`_ " "。经过处理的 URDF 与原始 URDF 之间的主要区别在于:" -#: ../../source/how-to/import_new_asset.rst:72 +#: ../../source/how-to/import_new_asset.rst:74 msgid "" "We removed the ```` tag from the URDF. This tag is not supported by " "the URDF importer." msgstr "我们从 URDF 中移除了 ```` 标记。此标记不受 URDF 导入器支持。" -#: ../../source/how-to/import_new_asset.rst:73 +#: ../../source/how-to/import_new_asset.rst:75 msgid "" "We removed the ```` tag from the URDF. This tag is not " "supported by the URDF importer." msgstr "我们从 URDF 中移除了 ```` 标记。此标记不受 URDF 导入器支持。" -#: ../../source/how-to/import_new_asset.rst:74 +#: ../../source/how-to/import_new_asset.rst:76 msgid "" "We removed various collision bodies from the URDF to reduce the complexity " "of the asset." msgstr "我们从 URDF 中移除了各种碰撞体,以减少资产的复杂性。" -#: ../../source/how-to/import_new_asset.rst:75 +#: ../../source/how-to/import_new_asset.rst:77 msgid "" "We changed all the joint's damping and friction parameters to ``0.0``. This " "ensures that we can perform effort-control on the joints without PhysX " "adding additional damping." msgstr "我们将所有关节的阻尼和摩擦参数改为 ``0.0`` 。这确保在没有 PhysX 添加额外阻尼的情况下,我们可以对关节进行努力控制。" -#: ../../source/how-to/import_new_asset.rst:77 +#: ../../source/how-to/import_new_asset.rst:79 msgid "" "We added the ```` tag to fixed joints. This ensures that the " "importer does not merge these fixed joints." msgstr "我们向固定关节添加了 ```` 标记。这确保导入器不会合并这些固定关节。" -#: ../../source/how-to/import_new_asset.rst:80 +#: ../../source/how-to/import_new_asset.rst:82 +#: ../../source/how-to/import_new_asset.rst:149 msgid "" "The following shows the steps to clone the repository and run the converter:" msgstr "以下显示了克隆存储库并运行转换器的步骤:" -#: ../../source/how-to/import_new_asset.rst:99 +#: ../../source/how-to/import_new_asset.rst:101 msgid "" "Executing the above script will create two USD files inside the " "``source/extensions/omni.isaac.lab_assets/data/Robots/ANYbotics/`` " @@ -227,17 +244,17 @@ msgstr "" "执行上述脚本将在 ``source/extensions/omni.isaac.lab_assets/data/Robots/ANYbotics/`` " "目录内创建两个 USD 文件:" -#: ../../source/how-to/import_new_asset.rst:102 +#: ../../source/how-to/import_new_asset.rst:104 msgid "" "``anymal_d.usd`` - This is the main asset file. It contains all the non-mesh" " data." msgstr "``anymal_d.usd`` - 这是主资产文件。它包含所有非网格数据。" -#: ../../source/how-to/import_new_asset.rst:103 +#: ../../source/how-to/import_new_asset.rst:105 msgid "``Props/instanceable_assets.usd`` - This is the mesh data file." msgstr "``Props/instanceable_assets.usd`` - 这是网格数据文件。" -#: ../../source/how-to/import_new_asset.rst:107 +#: ../../source/how-to/import_new_asset.rst:109 msgid "" "Since Isaac Sim 2023.1.1, the URDF importer behavior has changed and it " "stores the mesh data inside the main asset file even if the ``--make-" @@ -247,24 +264,102 @@ msgstr "" "自 Isaac Sim 2023.1.1 起,URDF 导入器的行为已更改,它将网格数据存储在主资产文件中,即使设置了 ``--make-" "instanceable`` 标志。这意味着 ``Props/instanceable_assets.usd`` 文件已创建,但不再使用。" -#: ../../source/how-to/import_new_asset.rst:111 -msgid "" -"You can press play on the opened window to see the asset in the scene. The " -"asset should \"collapse\" if everything is working correctly. If it blows " -"up, then it might be that you have self-collisions present in the URDF." -msgstr "您可以在打开的窗口上按播放按钮来查看场景中的资产。如果一切正常,资产应该 \"折叠\" 。如果发生爆炸,那可能是由于 URDF 中存在自我碰撞。" - -#: ../../source/how-to/import_new_asset.rst:115 +#: ../../source/how-to/import_new_asset.rst:113 msgid "" "To run the script headless, you can add the ``--headless`` flag. This will " "not open the GUI and exit the script after the conversion is complete." msgstr "要以无头模式运行脚本,可以添加 ``--headless`` 标志。这将不会打开 GUI,并在完成转换后退出脚本。" -#: ../../source/how-to/import_new_asset.rst:120 +#: ../../source/how-to/import_new_asset.rst:116 +msgid "" +"You can press play on the opened window to see the asset in the scene. The " +"asset should fall under gravity. If it blows up, then it might be that you " +"have self-collisions present in the URDF." +msgstr "您可以在打开的窗口上按播放按钮来查看场景中的资产。资产应该受重力影响下落。如果它爆炸了,那可能是因为URDF中存在自碰撞。" + +#: ../../source/how-to/import_new_asset.rst:-1 +msgid "result of convert_urdf.py" +msgstr "convert_urdf.py 的结果" + +#: ../../source/how-to/import_new_asset.rst:127 +msgid "Using MJCF Importer" +msgstr "使用 MJCF 导入器" + +#: ../../source/how-to/import_new_asset.rst:129 +msgid "" +"Similar to the URDF Importer, the MJCF Importer also has a GUI interface. " +"Please check the documentation at `MJCF importer`_ for more details. For " +"using the MJCF importer from Python scripts, we include a utility tool " +"called ``convert_mjcf.py``. This script creates an instance of " +":class:`~sim.converters.MjcfConverterCfg` which is then passed to the " +":class:`~sim.converters.MjcfConverter` class." +msgstr "" +"与URDF导入器类似,MJCF导入器也有一个GUI界面。请查看 `MJCF导入器`_ 中的文档获取更多详细信息。要在Python脚本中使用MJCF导入器,我们提供了一个名为 ``convert_mjcf.py`` 的实用工具。该脚本创建了一个 :class:`~sim.converters.MjcfConverterCfg` 的实例,然后将其传递给 :class:`~sim.converters.MjcfConverter` 类。" + +#: ../../source/how-to/import_new_asset.rst:131 +msgid "" +"The default values for the importer's configuration parameters are specified" +" in the :class:`~sim.converters.MjcfConverterCfg` class. The configuration " +"parameters are listed below. We made a few commonly modified settings to be " +"available as command-line arguments when calling the ``convert_mjcf.py``, " +"and they are marked with ``*`` in the list. For a comprehensive list of the " +"configuration parameters, please check the the documentation at `MJCF " +"importer`_." +msgstr "" +"导入器配置参数的默认值在 :class:`~sim.converters.MjcfConverterCfg` 类中指定。配置参数如下所示。我们对一些常见修改的设置进行了调整,使其在调用 `convert_mjcf.py` 时可以作为命令行参数使用,并在列表中用 ``*`` 标记。有关配置参数的全面列表,请查看 `MJCF" +" importer`_ 处的文档。" + +#: ../../source/how-to/import_new_asset.rst:134 +msgid "" +":attr:`~sim.converters.MjcfConverterCfg.fix_base*` - Whether to fix the base" +" of the robot. This depends on whether you have a floating-base or fixed-" +"base robot. The command-line flag is ``--fix-base`` where when set, the " +"importer will fix the base of the robot, otherwise it will default to " +"floating-base." +msgstr "" +":attr:`~sim.converters.MjcfConverterCfg.fix_base*` - " +"是否固定机器人的基座。这取决于您的机器人是浮动基座还是固定基座。命令行标志是 ``--fix-" +"base`` ,设置时,导入器将固定机器人的基座,否则将默认为浮动基座。" + +#: ../../source/how-to/import_new_asset.rst:137 +msgid "" +":attr:`~sim.converters.MjcfConverterCfg.make_instanceable*` - Whether to " +"create instanceable assets. Usually, this should be set to ``True``. The " +"command-line flag is ``--make-instanceable`` where when set, the importer " +"will create instanceable assets, otherwise it will default to non-" +"instanceable." +msgstr "" +":attr:`~sim.converters.MjcfConverterCfg.make_instanceable*` - " +"是否创建可实例化资产。通常,应该设置为 ``True`` 。命令行标志是 ``--make-" +"instanceable`` ,设置为此值时,导入器将创建可实例化资产,否则将默认为不可实例化。" + +#: ../../source/how-to/import_new_asset.rst:140 +msgid "" +":attr:`~sim.converters.MjcfConverterCfg.import_sites*` - Whether to parse " +"the tag in the MJCF. Usually, this should be set to ``True``. The " +"command-line flag is ``--import-sites`` where when set, the importer will " +"parse the tag, otherwise it will default to not parsing the " +"tag." +msgstr "" +":attr:`~sim.converters.MjcfConverterCfg.import_sites*` - " +"是否解析MJCF中的标签。通常应设置为 ``True`` 。命令行标志是 ``--import-" +"sites`` ,当设置时,导入器将解析 标签,否则将默认不解析 标签。" + +#: ../../source/how-to/import_new_asset.rst:147 +msgid "" +"In this example, we use the MuJoCo model of the Unitree's H1 humanoid robot " +"in the `mujoco_menagerie`_." +msgstr "在这个例子中,我们使用Unitree的H1人形机器人在 `mujoco_menagerie`_ 中的MuJoCo模型。" + +#: ../../source/how-to/import_new_asset.rst:-1 +msgid "result of convert_mjcf.py" +msgstr "convert_mjcf.py 的结果" + +#: ../../source/how-to/import_new_asset.rst:176 msgid "Using Mesh Importer" msgstr "使用网格导入器" -#: ../../source/how-to/import_new_asset.rst:122 +#: ../../source/how-to/import_new_asset.rst:178 msgid "" "Omniverse Kit includes the mesh converter tool that uses the ASSIMP library " "to import assets from various mesh formats (e.g. OBJ, FBX, STL, glTF, etc.)." @@ -278,7 +373,7 @@ msgstr "" "等)。资产转换器工具作为 Omniverse Kit 的扩展提供。请查看 `资产转换器`_ 文档了解更多详细信息。然而,与 Isaac Sim 的 " "URDF 和 MJCF 导入器不同,资产转换器工具不支持创建实例化资产。这意味着如果在场景中多次使用资产,则资产将多次加载到内存中。" -#: ../../source/how-to/import_new_asset.rst:129 +#: ../../source/how-to/import_new_asset.rst:185 msgid "" "Thus, we include a utility tool called ``convert_mesh.py`` that uses the " "asset converter tool to import the asset and then converts it into an " @@ -297,34 +392,40 @@ msgstr "" "类。由于网格文件不包含任何物理信息,配置类接受不同的物理属性(如质量、碰撞形状等)作为输入。请查看 " ":class:`~sim.converters.MeshConverterCfg` 的文档了解更多详细信息。" -#: ../../source/how-to/import_new_asset.rst:140 +#: ../../source/how-to/import_new_asset.rst:196 msgid "" "We use an OBJ file of a cube to demonstrate the usage of the mesh converter." " The following shows the steps to clone the repository and run the " "converter:" msgstr "我们使用一个立方体的 OBJ 文件来演示网格转换器的用法。以下显示了克隆存储库并运行转换器的步骤:" -#: ../../source/how-to/import_new_asset.rst:160 +#: ../../source/how-to/import_new_asset.rst:216 +msgid "You may need to press 'F' to zoom in on the asset after import." +msgstr "你可能需要在导入后按下 'F' 键来放大资产。" + +#: ../../source/how-to/import_new_asset.rst:218 msgid "" -"Similar to the URDF converter, executing the above script will create two " -"USD files inside the " +"Similar to the URDF and MJCF converter, executing the above script will " +"create two USD files inside the " "``source/extensions/omni.isaac.lab_assets/data/Props/CubeMultiColor/`` " "directory. Additionally, if you press play on the opened window, you should " "see the asset fall down under the influence of gravity." msgstr "" -"与 URDF 转换器类似,执行上述脚本将在 " -"``source/extensions/omni.isaac.lab_assets/data/Props/CubeMultiColor/`` " -"目录内创建两个 USD 文件。此外,如果您在打开的窗口上按播放按钮,您应该能看到资产在重力的影响下落下。" +"类似于URDF和MJCF转换器,执行上述脚本将在 ``source/extensions/omni.isaac.lab_assets/data/Props/CubeMultiColor/`` 目录下创建两个USD文件。此外,如果您在打开的窗口上点击播放按钮,您应该看到资产在重力的作用下下落。" -#: ../../source/how-to/import_new_asset.rst:165 +#: ../../source/how-to/import_new_asset.rst:223 msgid "" "If you do not set the ``--mass`` flag, then no rigid body properties will be" " added to the asset. It will be imported as a static asset." msgstr "如果您不设置 ``--mass`` 标志,则不会向资产添加刚体属性。它将作为静态资产导入。" -#: ../../source/how-to/import_new_asset.rst:167 +#: ../../source/how-to/import_new_asset.rst:225 msgid "" "If you also do not set the ``--collision-approximation`` flag, then the " "asset will not have any collider properties as well and will be imported as " "a visual asset." msgstr "如果您还未设置 ``--collision-approximation`` 标志,则资产也不会有任何碰撞器属性,并且将作为视觉资产导入。" + +#: ../../source/how-to/import_new_asset.rst:-1 +msgid "result of convert_mesh.py" +msgstr "convert_mjcf.py 的结果" diff --git a/docs/locale/zh_CN/LC_MESSAGES/source/refs/changelog.po b/docs/locale/zh_CN/LC_MESSAGES/source/refs/changelog.po index 4b606b8e13..d377084fc3 100644 --- a/docs/locale/zh_CN/LC_MESSAGES/source/refs/changelog.po +++ b/docs/locale/zh_CN/LC_MESSAGES/source/refs/changelog.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Isaac Lab 1.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-03 12:23+0800\n" +"POT-Creation-Date: 2024-09-13 10:42+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Ziqi Fan \n" "Language: zh_CN\n" @@ -50,124 +50,372 @@ msgid "Extension containing the core framework of Isaac Lab." msgstr "" #: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2 -msgid "0.22.4 (2024-08-29)" +msgid "0.22.11 (2024-09-10)" msgstr "" #: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:5 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:14 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:36 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:57 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:89 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:119 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:130 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:161 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:207 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:229 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:286 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:323 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:345 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:403 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:420 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:485 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:523 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:542 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:551 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:608 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:647 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:686 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:696 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:755 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:795 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:806 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:818 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:841 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:861 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:911 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:952 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1010 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1027 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1037 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1080 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1090 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1112 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1123 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1134 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1155 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1197 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1238 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1353 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1393 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1422 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1439 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1492 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1508 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1532 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1543 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1560 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1604 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1614 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1689 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1765 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1830 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1840 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1876 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1920 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1929 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1949 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1963 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1978 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1996 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2036 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2047 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2065 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2101 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2131 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2155 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2182 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2199 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2225 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2250 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2268 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2290 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2311 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2332 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2356 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2396 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2406 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2460 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2477 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2487 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2510 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2526 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2535 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2561 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2598 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2615 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2638 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2657 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2679 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2707 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2732 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2785 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2803 +#: ../../../source/extensions/omni.isaac.lab_assets/docs/CHANGELOG.rst:5 +#: ../../../source/extensions/omni.isaac.lab_assets/docs/CHANGELOG.rst:14 +#: ../../../source/extensions/omni.isaac.lab_assets/docs/CHANGELOG.rst:23 +#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:5 +#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:26 +#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:62 +#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:100 +#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:109 +#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:121 +#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:138 +#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:146 +#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:156 +#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:173 +#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:184 +#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:194 +#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:239 +#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:360 +#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:386 +#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:433 +#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:458 +#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:485 +msgid "Added" +msgstr "" + +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:7 +msgid "" +"Added config class, support, and tests for MJCF conversion via standalone" +" python scripts." +msgstr "" + +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:11 +msgid "0.22.10 (2024-09-09)" +msgstr "" + +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:16 +msgid "" +"Added a seed parameter to the " +":attr:`omni.isaac.lab.envs.ManagerBasedEnvCfg` and " +":attr:`omni.isaac.lab.envs.DirectRLEnvCfg` classes to set the seed for " +"the environment. This seed is used to initialize the random number " +"generator for the environment." +msgstr "" + +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:18 +msgid "" +"Adapted the workflow scripts to set the seed for the environment using " +"the seed specified in the learning agent's configuration file or the " +"command line argument. This ensures that the simulation results are " +"reproducible across different runs." +msgstr "" + #: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:23 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:69 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:115 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:166 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:179 +msgid "0.22.9 (2024-09-08)" +msgstr "" + +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:26 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:110 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:170 #: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:202 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:238 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:282 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:301 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:312 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:324 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:340 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:386 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:402 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:428 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:439 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:460 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:512 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:529 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:548 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:592 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:216 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:264 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:335 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:427 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:438 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:448 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:465 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:490 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:560 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:570 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:595 #: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:631 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:689 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:699 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:711 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:656 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:676 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:734 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:744 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:825 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1052 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1432 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1485 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1501 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1526 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1664 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1684 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1755 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1800 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1811 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1854 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1938 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2054 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2120 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2170 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2213 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2234 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2280 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2301 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2346 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2367 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2378 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2414 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2432 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2497 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2548 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2569 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2588 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2605 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2629 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2713 +#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:15 +#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:31 +#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:42 +#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:82 +#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:91 +#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:130 +#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:165 +#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:279 +#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:290 +#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:305 +#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:316 +#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:333 +#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:343 +#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:376 +#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:395 +#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:448 +msgid "Changed" +msgstr "" + +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:28 +msgid "" +"Modified:meth:`quat_rotate` and :meth:`quat_rotate_inverse` operations to" +" use :meth:`torch.einsum` for faster processing of high dimensional input" +" tensors." +msgstr "" + +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:33 +msgid "0.22.8 (2024-09-06)" +msgstr "" + +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:38 +msgid "" +"Added support for property attributes in the " +":meth:``omni.isaac.lab.utils.configclass`` method. Earlier, the " +"configclass decorator failed to parse the property attributes correctly " +"and made them instance variables instead." +msgstr "" + +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:44 +msgid "0.22.7 (2024-09-05)" +msgstr "" + +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:47 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:67 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:78 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:96 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:142 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:188 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:239 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:252 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:275 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:311 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:355 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:374 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:385 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:397 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:413 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:459 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:475 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:501 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:512 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:533 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:585 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:602 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:621 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:665 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:704 #: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:762 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:778 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:793 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:804 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:815 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:849 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:886 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:913 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:926 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:944 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:972 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:996 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1072 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1094 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1103 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1113 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1134 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1143 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1154 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1175 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1185 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1195 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1204 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1225 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1238 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1249 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1259 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1269 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1287 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:772 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:784 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:835 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:851 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:866 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:877 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:888 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:922 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:959 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:986 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:999 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1017 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1045 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1069 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1145 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1167 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1176 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1186 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1207 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1216 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1227 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1248 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1258 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1268 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1277 #: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1298 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1310 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1326 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1338 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1385 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1395 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1441 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1499 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1508 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1519 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1551 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1563 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1576 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1585 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1601 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1628 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1640 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1651 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1661 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1671 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1703 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1715 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1311 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1322 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1332 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1342 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1360 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1371 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1383 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1399 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1411 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1458 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1468 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1514 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1572 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1581 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1592 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1624 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1636 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1649 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1658 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1674 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1701 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1713 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1724 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1734 #: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1744 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1793 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1809 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1821 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1833 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1895 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1911 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1931 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1941 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1951 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1999 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2010 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2021 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2037 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1776 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1788 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1817 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1866 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1882 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1894 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1906 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1968 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1984 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2004 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2014 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2024 #: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2072 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2088 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2116 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2185 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2249 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2268 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2317 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2366 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2376 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2394 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2448 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2468 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2507 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2575 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2590 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2601 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2615 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2625 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2650 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2666 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2680 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2689 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2703 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2721 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2083 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2094 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2110 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2145 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2161 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2189 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2258 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2322 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2341 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2390 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2439 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2449 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2467 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2521 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2541 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2580 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2648 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2663 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2674 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2688 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2698 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2723 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2739 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2753 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2762 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2776 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2794 #: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:71 #: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:200 #: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:210 @@ -189,135 +437,57 @@ msgstr "" msgid "Fixed" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:7 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:49 +msgid "" +"Adapted the ``A`` and ``D`` button bindings inside " +":meth:`omni.isaac.lab.device.Se3Keyboard` to make them now more-intuitive" +" to control the y-axis motion based on the right-hand rule." +msgstr "" + +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:54 +msgid "0.22.6 (2024-08-29)" +msgstr "" + +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:59 +msgid "" +"Added alternative data type \"distance_to_camera\" in " +":class:`omni.isaac.lab.sensors.TiledCamera` class to be consistent with " +"all other cameras (equal to type \"depth\")." +msgstr "" + +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:64 +msgid "0.22.5 (2024-08-29)" +msgstr "" + +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:69 +msgid "" +"Added missing SI units to the documentation of " +":class:`omni.isaac.lab.sensors.Camera` and " +":class:`omni.isaac.lab.sensors.RayCasterCamera`." +msgstr "" + +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:71 +msgid "" +"Added test to check " +":attr:`omni.isaac.lab.sensors.RayCasterCamera.set_intrinsic_matrices`" +msgstr "" + +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:75 +msgid "0.22.4 (2024-08-29)" +msgstr "" + +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:80 msgid "" "Fixed the support for class-bounded methods when creating a configclass " "out of them. Earlier, these methods were being made as instance methods " "which required initialization of the class to call the class-methods." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:13 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:86 msgid "0.22.3 (2024-08-28)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:16 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:46 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:57 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:88 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:134 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:156 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:213 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:250 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:272 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:330 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:347 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:412 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:450 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:469 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:478 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:535 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:574 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:613 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:623 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:682 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:722 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:733 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:745 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:768 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:788 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:838 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:879 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:937 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:954 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:964 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1007 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1017 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1039 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1050 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1061 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1082 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1124 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1165 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1280 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1320 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1349 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1366 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1419 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1435 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1459 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1470 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1487 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1531 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1541 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1616 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1692 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1757 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1767 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1803 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1847 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1856 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1876 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1890 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1905 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1923 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1963 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1974 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1992 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2028 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2058 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2082 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2109 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2126 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2152 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2177 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2195 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2217 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2238 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2259 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2283 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2323 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2333 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2387 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2404 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2414 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2437 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2453 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2462 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2488 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2525 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2542 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2565 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2584 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2606 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2634 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2659 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2712 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2730 -#: ../../../source/extensions/omni.isaac.lab_assets/docs/CHANGELOG.rst:5 -#: ../../../source/extensions/omni.isaac.lab_assets/docs/CHANGELOG.rst:14 -#: ../../../source/extensions/omni.isaac.lab_assets/docs/CHANGELOG.rst:23 -#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:5 -#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:26 -#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:62 -#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:100 -#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:109 -#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:121 -#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:138 -#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:146 -#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:156 -#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:173 -#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:184 -#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:194 -#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:239 -#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:360 -#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:386 -#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:433 -#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:458 -#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:485 -msgid "Added" -msgstr "" - -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:18 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:91 msgid "" "Added a class method to initialize camera configurations with an " "intrinsic matrix in the " @@ -326,14 +496,14 @@ msgid "" " classes." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:25 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:98 msgid "" "Fixed the ray direction in " ":func:`omni.isaac.lab.sensors.ray_caster.patterns.patterns.pinhole_camera_pattern`" " to point to the center of the pixel instead of the top-left corner." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:27 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:100 msgid "" "Fixed the clipping of the \"distance_to_image_plane\" depth image " "obtained using the " @@ -343,91 +513,21 @@ msgid "" "generated. This makes the behavior equal to the USD Camera." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:34 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:107 msgid "0.22.2 (2024-08-21)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:37 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:97 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:129 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:143 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:191 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:262 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:354 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:365 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:375 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:392 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:417 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:487 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:497 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:522 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:558 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:583 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:603 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:661 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:671 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:752 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:979 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1359 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1412 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1428 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1453 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1591 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1611 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1682 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1727 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1738 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1781 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1865 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1981 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2047 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2097 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2140 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2161 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2207 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2228 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2273 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2294 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2305 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2341 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2359 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2424 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2475 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2496 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2515 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2532 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2556 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2640 -#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:15 -#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:31 -#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:42 -#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:82 -#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:91 -#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:130 -#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:165 -#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:279 -#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:290 -#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:305 -#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:316 -#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:333 -#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:343 -#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:376 -#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:395 -#: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:448 -msgid "Changed" -msgstr "" - -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:39 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:112 msgid "" "Disabled default viewport in certain headless scenarios for better " "performance." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:43 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:116 msgid "0.22.1 (2024-08-17)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:48 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:121 msgid "" "Added APIs to interact with the physics simulation of deformable objects." " This includes setting the material properties, setting kinematic " @@ -436,28 +536,28 @@ msgid "" ":mod:`omni.isaac.lab.assets.DeformableObject` class." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:54 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:127 msgid "0.22.0 (2024-08-14)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:59 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:132 msgid "" "Added :mod:`~omni.isaac.lab.utils.modifiers` module to provide framework " "for configurable and custom observation data modifiers." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:61 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:134 msgid "" "Adapted the :class:`~omni.isaac.lab.managers.ObservationManager` class to" " support custom modifiers. These are applied to the observation data " "before applying any noise or scaling operations." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:66 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:139 msgid "0.21.2 (2024-08-13)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:71 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:144 msgid "" "Moved event mode-based checks in the " ":meth:`omni.isaac.lab.managers.EventManager.apply` method outside the " @@ -465,7 +565,7 @@ msgid "" " and improves readability." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:73 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:146 msgid "" "Fixed the logic for global and per environment interval times when using " "the \"interval\" mode inside the event manager. Earlier, the internal " @@ -473,81 +573,81 @@ msgid "" " inside the loop that iterates over the event terms." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:79 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:152 msgid "0.21.1 (2024-08-06)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:81 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:154 msgid "" "Added a flag to preserve joint ordering inside the " ":class:`omni.isaac.lab.envs.mdp.JointAction` action term." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:85 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:158 msgid "0.21.0 (2024-08-05)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:90 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:163 msgid "" "Added the command line argument ``--device`` in " ":class:`~omni.isaac.lab.app.AppLauncher`. Valid options are:" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:92 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:165 msgid "``cpu``: Use CPU." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:93 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:166 msgid "``cuda``: Use GPU with device ID ``0``." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:94 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:167 msgid "" "``cuda:N``: Use GPU, where N is the device ID. For example, ``cuda:0``. " "The default value is ``cuda:0``." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:99 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:172 msgid "" "Simplified setting the device throughout the code by relying on " ":attr:`omni.isaac.lab.sim.SimulationCfg.device` to activate gpu/cpu " "pipelines." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:103 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:218 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:289 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:857 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:868 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:896 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:986 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1028 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1374 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1477 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2671 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:176 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:291 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:362 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:930 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:941 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:969 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1059 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1101 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1447 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1550 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2744 #: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:52 msgid "Removed" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:105 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:178 msgid "" "Removed the parameter " ":attr:`omni.isaac.lab.sim.SimulationCfg.use_gpu_pipeline`. This is now " "directly inferred from :attr:`omni.isaac.lab.sim.SimulationCfg.device`." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:107 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:180 msgid "" "Removed the command line input argument ``--device_id`` in " ":class:`~omni.isaac.lab.app.AppLauncher`. The device id can now be set " "using the ``--device`` argument, for example with ``--device cuda:0``." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:112 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:185 msgid "0.20.8 (2024-08-02)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:117 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:190 msgid "" "Fixed the handling of observation terms with different shapes in the " ":class:`~omni.isaac.lab.managers.ObservationManager` class. Earlier, the " @@ -557,30 +657,30 @@ msgid "" " as a dictionary of tensors." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:121 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:194 msgid "" "Improved the error message when the observation terms are not of the same" " shape in the :class:`~omni.isaac.lab.managers.ObservationManager` class " "and the terms are being concatenated." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:126 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:199 msgid "0.20.7 (2024-08-02)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:131 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:204 msgid "Performance improvements for material randomization in events." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:136 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:209 msgid "Added minimum randomization frequency for reset mode randomizations." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:140 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:213 msgid "0.20.6 (2024-08-02)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:145 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:218 msgid "" "Removed the hierarchy from :class:`~omni.isaac.lab.assets.RigidObject` " "class to :class:`~omni.isaac.lab.assets.Articulation` class. Previously, " @@ -591,21 +691,21 @@ msgid "" " code is improved." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:153 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:226 msgid "0.20.5 (2024-08-02)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:158 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:231 msgid "" "Added :attr:`omni.isaac.lab.terrain.TerrainGeneratorCfg.border_height` to" " set the height of the border around the terrain." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:163 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:236 msgid "0.20.4 (2024-08-02)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:168 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:241 msgid "" "Fixed the caching of terrains when using the " ":class:`omni.isaac.lab.terrains.TerrainGenerator` class. Earlier, the " @@ -616,11 +716,11 @@ msgid "" "difficulty levels are sampled in the same order between different runs." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:176 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:249 msgid "0.20.3 (2024-08-02)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:181 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:254 msgid "" "Fixed the setting of translation and orientation when spawning a mesh " "prim. Earlier, the translation and orientation was being applied both on " @@ -629,11 +729,11 @@ msgid "" "not the intended behavior." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:188 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:261 msgid "0.20.2 (2024-08-02)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:193 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:266 msgid "" "Modified the computation of body acceleration for rigid body data to use " "PhysX APIs instead of numerical finite-differencing. This removes the " @@ -641,11 +741,11 @@ msgid "" "data buffer." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:199 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:272 msgid "0.20.1 (2024-07-30)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:204 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:277 msgid "" "Fixed the :meth:`omni.isaac.lab.utils.math.wrap_to_pi` method to handle " "the wrapping of angles correctly. Earlier, the method was not wrapping " @@ -653,21 +753,21 @@ msgid "" "the range [-2*pi, 2*pi]." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:210 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:283 msgid "0.20.0 (2024-07-26)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:215 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:288 msgid "Support for the Isaac Sim 4.1.0 release." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:220 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:293 msgid "" "The ``mdp.add_body_mass`` method in the events. Please use the " ":meth:`omni.isaac.lab.envs.mdp.randomize_rigid_body_mass` method instead." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:222 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:295 msgid "" "The classes ``managers.RandomizationManager`` and " "``managers.RandomizationTermCfg`` are replaced with " @@ -675,41 +775,41 @@ msgid "" ":class:`omni.isaac.lab.managers.EventTermCfg` classes." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:224 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:297 msgid "" "The following properties in " ":class:`omni.isaac.lab.sensors.FrameTransformerData`:" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:226 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:299 msgid "" "``target_rot_source`` --> " ":attr:`~omni.isaac.lab.sensors.FrameTransformerData.target_quat_w`" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:227 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:300 msgid "" "``target_rot_w`` --> " ":attr:`~omni.isaac.lab.sensors.FrameTransformerData.target_quat_source`" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:228 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:301 msgid "" "``source_rot_w`` --> " ":attr:`~omni.isaac.lab.sensors.FrameTransformerData.source_quat_w`" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:230 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:303 msgid "" "The kit experience file ``isaaclab.backwards.compatible.kit``. This is " "followed by dropping the support for Isaac Sim 2023.1.1 completely." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:235 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:308 msgid "0.19.4 (2024-07-13)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:240 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:313 msgid "" "Added the call to \"startup\" events when using the " ":class:`~omni.isaac.lab.envs.ManagerBasedEnv` class. Earlier, the " @@ -719,43 +819,43 @@ msgid "" "\"startup\" events were called in the constructor." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:247 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:320 msgid "0.19.3 (2024-07-13)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:252 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:325 msgid "" "Added schemas for setting and modifying deformable body properties on a " "USD prim." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:253 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:326 msgid "Added API to spawn a deformable body material in the simulation." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:254 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:327 msgid "" "Added APIs to spawn rigid and deformable meshes of primitive shapes " "(cone, cylinder, sphere, box, capsule) in the simulation. This is " "possible through the :mod:`omni.isaac.lab.sim.spawners.meshes` module." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:259 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:332 msgid "0.19.2 (2024-07-05)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:264 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:337 msgid "" "Modified cloning scheme based on the attribute " ":attr:`~omni.isaac.lab.scene.InteractiveSceneCfg.replicate_physics` to " "determine whether environment is homogeneous or heterogeneous." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:269 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:342 msgid "0.19.1 (2024-07-05)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:274 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:347 msgid "" "Added a lidar pattern function " ":func:`~omni.isaac.lab.sensors.ray_caster.patterns.patterns.lidar_pattern`" @@ -763,11 +863,11 @@ msgid "" ":class:`~omni.isaac.lab.sensors.ray_caster.patterns_cfg.LidarPatternCfg`." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:279 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:352 msgid "0.19.0 (2024-07-04)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:284 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:357 msgid "" "Fixed parsing of articulations with nested rigid links while using the " ":class:`omni.isaac.lab.assets.Articulation` class. Earlier, the class " @@ -775,7 +875,7 @@ msgid "" "the rigid links were not being parsed correctly by the PhysX view." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:291 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:364 msgid "" "Removed the attribute :attr:`body_physx_view` from the " ":class:`omni.isaac.lab.assets.Articulation` and " @@ -784,17 +884,17 @@ msgid "" " following the same ordering." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:294 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:367 msgid "" "Dropped support for Isaac Sim 2023.1.1. The minimum supported version is " "now Isaac Sim 4.0.0." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:298 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:371 msgid "0.18.6 (2024-07-01)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:303 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:376 msgid "" "Fixed the environment stepping logic. Earlier, the environments' " "rendering logic was updating the kit app which would in turn step the " @@ -802,11 +902,11 @@ msgid "" "Now, a render call only does rendering and does not step the physics." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:309 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:382 msgid "0.18.5 (2024-06-26)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:314 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:387 msgid "" "Fixed the gravity vector direction used inside the " ":class:`omni.isaac.lab.assets.RigidObjectData` class. Earlier, the " @@ -816,18 +916,18 @@ msgid "" " projection of the gravity vector on the object." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:321 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:394 msgid "0.18.4 (2024-06-26)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:326 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:399 msgid "" "Fixed double reference count of the physics sim view inside the asset " "classes. This was causing issues when destroying the asset class instance" " since the physics sim view was not being properly released." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:332 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:405 msgid "" "Added the attribute " ":attr:`~omni.isaac.lab.assets.AssetBase.is_initialized` to check if the " @@ -835,11 +935,11 @@ msgid "" "ensure that the asset or sensor is ready to use in the simulation." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:337 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:410 msgid "0.18.3 (2024-06-25)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:342 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:415 msgid "" "Fixed the docstrings at multiple places related to the different buffer " "implementations inside the :mod:`omni.isaac.lab.utils.buffers` module. " @@ -847,7 +947,7 @@ msgid "" "about the classes and their methods." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:349 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:422 msgid "" "Added the field for fixed tendom names in the " ":class:`omni.isaac.lab.assets.ArticulationData` class. Earlier, this " @@ -855,7 +955,7 @@ msgid "" "related information such as joint or body names." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:356 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:429 msgid "" "Renamed the fields ``min_num_time_lags`` and ``max_num_time_lags`` to " "``min_delay`` and ``max_delay`` in the " @@ -863,22 +963,22 @@ msgid "" "make the naming simpler to understand." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:362 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:435 msgid "0.18.2 (2024-06-25)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:367 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:440 msgid "" "Moved the configuration for tile-rendered camera into its own file named " "``tiled_camera_cfg.py``. This makes it easier to follow where the " "configuration is located and how it is related to the class." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:372 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:445 msgid "0.18.1 (2024-06-25)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:377 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:450 msgid "" "Ensured that a parity between class and its configuration class is " "explicitly visible in the :mod:`omni.isaac.lab.envs` module. This makes " @@ -887,29 +987,29 @@ msgid "" "accessible through the same module." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:383 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:456 msgid "0.18.0 (2024-06-13)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:388 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:461 msgid "" "Fixed the rendering logic to render at the specified interval. Earlier, " "the substep parameter had no effect and rendering would happen once every" " env.step() when active." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:394 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:467 msgid "" "Renamed :attr:`omni.isaac.lab.sim.SimulationCfg.substeps` to " ":attr:`omni.isaac.lab.sim.SimulationCfg.render_interval`. The render " "logic is now integrated in the decimation loop of the environment." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:399 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:472 msgid "0.17.13 (2024-06-13)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:404 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:477 msgid "" "Fixed the orientation reset logic in " ":func:`omni.isaac.lab.envs.mdp.events.reset_root_state_uniform` to make " @@ -917,17 +1017,17 @@ msgid "" " relative to the default and the orientation not." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:409 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:482 msgid "0.17.12 (2024-06-13)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:414 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:487 msgid "" "Added the class :class:`omni.isaac.lab.utils.buffers.TimestampedBuffer` " "to store timestamped data." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:419 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:492 msgid "" "Added time-stamped buffers in the classes " ":class:`omni.isaac.lab.assets.RigidObjectData` and " @@ -937,11 +1037,11 @@ msgid "" " used by the task." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:425 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:498 msgid "0.17.11 (2024-05-30)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:430 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:503 msgid "" "Fixed :class:`omni.isaac.lab.sensor.ContactSensor` not loading correctly " "in extension mode. Earlier, the " @@ -951,11 +1051,11 @@ msgid "" " which references it." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:436 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:509 msgid "0.17.10 (2024-05-30)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:441 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:514 msgid "" "Fixed compound classes being directly assigned in ``default_factory`` " "generator method :meth:`omni.isaac.lab.utils.configclass._return_f`, " @@ -964,163 +1064,163 @@ msgid "" "``default_factory`` method." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:447 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:520 msgid "0.17.9 (2024-05-30)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:452 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:525 msgid "" "Added ``variants`` attribute to the " ":class:`omni.isaac.lab.sim.from_files.UsdFileCfg` class to select USD " "variants when loading assets from USD files." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:457 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:530 msgid "0.17.8 (2024-05-28)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:462 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:535 msgid "" "Implemented the reset methods in the action terms to avoid returning " "outdated data." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:466 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:539 msgid "0.17.7 (2024-05-28)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:471 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:544 msgid "" "Added debug visualization utilities in the " ":class:`omni.isaac.lab.managers.ActionManager` class." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:475 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:548 msgid "0.17.6 (2024-05-27)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:480 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:553 msgid "Added ``wp.init()`` call in Warp utils." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:484 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:557 msgid "0.17.5 (2024-05-22)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:489 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:562 msgid "" "Websocket livestreaming is no longer supported. Valid livestream options " "are {0, 1, 2}." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:490 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:563 msgid "WebRTC livestream is now set with livestream=2." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:494 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:567 msgid "0.17.4 (2024-05-17)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:499 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:572 msgid "" "Modified the noise functions to also support add, scale, and abs " "operations on the data. Added aliases to ensure backward compatibility " "with the previous functions." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:502 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:575 msgid "" "Added :attr:`omni.isaac.lab.utils.noise.NoiseCfg.operation` for the " "different operations." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:503 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:576 msgid "" "Renamed ``constant_bias_noise`` to " ":func:`omni.isaac.lab.utils.noise.constant_noise`." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:504 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:577 msgid "" "Renamed ``additive_uniform_noise`` to " ":func:`omni.isaac.lab.utils.noise.uniform_noise`." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:505 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:578 msgid "" "Renamed ``additive_gaussian_noise`` to " ":func:`omni.isaac.lab.utils.noise.gaussian_noise`." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:509 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:582 msgid "0.17.3 (2024-05-15)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:514 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:587 msgid "Set ``hide_ui`` flag in the app launcher for livestream." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:515 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:588 msgid "Fix native client livestream extensions." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:519 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:592 msgid "0.17.2 (2024-05-09)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:524 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:597 msgid "" "Renamed ``_range`` to ``distribution_params`` in ``events.py`` for " "methods that defined a distribution." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:525 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:598 msgid "" "Apply additive/scaling randomization noise on default data instead of " "current data." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:526 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:599 msgid "Changed material bucketing logic to prevent exceeding 64k materials." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:531 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:604 msgid "" "Fixed broadcasting issues with indexing when environment and joint IDs " "are provided." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:532 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:605 msgid "Fixed incorrect tensor dimensions when setting a subset of environments." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:537 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:610 msgid "Added support for randomization of fixed tendon parameters." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:538 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:611 msgid "Added support for randomization of dof limits." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:539 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:612 msgid "Added support for randomization of gravity." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:540 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:613 msgid "Added support for Gaussian sampling." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:541 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:614 msgid "" "Added default buffers to Articulation/Rigid object data classes for " "randomization." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:545 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:618 msgid "0.17.1 (2024-05-10)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:550 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:623 msgid "" "Added attribute " ":attr:`omni.isaac.lab.sim.converters.UrdfConverterCfg.override_joint_dynamics`" @@ -1128,83 +1228,83 @@ msgid "" ":class:`omni.isaac.lab.sim.converters.UrdfConverter`." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:555 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:628 msgid "0.17.0 (2024-05-07)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:560 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:633 msgid "Renamed ``BaseEnv`` to :class:`omni.isaac.lab.envs.ManagerBasedEnv`." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:561 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:634 msgid "Renamed ``base_env.py`` to ``manager_based_env.py``." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:562 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:635 msgid "Renamed ``BaseEnvCfg`` to :class:`omni.isaac.lab.envs.ManagerBasedEnvCfg`." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:563 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:636 msgid "Renamed ``RLTaskEnv`` to :class:`omni.isaac.lab.envs.ManagerBasedRLEnv`." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:564 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:637 msgid "Renamed ``rl_task_env.py`` to ``manager_based_rl_env.py``." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:565 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:638 msgid "" "Renamed ``RLTaskEnvCfg`` to " ":class:`omni.isaac.lab.envs.ManagerBasedRLEnvCfg`." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:566 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:639 msgid "Renamed ``rl_task_env_cfg.py`` to ``rl_env_cfg.py``." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:567 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:640 msgid "Renamed ``OIGEEnv`` to :class:`omni.isaac.lab.envs.DirectRLEnv`." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:568 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:641 msgid "Renamed ``oige_env.py`` to ``direct_rl_env.py``." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:569 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:642 msgid "" "Renamed ``RLTaskEnvWindow`` to " ":class:`omni.isaac.lab.envs.ui.ManagerBasedRLEnvWindow`." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:570 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:643 msgid "Renamed ``rl_task_env_window.py`` to ``manager_based_rl_env_window.py``." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:571 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:644 msgid "" "Renamed all references of ``BaseEnv``, ``BaseEnvCfg``, ``RLTaskEnv``, " "``RLTaskEnvCfg``, ``OIGEEnv``, and ``RLTaskEnvWindow``." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:576 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:649 msgid "Added direct workflow base class :class:`omni.isaac.lab.envs.DirectRLEnv`." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:580 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:653 msgid "0.16.4 (2024-05-06)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:585 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:658 msgid "" "Added :class:`omni.isaac.lab.sensors.TiledCamera` to support tiled " "rendering with RGB and depth." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:589 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:662 msgid "0.16.3 (2024-04-26)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:594 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:667 msgid "" "Fixed parsing of filter prim path expressions in the " ":class:`omni.isaac.lab.sensors.ContactSensor` class. Earlier, the filter " @@ -1212,47 +1312,47 @@ msgid "" " specified as regex expressions instead of glob expressions." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:600 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:673 msgid "0.16.2 (2024-04-25)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:605 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:678 msgid "Simplified the installation procedure, isaaclab -e is no longer needed" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:606 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:679 msgid "Updated torch dependency to 2.2.2" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:610 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:683 msgid "0.16.1 (2024-04-20)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:615 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:688 msgid "" "Added attribute " ":attr:`omni.isaac.lab.sim.ArticulationRootPropertiesCfg.fix_root_link` to" " fix the root link of an articulation to the world frame." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:620 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:693 msgid "0.16.0 (2024-04-16)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:625 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:698 msgid "" "Added the function :meth:`omni.isaac.lab.utils.math.quat_unique` to " "standardize quaternion representations, i.e. always have a non-negative " "real part." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:627 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:700 msgid "" "Added events terms for randomizing mass by scale, simulation joint " "properties (stiffness, damping, armature, and friction)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:633 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:706 msgid "" "Added clamping of joint positions and velocities in event terms for " "resetting joints. The simulation does not throw an error if the set " @@ -1260,69 +1360,69 @@ msgid "" "before setting." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:635 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:708 msgid "" "Fixed :class:`omni.isaac.lab.envs.mdp.EMAJointPositionToLimitsActionCfg` " "to smoothen the actions at environment frequency instead of simulation " "frequency." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:638 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:711 msgid "" "Renamed the following functions in :meth:`omni.isaac.lab.envs.mdp` to " "avoid confusions:" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:640 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:713 msgid "Observation: :meth:`joint_pos_norm` -> :meth:`joint_pos_limit_normalized`" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:641 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:714 msgid "" "Action: :class:`ExponentialMovingAverageJointPositionAction` -> " ":class:`EMAJointPositionToLimitsAction`" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:642 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:715 msgid "Termination: :meth:`base_height` -> :meth:`root_height_below_minimum`" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:643 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:716 msgid "Termination: :meth:`joint_pos_limit` -> :meth:`joint_pos_out_of_limit`" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:644 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:717 msgid "" "Termination: :meth:`joint_pos_manual_limit` -> " ":meth:`joint_pos_out_of_manual_limit`" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:645 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:718 msgid "Termination: :meth:`joint_vel_limit` -> :meth:`joint_vel_out_of_limit`" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:646 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:719 msgid "" "Termination: :meth:`joint_vel_manual_limit` -> " ":meth:`joint_vel_out_of_manual_limit`" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:647 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:720 msgid "" "Termination: :meth:`joint_torque_limit` -> " ":meth:`joint_effort_out_of_limit`" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:650 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:826 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1211 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2167 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2348 -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2694 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:723 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:899 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1284 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2240 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2421 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2767 msgid "Deprecated" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:652 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:725 msgid "" "Deprecated the function :meth:`omni.isaac.lab.envs.mdp.add_body_mass` in " "favor of :meth:`omni.isaac.lab.envs.mdp.randomize_rigid_body_mass`. This " @@ -1330,27 +1430,27 @@ msgid "" "or set) and sampling distributions." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:658 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:731 msgid "0.15.13 (2024-04-16)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:663 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:736 msgid "" "Improved startup performance by enabling rendering-based extensions only " "when necessary and caching of nucleus directory." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:664 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:737 msgid "" "Renamed the flag ``OFFSCREEN_RENDER`` or ``--offscreen_render`` to " "``ENABLE_CAMERAS`` or ``--enable_cameras`` respectively." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:668 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:741 msgid "0.15.12 (2024-04-16)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:673 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:746 msgid "" "Replaced calls to the ``check_file_path`` function in the " ":mod:`omni.isaac.lab.sim.spawners.from_files` with the USD stage resolve " @@ -1358,11 +1458,11 @@ msgid "" "paths by avoiding Nucleus server calls." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:679 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:752 msgid "0.15.11 (2024-04-15)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:684 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:757 msgid "" "Added the :meth:`omni.isaac.lab.sim.SimulationContext.has_rtx_sensors` " "method to check if any RTX-related sensors such as cameras have been " @@ -1370,7 +1470,7 @@ msgid "" "requires RTX rendering during step or not." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:691 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:764 msgid "" "Fixed the rendering of RTX-related sensors such as cameras inside the " ":class:`omni.isaac.lab.envs.RLTaskEnv` class. Earlier the rendering did " @@ -1378,11 +1478,11 @@ msgid "" "empty." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:696 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:769 msgid "0.15.10 (2024-04-11)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:701 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:774 msgid "" "Fixed sharing of the same memory address between returned tensors from " "observation terms in the " @@ -1392,11 +1492,11 @@ msgid "" "operations." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:708 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:781 msgid "0.15.9 (2024-04-04)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:713 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:786 msgid "" "Fixed assignment of individual termination terms inside the " ":class:`omni.isaac.lab.managers.TerminationManager` class. Earlier, the " @@ -1405,22 +1505,22 @@ msgid "" "0.15.1." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:719 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:792 msgid "0.15.8 (2024-04-02)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:724 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:797 msgid "" "Added option to define ordering of points for the mesh-grid generation in" " the :func:`omni.isaac.lab.sensors.ray_caster.patterns.grid_pattern`. " "This parameter defaults to 'xy' for backward compatibility." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:730 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:803 msgid "0.15.7 (2024-03-28)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:735 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:808 msgid "" "Adds option to return indices/data in the specified query keys order in " ":class:`omni.isaac.lab.managers.SceneEntityCfg` class, and the respective" @@ -1428,11 +1528,11 @@ msgid "" ":func:`omni.isaac.lab.utils.string.resolve_matching_names` functions." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:742 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:815 msgid "0.15.6 (2024-03-28)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:747 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:820 msgid "" "Extended the :class:`omni.isaac.lab.app.AppLauncher` class to support the" " loading of experience files from the command line. This allows users to " @@ -1440,69 +1540,69 @@ msgid "" " multi-camera rendering or headless mode)." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:754 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:827 msgid "" "Changed default loading of experience files in the " ":class:`omni.isaac.lab.app.AppLauncher` class from the ones provided by " "Isaac Sim to the ones provided in Isaac Lab's ``source/apps`` directory." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:759 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:832 msgid "0.15.5 (2024-03-23)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:764 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:837 msgid "" "Fixed the env origins in :meth:`_compute_env_origins_grid` of " ":class:`omni.isaac.lab.terrain.TerrainImporter` to match that obtained " "from the Isaac Sim :class:`omni.isaac.cloner.GridCloner` class." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:770 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:843 msgid "" "Added unit test to ensure consistency between environment origins " "generated by IsaacSim's Grid Cloner and those produced by the " "TerrainImporter." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:775 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:848 msgid "0.15.4 (2024-03-22)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:780 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:853 msgid "" "Fixed the :class:`omni.isaac.lab.envs.mdp.actions.NonHolonomicActionCfg` " "class to use the correct variable when applying actions." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:785 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:858 msgid "0.15.3 (2024-03-21)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:790 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:863 msgid "" "Added unit test to check that " ":class:`omni.isaac.lab.scene.InteractiveScene` entity data is not shared " "between separate instances." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:795 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:868 msgid "" "Moved class variables in :class:`omni.isaac.lab.scene.InteractiveScene` " "to correctly be assigned as instance variables." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:797 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:870 msgid "" "Removed custom ``__del__`` magic method from " ":class:`omni.isaac.lab.scene.InteractiveScene`." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:801 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:874 msgid "0.15.2 (2024-03-21)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:806 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:879 msgid "" "Added resolving of relative paths for the main asset USD file when using " "the :class:`omni.isaac.lab.sim.converters.UrdfConverter` class. This is " @@ -1510,17 +1610,17 @@ msgid "" "asset file is moved to a different location." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:812 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:885 msgid "0.15.1 (2024-03-19)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:817 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:890 msgid "" "Fixed the imitation learning workflow example script, updating Isaac Lab " "and Robomimic API calls." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:818 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:891 msgid "" "Removed the resetting of :attr:`_term_dones` in the " ":meth:`omni.isaac.lab.managers.TerminationManager.reset`. Previously, the" @@ -1528,11 +1628,11 @@ msgid "" "specific term's values externally." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:823 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:896 msgid "0.15.0 (2024-03-17)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:828 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:901 msgid "" "Renamed :class:`omni.isaac.lab.managers.RandomizationManager` to " ":class:`omni.isaac.lab.managers.EventManager` class for clarification as " @@ -1540,34 +1640,34 @@ msgid "" "randomizations." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:830 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:903 msgid "" "Renamed :class:`omni.isaac.lab.managers.RandomizationTermCfg` to " ":class:`omni.isaac.lab.managers.EventTermCfg` for consistency with the " "class name change." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:835 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:908 msgid "0.14.1 (2024-03-16)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:840 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:913 msgid "" "Added simulation schemas for joint drive and fixed tendons. These can be " "configured for assets imported from file formats." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:842 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:915 msgid "" "Added logging of tendon properties to the articulation class (if they are" " present in the USD prim)." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:846 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:919 msgid "0.14.0 (2024-03-15)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:851 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:924 msgid "" "Fixed the ordering of body names used in the " ":class:`omni.isaac.lab.assets.Articulation` class. Earlier, the body " @@ -1577,7 +1677,7 @@ msgid "" " matrices, etc.)." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:859 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:932 msgid "" "Removed the attribute :attr:`body_physx_view` from the " ":class:`omni.isaac.lab.assets.RigidObject` and " @@ -1586,11 +1686,11 @@ msgid "" " following the same ordering." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:865 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:938 msgid "0.13.1 (2024-03-14)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:870 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:943 msgid "" "Removed the :mod:`omni.isaac.lab.compat` module. This module was used to " "provide compatibility with older versions of Isaac Sim. It is no longer " @@ -1598,11 +1698,11 @@ msgid "" "classes." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:876 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:949 msgid "0.13.0 (2024-03-12)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:881 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:954 msgid "" "Added support for the following data types inside the " ":class:`omni.isaac.lab.sensors.Camera` class: " @@ -1611,7 +1711,7 @@ msgid "" "annotations." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:888 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:961 msgid "" "Fixed handling of semantic filtering inside the " ":class:`omni.isaac.lab.sensors.Camera` class. Earlier, the annotator was " @@ -1620,7 +1720,7 @@ msgid "" " be set to the synthetic data interface directly." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:891 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:964 msgid "" "Fixed the return shape of colored images for segmentation data types " "inside the :class:`omni.isaac.lab.sensors.Camera` class. Earlier, the " @@ -1629,7 +1729,7 @@ msgid "" " the annotation type." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:898 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:971 msgid "" "Dropped support for ``instance_segmentation`` and " "``instance_id_segmentation`` annotations in the " @@ -1637,7 +1737,7 @@ msgid "" " should be used instead." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:900 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:973 msgid "" "Renamed the argument " ":attr:`omni.isaac.lab.sensors.CameraCfg.semantic_types` to " @@ -1645,7 +1745,7 @@ msgid "" "aligned with Replicator's terminology for semantic filter predicates." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:903 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:976 msgid "" "Replaced the argument :attr:`omni.isaac.lab.sensors.CameraCfg.colorize` " "with separate colorized arguments for each annotation type " @@ -1656,29 +1756,29 @@ msgid "" ":attr:`~omni.isaac.lab.sensors.CameraCfg.colorize_semantic_segmentation`)." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:910 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:983 msgid "0.12.4 (2024-03-11)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:916 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:989 msgid "" "Adapted randomization terms to deal with ``slice`` for the body indices. " "Earlier, the terms were not able to handle the slice object and were " "throwing an error." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:918 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:991 msgid "" "Added ``slice`` type-hinting to all body and joint related methods in the" " rigid body and articulation classes. This is to make it clear that the " "methods can handle both list of indices and slices." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:923 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:996 msgid "0.12.3 (2024-03-11)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:928 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1001 msgid "" "Added signal handler to the :class:`omni.isaac.lab.app.AppLauncher` class" " to catch the ``SIGINT`` signal and close the application gracefully. " @@ -1686,47 +1786,47 @@ msgid "" "``Ctrl+C`` to close the application." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:934 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1007 msgid "0.12.2 (2024-03-10)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:939 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1012 msgid "Added observation terms for states of a rigid object in world frame." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:940 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1013 msgid "" "Added randomization terms to set root state with randomized orientation " "and joint state within user-specified limits." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:941 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1014 msgid "Added reward term for penalizing specific termination terms." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:946 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1019 msgid "" "Improved sampling of states inside randomization terms. Earlier, the code" " did multiple torch calls for sampling different components of the " "vector. Now, it uses a single call to sample the entire vector." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:951 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1024 msgid "0.12.1 (2024-03-09)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:956 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1029 msgid "" "Added an option to the last actions observation term to get a specific " "term by name from the action manager. If None, the behavior remains the " "same as before (the entire action is returned)." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:961 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1034 msgid "0.12.0 (2024-03-08)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:966 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1039 msgid "" "Added functionality to sample flat patches on a generated terrain. This " "can be configured using " @@ -1734,24 +1834,24 @@ msgid "" "attribute." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:968 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1041 msgid "" "Added a randomization function for setting terrain-aware root state. " "Through this, an asset can be reset to a randomly sampled flat patches." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:974 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1047 msgid "" "Separated normal and terrain-base position commands. The terrain based " "commands rely on the terrain to sample flat patches for setting the " "target position." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:976 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1049 msgid "Fixed command resample termination function." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:981 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1054 msgid "" "Added the attribute " ":attr:`omni.isaac.lab.envs.mdp.commands.UniformVelocityCommandCfg.heading_control_stiffness`" @@ -1759,7 +1859,7 @@ msgid "" "command term. Earlier, this was hard-coded to 0.5 inside the term." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:988 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1061 msgid "" "Removed the function :meth:`sample_new_targets` in the terrain importer. " "Instead the attribute " @@ -1767,11 +1867,11 @@ msgid "" "used to sample new targets." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:993 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1066 msgid "0.11.3 (2024-03-04)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:998 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1071 msgid "" "Corrects the functions " ":func:`omni.isaac.lab.utils.math.axis_angle_from_quat` and " @@ -1781,11 +1881,11 @@ msgid "" "dimensions." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1004 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1077 msgid "0.11.2 (2024-03-04)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1009 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1082 msgid "" "Added checks for default joint position and joint velocity in the " "articulation class. This is to prevent users from configuring values for " @@ -1793,28 +1893,28 @@ msgid "" "simulation." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1014 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1087 msgid "0.11.1 (2024-02-29)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1019 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1092 msgid "" "Replaced the default values for ``joint_ids`` and ``body_ids`` from " "``None`` to ``slice(None)`` in the " ":class:`omni.isaac.lab.managers.SceneEntityCfg`." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1021 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1094 msgid "" "Adapted rewards and observations terms so that the users can query a " "subset of joints and bodies." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1025 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1098 msgid "0.11.0 (2024-02-27)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1030 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1103 msgid "" "Dropped support for Isaac Sim<=2022.2. As part of this, removed the " "components of :class:`omni.isaac.lab.app.AppLauncher` which handled ROS " @@ -1822,15 +1922,15 @@ msgid "" " the load order to avoid crashes." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1032 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1105 msgid "Upgraded Dockerfile to use ISAACSIM_VERSION=2023.1.1 by default." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1036 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1109 msgid "0.10.28 (2024-02-29)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1041 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1114 msgid "" "Implemented relative and moving average joint position action terms. " "These allow the user to specify the target joint positions as relative to" @@ -1838,11 +1938,11 @@ msgid "" "positions over a window of time." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1047 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1120 msgid "0.10.27 (2024-02-28)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1052 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1125 msgid "" "Added UI feature to start and stop animation recording in the stage when " "running an environment. To enable this feature, please pass the argument " @@ -1850,11 +1950,11 @@ msgid "" "operations. Be aware that this will slow down the simulation." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1058 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1131 msgid "0.10.26 (2024-02-26)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1063 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1136 msgid "" "Added a viewport camera controller class to the " ":class:`omni.isaac.lab.envs.BaseEnv`. This is useful for applications " @@ -1862,29 +1962,29 @@ msgid "" "even when the simulation is running in headless mode." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1069 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1142 msgid "0.10.25 (2024-02-26)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1074 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1147 msgid "" "Ensures that all path arguments in :mod:`omni.isaac.lab.sim.utils` are " "cast to ``str``. Previously, we had handled path types as strings without" " casting." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1079 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1152 msgid "0.10.24 (2024-02-26)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1084 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1157 msgid "" "Added tracking of contact time in the " ":class:`omni.isaac.lab.sensors.ContactSensor` class. Previously, only the" " air time was being tracked." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1086 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1159 msgid "" "Added contact force threshold, " ":attr:`omni.isaac.lab.sensors.ContactSensorCfg.force_threshold`, to " @@ -1892,11 +1992,11 @@ msgid "" " hard-coded 1.0 in the sensor class." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1091 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1164 msgid "0.10.23 (2024-02-21)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1096 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1169 msgid "" "Fixes the order of size arguments in " ":meth:`omni.isaac.lab.terrains.height_field.random_uniform_terrain`. " @@ -1904,11 +2004,11 @@ msgid "" "the same." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1100 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1173 msgid "0.10.22 (2024-02-14)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1105 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1178 msgid "" "Fixed \"divide by zero\" bug in " ":class:`~omni.isaac.lab.sim.SimulationContext` when setting gravity " @@ -1916,11 +2016,11 @@ msgid "" "zero." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1110 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1183 msgid "0.10.21 (2024-02-12)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1115 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1188 msgid "" "Fixed the printing of articulation joint information when the " "articulation has only one joint. Earlier, the function was performing a " @@ -1928,32 +2028,32 @@ msgid "" "index the tensor of shape (1,)." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1121 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1194 msgid "0.10.20 (2024-02-12)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1126 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1199 msgid "" "Adds :attr:`omni.isaac.lab.sim.PhysxCfg.enable_enhanced_determinism` to " "enable improved determinism from PhysX. Please note this comes at the " "expense of performance." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1131 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1204 msgid "0.10.19 (2024-02-08)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1136 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1209 msgid "" "Fixed environment closing so that articulations, objects, and sensors are" " cleared properly." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1140 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1213 msgid "0.10.18 (2024-02-05)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1145 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1218 #: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:230 msgid "" "Pinned :mod:`torch` version to 2.0.1 in the setup.py to keep parity " @@ -1962,11 +2062,11 @@ msgid "" "==3.7.4.3" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1151 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1224 msgid "0.10.17 (2024-02-02)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1156 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1229 msgid "" "Fixed carb setting ``/app/livestream/enabled`` to be set as False unless " "live-streaming is specified by :class:`omni.isaac.lab.app.AppLauncher` " @@ -1975,54 +2075,54 @@ msgid "" " for this setting." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1162 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1235 msgid "0.10.16 (2024-01-29)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1167 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1240 msgid "" "Added an offset parameter to the height scan observation term. This " "allows the user to specify the height offset of the scan from the tracked" " body. Previously it was hard-coded to be 0.5." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1172 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1245 msgid "0.10.15 (2024-01-29)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1177 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1250 msgid "" "Fixed joint torque computation for implicit actuators. Earlier, the " "torque was always zero for implicit actuators. Now, it is computed " "approximately by applying the PD law." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1182 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1255 msgid "0.10.14 (2024-01-22)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1187 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1260 msgid "" "Fixed the tensor shape of " ":attr:`omni.isaac.lab.sensors.ContactSensorData.force_matrix_w`. Earlier," " the reshaping led to a mismatch with the data obtained from PhysX." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1192 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1265 msgid "0.10.13 (2024-01-15)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1197 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1270 msgid "" "Fixed running of environments with a single instance even if the " ":attr:`replicate_physics`` flag is set to True." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1201 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1274 msgid "0.10.12 (2024-01-10)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1206 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1279 msgid "" "Fixed indexing of source and target frames in the " ":class:`omni.isaac.lab.sensors.FrameTransformer` class. Earlier, it " @@ -2030,7 +2130,7 @@ msgid "" " body index of the source frame to compute the transformation." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1213 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1286 msgid "" "Renamed quantities in the " ":class:`omni.isaac.lab.sensors.FrameTransformerData` class to be more " @@ -2038,30 +2138,30 @@ msgid "" "quantities are deprecated:" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1216 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1289 msgid "``target_rot_w`` -> ``target_quat_w``" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1217 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1290 msgid "``source_rot_w`` -> ``source_quat_w``" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1218 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1291 msgid "``target_rot_source`` -> ``target_quat_source``" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1222 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1295 msgid "0.10.11 (2024-01-08)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1227 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1300 msgid "" "Fixed attribute error raised when calling the " ":class:`omni.isaac.lab.envs.mdp.TerrainBasedPositionCommand` command " "term." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1229 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1302 msgid "" "Added a dummy function in :class:`omni.isaac.lab.terrain.TerrainImporter`" " that returns environment origins as terrain-aware sampled targets. This " @@ -2069,11 +2169,11 @@ msgid "" "type." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1235 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1308 msgid "0.10.10 (2023-12-21)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1240 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1313 msgid "" "Fixed reliance on non-existent ``Viewport`` in " ":class:`omni.isaac.lab.sim.SimulationContext` when loading livestreaming " @@ -2081,33 +2181,33 @@ msgid "" " :class:`omni.isaac.lab.app.AppLauncher` when livestreaming is enabled" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1246 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1319 msgid "0.10.9 (2023-12-21)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1251 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1324 msgid "" "Fixed invalidation of physics views inside the asset and sensor classes. " "Earlier, they were left initialized even when the simulation was stopped." " This caused issues when closing the application." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1256 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1329 msgid "0.10.8 (2023-12-20)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1261 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1334 msgid "" "Fixed the " ":class:`omni.isaac.lab.envs.mdp.actions.DifferentialInverseKinematicsAction`" " class to account for the offset pose of the end-effector." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1266 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1339 msgid "0.10.7 (2023-12-19)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1271 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1344 msgid "" "Added a check to ray-cast and camera sensor classes to ensure that the " "sensor prim path does not have a regex expression at its leaf. For " @@ -2115,11 +2215,11 @@ msgid "" "types. This behavior needs to be fixed in the future." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1277 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1350 msgid "0.10.6 (2023-12-19)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1282 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1355 msgid "" "Added support for using articulations as visualization markers. This " "disables all physics APIs from the articulation and allows the user to " @@ -2127,18 +2227,18 @@ msgid "" " markers for the end-effectors or base of the robot." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1289 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1362 msgid "" "Fixed hiding of debug markers from secondary images when using the " ":class:`omni.isaac.lab.markers.VisualizationMarkers` class. Earlier, the " "properties were applied on the XForm prim instead of the Mesh prim." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1295 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1368 msgid "0.10.5 (2023-12-18)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1300 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1373 msgid "" "Fixed test ``check_base_env_anymal_locomotion.py``, which previously " "called :func:`torch.jit.load` with the path to a policy (which would work" @@ -2147,47 +2247,47 @@ msgid "" " itself." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1307 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1380 msgid "0.10.4 (2023-12-14)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1312 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1385 msgid "" "Fixed potentially breaking import of omni.kit.widget.toolbar by ensuring " "that if live-stream is enabled, then the :mod:`omni.kit.widget.toolbar` " "extension is loaded." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1317 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1390 msgid "0.10.3 (2023-12-12)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1322 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1395 msgid "" "Added the attribute " ":attr:`omni.isaac.lab.actuators.ActuatorNetMLPCfg.input_order` to specify" " the order of the input tensors to the MLP network." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1328 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1401 msgid "" "Fixed computation of metrics for the velocity command term. Earlier, the " "norm was being computed over the entire batch instead of the last " "dimension." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1330 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1403 msgid "" "Fixed the clipping inside the :class:`omni.isaac.lab.actuators.DCMotor` " "class. Earlier, it was not able to handle the case when configured " "saturation limit was set to None." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1335 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1408 msgid "0.10.2 (2023-12-12)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1340 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1413 msgid "" "Added a check in the simulation stop callback in the " ":class:`omni.isaac.lab.sim.SimulationContext` class to not render when an" @@ -2195,22 +2295,22 @@ msgid "" "application from closing when an exception was raised." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1346 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1419 msgid "0.10.1 (2023-12-06)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1351 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1424 msgid "" "Added command manager class with terms defined by " ":class:`omni.isaac.lab.managers.CommandTerm`. This allow for multiple " "types of command generators to be used in the same environment." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1356 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1429 msgid "0.10.0 (2023-12-04)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1361 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1434 msgid "" "Modified the sensor and asset base classes to use the underlying PhysX " "views instead of Isaac Sim views. Using Isaac Sim classes led to a very " @@ -2219,13 +2319,13 @@ msgid "" "not required." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1368 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1441 msgid "" "Added faster implementation of USD stage traversal methods inside the " ":class:`omni.isaac.lab.sim.utils` module." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1369 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1442 msgid "" "Added properties :attr:`omni.isaac.lab.assets.AssetBase.num_instances` " "and :attr:`omni.isaac.lab.sensor.SensorBase.num_instances` to obtain the " @@ -2233,7 +2333,7 @@ msgid "" "respectively." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1376 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1449 msgid "" "Removed dependencies on Isaac Sim view classes. It is no longer possible " "to use :attr:`root_view` and :attr:`body_view`. Instead use " @@ -2241,22 +2341,22 @@ msgid "" "underlying PhysX views." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1382 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1455 msgid "0.9.55 (2023-12-03)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1387 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1460 msgid "" "Fixed the Nucleus directory path in the " ":attr:`omni.isaac.lab.utils.assets.NVIDIA_NUCLEUS_DIR`. Earlier, it was " "referring to the ``NVIDIA/Assets`` directory instead of ``NVIDIA``." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1392 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1465 msgid "0.9.54 (2023-11-29)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1397 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1470 msgid "" "Fixed pose computation in the :class:`omni.isaac.lab.sensors.Camera` " "class to obtain them from XFormPrimView instead of using " @@ -2264,14 +2364,14 @@ msgid "" "updated correctly during GPU simulation." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1400 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1473 msgid "" "Fixed initialization of the annotator info in the class " ":class:`omni.isaac.lab.sensors.Camera`. Previously all dicts had the same" " memory address which caused all annotators to have the same info." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1402 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1475 msgid "" "Fixed the conversion of ``uint32`` warp arrays inside the " ":meth:`omni.isaac.lab.utils.array.convert_to_torch` method. PyTorch does " @@ -2279,18 +2379,18 @@ msgid "" "to PyTorch tensor." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1404 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1477 msgid "" "Added render call inside " ":meth:`omni.isaac.lab.sim.SimulationContext.reset` to initialize " "Replicator buffers when the simulation is reset." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1409 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1482 msgid "0.9.53 (2023-11-29)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1414 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1487 msgid "" "Changed the behavior of passing :obj:`None` to the " ":class:`omni.isaac.lab.actuators.ActuatorBaseCfg` class. Earlier, they " @@ -2298,17 +2398,17 @@ msgid "" "are loaded from the USD joint drive configuration." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1421 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1494 msgid "" "Added setting of joint armature and friction quantities to the " "articulation class." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1425 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1498 msgid "0.9.52 (2023-11-29)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1430 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1503 msgid "" "Changed the warning print in " ":meth:`omni.isaac.lab.sim.utils.apply_nested` method to be more " @@ -2317,51 +2417,51 @@ msgid "" " of the prims." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1437 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1510 msgid "" "Added the method :meth:`omni.isaac.lab.utils.assets.retrieve_file_path` " "to obtain the absolute path of a file on the Nucleus server or locally." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1443 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1516 msgid "" "Fixed hiding of STOP button in the :class:`AppLauncher` class when " "running the simulation in headless mode." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1445 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1518 msgid "" "Fixed a bug with :meth:`omni.isaac.lab.sim.utils.clone` failing when the " "input prim path had no parent (example: \"/Table\")." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1450 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1523 msgid "0.9.51 (2023-11-29)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1455 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1528 msgid "" "Changed the :meth:`omni.isaac.lab.sensor.SensorBase.update` method to " "always recompute the buffers if the sensor is in visualization mode." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1461 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1534 msgid "" "Added available entities to the error message when accessing a non-" "existent entity in the :class:`InteractiveScene` class." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1463 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1536 msgid "" "Added a warning message when the user tries to reference an invalid prim " "in the :class:`FrameTransformer` sensor." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1467 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1540 msgid "0.9.50 (2023-11-28)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1472 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1545 msgid "" "Hid the ``STOP`` button in the UI when running standalone Python scripts." " This is to prevent users from accidentally clicking the button and " @@ -2369,46 +2469,46 @@ msgid "" "simulation from the UI." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1479 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1552 msgid "" "Removed :attr:`omni.isaac.lab.sim.SimulationCfg.shutdown_app_on_stop`. " "The simulation is always rendering if it is stopped from the UI. The user" " needs to close the window or press ``Ctrl+C`` to close the simulation." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1484 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1557 msgid "0.9.49 (2023-11-27)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1489 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1562 msgid "" "Added an interface class, " ":class:`omni.isaac.lab.managers.ManagerTermBase`, to serve as the parent " "class for term implementations that are functional classes." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1491 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1564 msgid "" "Adapted all managers to support terms that are classes and not just " "functions clearer. This allows the user to create more complex terms that" " require additional state information." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1496 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1569 msgid "0.9.48 (2023-11-24)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1501 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1574 msgid "" "Fixed initialization of drift in the " ":class:`omni.isaac.lab.sensors.RayCasterCamera` class." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1505 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1578 msgid "0.9.47 (2023-11-24)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1510 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1583 msgid "" "Automated identification of the root prim in the " ":class:`omni.isaac.lab.assets.RigidObject` and " @@ -2417,11 +2517,11 @@ msgid "" "the root prim under the spawn prim path." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1516 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1589 msgid "0.9.46 (2023-11-24)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1521 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1594 msgid "" "Fixed a critical issue in the asset classes with writing states into " "physics handles. Earlier, the states were written over all the indices " @@ -2430,11 +2530,11 @@ msgid "" " which is not desirable." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1528 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1601 msgid "0.9.45 (2023-11-24)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1533 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1606 msgid "" "Added " ":class:`omni.isaac.lab.command_generators.UniformPoseCommandGenerator` to" @@ -2442,22 +2542,22 @@ msgid "" "given range." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1538 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1611 msgid "0.9.44 (2023-11-16)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1543 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1616 msgid "" "Added methods :meth:`reset` and :meth:`step` to the " ":class:`omni.isaac.lab.envs.BaseEnv`. This unifies the environment " "interface for simple standalone applications with the class." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1548 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1621 msgid "0.9.43 (2023-11-16)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1553 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1626 msgid "" "Replaced subscription of physics play and stop events in the " ":class:`omni.isaac.lab.assets.AssetBase` and " @@ -2467,11 +2567,11 @@ msgid "" " immediately. For instance, with deformable meshes." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1560 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1633 msgid "0.9.42 (2023-11-16)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1565 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1638 msgid "" "Fixed setting of damping values from the configuration for " ":class:`ActuatorBase` class. Earlier, the stiffness values were being set" @@ -2479,26 +2579,26 @@ msgid "" "model." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1568 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1641 msgid "" "Added dealing with :class:`int` and :class:`float` values in the " "configurations of :class:`ActuatorBase`. Earlier, a type-error was thrown" " when integer values were passed to the actuator model." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1573 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1646 msgid "0.9.41 (2023-11-16)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1578 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1651 msgid "Fixed the naming and shaping issues in the binary joint action term." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1582 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1655 msgid "0.9.40 (2023-11-09)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1587 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1660 msgid "" "Simplified the manual initialization of Isaac Sim " ":class:`ArticulationView` class. Earlier, we basically copied the code " @@ -2506,7 +2606,7 @@ msgid "" "method." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1593 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1666 msgid "" "Changed the name of attribute :attr:`default_root_state_w` to " ":attr:`default_root_state`. The latter is more correct since the data is " @@ -2514,28 +2614,28 @@ msgid "" "frame." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1598 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1671 msgid "0.9.39 (2023-11-08)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1603 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1676 msgid "" "Changed the reference of private ``_body_view`` variable inside the " ":class:`RigidObject` class to the public ``body_view`` property. For a " "rigid object, the private variable is not defined." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1608 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1681 msgid "0.9.38 (2023-11-07)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1613 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1686 msgid "" "Upgraded the :class:`omni.isaac.lab.envs.RLTaskEnv` class to support Gym " "0.29.0 environment definition." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1618 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1691 msgid "" "Added computation of ``time_outs`` and ``terminated`` signals inside the " "termination manager. These follow the definition mentioned in `Gym 0.29.0" @@ -2543,36 +2643,36 @@ msgid "" "`_." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1620 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1693 msgid "" "Added proper handling of observation and action spaces in the " ":class:`omni.isaac.lab.envs.RLTaskEnv` class. These now follow closely to" " how Gym VecEnv handles the spaces." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1625 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1698 msgid "0.9.37 (2023-11-06)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1630 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1703 msgid "" "Fixed broken visualization in " ":mod:`omni.isaac.lab.sensors.FrameTramsformer` class by overwriting the " "correct ``_debug_vis_callback`` function." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1632 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1705 msgid "" "Moved the visualization marker configurations of sensors to their " "respective sensor configuration classes. This allows users to set these " "configurations from the configuration object itself." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1637 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1710 msgid "0.9.36 (2023-11-03)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1642 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1715 msgid "" "Added explicit deleting of different managers in the " ":class:`omni.isaac.lab.envs.BaseEnv` and " @@ -2581,11 +2681,11 @@ msgid "" "deleted before the scene is deleted)." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1648 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1721 msgid "0.9.35 (2023-11-02)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1653 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1726 msgid "" "Fixed the error: ``'str' object has no attribute '__module__'`` " "introduced by adding the future import inside the " @@ -2593,22 +2693,22 @@ msgid "" "support the ``__future__`` imports." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1658 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1731 msgid "0.9.34 (2023-11-02)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1663 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1736 msgid "" "Added missing import of ``from __future__ import annotations`` in the " ":mod:`omni.isaac.lab.utils.warp` module. This is needed to have a " "consistent behavior across Python versions." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1668 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1741 msgid "0.9.33 (2023-11-02)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1673 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1746 msgid "" "Fixed the :class:`omni.isaac.lab.command_generators.NullCommandGenerator`" " class. Earlier, it was having a runtime error due to infinity in the " @@ -2616,22 +2716,22 @@ msgid "" "to perform no operations." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1679 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1752 msgid "0.9.32 (2023-11-02)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1684 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1757 msgid "" "Renamed the :class:`omni.isaac.lab.envs.RLEnv` class to " ":class:`omni.isaac.lab.envs.RLTaskEnv` to avoid confusions in " "terminologies between environments and tasks." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1689 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1762 msgid "0.9.31 (2023-11-02)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1694 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1767 #, python-format msgid "" "Added the :class:`omni.isaac.lab.sensors.RayCasterCamera` class, as a " @@ -2641,18 +2741,18 @@ msgid "" "30% faster." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1700 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1773 msgid "0.9.30 (2023-11-01)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1705 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1778 msgid "" "Added skipping of None values in the :class:`InteractiveScene` class when" " creating the scene from configuration objects. Earlier, it was throwing " "an error when the user passed a None value for a scene element." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1707 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1780 msgid "" "Added ``kwargs`` to the :class:`RLEnv` class to allow passing additional " "arguments from gym registry function. This is now needed since the " @@ -2660,11 +2760,11 @@ msgid "" "constructor." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1712 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1785 msgid "0.9.29 (2023-11-01)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1717 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1790 msgid "" "Fixed the material path resolution inside the " ":class:`omni.isaac.lab.sim.converters.UrdfConverter` class. With Isaac " @@ -2674,11 +2774,11 @@ msgid "" " to the USD file location." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1724 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1797 msgid "0.9.28 (2023-11-01)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1729 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1802 msgid "" "Changed the way the " ":func:`omni.isaac.lab.sim.spawners.from_files.spawn_ground_plane` " @@ -2688,18 +2788,18 @@ msgid "" "the other spawner functions." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1735 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1808 msgid "0.9.27 (2023-10-31)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1740 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1813 msgid "" "Removed the default value of the argument ``camel_case`` in setters of " "USD attributes. This is to avoid confusion with the naming of the " "attributes in the USD file." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1746 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1819 msgid "" "Fixed the selection of material prim in the " ":class:`omni.isaac.lab.sim.spawners.materials.spawn_preview_surface` " @@ -2707,18 +2807,18 @@ msgid "" "which interfered with the selection of prims by the user." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1749 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1822 msgid "" "Updated :class:`omni.isaac.lab.sim.converters.MeshConverter` to use a " "different stage than the default stage for the conversion. This is to " "avoid the issue of the stage being closed when the conversion is done." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1754 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1827 msgid "0.9.26 (2023-10-31)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1759 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1832 msgid "" "Added the sensor implementation for " ":class:`omni.isaac.lab.sensors.FrameTransformer` class. Currently, it " @@ -2726,11 +2826,11 @@ msgid "" "articulation." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1764 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1837 msgid "0.9.25 (2023-10-27)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1769 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1842 msgid "" "Added the :mod:`omni.isaac.lab.envs.ui` module to put all the UI-related " "classes in one place. This currently implements the " @@ -2739,7 +2839,7 @@ msgid "" "from these classes to create their own UI windows." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1772 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1845 msgid "" "Added the attribute " ":attr:`omni.isaac.lab.envs.BaseEnvCfg.ui_window_class_type` to specify " @@ -2747,11 +2847,11 @@ msgid "" "to specify their own UI window class to be used for the environment." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1778 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1851 msgid "0.9.24 (2023-10-27)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1783 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1856 msgid "" "Changed the behavior of setting up debug visualization for assets, " "sensors and command generators. Earlier it was raising an error if debug " @@ -2760,29 +2860,29 @@ msgid "" "if it is implemented." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1790 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1863 msgid "0.9.23 (2023-10-27)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1795 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1868 msgid "" "Fixed a typo in the :class:`AssetBase` and :class:`SensorBase` that " "effected the class destructor. Earlier, a tuple was being created in the " "constructor instead of the actual object." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1800 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1873 msgid "0.9.22 (2023-10-26)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1805 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1878 msgid "" "Added a :class:`omni.isaac.lab.command_generators.NullCommandGenerator` " "class for no command environments. This is easier to work with than " "having checks for :obj:`None` in the command generator." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1811 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1884 msgid "" "Moved the randomization manager to the " ":class:`omni.isaac.lab.envs.BaseEnv` class with the default settings to " @@ -2790,34 +2890,34 @@ msgid "" "assets." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1813 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1886 msgid "" "Moved command generator to the :class:`omni.isaac.lab.envs.RlEnv` class " "to have all task-specification related classes in the same place." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1818 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1891 msgid "0.9.21 (2023-10-26)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1823 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1896 msgid "" "Decreased the priority of callbacks in asset and sensor base classes. " "This may help in preventing crashes when warm starting the simulation." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1825 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1898 msgid "" "Fixed no rendering mode when running the environment from the GUI. " "Earlier the function :meth:`SimulationContext.set_render_mode` was " "erroring out." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1830 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1903 msgid "0.9.20 (2023-10-25)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1835 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1908 msgid "" "Changed naming in " ":class:`omni.isaac.lab.sim.SimulationContext.RenderMode` to use " @@ -2825,70 +2925,70 @@ msgid "" "clarity." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1837 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1910 msgid "" "Changed :class:`omni.isaac.lab.sim.SimulationContext` to be capable of " "handling livestreaming and offscreen rendering." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1839 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1912 msgid "" "Changed :class:`omni.isaac.lab.app.AppLauncher` envvar " "``VIEWPORT_RECORD`` to the more descriptive ``OFFSCREEN_RENDER``." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1844 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1917 msgid "0.9.19 (2023-10-25)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1849 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1922 msgid "" "Added Gym observation and action spaces for the " ":class:`omni.isaac.lab.envs.RLEnv` class." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1853 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1926 msgid "0.9.18 (2023-10-23)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1858 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1931 msgid "" "Created " ":class:`omni.isaac.lab.sim.converters.asset_converter.AssetConverter` to " "serve as a base class for all asset converters." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1860 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1933 msgid "" "Added :class:`omni.isaac.lab.sim.converters.mesh_converter.MeshConverter`" " to handle loading and conversion of mesh files (OBJ, STL and FBX) into " "USD format." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1862 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1935 msgid "" "Added script ``convert_mesh.py`` to ``source/tools`` to allow users to " "convert a mesh to USD via command line arguments." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1867 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1940 msgid "" "Renamed the submodule :mod:`omni.isaac.lab.sim.loaders` to " ":mod:`omni.isaac.lab.sim.converters` to be more general with the " "functionality of the module." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1869 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1942 msgid "" "Updated ``check_instanceable.py`` script to convert relative paths to " "absolute paths." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1873 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1946 msgid "0.9.17 (2023-10-22)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1878 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1951 msgid "" "Added setters and getters for term configurations in the " ":class:`RandomizationManager`, :class:`RewardManager` and " @@ -2896,105 +2996,105 @@ msgid "" "term configurations after the manager has been created." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1881 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1954 msgid "" "Added the method :meth:`compute_group` to the " ":class:`omni.isaac.lab.managers.ObservationManager` class to compute the " "observations for only a given group." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1883 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1956 msgid "" "Added the curriculum term for modifying reward weights after certain " "environment steps." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1887 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1960 msgid "0.9.16 (2023-10-22)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1892 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1965 msgid "" "Added support for keyword arguments for terms in the " ":class:`omni.isaac.lab.managers.ManagerBase`." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1897 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1970 msgid "" "Fixed resetting of buffers in the :class:`TerminationManager` class. " "Earlier, the values were being set to ``0.0`` instead of ``False``." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1902 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1975 msgid "0.9.15 (2023-10-22)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1907 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1980 msgid "" "Added base yaw heading and body acceleration into " ":class:`omni.isaac.lab.assets.RigidObjectData` class. These quantities " "are computed inside the :class:`RigidObject` class." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1913 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1986 msgid "" "Fixed the " ":meth:`omni.isaac.lab.assets.RigidObject.set_external_force_and_torque` " "method to correctly deal with the body indices." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1915 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1988 msgid "" "Fixed a bug in the :meth:`omni.isaac.lab.utils.math.wrap_to_pi` method to" " prevent self-assignment of the input tensor." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1920 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1993 msgid "0.9.14 (2023-10-21)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1925 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1998 msgid "" "Added 2-D drift (i.e. along x and y) to the " ":class:`omni.isaac.lab.sensors.RayCaster` class." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1926 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1999 msgid "" "Added flags to the :class:`omni.isaac.lab.sensors.ContactSensorCfg` to " "optionally obtain the sensor origin and air time information. Since these" " are not required by default, they are disabled by default." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1933 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2006 msgid "" "Fixed the handling of contact sensor history buffer in the " ":class:`omni.isaac.lab.sensors.ContactSensor` class. Earlier, the buffer " "was not being updated correctly." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1938 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2011 msgid "0.9.13 (2023-10-20)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1943 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2016 msgid "" "Fixed the issue with double :obj:`Ellipsis` when indexing tensors with " "multiple dimensions. The fix now uses :obj:`slice(None)` instead of " ":obj:`Ellipsis` to index the tensors." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1948 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2021 msgid "0.9.12 (2023-10-18)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1953 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2026 msgid "" "Fixed bugs in actuator model implementation for actuator nets. Earlier " "the DC motor clipping was not working." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1954 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2027 msgid "" "Fixed bug in applying actuator model in the " ":class:`omni.isaac.lab.asset.Articulation` class. The new implementation " @@ -3003,11 +3103,11 @@ msgid "" "operation." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1960 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2033 msgid "0.9.11 (2023-10-17)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1965 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2038 msgid "" "Added the support for semantic tags into the " ":class:`omni.isaac.lab.sim.spawner.SpawnerCfg` class. This allows the " @@ -3015,17 +3115,17 @@ msgid "" "scene. It follows the same format as Omniverse Replicator." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1971 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2044 msgid "0.9.10 (2023-10-16)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1976 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2049 msgid "" "Added ``--livestream`` and ``--ros`` CLI args to " ":class:`omni.isaac.lab.app.AppLauncher` class." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1977 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2050 msgid "" "Added a static function " ":meth:`omni.isaac.lab.app.AppLauncher.add_app_launcher_args`, which " @@ -3033,7 +3133,7 @@ msgid "" "to the argument parser." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1983 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2056 msgid "" "Within :class:`omni.isaac.lab.app.AppLauncher`, removed " "``REMOTE_DEPLOYMENT`` env-var processing in the favor of ``HEADLESS`` and" @@ -3041,11 +3141,11 @@ msgid "" "the CLI args." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1989 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2062 msgid "0.9.9 (2023-10-12)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1994 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2067 msgid "" "Added the property " ":attr:`omni.isaac.lab.assets.Articulation.is_fixed_base` to the " @@ -3053,13 +3153,13 @@ msgid "" "floating." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:1996 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2069 msgid "" "Added the task-space action term corresponding to the differential " "inverse-kinematics controller." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2001 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2074 msgid "" "Simplified the " ":class:`omni.isaac.lab.controllers.DifferentialIKController` to assume " @@ -3068,11 +3168,11 @@ msgid "" "complicated and error-prone." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2007 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2080 msgid "0.9.8 (2023-09-30)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2012 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2085 msgid "" "Fixed the boundedness of class objects that register callbacks into the " "simulator. These include devices, :class:`AssetBase`, :class:`SensorBase`" @@ -3080,11 +3180,11 @@ msgid "" "when the user deletes the object." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2018 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2091 msgid "0.9.7 (2023-09-26)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2023 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2096 msgid "" "Modified the :class:`omni.isaac.lab.markers.VisualizationMarkers` to use " "the :class:`omni.isaac.lab.sim.spawner.SpawnerCfg` class instead of their" @@ -3092,45 +3192,45 @@ msgid "" "to spawn assets in the scene." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2030 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2103 msgid "" "Added the method :meth:`copy` to configclass to allow copying of " "configuration objects." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2034 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2107 msgid "0.9.6 (2023-09-26)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2039 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2112 msgid "" "Changed class-level configuration classes to refer to class types using " "``class_type`` attribute instead of ``cls`` or ``cls_name``." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2044 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2117 msgid "0.9.5 (2023-09-25)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2049 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2122 #: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:307 msgid "" "Added future import of ``annotations`` to have a consistent behavior " "across Python versions." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2050 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2123 #: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:308 msgid "" "Removed the type-hinting from docstrings to simplify maintenance of the " "documentation. All type-hints are now in the code itself." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2055 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2128 msgid "0.9.4 (2023-08-29)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2060 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2133 msgid "" "Added :class:`omni.isaac.lab.scene.InteractiveScene`, as the central " "scene unit that contains all entities that are part of the simulation. " @@ -3139,7 +3239,7 @@ msgid "" "access them via their unique names." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2063 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2136 msgid "" "Added :mod:`omni.isaac.lab.envs` module that contains environment " "definitions that encapsulate the different general (scene, action " @@ -3147,7 +3247,7 @@ msgid "" "manager) managers." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2065 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2138 msgid "" "Added :class:`omni.isaac.lab.managers.SceneEntityCfg` to handle which " "scene elements are required by the manager's terms. This allows the " @@ -3155,25 +3255,25 @@ msgid "" "joint and body indices, and pass them to the term." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2068 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2141 msgid "" "Added :class:`omni.isaac.lab.sim.SimulationContext.RenderMode` to handle " "different rendering modes based on what the user wants to update " "(viewport, cameras, or UI elements)." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2074 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2147 msgid "" "Fixed the :class:`omni.isaac.lab.command_generators.CommandGeneratorBase`" " to register a debug visualization callback similar to how sensors and " "robots handle visualization." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2079 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2152 msgid "0.9.3 (2023-08-23)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2084 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2157 msgid "" "Enabled the `faulthander " "`_ to catch " @@ -3181,13 +3281,13 @@ msgid "" ":class:`omni.isaac.lab.app.AppLauncher` class." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2090 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2163 msgid "" "Re-added the :mod:`omni.isaac.lab.utils.kit` to the ``compat`` directory " "and fixed all the references to it." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2091 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2164 msgid "" "Fixed the deletion of Replicator nodes for the " ":class:`omni.isaac.lab.sensors.Camera` class. Earlier, the Replicator " @@ -3196,35 +3296,35 @@ msgid "" "deleted." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2094 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2167 msgid "" "Fixed the :meth:`omni.isaac.lab.utils.math.convert_quat` to support both " "numpy and torch tensors." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2099 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2172 msgid "" "Renamed all the scripts inside the ``test`` directory to follow the " "convention:" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2101 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2174 msgid "" "``test_.py``: Tests for the module ```` using " "unittest." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2102 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2175 msgid "" "``check_``: Check for the module ```` using " "python main function." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2106 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2179 msgid "0.9.2 (2023-08-22)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2111 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2184 msgid "" "Added the ability to color meshes in the " ":class:`omni.isaac.lab.terrain.TerrainGenerator` class. Currently, it " @@ -3232,41 +3332,41 @@ msgid "" "terrain height (``\"height\"``), and no coloring (``\"none\"``)." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2118 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2191 msgid "" "Modified the :class:`omni.isaac.lab.terrain.TerrainImporter` class to " "configure visual and physics materials based on the configuration object." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2123 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2196 msgid "0.9.1 (2023-08-18)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2128 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2201 msgid "" "Introduced three different rotation conventions in the " ":class:`omni.isaac.lab.sensors.Camera` class. These conventions are:" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2131 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2204 msgid "" "``opengl``: the camera is looking down the -Z axis with the +Y axis " "pointing up" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2132 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2205 msgid "" "``ros``: the camera is looking down the +Z axis with the +Y axis pointing" " down" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2133 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2206 msgid "" "``world``: the camera is looking along the +X axis with the -Z axis " "pointing down" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2135 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2208 msgid "" "These can be used to declare the camera offset in " ":class:`omni.isaac.lab.sensors.CameraCfg.OffsetCfg` class and in " @@ -3275,14 +3375,14 @@ msgid "" ":class:`omni.isaac.lab.sensors.CameraData` class for easy access." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2142 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2215 msgid "" "Adapted all the sensor classes to follow a structure similar to the " ":class:`omni.isaac.lab.assets.AssetBase`. Hence, the spawning and " "initialization of sensors manually by the users is avoided." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2144 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2217 msgid "" "Removed the :meth:`debug_vis` function since that this functionality is " "handled by a render callback automatically (based on the passed " @@ -3290,11 +3390,11 @@ msgid "" ":class:`omni.isaac.lab.sensors.SensorBaseCfg.debug_vis` flag)." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2149 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2222 msgid "0.9.0 (2023-08-18)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2154 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2227 msgid "" "Introduces a new set of asset interfaces. These interfaces simplify the " "spawning of assets into the scene and initializing the physics handle by " @@ -3303,37 +3403,37 @@ msgid "" "calls." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2157 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2230 msgid "" "Added utility methods to :mod:`omni.isaac.lab.utils.string` module that " "resolve regex expressions based on passed list of target keys." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2163 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2236 msgid "" "Renamed all references of joints in an articulation from \"dof\" to " "\"joint\". This makes it consistent with the terminology used in " "robotics." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2169 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2242 msgid "" "Removed the previous modules for objects and robots. Instead the " ":class:`Articulation` and :class:`RigidObject` should be used." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2174 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2247 msgid "0.8.12 (2023-08-18)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2179 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2252 msgid "" "Added other properties provided by ``PhysicsScene`` to the " ":class:`omni.isaac.lab.sim.SimulationContext` class to allow setting CCD," " solver iterations, etc." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2181 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2254 msgid "" "Added commonly used functions to the :class:`SimulationContext` class " "itself to avoid having additional imports from Isaac Sim when doing " @@ -3341,65 +3441,65 @@ msgid "" "settings." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2187 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2260 msgid "" "Switched the notations of default buffer values in " ":class:`omni.isaac.lab.sim.PhysxCfg` from multiplication to scientific " "notation to avoid confusion with the values." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2192 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2265 msgid "0.8.11 (2023-08-18)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2197 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2270 msgid "" "Adds utility functions and configuration objects in the " ":mod:`omni.isaac.lab.sim.spawners` to create the following prims in the " "scene:" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2200 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2273 msgid "" ":mod:`omni.isaac.lab.sim.spawners.from_file`: Create a prim from a " "USD/URDF file." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2201 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2274 msgid "" ":mod:`omni.isaac.lab.sim.spawners.shapes`: Create USDGeom prims for " "shapes (box, sphere, cylinder, capsule, etc.)." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2202 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2275 msgid "" ":mod:`omni.isaac.lab.sim.spawners.materials`: Create a visual or physics " "material prim." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2203 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2276 msgid "" ":mod:`omni.isaac.lab.sim.spawners.lights`: Create a USDLux prim for " "different types of lights." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2204 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2277 msgid "" ":mod:`omni.isaac.lab.sim.spawners.sensors`: Create a USD prim for " "supported sensors." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2209 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2282 msgid "" "Modified the :class:`SimulationContext` class to take the default physics" " material using the material spawn configuration object." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2214 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2287 msgid "0.8.10 (2023-08-17)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2219 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2292 msgid "" "Added methods for defining different physics-based schemas in the " ":mod:`omni.isaac.lab.sim.schemas` module. These methods allow creating " @@ -3407,22 +3507,22 @@ msgid "" "properties based on the configuration object." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2225 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2298 msgid "0.8.9 (2023-08-09)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2230 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2303 msgid "" "Moved the :class:`omni.isaac.lab.asset_loader.UrdfLoader` class to the " ":mod:`omni.isaac.lab.sim.loaders` module to make it more accessible to " "the user." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2235 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2308 msgid "0.8.8 (2023-08-09)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2240 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2313 msgid "" "Added configuration classes and functions for setting different physics-" "based schemas in the :mod:`omni.isaac.lab.sim.schemas` module. These " @@ -3430,38 +3530,38 @@ msgid "" "configuration objects." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2246 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2319 msgid "0.8.7 (2023-08-03)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2251 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2324 msgid "" "Added support for `__post_init__ " "`_ in the :class:`omni.isaac.lab.utils.configclass` decorator." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2256 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2329 msgid "0.8.6 (2023-08-03)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2261 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2334 msgid "" "Added support for callable classes in the " ":class:`omni.isaac.lab.managers.ManagerBase`." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2265 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2338 msgid "0.8.5 (2023-08-03)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2270 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2343 msgid "" "Fixed the :class:`omni.isaac.lab.markers.Visualizationmarkers` class so " "that the markers are not visible in camera rendering mode." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2275 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2348 msgid "" "Simplified the creation of the point instancer in the " ":class:`omni.isaac.lab.markers.Visualizationmarkers` class. It now " @@ -3469,11 +3569,11 @@ msgid "" "exists at the given path." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2280 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2353 msgid "0.8.4 (2023-08-02)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2285 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2358 msgid "" "Added the :class:`omni.isaac.lab.sim.SimulationContext` class to the " ":mod:`omni.isaac.lab.sim` module. This class inherits from the " @@ -3482,45 +3582,45 @@ msgid "" "object." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2291 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2364 msgid "0.8.3 (2023-08-02)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2296 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2369 msgid "" "Moved the :class:`ActuatorBase` class to the " ":mod:`omni.isaac.lab.actuators.actuator_base` module." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2297 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2370 msgid "" "Renamed the :mod:`omni.isaac.lab.actuators.actuator` module to " ":mod:`omni.isaac.lab.actuators.actuator_pd` to make it more explicit that" " it contains the PD actuator models." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2302 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2375 msgid "0.8.2 (2023-08-02)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2307 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2380 msgid "" "Cleaned up the :class:`omni.isaac.lab.terrain.TerrainImporter` class to " "take all the parameters from the configuration object. This makes it " "consistent with the other classes in the package." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2309 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2382 msgid "" "Moved the configuration classes for terrain generator and terrain " "importer into separate files to resolve circular dependency issues." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2314 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2387 msgid "0.8.1 (2023-08-02)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2319 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2392 msgid "" "Added a hack into :class:`omni.isaac.lab.app.AppLauncher` class to remove" " Isaac Lab packages from the path before launching the simulation " @@ -3528,32 +3628,32 @@ msgid "" "user launches the ``SimulationApp``." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2325 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2398 msgid "" "Enabled necessary viewport extensions in the " ":class:`omni.isaac.lab.app.AppLauncher` class itself if " "``VIEWPORT_ENABLED`` flag is true." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2330 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2403 msgid "0.8.0 (2023-07-26)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2335 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2408 msgid "" "Added the :class:`ActionManager` class to the " ":mod:`omni.isaac.lab.managers` module to handle actions in the " "environment through action terms." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2337 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2410 msgid "" "Added contact force history to the " ":class:`omni.isaac.lab.sensors.ContactSensor` class. The history is " "stored in the ``net_forces_w_history`` attribute of the sensor data." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2343 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2416 msgid "" "Implemented lazy update of buffers in the " ":class:`omni.isaac.lab.sensors.SensorBase` class. This allows the user to" @@ -3562,24 +3662,24 @@ msgid "" " when a reset is called in the environment." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2350 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2423 msgid "" "Removed the support for different backends in the sensor class. We only " "use Pytorch as the backend now." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2351 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2424 msgid "" "Removed the concept of actuator groups. They are now handled by the " ":class:`omni.isaac.lab.managers.ActionManager` class. The actuator models" " are now directly handled by the robot class itself." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2356 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2429 msgid "0.7.4 (2023-07-26)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2361 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2434 msgid "" "Changed the behavior of the " ":class:`omni.isaac.lab.terrains.TerrainImporter` class. It now expects " @@ -3588,7 +3688,7 @@ msgid "" "to do an explicit call to import a terrain." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2368 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2441 msgid "" "Fixed setting of quaternion orientations inside the " ":class:`omni.isaac.lab.markers.Visualizationmarkers` class. Earlier, the " @@ -3596,11 +3696,11 @@ msgid "" "(``wxyz`` instead of ``xyzw``)." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2373 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2446 msgid "0.7.3 (2023-07-25)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2378 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2451 msgid "" "Fixed the issue with multiple inheritance in the " ":class:`omni.isaac.lab.utils.configclass` decorator. Earlier, if the " @@ -3609,11 +3709,11 @@ msgid "" "classes." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2384 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2457 msgid "0.7.2 (2023-07-24)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2389 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2462 msgid "" "Added the method :meth:`replace` to the " ":class:`omni.isaac.lab.utils.configclass` decorator to allow creating a " @@ -3622,18 +3722,18 @@ msgid "" "`_." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2396 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2469 msgid "" "Fixed the handling of class types as member values in the " ":meth:`omni.isaac.lab.utils.configclass`. Earlier it was throwing an " "error since class types were skipped in the if-else block." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2401 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2474 msgid "0.7.1 (2023-07-22)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2406 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2479 msgid "" "Added the :class:`TerminationManager`, :class:`CurriculumManager`, and " ":class:`RandomizationManager` classes to the " @@ -3641,11 +3741,11 @@ msgid "" "and randomization respectively." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2411 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2484 msgid "0.7.0 (2023-07-22)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2416 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2489 msgid "" "Created a new :mod:`omni.isaac.lab.managers` module for all the managers " "related to the environment / scene. This includes the " @@ -3654,20 +3754,20 @@ msgid "" "previously in the :mod:`omni.isaac.lab.utils.mdp` module." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2419 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2492 msgid "" "Added the :class:`omni.isaac.lab.managers.ManagerBase` class to handle " "the creation of managers." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2420 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2493 msgid "" "Added configuration classes for :class:`ObservationTermCfg` and " ":class:`RewardTermCfg` to allow easy creation of observation and reward " "terms." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2426 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2499 msgid "" "Changed the behavior of :class:`ObservationManager` and " ":class:`RewardManager` classes to accept the key ``func`` in each " @@ -3676,23 +3776,23 @@ msgid "" "different environments." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2429 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2502 msgid "" "Moved the old managers to the :mod:`omni.isaac.lab.compat.utils.mdp` " "module." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2430 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2503 msgid "" "Modified the necessary scripts to use the " ":mod:`omni.isaac.lab.compat.utils.mdp` module." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2434 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2507 msgid "0.6.2 (2023-07-21)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2439 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2512 msgid "" "Added the :mod:`omni.isaac.lab.command_generators` to generate different " "commands based on the desired task. It allows the user to generate " @@ -3700,34 +3800,34 @@ msgid "" "write custom code for each task." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2445 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2518 msgid "0.6.1 (2023-07-16)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2450 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2523 msgid "" "Fixed the :meth:`omni.isaac.lab.utils.math.quat_apply_yaw` to compute the" " yaw quaternion correctly." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2455 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2528 msgid "" "Added functions to convert string and callable objects in " ":mod:`omni.isaac.lab.utils.string`." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2459 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2532 msgid "0.6.0 (2023-07-16)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2464 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2537 msgid "" "Added the argument :attr:`sort_keys` to the " ":meth:`omni.isaac.lab.utils.io.yaml.dump_yaml` method to allow " "enabling/disabling of sorting of keys in the output yaml file." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2470 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2543 msgid "" "Fixed the ordering of terms in :mod:`omni.isaac.lab.utils.configclass` to" " be consistent in the order in which they are defined. Previously, the " @@ -3735,31 +3835,31 @@ msgid "" "order in which the parameters were defined." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2477 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2550 msgid "" "Changed the default value of the argument :attr:`sort_keys` in the " ":meth:`omni.isaac.lab.utils.io.yaml.dump_yaml` method to ``False``." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2479 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2552 msgid "" "Moved the old config classes in :mod:`omni.isaac.lab.utils.configclass` " "to :mod:`omni.isaac.lab.compat.utils.configclass` so that users can still" " run their old code where alphabetical ordering was used." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2485 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2558 msgid "0.5.0 (2023-07-04)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2490 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2563 msgid "" "Added a generalized :class:`omni.isaac.lab.sensors.SensorBase` class that" " leverages the ideas of views to handle multiple sensors in a single " "class." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2492 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2565 msgid "" "Added the classes :class:`omni.isaac.lab.sensors.RayCaster`, " ":class:`omni.isaac.lab.sensors.ContactSensor`, and " @@ -3767,53 +3867,53 @@ msgid "" "sensor data." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2498 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2571 msgid "" "Renamed the parameter ``sensor_tick`` to ``update_freq`` to make it more " "intuitive." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2499 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2572 msgid "" "Moved the old sensors in :mod:`omni.isaac.lab.sensors` to " ":mod:`omni.isaac.lab.compat.sensors`." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2500 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2573 msgid "" "Modified the standalone scripts to use the " ":mod:`omni.isaac.lab.compat.sensors` module." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2504 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2577 msgid "0.4.4 (2023-07-05)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2509 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2582 msgid "" "Fixed the :meth:`omni.isaac.lab.terrains.trimesh.utils.make_plane` method" " to handle the case when the plane origin does not need to be centered." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2511 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2584 msgid "" "Added the :attr:`omni.isaac.lab.terrains.TerrainGeneratorCfg.seed` to " "make generation of terrains reproducible. The default value is ``None`` " "which means that the seed is not set." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2517 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2590 msgid "" "Changed the saving of ``origins`` in " ":class:`omni.isaac.lab.terrains.TerrainGenerator` class to be in CSV " "format instead of NPY format." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2522 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2595 msgid "0.4.3 (2023-06-28)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2527 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2600 msgid "" "Added the :class:`omni.isaac.lab.markers.PointInstancerMarker` class that" " wraps around `UsdGeom.PointInstancer " @@ -3821,34 +3921,34 @@ msgid "" " to directly work with torch and numpy arrays." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2534 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2607 msgid "" "Moved the old markers in :mod:`omni.isaac.lab.markers` to " ":mod:`omni.isaac.lab.compat.markers`." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2535 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2608 msgid "" "Modified the standalone scripts to use the " ":mod:`omni.isaac.lab.compat.markers` module." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2539 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2612 msgid "0.4.2 (2023-06-28)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2544 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2617 msgid "" "Added the sub-module :mod:`omni.isaac.lab.terrains` to allow procedural " "generation of terrains and supporting importing of terrains from " "different sources (meshes, usd files or default ground plane)." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2549 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2622 msgid "0.4.1 (2023-06-27)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2551 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2624 msgid "" "Added the :class:`omni.isaac.lab.app.AppLauncher` class to allow " "controlled instantiation of the `SimulationApp " @@ -3856,48 +3956,48 @@ msgid "" " and extension loading for remote deployment and ROS bridges." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2558 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2631 msgid "" "Modified all standalone scripts to use the " ":class:`omni.isaac.lab.app.AppLauncher` class." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2562 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2635 msgid "0.4.0 (2023-05-27)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2567 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2640 msgid "" "Added a helper class :class:`omni.isaac.lab.asset_loader.UrdfLoader` that" " converts a URDF file to instanceable USD file based on the input " "configuration object." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2572 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2645 msgid "0.3.2 (2023-04-27)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2577 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2650 msgid "" "Added safe-printing of functions while using the " ":meth:`omni.isaac.lab.utils.dict.print_dict` function." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2581 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2654 msgid "0.3.1 (2023-04-23)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2586 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2659 msgid "" "Added a modified version of ``lula_franka_gen.urdf`` which includes an " "end-effector frame." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2587 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2660 msgid "Added a standalone script ``play_rmpflow.py`` to show RMPFlow controller." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2592 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2665 msgid "" "Fixed the splitting of commands in the :meth:`ActuatorGroup.compute` " "method. Earlier it was reshaping the commands to the shape " @@ -3905,210 +4005,210 @@ msgid "" "split incorrectly." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2594 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2667 msgid "" "Fixed the processing of actuator command in the " ":meth:`RobotBase._process_actuators_cfg` to deal with multiple command " "types when using \"implicit\" actuator group." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2598 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2671 msgid "0.3.0 (2023-04-20)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2603 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2676 msgid "Added the destructor to the keyboard devices to unsubscribe from carb." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2608 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2681 msgid "" "Added the :class:`Se2Gamepad` and :class:`Se3Gamepad` for gamepad " "teleoperation support." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2612 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2685 msgid "0.2.8 (2023-04-10)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2617 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2690 msgid "" "Fixed bugs in :meth:`axis_angle_from_quat` in the " "``omni.isaac.lab.utils.math`` to handle quaternion with negative w " "component." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2618 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2691 msgid "" "Fixed bugs in :meth:`subtract_frame_transforms` in the " "``omni.isaac.lab.utils.math`` by adding the missing final rotation." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2622 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2695 msgid "0.2.7 (2023-04-07)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2627 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2700 msgid "" "Fixed repetition in applying mimic multiplier for \"p_abs\" in the " ":class:`GripperActuatorGroup` class." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2628 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2701 msgid "" "Fixed bugs in :meth:`reset_buffers` in the :class:`RobotBase` and " ":class:`LeggedRobot` classes." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2631 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2704 msgid "0.2.6 (2023-03-16)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2636 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2709 msgid "" "Added the :class:`CollisionPropertiesCfg` to rigid/articulated object and" " robot base classes." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2637 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2710 msgid "" "Added the :class:`PhysicsMaterialCfg` to the :class:`SingleArm` class for" " tool sites." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2642 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2715 msgid "" "Changed the default control mode of the :obj:`PANDA_HAND_MIMIC_GROUP_CFG`" " to be from ``\"v_abs\"`` to ``\"p_abs\"``. Using velocity control for " "the mimic group can cause the hand to move in a jerky manner." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2647 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2720 msgid "0.2.5 (2023-03-08)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2652 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2725 msgid "" "Fixed the indices used for the Jacobian and dynamics quantities in the " ":class:`MobileManipulator` class." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2656 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2729 msgid "0.2.4 (2023-03-04)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2661 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2734 msgid "" "Added :meth:`apply_nested_physics_material` to the " "``omni.isaac.lab.utils.kit``." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2662 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2735 msgid "" "Added the :meth:`sample_cylinder` to sample points from a cylinder's " "surface." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2663 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2736 msgid "" "Added documentation about the issue in using instanceable asset as " "markers." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2668 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2741 msgid "" "Simplified the physics material application in the rigid object and " "legged robot classes." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2673 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2746 msgid "" "Removed the ``geom_prim_rel_path`` argument in the " ":class:`RigidObjectCfg.MetaInfoCfg` class." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2677 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2750 msgid "0.2.3 (2023-02-24)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2682 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2755 msgid "" "Fixed the end-effector body index used for getting the Jacobian in the " ":class:`SingleArm` and :class:`MobileManipulator` classes." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2686 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2759 msgid "0.2.2 (2023-01-27)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2691 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2764 msgid "" "Fixed the :meth:`set_world_pose_ros` and :meth:`set_world_pose_from_view`" " in the :class:`Camera` class." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2696 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2769 msgid "" "Removed the :meth:`set_world_pose_from_ypr` method from the " ":class:`Camera` class." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2700 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2773 msgid "0.2.1 (2023-01-26)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2705 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2778 msgid "" "Fixed the :class:`Camera` class to support different fisheye projection " "types." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2709 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2782 #: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:455 msgid "0.2.0 (2023-01-25)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2714 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2787 msgid "Added support for warp backend in camera utilities." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2715 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2788 msgid "" "Extended the ``play_camera.py`` with ``--gpu`` flag to use GPU replicator" " backend." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2718 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2791 msgid "0.1.1 (2023-01-24)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2723 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2796 msgid "" "Fixed setting of physics material on the ground plane when using " ":meth:`omni.isaac.lab.utils.kit.create_ground_plane` function." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2727 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2800 #: ../../../source/extensions/omni.isaac.lab_tasks/docs/CHANGELOG.rst:482 msgid "0.1.0 (2023-01-17)" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2732 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2805 msgid "Initial release of the extension with experimental API." msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2733 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2806 msgid "Available robot configurations:" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2735 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2808 msgid "**Quadrupeds:** Unitree A1, ANYmal B, ANYmal C" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2736 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2809 msgid "**Single-arm manipulators:** Franka Emika arm, UR5" msgstr "" -#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2737 +#: ../../../source/extensions/omni.isaac.lab/docs/CHANGELOG.rst:2810 msgid "**Mobile manipulators:** Clearpath Ridgeback with Franka Emika arm or UR5" msgstr "" diff --git a/docs/locale/zh_CN/LC_MESSAGES/source/refs/issues.po b/docs/locale/zh_CN/LC_MESSAGES/source/refs/issues.po index 07ddba8b65..8bdb56a73f 100644 --- a/docs/locale/zh_CN/LC_MESSAGES/source/refs/issues.po +++ b/docs/locale/zh_CN/LC_MESSAGES/source/refs/issues.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Isaac Lab 1.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-07-05 06:36+0000\n" +"POT-Creation-Date: 2024-09-13 10:42+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Ziqi Fan \n" "Language-Team: zh_CN \n" @@ -90,65 +90,10 @@ msgid "" msgstr "我们已向相应的 Omniverse 团队提出了一个功能请求,以完全控制模拟应用的不同部分的步进。然而,目前尚未确定此功能请求的时间表。" #: ../../source/refs/issues.rst:40 -msgid "Non-determinism in physics simulation" -msgstr "物理仿真中的非确定性" - -#: ../../source/refs/issues.rst:42 -msgid "" -"Due to GPU work scheduling, there's a possibility that runtime changes to " -"simulation parameters may alter the order in which operations take place. " -"This occurs because environment updates can happen while the GPU is occupied" -" with other tasks. Due to the inherent nature of floating-point numeric " -"storage, any modification to the execution ordering can result in minor " -"changes in the least significant bits of output data. These changes may lead" -" to divergent execution over the course of simulating thousands of " -"environments and simulation frames." -msgstr "" -"由于 GPU 工作调度,运行时对仿真参数的更改有可能改变操作执行顺序。这是因为当 GPU " -"忙于其他任务时,环境更新可能会发生。由于浮点数存储的固有性质,对执行顺序的任何修改可能会导致输出数据中最不重要的位的微小变化。这些变化可能会导致在模拟数千个环境和仿真帧的过程中执行发散。" - -#: ../../source/refs/issues.rst:49 -msgid "" -"An illustrative example of this issue is observed with the runtime domain " -"randomization of object's physics materials. This process can introduce both" -" determinancy and simulation issues when executed on the GPU due to the way " -"these parameters are passed from the CPU to the GPU in the lower-level APIs." -" Consequently, it is strongly advised to perform this operation only at " -"setup time, before the environment stepping commences." -msgstr "" -"此问题的一个示例是观察对象物理材料的运行时域随机化。由于这些参数是通过低级 API 从 CPU 传递到 GPU " -"的方式,这个过程可能会导致确定性和仿真问题,因此强烈建议仅在设置时间执行此操作,然后才开始环境步进。" - -#: ../../source/refs/issues.rst:55 -msgid "" -"For more information, please refer to the `PhysX Determinism " -"documentation`_." -msgstr "要了解更多信息,请参阅 `PhysX Determinism documentation`_ 。" - -#: ../../source/refs/issues.rst:57 -msgid "" -"In addition, due to floating point precision, states across different " -"environments in the simulation may be non-deterministic when the same set of" -" actions are applied to the same initial states. This occurs as environments" -" are placed further apart from the world origin at (0, 0, 0). As actors get " -"placed at different origins in the world, floating point errors may build up" -" and result in slight variance in results even when starting from the same " -"initial states. One possible workaround for this issue is to place all " -"actors/environments at the world origin at (0, 0, 0) and filter out " -"collisions between the environments. Note that this may induce a performance" -" degradation of around 15-50%, depending on the complexity of actors and " -"environment." -msgstr "" -"此外,由于浮点精度的原因,在仿真中不同环境中的状态在应用相同的一组动作到相同的初始状态时可能是非确定性的。这是因为环境被放置在世界原点 (0, 0, " -"0) " -"附近。由于演员被放置在世界中不同的原点,浮点错误可能会积累,并导致结果略有不同,即使从相同的初始状态开始。这个问题的一个可能解决方法是将所有演员/环境放置在世界原点" -" (0, 0, 0) 并且过滤掉环境之间的碰撞。请注意,这可能会导致性能下降约15-50%,具体取决于演员和环境的复杂性。" - -#: ../../source/refs/issues.rst:69 msgid "Blank initial frames from the camera" msgstr "摄像头前的空白初始帧" -#: ../../source/refs/issues.rst:71 +#: ../../source/refs/issues.rst:42 msgid "" "When using the :class:`omni.isaac.lab.sensors.Camera` sensor in standalone " "scripts, the first few frames may be blank. This is a known issue with the " @@ -158,17 +103,17 @@ msgstr "" "在独立脚本中使用 :class:`~omni.isaac.lab.sensors.Camera` " "传感器时,前几帧可能会是空白的。这是一个已知问题,模拟器需要一些步骤来正确加载材质纹理并填充渲染目标。" -#: ../../source/refs/issues.rst:75 +#: ../../source/refs/issues.rst:46 msgid "" "A hack to work around this is to add the following after initializing the " "camera sensor and setting its pose:" msgstr "解决此问题的一个方法是在初始化摄像头传感器并设置姿势后添加以下内容:" -#: ../../source/refs/issues.rst:90 +#: ../../source/refs/issues.rst:61 msgid "Using instanceable assets for markers" msgstr "使用实例化资产作为标记对象" -#: ../../source/refs/issues.rst:92 +#: ../../source/refs/issues.rst:63 msgid "" "When using `instanceable assets`_ for markers, the markers do not work " "properly, since Omniverse does not support instanceable assets when using " @@ -178,7 +123,7 @@ msgstr "" "使用 `instanceable assets`_ 作为标记对象时,标记对象不起作用,因为 Omniverse 在使用 " ":class:`~UsdGeom.PointInstancer` 模式时不支持实例化资产。这是一个已知问题,将在将来的版本中修复。" -#: ../../source/refs/issues.rst:96 +#: ../../source/refs/issues.rst:67 msgid "" "If you use an instanceable assets for markers, the marker class removes all " "the physics properties of the asset. This is then replicated across other " @@ -189,17 +134,17 @@ msgstr "" "如果使用实例化资产作为标记对象,则标记对象类会删除资产的所有物理属性。这会在相同资产的其他引用上复制,因为实例化资产的物理属性存储在实例化资产的 USD" " 文件中,而不是在其场景引用的 USD 文件中。" -#: ../../source/refs/issues.rst:106 +#: ../../source/refs/issues.rst:76 msgid "Exiting the process" msgstr "退出进程" -#: ../../source/refs/issues.rst:108 +#: ../../source/refs/issues.rst:78 msgid "" "When exiting a process with ``Ctrl+C``, occasionally the below error may " "appear:" msgstr "当使用 ``Ctrl+C`` 退出进程时,偶尔会出现以下错误:" -#: ../../source/refs/issues.rst:114 +#: ../../source/refs/issues.rst:84 msgid "" "This is due to the termination occurring in the middle of a physics event " "call and should not affect the functionality of Isaac Lab. It is safe to " diff --git a/docs/locale/zh_CN/LC_MESSAGES/source/setup/translation.po b/docs/locale/zh_CN/LC_MESSAGES/source/setup/translation.po index ea90a41be8..82c4efca25 100644 --- a/docs/locale/zh_CN/LC_MESSAGES/source/setup/translation.po +++ b/docs/locale/zh_CN/LC_MESSAGES/source/setup/translation.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Isaac Lab 1.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-09-03 12:27+0000\n" +"POT-Creation-Date: 2024-09-13 10:59+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Ziqi Fan \n" "Language: zh_CN\n" @@ -17,7 +17,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.16.0\n" +"Generated-By: Babel 2.15.0\n" #: ../../source/setup/translation.rst:2 msgid "About Translation" @@ -52,7 +52,7 @@ msgstr "" #: ../../source/setup/translation.rst:16 msgid "" "赞赏名单: **H\\*R** 、 **\\*彡** 、 **b\\*k** 、 **\\*涛** 、 **\\*航** 、 **\\*靖** 、" -" **李\\*坤** 、 **\\*玉** 、 **胡\\*泽**" +" **李\\*坤** 、 **\\*玉** 、 **胡\\*泽** 、 **\\*塔**" msgstr "" #: ../../source/setup/translation.rst @@ -207,9 +207,3 @@ msgstr "" msgid "如遇到IsaacLab/IsaacSim更新后无法找到某些包,pull最新的IsaacLab重新执行下述步骤即可解决。(仅限pip安装的Isaac系列)" msgstr "" -#~ msgid "" -#~ "赞赏名单: **H\\*R** 、 **\\*彡** 、 **b\\*k**" -#~ " 、 **\\*涛** 、 **\\*航** 、 **\\*靖** " -#~ "、 **李\\*坤** 、 **\\*玉**" -#~ msgstr "" - diff --git a/docs/source/features/environments.rst b/docs/source/features/environments.rst index 58af134004..7e9c142b63 100644 --- a/docs/source/features/environments.rst +++ b/docs/source/features/environments.rst @@ -24,16 +24,16 @@ Classic environments that are based on IsaacGymEnvs implementation of MuJoCo-sty +------------------+-----------------------------+-------------------------------------------------------------------------+ | World | Environment ID | Description | +==================+=============================+=========================================================================+ - | |humanoid| | | |humanoid-link| | Move towards a direction with the MuJoCo humanoid robot | - | | | |humanoid-direct-link| | | + | |humanoid| | |humanoid-link| | Move towards a direction with the MuJoCo humanoid robot | + | | |humanoid-direct-link| | | +------------------+-----------------------------+-------------------------------------------------------------------------+ - | |ant| | | |ant-link| | Move towards a direction with the MuJoCo ant robot | - | | | |ant-direct-link| | | + | |ant| | |ant-link| | Move towards a direction with the MuJoCo ant robot | + | | |ant-direct-link| | | +------------------+-----------------------------+-------------------------------------------------------------------------+ - | |cartpole| | | |cartpole-link| | Move the cart to keep the pole upwards in the classic cartpole control | - | | | |cartpole-direct-link| | | - | | | |cartpole-camera-rgb-link|| | - | | | |cartpole-camera-dpt-link|| | + | |cartpole| | |cartpole-link| | Move the cart to keep the pole upwards in the classic cartpole control | + | | |cartpole-direct-link| | | + | | |cartpole-camera-rgb-link| | | + | | |cartpole-camera-dpt-link| | | +------------------+-----------------------------+-------------------------------------------------------------------------+ .. |humanoid| image:: ../_static/tasks/classic/humanoid.jpg @@ -77,12 +77,12 @@ for the reach environment: +----------------+---------------------------+-----------------------------------------------------------------------------+ | |cabi-franka| | |cabi-franka-link| | Grasp the handle of a cabinet's drawer and open it with the Franka robot | +----------------+---------------------------+-----------------------------------------------------------------------------+ - | |cube-allegro| | | |cube-allegro-link| | In-hand reorientation of a cube using Allegro hand | - | | | |allegro-direct-link| | | + | |cube-allegro| | |cube-allegro-link| | In-hand reorientation of a cube using Allegro hand | + | | |allegro-direct-link| | | +----------------+---------------------------+-----------------------------------------------------------------------------+ - | |cube-shadow| | | |cube-shadow-link| | In-hand reorientation of a cube using Shadow hand | - | | | |cube-shadow-ff-link| | | - | | | |cube-shadow-lstm-link| | | + | |cube-shadow| | |cube-shadow-link| | In-hand reorientation of a cube using Shadow hand | + | | |cube-shadow-ff-link| | | + | | |cube-shadow-lstm-link| | | +----------------+---------------------------+-----------------------------------------------------------------------------+ .. |reach-franka| image:: ../_static/tasks/manipulation/franka_reach.jpg @@ -120,11 +120,11 @@ Environments based on legged locomotion tasks. +------------------------------+----------------------------------------------+------------------------------------------------------------------------------+ | |velocity-rough-anymal-b| | |velocity-rough-anymal-b-link| | Track a velocity command on rough terrain with the Anymal B robot | +------------------------------+----------------------------------------------+------------------------------------------------------------------------------+ - | |velocity-flat-anymal-c| | | |velocity-flat-anymal-c-link| | Track a velocity command on flat terrain with the Anymal C robot | - | | | |velocity-flat-anymal-c-direct-link| | | + | |velocity-flat-anymal-c| | |velocity-flat-anymal-c-link| | Track a velocity command on flat terrain with the Anymal C robot | + | | |velocity-flat-anymal-c-direct-link| | | +------------------------------+----------------------------------------------+------------------------------------------------------------------------------+ - | |velocity-rough-anymal-c| | | |velocity-rough-anymal-c-link| | Track a velocity command on rough terrain with the Anymal C robot | - | | | |velocity-rough-anymal-c-direct-link| | | + | |velocity-rough-anymal-c| | |velocity-rough-anymal-c-link| | Track a velocity command on rough terrain with the Anymal C robot | + | | |velocity-rough-anymal-c-direct-link| | | +------------------------------+----------------------------------------------+------------------------------------------------------------------------------+ | |velocity-flat-anymal-d| | |velocity-flat-anymal-d-link| | Track a velocity command on flat terrain with the Anymal D robot | +------------------------------+----------------------------------------------+------------------------------------------------------------------------------+ diff --git a/docs/source/how-to/import_new_asset.rst b/docs/source/how-to/import_new_asset.rst index e6dbc2d2cf..14a76a64c8 100644 --- a/docs/source/how-to/import_new_asset.rst +++ b/docs/source/how-to/import_new_asset.rst @@ -20,7 +20,8 @@ extensions to Omniverse Kit: The recommended workflow from NVIDIA is to use the above importers to convert the asset into its USD representation. Once the asset is in USD format, you can -use the Omniverse Kit to edit the asset and export it to other file formats. +use the Omniverse Kit to edit the asset and export it to other file formats. Isaac Sim includes these importers by default. They can also be enabled manually in Omniverse Kit. + An important note to use assets for large-scale simulation is to ensure that they are in `instanceable`_ format. This allows the asset to be efficiently loaded @@ -32,27 +33,21 @@ For more details on instanceable assets, please check the Isaac Sim `documentati Using URDF Importer ------------------- -Isaac Sim includes the URDF and MJCF importers by default. These importers support the -option to import assets as instanceable assets. By selecting this option, the -importer will create two USD files: one for all the mesh data and one for -all the non-mesh data (e.g. joints, rigid bodies, etc.). The prims in the mesh data file are -referenced in the non-mesh data file. This allows the mesh data (which is often bulky) to be -loaded into memory only once and used multiple times in a scene. - -For using these importers from the GUI, please check the documentation for `MJCF importer`_ and -`URDF importer`_ respectively. - -For using the URDF importers from Python scripts, we include a utility tool called ``convert_urdf.py``. -Internally, this script creates an instance of :class:`~sim.converters.UrdfConverterCfg` which -is then passed to the :class:`~sim.converters.UrdfConverter` class. The configuration class specifies -the default values for the importer. The important settings are: - -* :attr:`~sim.converters.UrdfConverterCfg.fix_base` - Whether to fix the base of the robot. - This depends on whether you have a floating-base or fixed-base robot. -* :attr:`~sim.converters.UrdfConverterCfg.make_instanceable` - Whether to create instanceable assets. - Usually, this should be set to ``True``. -* :attr:`~sim.converters.UrdfConverterCfg.merge_fixed_joints` - Whether to merge the fixed joints. - Usually, this should be set to ``True`` to reduce the asset complexity. +For using the URDF importer in the GUI, please check the documentation at `URDF importer`_. For using the URDF importer from Python scripts, we include a utility tool called ``convert_urdf.py``. This script creates an instance of :class:`~sim.converters.UrdfConverterCfg` which +is then passed to the :class:`~sim.converters.UrdfConverter` class. + +The URDF importer has various configuration parameters that can be set to control the behavior of the importer. +The default values for the importer's configuration parameters are specified are in the :class:`~sim.converters.UrdfConverterCfg` class, and they are listed below. We made a few commonly modified settings to be available as command-line arguments when calling the ``convert_urdf.py``, and they are marked with ``*``` in the list. For a comprehensive list of the configuration parameters, please check the the documentation at `URDF importer`_. + +* :attr:`~sim.converters.UrdfConverterCfg.fix_base*` - Whether to fix the base of the robot. + This depends on whether you have a floating-base or fixed-base robot. The command-line flag is + ``--fix-base`` where when set, the importer will fix the base of the robot, otherwise it will default to floating-base. +* :attr:`~sim.converters.UrdfConverterCfg.make_instanceable*` - Whether to create instanceable assets. + Usually, this should be set to ``True``. The command-line flag is ``--make-instanceable`` where + when set, the importer will create instanceable assets, otherwise it will default to non-instanceable. +* :attr:`~sim.converters.UrdfConverterCfg.merge_fixed_joints*` - Whether to merge the fixed joints. + Usually, this should be set to ``True`` to reduce the asset complexity. The command-line flag is + ``--merge-joints`` where when set, the importer will merge the fixed joints, otherwise it will default to not merging the fixed joints. * :attr:`~sim.converters.UrdfConverterCfg.default_drive_type` - The drive-type for the joints. We recommend this to always be ``"none"``. This allows changing the drive configuration using the actuator models. @@ -62,6 +57,13 @@ the default values for the importer. The important settings are: * :attr:`~sim.converters.UrdfConverterCfg.default_drive_damping` - The drive damping for the joints. Similar to the stiffness, we recommend this to always be ``0.0``. + +Note that when instanceable option is selected, the +importer will create two USD files: one for all the mesh data and one for +all the non-mesh data (e.g. joints, rigid bodies, etc.). The prims in the mesh data file are +referenced in the non-mesh data file. This allows the mesh data (which is often bulky) to be +loaded into memory only once and used multiple times in a scene. + Example Usage ~~~~~~~~~~~~~ @@ -86,7 +88,7 @@ The following shows the steps to clone the repository and run the converter: # clone a repository with URDF files git clone git@github.com:isaac-orbit/anymal_d_simple_description.git - # go to top of the repository + # go to top of the Isaac Lab repository cd IsaacLab # run the converter ./isaaclab.sh -p source/standalone/tools/convert_urdf.py \ @@ -108,13 +110,67 @@ Executing the above script will create two USD files inside the main asset file even if the ``--make-instanceable`` flag is set. This means that the ``Props/instanceable_assets.usd`` file is created but not used anymore. -You can press play on the opened window to see the asset in the scene. The asset should "collapse" -if everything is working correctly. If it blows up, then it might be that you have self-collisions -present in the URDF. - To run the script headless, you can add the ``--headless`` flag. This will not open the GUI and exit the script after the conversion is complete. +You can press play on the opened window to see the asset in the scene. The asset should fall under gravity. If it blows up, then it might be that you have self-collisions present in the URDF. + + +.. figure:: ../_static/tutorials/tutorial_convert_urdf.jpg + :align: center + :figwidth: 100% + :alt: result of convert_urdf.py + + + +Using MJCF Importer +------------------- + +Similar to the URDF Importer, the MJCF Importer also has a GUI interface. Please check the documentation at `MJCF importer`_ for more details. For using the MJCF importer from Python scripts, we include a utility tool called ``convert_mjcf.py``. This script creates an instance of :class:`~sim.converters.MjcfConverterCfg` which is then passed to the :class:`~sim.converters.MjcfConverter` class. + +The default values for the importer's configuration parameters are specified in the :class:`~sim.converters.MjcfConverterCfg` class. The configuration parameters are listed below. We made a few commonly modified settings to be available as command-line arguments when calling the ``convert_mjcf.py``, and they are marked with ``*`` in the list. For a comprehensive list of the configuration parameters, please check the the documentation at `MJCF importer`_. + + +* :attr:`~sim.converters.MjcfConverterCfg.fix_base*` - Whether to fix the base of the robot. + This depends on whether you have a floating-base or fixed-base robot. The command-line flag is + ``--fix-base`` where when set, the importer will fix the base of the robot, otherwise it will default to floating-base. +* :attr:`~sim.converters.MjcfConverterCfg.make_instanceable*` - Whether to create instanceable assets. + Usually, this should be set to ``True``. The command-line flag is ``--make-instanceable`` where + when set, the importer will create instanceable assets, otherwise it will default to non-instanceable. +* :attr:`~sim.converters.MjcfConverterCfg.import_sites*` - Whether to parse the tag in the MJCF. + Usually, this should be set to ``True``. The command-line flag is ``--import-sites`` where when set, the importer will parse the tag, otherwise it will default to not parsing the tag. + + +Example Usage +~~~~~~~~~~~~~ + +In this example, we use the MuJoCo model of the Unitree's H1 humanoid robot in the `mujoco_menagerie`_. + +The following shows the steps to clone the repository and run the converter: + +.. code-block:: bash + + # create a directory to clone + mkdir ~/git && cd ~/git + # clone a repository with URDF files + git clone git@github.com:git@github.com:google-deepmind/mujoco_menagerie.git + + # go to top of the Isaac Lab repository + cd IsaacLab + # run the converter + ./isaaclab.sh -p source/standalone/tools/convert_mjcf.py \ + ~/git/mujoco_menagerie/unitree_h1/h1.xml \ + source/extensions/omni.isaac.lab_assets/data/Robots/Unitree/h1.usd \ + --import-sites \ + --make-instanceable + +.. figure:: ../_static/tutorials/tutorial_convert_mjcf.jpg + :align: center + :figwidth: 100% + :alt: result of convert_mjcf.py + + + Using Mesh Importer ------------------- @@ -147,7 +203,7 @@ the steps to clone the repository and run the converter: # clone a repository with URDF files git clone git@github.com:NVIDIA-Omniverse/IsaacGymEnvs.git - # go to top of the repository + # go to top of the Isaac Lab repository cd IsaacLab # run the converter ./isaaclab.sh -p source/standalone/tools/convert_mesh.py \ @@ -157,7 +213,9 @@ the steps to clone the repository and run the converter: --collision-approximation convexDecomposition \ --mass 1.0 -Similar to the URDF converter, executing the above script will create two USD files inside the +You may need to press 'F' to zoom in on the asset after import. + +Similar to the URDF and MJCF converter, executing the above script will create two USD files inside the ``source/extensions/omni.isaac.lab_assets/data/Props/CubeMultiColor/`` directory. Additionally, if you press play on the opened window, you should see the asset fall down under the influence of gravity. @@ -168,9 +226,16 @@ of gravity. properties as well and will be imported as a visual asset. +.. figure:: ../_static/tutorials/tutorial_convert_mesh.jpg + :align: center + :figwidth: 100% + :alt: result of convert_mesh.py + + .. _instanceable: https://openusd.org/dev/api/_usd__page__scenegraph_instancing.html .. _documentation: https://docs.omniverse.nvidia.com/isaacsim/latest/isaac_lab_tutorials/tutorial_instanceable_assets.html .. _MJCF importer: https://docs.omniverse.nvidia.com/isaacsim/latest/advanced_tutorials/tutorial_advanced_import_mjcf.html .. _URDF importer: https://docs.omniverse.nvidia.com/isaacsim/latest/advanced_tutorials/tutorial_advanced_import_urdf.html .. _anymal.urdf: https://github.com/isaac-orbit/anymal_d_simple_description/blob/master/urdf/anymal.urdf .. _asset converter: https://docs.omniverse.nvidia.com/extensions/latest/ext_asset-converter.html +.. _mujoco_menagerie: https://github.com/google-deepmind/mujoco_menagerie/tree/main/unitree_h1 diff --git a/docs/source/refs/issues.rst b/docs/source/refs/issues.rst index 4a760e6d85..9d9878bee2 100644 --- a/docs/source/refs/issues.rst +++ b/docs/source/refs/issues.rst @@ -36,35 +36,6 @@ over stepping different parts of the simulation app. However, at this point, the timeline for this feature request. -Non-determinism in physics simulation -------------------------------------- - -Due to GPU work scheduling, there's a possibility that runtime changes to simulation parameters -may alter the order in which operations take place. This occurs because environment updates can -happen while the GPU is occupied with other tasks. Due to the inherent nature of floating-point -numeric storage, any modification to the execution ordering can result in minor changes in the -least significant bits of output data. These changes may lead to divergent execution over the -course of simulating thousands of environments and simulation frames. - -An illustrative example of this issue is observed with the runtime domain randomization of object's -physics materials. This process can introduce both determinancy and simulation issues when executed -on the GPU due to the way these parameters are passed from the CPU to the GPU in the lower-level APIs. -Consequently, it is strongly advised to perform this operation only at setup time, before the -environment stepping commences. - -For more information, please refer to the `PhysX Determinism documentation`_. - -In addition, due to floating point precision, states across different environments in the simulation -may be non-deterministic when the same set of actions are applied to the same initial -states. This occurs as environments are placed further apart from the world origin at (0, 0, 0). -As actors get placed at different origins in the world, floating point errors may build up -and result in slight variance in results even when starting from the same initial states. One -possible workaround for this issue is to place all actors/environments at the world origin -at (0, 0, 0) and filter out collisions between the environments. Note that this may induce -a performance degradation of around 15-50%, depending on the complexity of actors and -environment. - - Blank initial frames from the camera ------------------------------------ @@ -99,7 +70,6 @@ are stored in the instanceable asset's USD file and not in its stage reference's .. _instanceable assets: https://docs.omniverse.nvidia.com/app_isaacsim/app_isaacsim/tutorial_gym_instanceable_assets.html .. _Omniverse Isaac Sim documentation: https://docs.omniverse.nvidia.com/isaacsim/latest/known_issues.html -.. _PhysX Determinism documentation: https://nvidia-omniverse.github.io/PhysX/physx/5.3.1/docs/BestPractices.html#determinism Exiting the process diff --git a/docs/source/setup/translation.rst b/docs/source/setup/translation.rst index f924539706..15550f924d 100644 --- a/docs/source/setup/translation.rst +++ b/docs/source/setup/translation.rst @@ -13,7 +13,7 @@ About Translation 随着本站用户的日渐增多,轻量服务器已经承受不住如此大的访问负载。如您认可本站的工作,可以通过下面的赞赏码打赏。收到的赞赏均用于服务器升级,如有剩余将用于公益救助事业,感谢您的支持! - 赞赏名单: **H\*R** 、 **\*彡** 、 **b\*k** 、 **\*涛** 、 **\*航** 、 **\*靖** 、 **李\*坤** 、 **\*玉** 、 **胡\*泽** + 赞赏名单: **H\*R** 、 **\*彡** 、 **b\*k** 、 **\*涛** 、 **\*航** 、 **\*靖** 、 **李\*坤** 、 **\*玉** 、 **胡\*泽** 、 **\*塔** .. figure:: ../_static/thanks.png :width: 450px @@ -49,7 +49,7 @@ About Translation # make po files sphinx-intl update -p _build/gettext -l zh_CN # transtale to zh_CN - python po_translator.py --folder ./locale --lang zh_CN --folder-language + python po_translator.py --folder ./locale --lang zh_CN --folder-language --fuzzy # make translated html files make -e SPHINXOPTS="-D language='zh_CN'" html # open on default browser diff --git a/docs/source/tutorials/01_assets/run_articulation.rst b/docs/source/tutorials/01_assets/run_articulation.rst index 061b768491..9fad5f2d90 100644 --- a/docs/source/tutorials/01_assets/run_articulation.rst +++ b/docs/source/tutorials/01_assets/run_articulation.rst @@ -49,7 +49,7 @@ an instance of the :class:`assets.Articulation` class by passing the configurati .. literalinclude:: ../../../../source/standalone/tutorials/01_assets/run_articulation.py :language: python - :start-at: # Create separate groups called "Origin1", "Origin2", "Origin3" + :start-at: # Create separate groups called "Origin1", "Origin2" :end-at: cartpole = Articulation(cfg=cartpole_cfg) diff --git a/source/apps/isaaclab.python.kit b/source/apps/isaaclab.python.kit index 6408ce0956..ed02070187 100644 --- a/source/apps/isaaclab.python.kit +++ b/source/apps/isaaclab.python.kit @@ -62,6 +62,7 @@ keywords = ["experience", "app", "usd"] "omni.kit.viewport.menubar.render" = {} "omni.kit.viewport.menubar.camera" = {} "omni.kit.viewport.menubar.display" = {} +"omni.kit.viewport.menubar.lighting" = {} "omni.kit.viewport.rtx" = {} "omni.kit.widget.cache_indicator" = {} diff --git a/source/extensions/omni.isaac.lab/config/extension.toml b/source/extensions/omni.isaac.lab/config/extension.toml index 4265d7cd07..18e5941c45 100644 --- a/source/extensions/omni.isaac.lab/config/extension.toml +++ b/source/extensions/omni.isaac.lab/config/extension.toml @@ -1,7 +1,7 @@ [package] # Note: Semantic Versioning is used: https://semver.org/ -version = "0.22.4" +version = "0.22.11" # Description title = "Isaac Lab framework for Robot Learning" diff --git a/source/extensions/omni.isaac.lab/docs/CHANGELOG.rst b/source/extensions/omni.isaac.lab/docs/CHANGELOG.rst index 64753ec7a2..4b45490da6 100644 --- a/source/extensions/omni.isaac.lab/docs/CHANGELOG.rst +++ b/source/extensions/omni.isaac.lab/docs/CHANGELOG.rst @@ -1,6 +1,79 @@ Changelog --------- +0.22.11 (2024-09-10) +~~~~~~~~~~~~~~~~~~~~ + +Added +^^^^^ + +* Added config class, support, and tests for MJCF conversion via standalone python scripts. + + +0.22.10 (2024-09-09) +~~~~~~~~~~~~~~~~~~~~ + +Added +^^^^^ + +* Added a seed parameter to the :attr:`omni.isaac.lab.envs.ManagerBasedEnvCfg` and :attr:`omni.isaac.lab.envs.DirectRLEnvCfg` + classes to set the seed for the environment. This seed is used to initialize the random number generator for the environment. +* Adapted the workflow scripts to set the seed for the environment using the seed specified in the learning agent's configuration + file or the command line argument. This ensures that the simulation results are reproducible across different runs. + + +0.22.9 (2024-09-08) +~~~~~~~~~~~~~~~~~~~ + +Changed +^^^^^^^ + +* Modified:meth:`quat_rotate` and :meth:`quat_rotate_inverse` operations to use :meth:`torch.einsum` + for faster processing of high dimensional input tensors. + + +0.22.8 (2024-09-06) +~~~~~~~~~~~~~~~~~~~ + +Added +^^^^^ + +* Added support for property attributes in the :meth:``omni.isaac.lab.utils.configclass`` method. + Earlier, the configclass decorator failed to parse the property attributes correctly and made them + instance variables instead. + + +0.22.7 (2024-09-05) +~~~~~~~~~~~~~~~~~~~ + +Fixed +^^^^^ + +* Adapted the ``A`` and ``D`` button bindings inside :meth:`omni.isaac.lab.device.Se3Keyboard` to make them now + more-intuitive to control the y-axis motion based on the right-hand rule. + + +0.22.6 (2024-08-29) +~~~~~~~~~~~~~~~~~~~ + +Added +^^^^^ + +* Added alternative data type "distance_to_camera" in :class:`omni.isaac.lab.sensors.TiledCamera` class to be + consistent with all other cameras (equal to type "depth"). + + +0.22.5 (2024-08-29) +~~~~~~~~~~~~~~~~~~~ + +Fixed +^^^^^ + +* Added missing SI units to the documentation of :class:`omni.isaac.lab.sensors.Camera` and + :class:`omni.isaac.lab.sensors.RayCasterCamera`. +* Added test to check :attr:`omni.isaac.lab.sensors.RayCasterCamera.set_intrinsic_matrices` + + 0.22.4 (2024-08-29) ~~~~~~~~~~~~~~~~~~~ diff --git a/source/extensions/omni.isaac.lab/omni/isaac/lab/app/app_launcher.py b/source/extensions/omni.isaac.lab/omni/isaac/lab/app/app_launcher.py index 8feb8db3e2..03fa3b7179 100644 --- a/source/extensions/omni.isaac.lab/omni/isaac/lab/app/app_launcher.py +++ b/source/extensions/omni.isaac.lab/omni/isaac/lab/app/app_launcher.py @@ -611,8 +611,8 @@ def _load_extensions(self): if self._livestream == 1: # Enable Native Livestream extension # Default App: Streaming Client from the Omniverse Launcher - enable_extension("omni.kit.streamsdk.plugins-4.5.1") - enable_extension("omni.kit.livestream.core-4.3.6") + enable_extension("omni.kit.streamsdk.plugins-3.2.1") + enable_extension("omni.kit.livestream.core-3.2.0") enable_extension("omni.kit.livestream.native-4.1.0") elif self._livestream == 2: # Enable WebRTC Livestream extension diff --git a/source/extensions/omni.isaac.lab/omni/isaac/lab/devices/keyboard/se3_keyboard.py b/source/extensions/omni.isaac.lab/omni/isaac/lab/devices/keyboard/se3_keyboard.py index 53b3afa6cd..80f3d209e4 100644 --- a/source/extensions/omni.isaac.lab/omni/isaac/lab/devices/keyboard/se3_keyboard.py +++ b/source/extensions/omni.isaac.lab/omni/isaac/lab/devices/keyboard/se3_keyboard.py @@ -170,9 +170,9 @@ def _create_key_bindings(self): # x-axis (forward) "W": np.asarray([1.0, 0.0, 0.0]) * self.pos_sensitivity, "S": np.asarray([-1.0, 0.0, 0.0]) * self.pos_sensitivity, - # y-axis (right-left) - "D": np.asarray([0.0, 1.0, 0.0]) * self.pos_sensitivity, - "A": np.asarray([0.0, -1.0, 0.0]) * self.pos_sensitivity, + # y-axis (left-right) + "A": np.asarray([0.0, 1.0, 0.0]) * self.pos_sensitivity, + "D": np.asarray([0.0, -1.0, 0.0]) * self.pos_sensitivity, # z-axis (up-down) "Q": np.asarray([0.0, 0.0, 1.0]) * self.pos_sensitivity, "E": np.asarray([0.0, 0.0, -1.0]) * self.pos_sensitivity, diff --git a/source/extensions/omni.isaac.lab/omni/isaac/lab/envs/direct_rl_env.py b/source/extensions/omni.isaac.lab/omni/isaac/lab/envs/direct_rl_env.py index d66b5a00f7..d75d7ec781 100644 --- a/source/extensions/omni.isaac.lab/omni/isaac/lab/envs/direct_rl_env.py +++ b/source/extensions/omni.isaac.lab/omni/isaac/lab/envs/direct_rl_env.py @@ -84,6 +84,12 @@ def __init__(self, cfg: DirectRLEnvCfg, render_mode: str | None = None, **kwargs # initialize internal variables self._is_closed = False + # set the seed for the environment + if self.cfg.seed is not None: + self.seed(self.cfg.seed) + else: + carb.log_warn("Seed not set for the environment. The environment creation may not be deterministic.") + # create a simulation context to control the simulator if SimulationContext.instance() is None: self.sim: SimulationContext = SimulationContext(self.cfg.sim) @@ -93,6 +99,7 @@ def __init__(self, cfg: DirectRLEnvCfg, render_mode: str | None = None, **kwargs # print useful information print("[INFO]: Base environment:") print(f"\tEnvironment device : {self.device}") + print(f"\tEnvironment seed : {self.cfg.seed}") print(f"\tPhysics step-size : {self.physics_dt}") print(f"\tRendering step-size : {self.physics_dt * self.cfg.sim.render_interval}") print(f"\tEnvironment step-size : {self.step_dt}") @@ -241,6 +248,10 @@ def max_episode_length(self): def reset(self, seed: int | None = None, options: dict[str, Any] | None = None) -> tuple[VecEnvObs, dict]: """Resets all the environments and returns observations. + This function calls the :meth:`_reset_idx` function to reset all the environments. + However, certain operations, such as procedural terrain generation, that happened during initialization + are not repeated. + Args: seed: The seed to use for randomization. Defaults to None, in which case the seed is not set. options: Additional information to specify how the environment is reset. Defaults to None. @@ -254,13 +265,13 @@ def reset(self, seed: int | None = None, options: dict[str, Any] | None = None) # set the seed if seed is not None: self.seed(seed) + # reset state of scene indices = torch.arange(self.num_envs, dtype=torch.int64, device=self.device) self._reset_idx(indices) - obs = self._get_observations() # return observations - return obs, self.extras + return self._get_observations(), self.extras def step(self, action: torch.Tensor) -> VecEnvStepReturn: """Execute one time-step of the environment's dynamics. diff --git a/source/extensions/omni.isaac.lab/omni/isaac/lab/envs/direct_rl_env_cfg.py b/source/extensions/omni.isaac.lab/omni/isaac/lab/envs/direct_rl_env_cfg.py index 5ce1bb6108..7cafe18fe7 100644 --- a/source/extensions/omni.isaac.lab/omni/isaac/lab/envs/direct_rl_env_cfg.py +++ b/source/extensions/omni.isaac.lab/omni/isaac/lab/envs/direct_rl_env_cfg.py @@ -41,6 +41,14 @@ class DirectRLEnvCfg: """ # general settings + seed: int | None = None + """The seed for the random number generator. Defaults to None, in which case the seed is not set. + + Note: + The seed is set at the beginning of the environment initialization. This ensures that the environment + creation is deterministic and behaves similarly across different runs. + """ + decimation: int = MISSING """Number of control action updates @ sim dt per policy dt. diff --git a/source/extensions/omni.isaac.lab/omni/isaac/lab/envs/manager_based_env.py b/source/extensions/omni.isaac.lab/omni/isaac/lab/envs/manager_based_env.py index b02f2faa73..31823fd779 100644 --- a/source/extensions/omni.isaac.lab/omni/isaac/lab/envs/manager_based_env.py +++ b/source/extensions/omni.isaac.lab/omni/isaac/lab/envs/manager_based_env.py @@ -74,6 +74,12 @@ def __init__(self, cfg: ManagerBasedEnvCfg): # initialize internal variables self._is_closed = False + # set the seed for the environment + if self.cfg.seed is not None: + self.seed(self.cfg.seed) + else: + carb.log_warn("Seed not set for the environment. The environment creation may not be deterministic.") + # create a simulation context to control the simulator if SimulationContext.instance() is None: # the type-annotation is required to avoid a type-checking error @@ -89,6 +95,7 @@ def __init__(self, cfg: ManagerBasedEnvCfg): # print useful information print("[INFO]: Base environment:") print(f"\tEnvironment device : {self.device}") + print(f"\tEnvironment seed : {self.cfg.seed}") print(f"\tPhysics step-size : {self.physics_dt}") print(f"\tRendering step-size : {self.physics_dt * self.cfg.sim.render_interval}") print(f"\tEnvironment step-size : {self.step_dt}") @@ -222,6 +229,10 @@ def load_managers(self): def reset(self, seed: int | None = None, options: dict[str, Any] | None = None) -> tuple[VecEnvObs, dict]: """Resets all the environments and returns observations. + This function calls the :meth:`_reset_idx` function to reset all the environments. + However, certain operations, such as procedural terrain generation, that happened during initialization + are not repeated. + Args: seed: The seed to use for randomization. Defaults to None, in which case the seed is not set. options: Additional information to specify how the environment is reset. Defaults to None. @@ -235,9 +246,11 @@ def reset(self, seed: int | None = None, options: dict[str, Any] | None = None) # set the seed if seed is not None: self.seed(seed) + # reset state of scene indices = torch.arange(self.num_envs, dtype=torch.int64, device=self.device) self._reset_idx(indices) + # return observations return self.observation_manager.compute(), self.extras diff --git a/source/extensions/omni.isaac.lab/omni/isaac/lab/envs/manager_based_env_cfg.py b/source/extensions/omni.isaac.lab/omni/isaac/lab/envs/manager_based_env_cfg.py index 12a69ac551..4740a27466 100644 --- a/source/extensions/omni.isaac.lab/omni/isaac/lab/envs/manager_based_env_cfg.py +++ b/source/extensions/omni.isaac.lab/omni/isaac/lab/envs/manager_based_env_cfg.py @@ -56,6 +56,14 @@ class ManagerBasedEnvCfg: """ # general settings + seed: int | None = None + """The seed for the random number generator. Defaults to None, in which case the seed is not set. + + Note: + The seed is set at the beginning of the environment initialization. This ensures that the environment + creation is deterministic and behaves similarly across different runs. + """ + decimation: int = MISSING """Number of control action updates @ sim dt per policy dt. diff --git a/source/extensions/omni.isaac.lab/omni/isaac/lab/managers/event_manager.py b/source/extensions/omni.isaac.lab/omni/isaac/lab/managers/event_manager.py index d3d66f42a4..e8aa7407ed 100644 --- a/source/extensions/omni.isaac.lab/omni/isaac/lab/managers/event_manager.py +++ b/source/extensions/omni.isaac.lab/omni/isaac/lab/managers/event_manager.py @@ -228,19 +228,20 @@ def apply( # select the valid environment indices based on the trigger if env_ids == slice(None): - env_ids = valid_trigger.nonzero().flatten() + valid_env_ids = valid_trigger.nonzero().flatten() else: - env_ids = env_ids[valid_trigger] + valid_env_ids = env_ids[valid_trigger] # reset the last reset step for each environment to the current env step count - if len(env_ids) > 0: - self._reset_term_last_triggered_once[index][env_ids] = True - self._reset_term_last_triggered_step_id[index][env_ids] = global_env_step_count - else: - # no need to call func to apply term - continue - # call the event term - term_cfg.func(self._env, env_ids, **term_cfg.params) + if len(valid_env_ids) > 0: + self._reset_term_last_triggered_once[index][valid_env_ids] = True + self._reset_term_last_triggered_step_id[index][valid_env_ids] = global_env_step_count + + # call the event term + term_cfg.func(self._env, valid_env_ids, **term_cfg.params) + else: + # call the event term + term_cfg.func(self._env, env_ids, **term_cfg.params) """ Operations - Term settings. diff --git a/source/extensions/omni.isaac.lab/omni/isaac/lab/sensors/camera/camera.py b/source/extensions/omni.isaac.lab/omni/isaac/lab/sensors/camera/camera.py index 28c6d1327d..e554d06ef7 100644 --- a/source/extensions/omni.isaac.lab/omni/isaac/lab/sensors/camera/camera.py +++ b/source/extensions/omni.isaac.lab/omni/isaac/lab/sensors/camera/camera.py @@ -216,7 +216,7 @@ def set_intrinsic_matrices( Args: matrices: The intrinsic matrices for the camera. Shape is (N, 3, 3). - focal_length: Focal length to use when computing aperture values. Defaults to 1.0. + focal_length: Focal length to use when computing aperture values (in cm). Defaults to 1.0. env_ids: A sensor ids to manipulate. Defaults to None, which means all sensor indices. """ # resolve env_ids diff --git a/source/extensions/omni.isaac.lab/omni/isaac/lab/sensors/camera/tiled_camera.py b/source/extensions/omni.isaac.lab/omni/isaac/lab/sensors/camera/tiled_camera.py index c2f7197225..447578113f 100644 --- a/source/extensions/omni.isaac.lab/omni/isaac/lab/sensors/camera/tiled_camera.py +++ b/source/extensions/omni.isaac.lab/omni/isaac/lab/sensors/camera/tiled_camera.py @@ -12,6 +12,7 @@ from tensordict import TensorDict from typing import TYPE_CHECKING, Any +import carb import omni.usd import warp as wp from omni.isaac.core.prims import XFormPrimView @@ -37,7 +38,8 @@ class TiledCamera(Camera): The following sensor types are supported: - ``"rgb"``: A rendered color image. - - ``"depth"``: An image containing the distance to camera optical center. + - ``"distance_to_camera"``: An image containing the distance to camera optical center. + - ``"depth"``: An alias for ``"distance_to_camera"``. .. attention:: Please note that the fidelity of RGB images may be lower than the standard camera sensor due to the @@ -54,8 +56,12 @@ class TiledCamera(Camera): cfg: TiledCameraCfg """The configuration parameters.""" - SUPPORTED_TYPES: set[str] = {"rgb", "depth"} - """The set of sensor types that are supported.""" + SUPPORTED_TYPES: set[str] = {"rgb", "distance_to_camera", "depth"} + """The set of sensor types that are supported. + + .. note:: + The ``"depth"`` type is an alias for ``"distance_to_camera"``. + """ def __init__(self, cfg: TiledCameraCfg): """Initializes the tiled camera sensor. @@ -157,12 +163,23 @@ def _initialize_impl(self): # start the orchestrator (if not already started) rep.orchestrator._orchestrator._is_started = True + # check the data_types and remove "depth" if "distance_to_camera" is requested too + if "depth" in self.cfg.data_types and "distance_to_camera" in self.cfg.data_types: + carb.log_warn( + "Both 'depth' and 'distance_to_camera' are requested which are the same. 'depth' will be ignored." + ) + self.cfg.data_types.remove("depth") + # NOTE: internally, "distance_to_camera" is named "depth", name is adjusted here + data_type = self.cfg.data_types.copy() + if "distance_to_camera" in data_type: + data_type.remove("distance_to_camera") + data_type.append("depth") # Create a tiled sensor from the camera prims rep_sensor = rep.create.tiled_sensor( cameras=self._view.prim_paths, camera_resolution=[self.image_shape[1], self.image_shape[0]], tiled_resolution=self._tiled_image_shape(), - output_types=self.cfg.data_types, + output_types=data_type, ) # Get render product render_prod_path = rep.create.render_product(camera=rep_sensor, resolution=self._tiled_image_shape()) @@ -198,7 +215,7 @@ def _update_buffers_impl(self, env_ids: Sequence[int]): wp.from_torch(self._data.output[data_type]), # zero-copy alias *list(self._data.output[data_type].shape[1:]), # height, width, num_channels self._tiling_grid_shape()[0], # num_tiles_x - offset if data_type == "depth" else 0, + offset if data_type == "distance_to_camera" or data_type == "depth" else 0, ], device=self.device, ) @@ -232,10 +249,11 @@ def _create_buffers(self): data_dict["rgb"] = torch.zeros( (self._view.count, self.cfg.height, self.cfg.width, 3), device=self.device ).contiguous() - if "depth" in self.cfg.data_types: - data_dict["depth"] = torch.zeros( - (self._view.count, self.cfg.height, self.cfg.width, 1), device=self.device - ).contiguous() + for data_type in ["distance_to_camera", "depth"]: + if data_type in self.cfg.data_types: + data_dict[data_type] = torch.zeros( + (self._view.count, self.cfg.height, self.cfg.width, 1), device=self.device + ).contiguous() self._data.output = TensorDict(data_dict, batch_size=self._view.count, device=self.device) def _tiled_image_shape(self) -> tuple[int, int]: diff --git a/source/extensions/omni.isaac.lab/omni/isaac/lab/sensors/ray_caster/patterns/patterns_cfg.py b/source/extensions/omni.isaac.lab/omni/isaac/lab/sensors/ray_caster/patterns/patterns_cfg.py index 06bdec83f6..075e75a437 100644 --- a/source/extensions/omni.isaac.lab/omni/isaac/lab/sensors/ray_caster/patterns/patterns_cfg.py +++ b/source/extensions/omni.isaac.lab/omni/isaac/lab/sensors/ray_caster/patterns/patterns_cfg.py @@ -70,7 +70,13 @@ class GridPatternCfg(PatternBaseCfg): @configclass class PinholeCameraPatternCfg(PatternBaseCfg): - """Configuration for a pinhole camera depth image pattern for ray-casting.""" + """Configuration for a pinhole camera depth image pattern for ray-casting. + + .. caution:: + Focal length as well as the aperture sizes and offsets are set as a tenth of the world unit. In our case, the + world unit is meters, so all of these values are in cm. For more information, please check: + https://docs.omniverse.nvidia.com/materials-and-rendering/latest/cameras.html + """ func: Callable = patterns.pinhole_camera_pattern @@ -81,16 +87,15 @@ class PinholeCameraPatternCfg(PatternBaseCfg): """ horizontal_aperture: float = 20.955 - """Horizontal aperture (in mm). Defaults to 20.955mm. + """Horizontal aperture (in cm). Defaults to 20.955 cm. Emulates sensor/film width on a camera. Note: The default value is the horizontal aperture of a 35 mm spherical projector. """ - vertical_aperture: float | None = None - """Vertical aperture (in mm). Defaults to None. + r"""Vertical aperture (in cm). Defaults to None. Emulates sensor/film height on a camera. If None, then the vertical aperture is calculated based on the horizontal aperture and the aspect ratio of the image to maintain squared pixels. In this case, the vertical diff --git a/source/extensions/omni.isaac.lab/omni/isaac/lab/sensors/ray_caster/ray_caster_camera.py b/source/extensions/omni.isaac.lab/omni/isaac/lab/sensors/ray_caster/ray_caster_camera.py index 759dbe3183..ea35412a0d 100644 --- a/source/extensions/omni.isaac.lab/omni/isaac/lab/sensors/ray_caster/ray_caster_camera.py +++ b/source/extensions/omni.isaac.lab/omni/isaac/lab/sensors/ray_caster/ray_caster_camera.py @@ -126,7 +126,7 @@ def set_intrinsic_matrices( Args: matrices: The intrinsic matrices for the camera. Shape is (N, 3, 3). - focal_length: Focal length to use when computing aperture values. Defaults to 1.0. + focal_length: Focal length to use when computing aperture values (in cm). Defaults to 1.0. env_ids: A sensor ids to manipulate. Defaults to None, which means all sensor indices. """ # resolve env_ids diff --git a/source/extensions/omni.isaac.lab/omni/isaac/lab/sensors/ray_caster/ray_caster_camera_cfg.py b/source/extensions/omni.isaac.lab/omni/isaac/lab/sensors/ray_caster/ray_caster_camera_cfg.py index a622f9ca4f..d770031794 100644 --- a/source/extensions/omni.isaac.lab/omni/isaac/lab/sensors/ray_caster/ray_caster_camera_cfg.py +++ b/source/extensions/omni.isaac.lab/omni/isaac/lab/sensors/ray_caster/ray_caster_camera_cfg.py @@ -5,10 +5,12 @@ """Configuration for the ray-cast camera sensor.""" +from dataclasses import MISSING from typing import Literal from omni.isaac.lab.utils import configclass +from .patterns import PinholeCameraPatternCfg from .ray_caster_camera import RayCasterCamera from .ray_caster_cfg import RayCasterCfg @@ -44,6 +46,9 @@ class OffsetCfg: data_types: list[str] = ["distance_to_image_plane"] """List of sensor names/types to enable for the camera. Defaults to ["distance_to_image_plane"].""" + pattern_cfg: PinholeCameraPatternCfg = MISSING + """The pattern that defines the local ray starting positions and directions in a pinhole camera pattern.""" + def __post_init__(self): # for cameras, this quantity should be False always. self.attach_yaw_only = False diff --git a/source/extensions/omni.isaac.lab/omni/isaac/lab/sim/converters/__init__.py b/source/extensions/omni.isaac.lab/omni/isaac/lab/sim/converters/__init__.py index f6f0e04c1c..141913f3a5 100644 --- a/source/extensions/omni.isaac.lab/omni/isaac/lab/sim/converters/__init__.py +++ b/source/extensions/omni.isaac.lab/omni/isaac/lab/sim/converters/__init__.py @@ -20,5 +20,7 @@ from .asset_converter_base_cfg import AssetConverterBaseCfg from .mesh_converter import MeshConverter from .mesh_converter_cfg import MeshConverterCfg +from .mjcf_converter import MjcfConverter +from .mjcf_converter_cfg import MjcfConverterCfg from .urdf_converter import UrdfConverter from .urdf_converter_cfg import UrdfConverterCfg diff --git a/source/extensions/omni.isaac.lab/omni/isaac/lab/sim/spawners/sensors/sensors_cfg.py b/source/extensions/omni.isaac.lab/omni/isaac/lab/sim/spawners/sensors/sensors_cfg.py index 129efc963b..52cd602b4c 100644 --- a/source/extensions/omni.isaac.lab/omni/isaac/lab/sim/spawners/sensors/sensors_cfg.py +++ b/source/extensions/omni.isaac.lab/omni/isaac/lab/sim/spawners/sensors/sensors_cfg.py @@ -20,6 +20,10 @@ class PinholeCameraCfg(SpawnerCfg): For more information on the parameters, please refer to the `camera documentation `__. + ..note :: + Focal length as well as the aperture sizes and offsets are set as a tenth of the world unit. In our case, the + world unit is Meter s.t. all of these values are set in cm. + .. note:: The default values are taken from the `Replicator camera `__ function. @@ -60,7 +64,7 @@ class PinholeCameraCfg(SpawnerCfg): """ horizontal_aperture: float = 20.955 - """Horizontal aperture (in mm). Defaults to 20.955mm. + """Horizontal aperture (in cm). Defaults to 20.955 cm. Emulates sensor/film width on a camera. diff --git a/source/extensions/omni.isaac.lab/omni/isaac/lab/terrains/terrain_generator.py b/source/extensions/omni.isaac.lab/omni/isaac/lab/terrains/terrain_generator.py index b6b3aeb226..abd411a856 100644 --- a/source/extensions/omni.isaac.lab/omni/isaac/lab/terrains/terrain_generator.py +++ b/source/extensions/omni.isaac.lab/omni/isaac/lab/terrains/terrain_generator.py @@ -71,8 +71,8 @@ class TerrainGenerator: .. attention:: The terrain generation has its own seed parameter. This is set using the :attr:`TerrainGeneratorCfg.seed` - parameter. If the seed is not set and the caching is disabled, the terrain generation will not be - reproducible. + parameter. If the seed is not set and the caching is disabled, the terrain generation may not be + completely reproducible. """ @@ -124,10 +124,16 @@ def __init__(self, cfg: TerrainGeneratorCfg, device: str = "cpu"): " Please set the seed in the terrain generator configuration to make the generation reproducible." ) + # if the seed is not set, we assume there is a global seed set and use that. + # this ensures that the terrain is reproducible if the seed is set at the beginning of the program. + if self.cfg.seed is not None: + seed = self.cfg.seed + else: + seed = np.random.get_state()[1][0] # set the seed for reproducibility # note: we create a new random number generator to avoid affecting the global state # in the other places where random numbers are used. - self.np_rng = np.random.default_rng(self.cfg.seed) + self.np_rng = np.random.default_rng(seed) # buffer for storing valid patches self.flat_patches = {} diff --git a/source/extensions/omni.isaac.lab/omni/isaac/lab/terrains/terrain_generator_cfg.py b/source/extensions/omni.isaac.lab/omni/isaac/lab/terrains/terrain_generator_cfg.py index 0d23818fc2..5b692bfd81 100644 --- a/source/extensions/omni.isaac.lab/omni/isaac/lab/terrains/terrain_generator_cfg.py +++ b/source/extensions/omni.isaac.lab/omni/isaac/lab/terrains/terrain_generator_cfg.py @@ -105,8 +105,14 @@ class TerrainGeneratorCfg: """Configuration for the terrain generator.""" seed: int | None = None - """The seed for the random number generator. Defaults to None, - in which case the seed is not set.""" + """The seed for the random number generator. Defaults to None, in which case the seed from the + current NumPy's random state is used. + + When the seed is set, the random number generator is initialized with the given seed. This ensures + that the generated terrains are deterministic across different runs. If the seed is not set, the + seed from the current NumPy's random state is used. This assumes that the seed is set elsewhere in + the code. + """ curriculum: bool = False """Whether to use the curriculum mode. Defaults to False. diff --git a/source/extensions/omni.isaac.lab/omni/isaac/lab/utils/configclass.py b/source/extensions/omni.isaac.lab/omni/isaac/lab/utils/configclass.py index 5980202900..7c1e1a9291 100644 --- a/source/extensions/omni.isaac.lab/omni/isaac/lab/utils/configclass.py +++ b/source/extensions/omni.isaac.lab/omni/isaac/lab/utils/configclass.py @@ -334,8 +334,10 @@ def _custom_post_init(obj): continue # get data member value = getattr(obj, key) - # duplicate data members - if not callable(value): + # check annotation + ann = obj.__class__.__dict__.get(key) + # duplicate data members that are mutable + if not callable(value) and not isinstance(ann, property): setattr(obj, key, deepcopy(value)) @@ -372,6 +374,7 @@ def _skippable_class_member(key: str, value: Any, hints: dict | None = None) -> * Manually-added special class functions: From :obj:`_CONFIGCLASS_METHODS`. * Members that are already present in the type annotations. * Functions bounded to class object or class. + * Properties bounded to class object. Args: key: The class member name. @@ -401,6 +404,9 @@ def _skippable_class_member(key: str, value: Any, hints: dict | None = None) -> signature = inspect.signature(value) if "self" in signature.parameters or "cls" in signature.parameters: return True + # skip property methods + if isinstance(value, property): + return True # Otherwise, don't skip return False diff --git a/source/extensions/omni.isaac.lab/omni/isaac/lab/utils/math.py b/source/extensions/omni.isaac.lab/omni/isaac/lab/utils/math.py index a1e45ab6b5..87dfd19c0c 100644 --- a/source/extensions/omni.isaac.lab/omni/isaac/lab/utils/math.py +++ b/source/extensions/omni.isaac.lab/omni/isaac/lab/utils/math.py @@ -580,41 +580,47 @@ def quat_apply_yaw(quat: torch.Tensor, vec: torch.Tensor) -> torch.Tensor: @torch.jit.script def quat_rotate(q: torch.Tensor, v: torch.Tensor) -> torch.Tensor: - """Rotate a vector by a quaternion. + """Rotate a vector by a quaternion along the last dimension of q and v. Args: - q: The quaternion in (w, x, y, z). Shape is (N, 4). - v: The vector in (x, y, z). Shape is (N, 3). + q: The quaternion in (w, x, y, z). Shape is (..., 4). + v: The vector in (x, y, z). Shape is (..., 3). Returns: - The rotated vector in (x, y, z). Shape is (N, 3). + The rotated vector in (x, y, z). Shape is (..., 3). """ - shape = q.shape - q_w = q[:, 0] - q_vec = q[:, 1:] + q_w = q[..., 0] + q_vec = q[..., 1:] a = v * (2.0 * q_w**2 - 1.0).unsqueeze(-1) b = torch.cross(q_vec, v, dim=-1) * q_w.unsqueeze(-1) * 2.0 - c = q_vec * torch.bmm(q_vec.view(shape[0], 1, 3), v.view(shape[0], 3, 1)).squeeze(-1) * 2.0 + # for two-dimensional tensors, bmm is faster than einsum + if q_vec.dim() == 2: + c = q_vec * torch.bmm(q_vec.view(q.shape[0], 1, 3), v.view(q.shape[0], 3, 1)).squeeze(-1) * 2.0 + else: + c = q_vec * torch.einsum("...i,...i->...", q_vec, v).unsqueeze(-1) * 2.0 return a + b + c @torch.jit.script def quat_rotate_inverse(q: torch.Tensor, v: torch.Tensor) -> torch.Tensor: - """Rotate a vector by the inverse of a quaternion. + """Rotate a vector by the inverse of a quaternion along the last dimension of q and v. Args: - q: The quaternion in (w, x, y, z). Shape is (N, 4). - v: The vector in (x, y, z). Shape is (N, 3). + q: The quaternion in (w, x, y, z). Shape is (..., 4). + v: The vector in (x, y, z). Shape is (..., 3). Returns: - The rotated vector in (x, y, z). Shape is (N, 3). + The rotated vector in (x, y, z). Shape is (..., 3). """ - shape = q.shape - q_w = q[:, 0] - q_vec = q[:, 1:] + q_w = q[..., 0] + q_vec = q[..., 1:] a = v * (2.0 * q_w**2 - 1.0).unsqueeze(-1) b = torch.cross(q_vec, v, dim=-1) * q_w.unsqueeze(-1) * 2.0 - c = q_vec * torch.bmm(q_vec.view(shape[0], 1, 3), v.view(shape[0], 3, 1)).squeeze(-1) * 2.0 + # for two-dimensional tensors, bmm is faster than einsum + if q_vec.dim() == 2: + c = q_vec * torch.bmm(q_vec.view(q.shape[0], 1, 3), v.view(q.shape[0], 3, 1)).squeeze(-1) * 2.0 + else: + c = q_vec * torch.einsum("...i,...i->...", q_vec, v).unsqueeze(-1) * 2.0 return a - b + c diff --git a/source/extensions/omni.isaac.lab/test/assets/test_articulation.py b/source/extensions/omni.isaac.lab/test/assets/test_articulation.py index f96dfc4882..5cd67dfa52 100644 --- a/source/extensions/omni.isaac.lab/test/assets/test_articulation.py +++ b/source/extensions/omni.isaac.lab/test/assets/test_articulation.py @@ -10,8 +10,10 @@ from omni.isaac.lab.app import AppLauncher, run_tests +HEADLESS = True + # launch omniverse app -app_launcher = AppLauncher(headless=True) +app_launcher = AppLauncher(headless=HEADLESS) simulation_app = app_launcher.app """Rest everything follows.""" @@ -19,13 +21,15 @@ import ctypes import torch import unittest +from typing import Literal -import omni.isaac.core.utils.stage as stage_utils +import omni.isaac.core.utils.prims as prim_utils import omni.isaac.lab.sim as sim_utils import omni.isaac.lab.utils.string as string_utils from omni.isaac.lab.actuators import ImplicitActuatorCfg from omni.isaac.lab.assets import Articulation, ArticulationCfg +from omni.isaac.lab.sim import build_simulation_context from omni.isaac.lab.utils.assets import ISAAC_NUCLEUS_DIR ## @@ -34,569 +38,760 @@ from omni.isaac.lab_assets import ANYMAL_C_CFG, FRANKA_PANDA_CFG, SHADOW_HAND_CFG # isort:skip +def generate_articulation_cfg( + articulation_type: Literal["humanoid", "panda", "anymal", "shadow_hand", "single_joint"], + stiffness: float | None = 10.0, + damping: float | None = 2.0, +) -> ArticulationCfg: + """Generate an articulation configuration. + + Args: + articulation_type: Type of articulation to generate. + stiffness: Stiffness value for the articulation's actuators. Only currently used for humanoid. + damping: Damping value for the articulation's actuators. Only currently used for humanoid. + + Returns: + The articulation configuration for the requested articulation type. + + """ + if articulation_type == "humanoid": + articulation_cfg = ArticulationCfg( + spawn=sim_utils.UsdFileCfg(usd_path=f"{ISAAC_NUCLEUS_DIR}/Robots/Humanoid/humanoid_instanceable.usd"), + init_state=ArticulationCfg.InitialStateCfg(pos=(0.0, 0.0, 1.34)), + actuators={"body": ImplicitActuatorCfg(joint_names_expr=[".*"], stiffness=stiffness, damping=damping)}, + ) + elif articulation_type == "panda": + articulation_cfg = FRANKA_PANDA_CFG + elif articulation_type == "anymal": + articulation_cfg = ANYMAL_C_CFG + elif articulation_type == "shadow_hand": + articulation_cfg = SHADOW_HAND_CFG + elif articulation_type == "single_joint": + articulation_cfg = ArticulationCfg( + spawn=sim_utils.UsdFileCfg(usd_path=f"{ISAAC_NUCLEUS_DIR}/Robots/Simple/revolute_articulation.usd"), + actuators={ + "joint": ImplicitActuatorCfg( + joint_names_expr=[".*"], + effort_limit=400.0, + velocity_limit=100.0, + stiffness=0.0, + damping=10.0, + ), + }, + ) + else: + raise ValueError( + f"Invalid articulation type: {articulation_type}, valid options are 'humanoid', 'panda', 'anymal'," + " 'shadow_hand' and 'single_joint'." + ) + + return articulation_cfg + + +def generate_articulation( + articulation_cfg: ArticulationCfg, num_articulations: int, device: str +) -> tuple[Articulation, torch.tensor]: + """Generate an articulation from a configuration. + + Handles the creation of the articulation, the environment prims and the articulation's environment + translations + + Args: + articulation_cfg: Articulation configuration. + num_articulations: Number of articulations to generate. + device: Device to use for the tensors. + + Returns: + The articulation and environment translations. + + """ + # Generate translations of 1.5m in x for each articulation + translations = torch.zeros(num_articulations, 3, device=device) + translations[:, 0] = torch.arange(num_articulations) * 1.5 + + # Create Top-level Xforms, one for each articulation + for i in range(num_articulations): + prim_utils.create_prim(f"/World/Env_{i}", "Xform", translation=translations[i][:3]) + articulation = Articulation(articulation_cfg.replace(prim_path="/World/Env_.*/Robot")) + + return articulation, translations + + class TestArticulation(unittest.TestCase): """Test for articulation class.""" - def setUp(self): - """Create a blank new stage for each test.""" - # Create a new stage - stage_utils.create_new_stage() - # Simulation time-step - self.dt = 0.005 - # Load kit helper - sim_cfg = sim_utils.SimulationCfg(dt=self.dt, device="cuda:0") - self.sim = sim_utils.SimulationContext(sim_cfg) - - def tearDown(self): - """Stops simulator after each test.""" - # stop simulation - self.sim.stop() - # clear the stage - self.sim.clear_all_callbacks() - self.sim.clear_instance() - """ Tests """ def test_initialization_floating_base_non_root(self): - """Test initialization for a floating-base with articulation root on a rigid body + """Test initialization for a floating-base with articulation root on a rigid body. under the provided prim path.""" - # Create articulation - robot_cfg = ArticulationCfg( - prim_path="/World/Robot", - spawn=sim_utils.UsdFileCfg(usd_path=f"{ISAAC_NUCLEUS_DIR}/Robots/Humanoid/humanoid_instanceable.usd"), - init_state=ArticulationCfg.InitialStateCfg(pos=(0.0, 0.0, 1.34)), - actuators={"body": ImplicitActuatorCfg(joint_names_expr=[".*"], stiffness=0.0, damping=0.0)}, - ) - robot = Articulation(cfg=robot_cfg) - - # Check that boundedness of articulation is correct - self.assertEqual(ctypes.c_long.from_address(id(robot)).value, 1) - - # Play sim - self.sim.reset() - - # Check that boundedness of articulation is correct - self.assertEqual(ctypes.c_long.from_address(id(robot)).value, 1) - - # Check if robot is initialized - self.assertTrue(robot.is_initialized) - # Check that floating base - self.assertFalse(robot.is_fixed_base) - # Check buffers that exists and have correct shapes - self.assertTrue(robot.data.root_pos_w.shape == (1, 3)) - self.assertTrue(robot.data.root_quat_w.shape == (1, 4)) - self.assertTrue(robot.data.joint_pos.shape == (1, 21)) - - # Check some internal physx data for debugging - # -- joint related - self.assertEqual(robot.root_physx_view.max_dofs, robot.root_physx_view.shared_metatype.dof_count) - # -- link related - self.assertEqual(robot.root_physx_view.max_links, robot.root_physx_view.shared_metatype.link_count) - # -- link names (check within articulation ordering is correct) - prim_path_body_names = [path.split("/")[-1] for path in robot.root_physx_view.link_paths[0]] - self.assertListEqual(prim_path_body_names, robot.body_names) - - # Simulate physics - for _ in range(10): - # perform rendering - self.sim.step() - # update robot - robot.update(self.dt) + for num_articulations in (1, 2): + for device in ("cuda:0", "cpu"): + with self.subTest(num_articulations=num_articulations, device=device): + with build_simulation_context(device=device, add_ground_plane=True, auto_add_lighting=True) as sim: + articulation_cfg = generate_articulation_cfg( + articulation_type="humanoid", stiffness=0.0, damping=0.0 + ) + articulation, _ = generate_articulation(articulation_cfg, num_articulations, device) + + # Check that boundedness of articulation is correct + self.assertEqual(ctypes.c_long.from_address(id(articulation)).value, 1) + + # Play sim + sim.reset() + + # # Check if articulation is initialized + self.assertTrue(articulation.is_initialized) + # Check that is fixed base + self.assertFalse(articulation.is_fixed_base) + # Check buffers that exists and have correct shapes + self.assertEqual(articulation.data.root_pos_w.shape, (num_articulations, 3)) + self.assertEqual(articulation.data.root_quat_w.shape, (num_articulations, 4)) + self.assertEqual(articulation.data.joint_pos.shape, (num_articulations, 21)) + + # Check some internal physx data for debugging + # -- joint related + self.assertEqual( + articulation.root_physx_view.max_dofs, + articulation.root_physx_view.shared_metatype.dof_count, + ) + # -- link related + self.assertEqual( + articulation.root_physx_view.max_links, + articulation.root_physx_view.shared_metatype.link_count, + ) + # -- link names (check within articulation ordering is correct) + prim_path_body_names = [ + path.split("/")[-1] for path in articulation.root_physx_view.link_paths[0] + ] + self.assertListEqual(prim_path_body_names, articulation.body_names) + + # Simulate physics + for _ in range(10): + # perform rendering + sim.step() + # update articulation + articulation.update(sim.cfg.dt) def test_initialization_floating_base(self): """Test initialization for a floating-base with articulation root on provided prim path.""" - # Create articulation - robot = Articulation(cfg=ANYMAL_C_CFG.replace(prim_path="/World/Robot")) - - # Check that boundedness of articulation is correct - self.assertEqual(ctypes.c_long.from_address(id(robot)).value, 1) - - # Play sim - self.sim.reset() - - # Check that boundedness of articulation is correct - self.assertEqual(ctypes.c_long.from_address(id(robot)).value, 1) - - # Check if robot is initialized - self.assertTrue(robot.is_initialized) - # Check that floating base - self.assertFalse(robot.is_fixed_base) - # Check buffers that exists and have correct shapes - self.assertTrue(robot.data.root_pos_w.shape == (1, 3)) - self.assertTrue(robot.data.root_quat_w.shape == (1, 4)) - self.assertTrue(robot.data.joint_pos.shape == (1, 12)) - - # Check some internal physx data for debugging - # -- joint related - self.assertEqual(robot.root_physx_view.max_dofs, robot.root_physx_view.shared_metatype.dof_count) - # -- link related - self.assertEqual(robot.root_physx_view.max_links, robot.root_physx_view.shared_metatype.link_count) - # -- link names (check within articulation ordering is correct) - prim_path_body_names = [path.split("/")[-1] for path in robot.root_physx_view.link_paths[0]] - self.assertListEqual(prim_path_body_names, robot.body_names) - - # Simulate physics - for _ in range(10): - # perform rendering - self.sim.step() - # update robot - robot.update(self.dt) + for num_articulations in (1, 2): + for device in ("cuda:0", "cpu"): + with self.subTest(num_articulations=num_articulations, device=device): + with build_simulation_context(device=device, add_ground_plane=True, auto_add_lighting=True) as sim: + articulation_cfg = generate_articulation_cfg( + articulation_type="anymal", stiffness=0.0, damping=0.0 + ) + articulation, _ = generate_articulation(articulation_cfg, num_articulations, device) + + # Check that boundedness of articulation is correct + self.assertEqual(ctypes.c_long.from_address(id(articulation)).value, 1) + + # Play sim + sim.reset() + # Check if articulation is initialized + self.assertTrue(articulation.is_initialized) + # Check that floating base + self.assertFalse(articulation.is_fixed_base) + # Check buffers that exists and have correct shapes + self.assertEqual(articulation.data.root_pos_w.shape, (num_articulations, 3)) + self.assertEqual(articulation.data.root_quat_w.shape, (num_articulations, 4)) + self.assertEqual(articulation.data.joint_pos.shape, (num_articulations, 12)) + + # Check some internal physx data for debugging + # -- joint related + self.assertEqual( + articulation.root_physx_view.max_dofs, + articulation.root_physx_view.shared_metatype.dof_count, + ) + # -- link related + self.assertEqual( + articulation.root_physx_view.max_links, + articulation.root_physx_view.shared_metatype.link_count, + ) + # -- link names (check within articulation ordering is correct) + prim_path_body_names = [ + path.split("/")[-1] for path in articulation.root_physx_view.link_paths[0] + ] + self.assertListEqual(prim_path_body_names, articulation.body_names) + + # Simulate physics + for _ in range(10): + # perform rendering + sim.step() + # update articulation + articulation.update(sim.cfg.dt) def test_initialization_fixed_base(self): """Test initialization for fixed base.""" - # Create articulation - robot = Articulation(cfg=FRANKA_PANDA_CFG.replace(prim_path="/World/Robot")) - - # Check that boundedness of articulation is correct - self.assertEqual(ctypes.c_long.from_address(id(robot)).value, 1) - - # Play sim - self.sim.reset() - - # Check that boundedness of articulation is correct - self.assertEqual(ctypes.c_long.from_address(id(robot)).value, 1) - - # Check if robot is initialized - self.assertTrue(robot.is_initialized) - # Check that fixed base - self.assertTrue(robot.is_fixed_base) - # Check buffers that exists and have correct shapes - self.assertTrue(robot.data.root_pos_w.shape == (1, 3)) - self.assertTrue(robot.data.root_quat_w.shape == (1, 4)) - self.assertTrue(robot.data.joint_pos.shape == (1, 9)) - - # Check some internal physx data for debugging - # -- joint related - self.assertEqual(robot.root_physx_view.max_dofs, robot.root_physx_view.shared_metatype.dof_count) - # -- link related - self.assertEqual(robot.root_physx_view.max_links, robot.root_physx_view.shared_metatype.link_count) - # -- link names (check within articulation ordering is correct) - prim_path_body_names = [path.split("/")[-1] for path in robot.root_physx_view.link_paths[0]] - self.assertListEqual(prim_path_body_names, robot.body_names) - - # Simulate physics - for _ in range(10): - # perform rendering - self.sim.step() - # update robot - robot.update(self.dt) - # check that the root is at the correct state - default_root_state = robot.data.default_root_state.clone() - torch.testing.assert_close(robot.data.root_state_w, default_root_state) + for num_articulations in (1, 2): + for device in ("cuda:0", "cpu"): + with self.subTest(num_articulations=num_articulations, device=device): + with build_simulation_context(device=device, add_ground_plane=False, auto_add_lighting=True) as sim: + articulation_cfg = generate_articulation_cfg(articulation_type="panda") + articulation, translations = generate_articulation(articulation_cfg, num_articulations, device) + + # Check that boundedness of articulation is correct + self.assertEqual(ctypes.c_long.from_address(id(articulation)).value, 1) + + # Play sim + sim.reset() + # Check if articulation is initialized + self.assertTrue(articulation.is_initialized) + # Check that fixed base + self.assertTrue(articulation.is_fixed_base) + # Check buffers that exists and have correct shapes + self.assertEqual(articulation.data.root_pos_w.shape, (num_articulations, 3)) + self.assertEqual(articulation.data.root_quat_w.shape, (num_articulations, 4)) + self.assertEqual(articulation.data.joint_pos.shape, (num_articulations, 9)) + + # Check some internal physx data for debugging + # -- joint related + self.assertEqual( + articulation.root_physx_view.max_dofs, + articulation.root_physx_view.shared_metatype.dof_count, + ) + # -- link related + self.assertEqual( + articulation.root_physx_view.max_links, + articulation.root_physx_view.shared_metatype.link_count, + ) + # -- link names (check within articulation ordering is correct) + prim_path_body_names = [ + path.split("/")[-1] for path in articulation.root_physx_view.link_paths[0] + ] + self.assertListEqual(prim_path_body_names, articulation.body_names) + + # Simulate physics + for _ in range(10): + # perform rendering + sim.step() + # update articulation + articulation.update(sim.cfg.dt) + + # check that the root is at the correct state - its default state as it is fixed base + default_root_state = articulation.data.default_root_state.clone() + default_root_state[:, :3] = default_root_state[:, :3] + translations + + torch.testing.assert_close(articulation.data.root_state_w, default_root_state) def test_initialization_fixed_base_single_joint(self): """Test initialization for fixed base articulation with a single joint.""" - # Create articulation - robot_cfg = ArticulationCfg( - spawn=sim_utils.UsdFileCfg(usd_path=f"{ISAAC_NUCLEUS_DIR}/Robots/Simple/revolute_articulation.usd"), - actuators={ - "joint": ImplicitActuatorCfg( - joint_names_expr=[".*"], - effort_limit=400.0, - velocity_limit=100.0, - stiffness=0.0, - damping=10.0, - ), - }, - ) - robot = Articulation(cfg=robot_cfg.replace(prim_path="/World/Robot")) - - # Check that boundedness of articulation is correct - self.assertEqual(ctypes.c_long.from_address(id(robot)).value, 1) - - # Play sim - self.sim.reset() - - # Check that boundedness of articulation is correct - self.assertEqual(ctypes.c_long.from_address(id(robot)).value, 1) - - # Check if robot is initialized - self.assertTrue(robot.is_initialized) - # Check that fixed base - self.assertTrue(robot.is_fixed_base) - # Check buffers that exists and have correct shapes - self.assertTrue(robot.data.root_pos_w.shape == (1, 3)) - self.assertTrue(robot.data.root_quat_w.shape == (1, 4)) - self.assertTrue(robot.data.joint_pos.shape == (1, 1)) - - # Check some internal physx data for debugging - # -- joint related - self.assertEqual(robot.root_physx_view.max_dofs, robot.root_physx_view.shared_metatype.dof_count) - # -- link related - self.assertEqual(robot.root_physx_view.max_links, robot.root_physx_view.shared_metatype.link_count) - # -- link names (check within articulation ordering is correct) - prim_path_body_names = [path.split("/")[-1] for path in robot.root_physx_view.link_paths[0]] - self.assertListEqual(prim_path_body_names, robot.body_names) - - # Simulate physics - for _ in range(10): - # perform rendering - self.sim.step() - # update robot - robot.update(self.dt) + for num_articulations in (1, 2): + for device in ("cuda:0", "cpu"): + with self.subTest(num_articulations=num_articulations, device=device): + with build_simulation_context(device=device, add_ground_plane=True, auto_add_lighting=True) as sim: + articulation_cfg = generate_articulation_cfg(articulation_type="single_joint") + articulation, translations = generate_articulation(articulation_cfg, num_articulations, device) + + # Check that boundedness of articulation is correct + self.assertEqual(ctypes.c_long.from_address(id(articulation)).value, 1) + + # Play sim + sim.reset() + # Check if articulation is initialized + self.assertTrue(articulation.is_initialized) + # Check that fixed base + self.assertTrue(articulation.is_fixed_base) + # Check buffers that exists and have correct shapes + self.assertEqual(articulation.data.root_pos_w.shape, (num_articulations, 3)) + self.assertEqual(articulation.data.root_quat_w.shape, (num_articulations, 4)) + self.assertEqual(articulation.data.joint_pos.shape, (num_articulations, 1)) + + # Check some internal physx data for debugging + # -- joint related + self.assertEqual( + articulation.root_physx_view.max_dofs, + articulation.root_physx_view.shared_metatype.dof_count, + ) + # -- link related + self.assertEqual( + articulation.root_physx_view.max_links, + articulation.root_physx_view.shared_metatype.link_count, + ) + # -- link names (check within articulation ordering is correct) + prim_path_body_names = [ + path.split("/")[-1] for path in articulation.root_physx_view.link_paths[0] + ] + self.assertListEqual(prim_path_body_names, articulation.body_names) + + # Simulate physics + for _ in range(10): + # perform rendering + sim.step() + # update articulation + articulation.update(sim.cfg.dt) + + # check that the root is at the correct state - its default state as it is fixed base + default_root_state = articulation.data.default_root_state.clone() + default_root_state[:, :3] = default_root_state[:, :3] + translations + + torch.testing.assert_close(articulation.data.root_state_w, default_root_state) def test_initialization_hand_with_tendons(self): """Test initialization for fixed base articulated hand with tendons.""" - # Create articulation - robot_cfg = SHADOW_HAND_CFG - robot = Articulation(cfg=robot_cfg.replace(prim_path="/World/Robot")) - - # Check that boundedness of articulation is correct - self.assertEqual(ctypes.c_long.from_address(id(robot)).value, 1) - - # Play sim - self.sim.reset() - - # Check that boundedness of articulation is correct - self.assertEqual(ctypes.c_long.from_address(id(robot)).value, 1) - - # Check if robot is initialized - self.assertTrue(robot.is_initialized) - # Check that fixed base - self.assertTrue(robot.is_fixed_base) - # Check buffers that exists and have correct shapes - self.assertTrue(robot.data.root_pos_w.shape == (1, 3)) - self.assertTrue(robot.data.root_quat_w.shape == (1, 4)) - self.assertTrue(robot.data.joint_pos.shape == (1, 24)) - - # Check some internal physx data for debugging - # -- joint related - self.assertEqual(robot.root_physx_view.max_dofs, robot.root_physx_view.shared_metatype.dof_count) - # -- link related - self.assertEqual(robot.root_physx_view.max_links, robot.root_physx_view.shared_metatype.link_count) - - # Simulate physics - for _ in range(10): - # perform rendering - self.sim.step() - # update robot - robot.update(self.dt) + for num_articulations in (1, 2): + for device in ("cuda:0", "cpu"): + with self.subTest(num_articulations=num_articulations, device=device): + with build_simulation_context(device=device, add_ground_plane=False, auto_add_lighting=True) as sim: + articulation_cfg = generate_articulation_cfg(articulation_type="shadow_hand") + articulation, _ = generate_articulation(articulation_cfg, num_articulations, device) + + # Check that boundedness of articulation is correct + self.assertEqual(ctypes.c_long.from_address(id(articulation)).value, 1) + + # Play sim + sim.reset() + # Check if articulation is initialized + self.assertTrue(articulation.is_initialized) + # Check that fixed base + self.assertTrue(articulation.is_fixed_base) + # Check buffers that exists and have correct shapes + self.assertTrue(articulation.data.root_pos_w.shape == (num_articulations, 3)) + self.assertTrue(articulation.data.root_quat_w.shape == (num_articulations, 4)) + self.assertTrue(articulation.data.joint_pos.shape == (num_articulations, 24)) + + # Check some internal physx data for debugging + # -- joint related + self.assertEqual( + articulation.root_physx_view.max_dofs, + articulation.root_physx_view.shared_metatype.dof_count, + ) + # -- link related + self.assertEqual( + articulation.root_physx_view.max_links, + articulation.root_physx_view.shared_metatype.link_count, + ) + + # Simulate physics + for _ in range(10): + # perform rendering + sim.step() + # update articulation + articulation.update(sim.cfg.dt) def test_initialization_floating_base_made_fixed_base(self): """Test initialization for a floating-base articulation made fixed-base using schema properties.""" - # Create articulation - robot_cfg: ArticulationCfg = ANYMAL_C_CFG.replace(prim_path="/World/Robot") - robot_cfg.spawn.articulation_props.fix_root_link = True - robot = Articulation(cfg=robot_cfg) - - # Check that boundedness of articulation is correct - self.assertEqual(ctypes.c_long.from_address(id(robot)).value, 1) - - # Play sim - self.sim.reset() - - # Check that boundedness of articulation is correct - self.assertEqual(ctypes.c_long.from_address(id(robot)).value, 1) - - # Check if robot is initialized - self.assertTrue(robot.is_initialized) - # Check that floating base - self.assertTrue(robot.is_fixed_base) - # Check buffers that exists and have correct shapes - self.assertTrue(robot.data.root_pos_w.shape == (1, 3)) - self.assertTrue(robot.data.root_quat_w.shape == (1, 4)) - self.assertTrue(robot.data.joint_pos.shape == (1, 12)) - - # Check some internal physx data for debugging - # -- joint related - self.assertEqual(robot.root_physx_view.max_dofs, robot.root_physx_view.shared_metatype.dof_count) - # -- link related - self.assertEqual(robot.root_physx_view.max_links, robot.root_physx_view.shared_metatype.link_count) - # -- link names (check within articulation ordering is correct) - prim_path_body_names = [path.split("/")[-1] for path in robot.root_physx_view.link_paths[0]] - self.assertListEqual(prim_path_body_names, robot.body_names) - - # Root state should be at the default state - robot.write_root_state_to_sim(robot.data.default_root_state.clone()) - # Simulate physics - for _ in range(10): - # perform rendering - self.sim.step() - # update robot - robot.update(self.dt) - # check that the root is at the correct state - default_root_state = robot.data.default_root_state.clone() - torch.testing.assert_close(robot.data.root_state_w, default_root_state) + for num_articulations in (1, 2): + for device in ("cuda:0", "cpu"): + with self.subTest(num_articulations=num_articulations, device=device): + with build_simulation_context(device=device, add_ground_plane=True, auto_add_lighting=True) as sim: + articulation_cfg = generate_articulation_cfg(articulation_type="anymal") + # Fix root link + articulation_cfg.spawn.articulation_props.fix_root_link = True + articulation, translations = generate_articulation(articulation_cfg, num_articulations, device) + + # Check that boundedness of articulation is correct + self.assertEqual(ctypes.c_long.from_address(id(articulation)).value, 1) + + # Play sim + sim.reset() + # Check if articulation is initialized + self.assertTrue(articulation.is_initialized) + # Check that is fixed base + self.assertTrue(articulation.is_fixed_base) + # Check buffers that exists and have correct shapes + self.assertEqual(articulation.data.root_pos_w.shape, (num_articulations, 3)) + self.assertEqual(articulation.data.root_quat_w.shape, (num_articulations, 4)) + self.assertEqual(articulation.data.joint_pos.shape, (num_articulations, 12)) + + # Check some internal physx data for debugging + # -- joint related + self.assertEqual( + articulation.root_physx_view.max_dofs, + articulation.root_physx_view.shared_metatype.dof_count, + ) + # -- link related + self.assertEqual( + articulation.root_physx_view.max_links, + articulation.root_physx_view.shared_metatype.link_count, + ) + # -- link names (check within articulation ordering is correct) + prim_path_body_names = [ + path.split("/")[-1] for path in articulation.root_physx_view.link_paths[0] + ] + self.assertListEqual(prim_path_body_names, articulation.body_names) + + # Simulate physics + for _ in range(10): + # perform rendering + sim.step() + # update articulation + articulation.update(sim.cfg.dt) + + # check that the root is at the correct state - its default state as it is fixed base + default_root_state = articulation.data.default_root_state.clone() + default_root_state[:, :3] = default_root_state[:, :3] + translations + + torch.testing.assert_close(articulation.data.root_state_w, default_root_state) def test_initialization_fixed_base_made_floating_base(self): """Test initialization for fixed base made floating-base using schema properties.""" - # Create articulation - robot_cfg = FRANKA_PANDA_CFG.replace(prim_path="/World/Robot") - robot_cfg.spawn.articulation_props.fix_root_link = False - robot = Articulation(cfg=robot_cfg) - - # Check that boundedness of articulation is correct - self.assertEqual(ctypes.c_long.from_address(id(robot)).value, 1) - - # Play sim - self.sim.reset() - - # Check that boundedness of articulation is correct - self.assertEqual(ctypes.c_long.from_address(id(robot)).value, 1) - - # Check if robot is initialized - self.assertTrue(robot.is_initialized) - # Check that fixed base - self.assertFalse(robot.is_fixed_base) - # Check buffers that exists and have correct shapes - self.assertTrue(robot.data.root_pos_w.shape == (1, 3)) - self.assertTrue(robot.data.root_quat_w.shape == (1, 4)) - self.assertTrue(robot.data.joint_pos.shape == (1, 9)) - - # Check some internal physx data for debugging - # -- joint related - self.assertEqual(robot.root_physx_view.max_dofs, robot.root_physx_view.shared_metatype.dof_count) - # -- link related - self.assertEqual(robot.root_physx_view.max_links, robot.root_physx_view.shared_metatype.link_count) - # -- link names (check within articulation ordering is correct) - prim_path_body_names = [path.split("/")[-1] for path in robot.root_physx_view.link_paths[0]] - self.assertListEqual(prim_path_body_names, robot.body_names) - - # Simulate physics - for _ in range(10): - # perform rendering - self.sim.step() - # update robot - robot.update(self.dt) - # check that the root is at the correct state - default_root_state = robot.data.default_root_state.clone() - is_close = torch.any(torch.isclose(robot.data.root_state_w, default_root_state)) - self.assertFalse(is_close) + for num_articulations in (1, 2): + for device in ("cuda:0", "cpu"): + with self.subTest(num_articulations=num_articulations, device=device): + with build_simulation_context(device=device, add_ground_plane=True, auto_add_lighting=True) as sim: + articulation_cfg = generate_articulation_cfg(articulation_type="panda") + # Unfix root link + articulation_cfg.spawn.articulation_props.fix_root_link = False + articulation, _ = generate_articulation(articulation_cfg, num_articulations, device) + + # Check that boundedness of articulation is correct + self.assertEqual(ctypes.c_long.from_address(id(articulation)).value, 1) + + # Play sim + sim.reset() + # Check if articulation is initialized + self.assertTrue(articulation.is_initialized) + # Check that is floating base + self.assertFalse(articulation.is_fixed_base) + # Check buffers that exists and have correct shapes + self.assertEqual(articulation.data.root_pos_w.shape, (num_articulations, 3)) + self.assertEqual(articulation.data.root_quat_w.shape, (num_articulations, 4)) + self.assertEqual(articulation.data.joint_pos.shape, (num_articulations, 9)) + + # Check some internal physx data for debugging + # -- joint related + self.assertEqual( + articulation.root_physx_view.max_dofs, + articulation.root_physx_view.shared_metatype.dof_count, + ) + # -- link related + self.assertEqual( + articulation.root_physx_view.max_links, + articulation.root_physx_view.shared_metatype.link_count, + ) + # -- link names (check within articulation ordering is correct) + prim_path_body_names = [ + path.split("/")[-1] for path in articulation.root_physx_view.link_paths[0] + ] + self.assertListEqual(prim_path_body_names, articulation.body_names) + + # Simulate physics + for _ in range(10): + # perform rendering + sim.step() + # update articulation + articulation.update(sim.cfg.dt) def test_out_of_range_default_joint_pos(self): """Test that the default joint position from configuration is out of range.""" - # Create articulation - robot_cfg = FRANKA_PANDA_CFG.replace(prim_path="/World/Robot") - robot_cfg.init_state.joint_pos = { - "panda_joint1": 10.0, - "panda_joint[2, 4]": -20.0, - } - robot = Articulation(robot_cfg) - - # Check that boundedness of articulation is correct - self.assertEqual(ctypes.c_long.from_address(id(robot)).value, 1) - - # Play sim - self.sim.reset() - # Check if robot is initialized - self.assertFalse(robot.is_initialized) + for num_articulations in (1, 2): + for device in ("cuda:0", "cpu"): + with self.subTest(num_articulations=num_articulations, device=device): + with build_simulation_context(device=device, add_ground_plane=True, auto_add_lighting=True) as sim: + # Create articulation + articulation_cfg = generate_articulation_cfg(articulation_type="panda") + articulation_cfg.init_state.joint_pos = { + "panda_joint1": 10.0, + "panda_joint[2, 4]": -20.0, + } + + articulation, _ = generate_articulation(articulation_cfg, num_articulations, device) + + # Check that boundedness of articulation is correct + self.assertEqual(ctypes.c_long.from_address(id(articulation)).value, 1) + + # Play sim + sim.reset() + # Check if articulation is initialized + self.assertFalse(articulation._is_initialized) def test_out_of_range_default_joint_vel(self): """Test that the default joint velocity from configuration is out of range.""" - # Create articulation - robot_cfg = FRANKA_PANDA_CFG.replace(prim_path="/World/Robot") - robot_cfg.init_state.joint_vel = { - "panda_joint1": 100.0, - "panda_joint[2, 4]": -60.0, - } - robot = Articulation(robot_cfg) - - # Check that boundedness of articulation is correct - self.assertEqual(ctypes.c_long.from_address(id(robot)).value, 1) - - # Play sim - self.sim.reset() - # Check if robot is initialized - self.assertFalse(robot.is_initialized) + with build_simulation_context(device="cuda:0", add_ground_plane=False, auto_add_lighting=True) as sim: + # Create articulation + articulation_cfg = FRANKA_PANDA_CFG.replace(prim_path="/World/Robot") + articulation_cfg.init_state.joint_vel = { + "panda_joint1": 100.0, + "panda_joint[2, 4]": -60.0, + } + articulation = Articulation(articulation_cfg) + + # Check that boundedness of articulation is correct + self.assertEqual(ctypes.c_long.from_address(id(articulation)).value, 1) + + # Play sim + sim.reset() + # Check if articulation is initialized + self.assertFalse(articulation._is_initialized) def test_external_force_on_single_body(self): - """Test application of external force on the base of the robot.""" - - # Robots - robot_cfg = ANYMAL_C_CFG - robot_cfg.spawn.func("/World/Anymal_c/Robot_1", robot_cfg.spawn, translation=(0.0, -0.5, 0.65)) - robot_cfg.spawn.func("/World/Anymal_c/Robot_2", robot_cfg.spawn, translation=(0.0, 0.5, 0.65)) - # create handles for the robots - robot = Articulation(robot_cfg.replace(prim_path="/World/Anymal_c/Robot.*")) - - # Play the simulator - self.sim.reset() - - # Find bodies to apply the force - body_ids, _ = robot.find_bodies("base") - # Sample a large force - external_wrench_b = torch.zeros(robot.num_instances, len(body_ids), 6, device=self.sim.device) - external_wrench_b[..., 1] = 1000.0 - - # Now we are ready! - for _ in range(5): - # reset root state - root_state = robot.data.default_root_state.clone() - root_state[0, :2] = torch.tensor([0.0, -0.5], device=self.sim.device) - root_state[1, :2] = torch.tensor([0.0, 0.5], device=self.sim.device) - robot.write_root_state_to_sim(root_state) - # reset dof state - joint_pos, joint_vel = robot.data.default_joint_pos, robot.data.default_joint_vel - robot.write_joint_state_to_sim(joint_pos, joint_vel) - # reset robot - robot.reset() - # apply force - robot.set_external_force_and_torque( - external_wrench_b[..., :3], external_wrench_b[..., 3:], body_ids=body_ids - ) - # perform simulation - for _ in range(100): - # apply action to the robot - robot.set_joint_position_target(robot.data.default_joint_pos.clone()) - robot.write_data_to_sim() - # perform step - self.sim.step() - # update buffers - robot.update(self.dt) - # check condition that the robots have fallen down - self.assertTrue(robot.data.root_pos_w[0, 2].item() < 0.2) - self.assertTrue(robot.data.root_pos_w[1, 2].item() < 0.2) + """Test application of external force on the base of the articulation.""" + for num_articulations in (1, 2): + for device in ("cuda:0", "cpu"): + with self.subTest(num_articulations=num_articulations, device=device): + with build_simulation_context(device=device, add_ground_plane=False, auto_add_lighting=True) as sim: + articulation_cfg = generate_articulation_cfg(articulation_type="anymal") + articulation, _ = generate_articulation(articulation_cfg, num_articulations, device) + # Play the simulator + sim.reset() + + # Find bodies to apply the force + body_ids, _ = articulation.find_bodies("base") + # Sample a large force + external_wrench_b = torch.zeros(articulation.num_instances, len(body_ids), 6, device=sim.device) + external_wrench_b[..., 1] = 1000.0 + + # Now we are ready! + for _ in range(5): + # reset root state + root_state = articulation.data.default_root_state.clone() + + articulation.write_root_state_to_sim(root_state) + # reset dof state + joint_pos, joint_vel = ( + articulation.data.default_joint_pos, + articulation.data.default_joint_vel, + ) + articulation.write_joint_state_to_sim(joint_pos, joint_vel) + # reset articulation + articulation.reset() + # apply force + articulation.set_external_force_and_torque( + external_wrench_b[..., :3], external_wrench_b[..., 3:], body_ids=body_ids + ) + # perform simulation + for _ in range(100): + # apply action to the articulation + articulation.set_joint_position_target(articulation.data.default_joint_pos.clone()) + articulation.write_data_to_sim() + # perform step + sim.step() + # update buffers + articulation.update(sim.cfg.dt) + # check condition that the articulations have fallen down + for i in range(num_articulations): + self.assertLess(articulation.data.root_pos_w[i, 2].item(), 0.2) def test_external_force_on_multiple_bodies(self): - """Test application of external force on the legs of the robot.""" - - # Robots - robot_cfg = ANYMAL_C_CFG - robot_cfg.spawn.func("/World/Anymal_c/Robot_1", robot_cfg.spawn, translation=(0.0, -0.5, 0.65)) - robot_cfg.spawn.func("/World/Anymal_c/Robot_2", robot_cfg.spawn, translation=(0.0, 0.5, 0.65)) - # create handles for the robots - robot = Articulation(robot_cfg.replace(prim_path="/World/Anymal_c/Robot.*")) - - # Play the simulator - self.sim.reset() - - # Find bodies to apply the force - body_ids, _ = robot.find_bodies(".*_SHANK") - # Sample a large force - external_wrench_b = torch.zeros(robot.num_instances, len(body_ids), 6, device=self.sim.device) - external_wrench_b[..., 1] = 100.0 - - # Now we are ready! - for _ in range(5): - # reset root state - root_state = robot.data.default_root_state.clone() - root_state[0, :2] = torch.tensor([0.0, -0.5], device=self.sim.device) - root_state[1, :2] = torch.tensor([0.0, 0.5], device=self.sim.device) - robot.write_root_state_to_sim(root_state) - # reset dof state - joint_pos, joint_vel = robot.data.default_joint_pos, robot.data.default_joint_vel - robot.write_joint_state_to_sim(joint_pos, joint_vel) - # reset robot - robot.reset() - # apply force - robot.set_external_force_and_torque( - external_wrench_b[..., :3], external_wrench_b[..., 3:], body_ids=body_ids - ) - # perform simulation - for _ in range(100): - # apply action to the robot - robot.set_joint_position_target(robot.data.default_joint_pos.clone()) - robot.write_data_to_sim() - # perform step - self.sim.step() - # update buffers - robot.update(self.dt) - # check condition - # since there is a moment applied on the robot, the robot should rotate - self.assertTrue(robot.data.root_ang_vel_w[0, 2].item() > 0.1) - self.assertTrue(robot.data.root_ang_vel_w[1, 2].item() > 0.1) + """Test application of external force on the legs of the articulation.""" + for num_articulations in (1, 2): + for device in ("cuda:0", "cpu"): + with self.subTest(num_articulations=num_articulations, device=device): + with build_simulation_context(device=device, add_ground_plane=False, auto_add_lighting=True) as sim: + articulation_cfg = generate_articulation_cfg(articulation_type="anymal") + articulation, _ = generate_articulation(articulation_cfg, num_articulations, device) + + # Play the simulator + sim.reset() + + # Find bodies to apply the force + body_ids, _ = articulation.find_bodies(".*_SHANK") + # Sample a large force + external_wrench_b = torch.zeros(articulation.num_instances, len(body_ids), 6, device=sim.device) + external_wrench_b[..., 1] = 100.0 + + # Now we are ready! + for _ in range(5): + # reset root state + articulation.write_root_state_to_sim(articulation.data.default_root_state.clone()) + # reset dof state + joint_pos, joint_vel = ( + articulation.data.default_joint_pos, + articulation.data.default_joint_vel, + ) + articulation.write_joint_state_to_sim(joint_pos, joint_vel) + # reset articulation + articulation.reset() + # apply force + articulation.set_external_force_and_torque( + external_wrench_b[..., :3], external_wrench_b[..., 3:], body_ids=body_ids + ) + # perform simulation + for _ in range(100): + # apply action to the articulation + articulation.set_joint_position_target(articulation.data.default_joint_pos.clone()) + articulation.write_data_to_sim() + # perform step + sim.step() + # update buffers + articulation.update(sim.cfg.dt) + # check condition + for i in range(num_articulations): + # since there is a moment applied on the articulation, the articulation should rotate + self.assertTrue(articulation.data.root_ang_vel_w[i, 2].item() > 0.1) def test_loading_gains_from_usd(self): """Test that gains are loaded from USD file if actuator model has them as None.""" - # Create articulation - robot_cfg = ArticulationCfg( - prim_path="/World/Robot", - spawn=sim_utils.UsdFileCfg(usd_path=f"{ISAAC_NUCLEUS_DIR}/Robots/Humanoid/humanoid_instanceable.usd"), - init_state=ArticulationCfg.InitialStateCfg(pos=(0.0, 0.0, 1.34)), - actuators={"body": ImplicitActuatorCfg(joint_names_expr=[".*"], stiffness=None, damping=None)}, - ) - robot = Articulation(cfg=robot_cfg) - - # Play sim - self.sim.reset() - - # Expected gains - # -- Stiffness values - expected_stiffness = { - ".*_waist.*": 20.0, - ".*_upper_arm.*": 10.0, - "pelvis": 10.0, - ".*_lower_arm": 2.0, - ".*_thigh:0": 10.0, - ".*_thigh:1": 20.0, - ".*_thigh:2": 10.0, - ".*_shin": 5.0, - ".*_foot.*": 2.0, - } - indices_list, _, values_list = string_utils.resolve_matching_names_values(expected_stiffness, robot.joint_names) - expected_stiffness = torch.zeros(robot.num_instances, robot.num_joints, device=robot.device) - expected_stiffness[:, indices_list] = torch.tensor(values_list, device=robot.device) - # -- Damping values - expected_damping = { - ".*_waist.*": 5.0, - ".*_upper_arm.*": 5.0, - "pelvis": 5.0, - ".*_lower_arm": 1.0, - ".*_thigh:0": 5.0, - ".*_thigh:1": 5.0, - ".*_thigh:2": 5.0, - ".*_shin": 0.1, - ".*_foot.*": 1.0, - } - indices_list, _, values_list = string_utils.resolve_matching_names_values(expected_damping, robot.joint_names) - expected_damping = torch.zeros_like(expected_stiffness) - expected_damping[:, indices_list] = torch.tensor(values_list, device=robot.device) - - # Check that gains are loaded from USD file - torch.testing.assert_close(robot.actuators["body"].stiffness, expected_stiffness) - torch.testing.assert_close(robot.actuators["body"].damping, expected_damping) + for num_articulations in (1, 2): + for device in ("cuda:0", "cpu"): + with self.subTest(num_articulations=num_articulations, device=device): + with build_simulation_context(device=device, add_ground_plane=False, auto_add_lighting=True) as sim: + articulation_cfg = generate_articulation_cfg( + articulation_type="humanoid", stiffness=None, damping=None + ) + articulation, _ = generate_articulation(articulation_cfg, num_articulations, device) + + # Play sim + sim.reset() + + # Expected gains + # -- Stiffness values + expected_stiffness = { + ".*_waist.*": 20.0, + ".*_upper_arm.*": 10.0, + "pelvis": 10.0, + ".*_lower_arm": 2.0, + ".*_thigh:0": 10.0, + ".*_thigh:1": 20.0, + ".*_thigh:2": 10.0, + ".*_shin": 5.0, + ".*_foot.*": 2.0, + } + indices_list, _, values_list = string_utils.resolve_matching_names_values( + expected_stiffness, articulation.joint_names + ) + expected_stiffness = torch.zeros( + articulation.num_instances, articulation.num_joints, device=articulation.device + ) + expected_stiffness[:, indices_list] = torch.tensor(values_list, device=articulation.device) + # -- Damping values + expected_damping = { + ".*_waist.*": 5.0, + ".*_upper_arm.*": 5.0, + "pelvis": 5.0, + ".*_lower_arm": 1.0, + ".*_thigh:0": 5.0, + ".*_thigh:1": 5.0, + ".*_thigh:2": 5.0, + ".*_shin": 0.1, + ".*_foot.*": 1.0, + } + indices_list, _, values_list = string_utils.resolve_matching_names_values( + expected_damping, articulation.joint_names + ) + expected_damping = torch.zeros_like(expected_stiffness) + expected_damping[:, indices_list] = torch.tensor(values_list, device=articulation.device) + + # Check that gains are loaded from USD file + torch.testing.assert_close(articulation.actuators["body"].stiffness, expected_stiffness) + torch.testing.assert_close(articulation.actuators["body"].damping, expected_damping) def test_setting_gains_from_cfg(self): """Test that gains are loaded from the configuration correctly. Note: We purposefully give one argument as int and other as float to check that it is handled correctly. """ - # Create articulation - robot_cfg = ArticulationCfg( - prim_path="/World/Robot", - spawn=sim_utils.UsdFileCfg(usd_path=f"{ISAAC_NUCLEUS_DIR}/Robots/Humanoid/humanoid_instanceable.usd"), - init_state=ArticulationCfg.InitialStateCfg(pos=(0.0, 0.0, 1.34)), - actuators={"body": ImplicitActuatorCfg(joint_names_expr=[".*"], stiffness=10, damping=2.0)}, - ) - robot = Articulation(cfg=robot_cfg) - - # Play sim - self.sim.reset() - - # Expected gains - expected_stiffness = torch.full((robot.num_instances, robot.num_joints), 10.0, device=robot.device) - expected_damping = torch.full_like(expected_stiffness, 2.0) - - # Check that gains are loaded from USD file - torch.testing.assert_close(robot.actuators["body"].stiffness, expected_stiffness) - torch.testing.assert_close(robot.actuators["body"].damping, expected_damping) + for num_articulations in (1, 2): + for device in ("cuda:0", "cpu"): + with self.subTest(num_articulations=num_articulations, device=device): + with build_simulation_context(device=device, add_ground_plane=True, auto_add_lighting=True) as sim: + articulation_cfg = generate_articulation_cfg(articulation_type="humanoid") + articulation, _ = generate_articulation( + articulation_cfg=articulation_cfg, num_articulations=num_articulations, device=device + ) + + # Play sim + sim.reset() + + # Expected gains + expected_stiffness = torch.full( + (articulation.num_instances, articulation.num_joints), 10.0, device=articulation.device + ) + expected_damping = torch.full_like(expected_stiffness, 2.0) + + # Check that gains are loaded from USD file + torch.testing.assert_close(articulation.actuators["body"].stiffness, expected_stiffness) + torch.testing.assert_close(articulation.actuators["body"].damping, expected_damping) def test_setting_gains_from_cfg_dict(self): """Test that gains are loaded from the configuration dictionary correctly. Note: We purposefully give one argument as int and other as float to check that it is handled correctly. """ - # Create articulation - robot_cfg = ArticulationCfg( - prim_path="/World/Robot", - spawn=sim_utils.UsdFileCfg(usd_path=f"{ISAAC_NUCLEUS_DIR}/Robots/Humanoid/humanoid_instanceable.usd"), - init_state=ArticulationCfg.InitialStateCfg(pos=(0.0, 0.0, 1.34)), - actuators={"body": ImplicitActuatorCfg(joint_names_expr=[".*"], stiffness={".*": 10}, damping={".*": 2.0})}, - ) - robot = Articulation(cfg=robot_cfg) + for num_articulations in (1, 2): + for device in ("cuda:0", "cpu"): + with self.subTest(num_articulations=num_articulations, device=device): + with build_simulation_context(device=device, add_ground_plane=False, auto_add_lighting=True) as sim: + articulation_cfg = generate_articulation_cfg(articulation_type="humanoid") + articulation, _ = generate_articulation( + articulation_cfg=articulation_cfg, num_articulations=num_articulations, device=device + ) + # Play sim + sim.reset() + + # Expected gains + expected_stiffness = torch.full( + (articulation.num_instances, articulation.num_joints), 10.0, device=articulation.device + ) + expected_damping = torch.full_like(expected_stiffness, 2.0) + + # Check that gains are loaded from USD file + torch.testing.assert_close(articulation.actuators["body"].stiffness, expected_stiffness) + torch.testing.assert_close(articulation.actuators["body"].damping, expected_damping) + + def test_reset(self): + """Test that reset method works properly. + + Need to check that all actuators are reset and that forces, torques and last body velocities are reset to 0.0. + + NOTE: Currently no way to determine actuators have been reset, can leave this to actuator tests that + implement reset method. - # Play sim - self.sim.reset() - - # Expected gains - expected_stiffness = torch.full((robot.num_instances, robot.num_joints), 10.0, device=robot.device) - expected_damping = torch.full_like(expected_stiffness, 2.0) - - # Check that gains are loaded from USD file - torch.testing.assert_close(robot.actuators["body"].stiffness, expected_stiffness) - torch.testing.assert_close(robot.actuators["body"].damping, expected_damping) + """ + for num_articulations in (1, 2): + for device in ("cuda:0", "cpu"): + with self.subTest(num_articulations=num_articulations, device=device): + with build_simulation_context(device=device, add_ground_plane=False, auto_add_lighting=True) as sim: + articulation_cfg = generate_articulation_cfg(articulation_type="humanoid") + articulation, _ = generate_articulation( + articulation_cfg=articulation_cfg, num_articulations=num_articulations, device=device + ) + + # Play the simulator + sim.reset() + + # Now we are ready! + # reset articulation + articulation.reset() + + # Reset should zero external forces and torques + self.assertFalse(articulation.has_external_wrench) + self.assertEqual(torch.count_nonzero(articulation._external_force_b), 0) + self.assertEqual(torch.count_nonzero(articulation._external_torque_b), 0) + + def test_apply_joint_command(self): + for num_articulations in (1, 2): + for device in ("cuda:0", "cpu"): + with self.subTest(num_articulations=num_articulations, device=device): + with build_simulation_context( + gravity_enabled=True, device=device, add_ground_plane=True, auto_add_lighting=True + ) as sim: + articulation_cfg = generate_articulation_cfg(articulation_type="panda") + articulation, _ = generate_articulation( + articulation_cfg=articulation_cfg, num_articulations=num_articulations, device=device + ) + + # Play the simulator + sim.reset() + + for _ in range(100): + # perform step + sim.step() + # update buffers + articulation.update(sim.cfg.dt) + + # reset dof state + joint_pos = articulation.data.default_joint_pos + joint_pos[:, 3] = 0.0 + + # apply action to the articulation + articulation.set_joint_position_target(joint_pos) + articulation.write_data_to_sim() + + for _ in range(100): + # perform step + sim.step() + # update buffers + articulation.update(sim.cfg.dt) + + # Check that current joint position is not the same as default joint position, meaning + # the articulation moved. We can't check that it reached it's desired joint position as the gains + # are not properly tuned + assert not torch.allclose(articulation.data.joint_pos, joint_pos) if __name__ == "__main__": diff --git a/source/extensions/omni.isaac.lab/test/sensors/test_ray_caster_camera.py b/source/extensions/omni.isaac.lab/test/sensors/test_ray_caster_camera.py index f1912f890f..65deba7d07 100644 --- a/source/extensions/omni.isaac.lab/test/sensors/test_ray_caster_camera.py +++ b/source/extensions/omni.isaac.lab/test/sensors/test_ray_caster_camera.py @@ -739,6 +739,82 @@ def test_output_equal_to_usd_camera_intrinsics(self): rtol=5e-6, ) + def test_output_equal_to_usd_camera_when_intrinsics_set(self): + """ + Test that the output of the ray caster camera is equal to the output of the usd camera when both are placed + under an XForm prim and an intrinsic matrix is set. + """ + + camera_pattern_cfg = patterns.PinholeCameraPatternCfg( + focal_length=24.0, + horizontal_aperture=20.955, + height=540, + width=960, + ) + camera_cfg_warp = RayCasterCameraCfg( + prim_path="/World/Camera", + mesh_prim_paths=["/World/defaultGroundPlane"], + update_period=0, + offset=RayCasterCameraCfg.OffsetCfg(pos=(0.0, 0.0, 0.0), rot=(1.0, 0.0, 0.0, 0.0)), + debug_vis=False, + pattern_cfg=camera_pattern_cfg, + data_types=["distance_to_camera"], + ) + + camera_warp = RayCasterCamera(camera_cfg_warp) + + # create usd camera + camera_cfg_usd = CameraCfg( + height=540, + width=960, + prim_path="/World/Camera_usd", + update_period=0, + data_types=["distance_to_camera"], + spawn=PinholeCameraCfg( + focal_length=24.0, focus_distance=400.0, horizontal_aperture=20.955, clipping_range=(1e-4, 1.0e5) + ), + ) + camera_usd = Camera(camera_cfg_usd) + + # play sim + self.sim.reset() + self.sim.play() + + # set intrinsic matrix + # NOTE: extend the test to cover aperture offsets once supported by the usd camera + intrinsic_matrix = torch.tensor( + [[380.0831, 0.0, camera_cfg_usd.width / 2, 0.0, 380.0831, camera_cfg_usd.height / 2, 0.0, 0.0, 1.0]], + device=camera_warp.device, + ).reshape(1, 3, 3) + camera_warp.set_intrinsic_matrices(intrinsic_matrix, focal_length=10) + camera_usd.set_intrinsic_matrices(intrinsic_matrix, focal_length=10) + + # set camera position + camera_warp.set_world_poses_from_view( + eyes=torch.tensor([[0.0, 0.0, 5.0]], device=camera_warp.device), + targets=torch.tensor([[0.0, 0.0, 0.0]], device=camera_warp.device), + ) + camera_usd.set_world_poses_from_view( + eyes=torch.tensor([[0.0, 0.0, 5.0]], device=camera_usd.device), + targets=torch.tensor([[0.0, 0.0, 0.0]], device=camera_usd.device), + ) + + # perform steps + for _ in range(5): + self.sim.step() + + # update camera + camera_usd.update(self.dt) + camera_warp.update(self.dt) + + # check image data + torch.testing.assert_close( + camera_usd.data.output["distance_to_camera"], + camera_warp.data.output["distance_to_camera"], + rtol=5e-3, + atol=1e-4, + ) + if __name__ == "__main__": run_tests() diff --git a/source/extensions/omni.isaac.lab/test/sensors/test_tiled_camera.py b/source/extensions/omni.isaac.lab/test/sensors/test_tiled_camera.py index 3a9efa582c..1220a5fc5b 100644 --- a/source/extensions/omni.isaac.lab/test/sensors/test_tiled_camera.py +++ b/source/extensions/omni.isaac.lab/test/sensors/test_tiled_camera.py @@ -44,7 +44,7 @@ def setUp(self): offset=TiledCameraCfg.OffsetCfg(pos=(0.0, 0.0, 4.0), rot=(0.0, 0.0, 1.0, 0.0), convention="ros"), prim_path="/World/Camera", update_period=0, - data_types=["rgb", "depth"], + data_types=["rgb", "distance_to_camera"], spawn=sim_utils.PinholeCameraCfg( focal_length=24.0, focus_distance=400.0, horizontal_aperture=20.955, clipping_range=(0.1, 1.0e5) ), @@ -217,6 +217,33 @@ def test_rgb_only_camera(self): self.assertGreater(im_data[1].mean().item(), 0.0) del camera + def test_data_types(self): + """Test single camera initialization.""" + # Create camera + camera_cfg_distance = copy.deepcopy(self.camera_cfg) + camera_cfg_distance.data_types = ["distance_to_camera"] + camera_cfg_distance.prim_path = "/World/CameraDistance" + camera_distance = TiledCamera(camera_cfg_distance) + camera_cfg_depth = copy.deepcopy(self.camera_cfg) + camera_cfg_depth.data_types = ["depth"] + camera_cfg_depth.prim_path = "/World/CameraDepth" + camera_depth = TiledCamera(camera_cfg_depth) + camera_cfg_both = copy.deepcopy(self.camera_cfg) + camera_cfg_both.data_types = ["distance_to_camera", "depth"] + camera_cfg_both.prim_path = "/World/CameraBoth" + camera_both = TiledCamera(camera_cfg_both) + # Play sim + self.sim.reset() + # Check if camera is initialized + self.assertTrue(camera_distance.is_initialized) + self.assertTrue(camera_depth.is_initialized) + self.assertTrue(camera_both.is_initialized) + self.assertListEqual(list(camera_distance.data.output.keys()), ["distance_to_camera"]) + self.assertListEqual(list(camera_depth.data.output.keys()), ["depth"]) + self.assertListEqual(list(camera_both.data.output.keys()), ["distance_to_camera"]) + + del camera_distance, camera_depth, camera_both + def test_depth_only_camera(self): """Test initialization with only depth.""" @@ -225,7 +252,7 @@ def test_depth_only_camera(self): # Create camera camera_cfg = copy.deepcopy(self.camera_cfg) - camera_cfg.data_types = ["depth"] + camera_cfg.data_types = ["distance_to_camera"] camera_cfg.prim_path = "/World/Origin_.*/CameraSensor" camera = TiledCamera(camera_cfg) # Check simulation parameter is set correctly @@ -237,7 +264,7 @@ def test_depth_only_camera(self): # Check if camera prim is set correctly and that it is a camera prim self.assertEqual(camera._sensor_prims[1].GetPath().pathString, "/World/Origin_01/CameraSensor") self.assertIsInstance(camera._sensor_prims[0], UsdGeom.Camera) - self.assertListEqual(list(camera.data.output.keys()), ["depth"]) + self.assertListEqual(list(camera.data.output.keys()), ["distance_to_camera"]) # Simulate for a few steps # note: This is a workaround to ensure that the textures are loaded. diff --git a/source/extensions/omni.isaac.lab/test/terrains/test_terrain_generator.py b/source/extensions/omni.isaac.lab/test/terrains/test_terrain_generator.py index ccb6559798..c5bc2af69a 100644 --- a/source/extensions/omni.isaac.lab/test/terrains/test_terrain_generator.py +++ b/source/extensions/omni.isaac.lab/test/terrains/test_terrain_generator.py @@ -18,6 +18,8 @@ import torch import unittest +import omni.isaac.core.utils.torch as torch_utils + from omni.isaac.lab.terrains import FlatPatchSamplingCfg, TerrainGenerator, TerrainGeneratorCfg from omni.isaac.lab.terrains.config.rough import ROUGH_TERRAINS_CFG @@ -50,6 +52,44 @@ def test_generation(self): self.assertAlmostEqual(actualSize[0], expectedSizeX) self.assertAlmostEqual(actualSize[1], expectedSizeY) + def test_generation_reproducibility(self): + """Generates assorted terrains and tests that the resulting mesh is reproducible. + + We check both scenarios where the seed is set globally only and when it is set both globally and locally. + Setting only locally is not tested as it is not supported. + """ + for use_global_seed in [True, False]: + for seed in [20, 40, 80]: + with self.subTest(seed=seed): + # set initial seed + torch_utils.set_seed(seed) + + # create terrain generator + cfg = ROUGH_TERRAINS_CFG.copy() + cfg.use_cache = False + cfg.seed = seed if use_global_seed else None + terrain_generator = TerrainGenerator(cfg=cfg) + + # keep a copy of the generated terrain mesh + terrain_mesh_1 = terrain_generator.terrain_mesh.copy() + + # set seed again + torch_utils.set_seed(seed) + + # create terrain generator + terrain_generator = TerrainGenerator(cfg=cfg) + + # keep a copy of the generated terrain mesh + terrain_mesh_2 = terrain_generator.terrain_mesh.copy() + + # check if the meshes are equal + np.testing.assert_allclose( + terrain_mesh_1.vertices, terrain_mesh_2.vertices, atol=1e-5, err_msg="Vertices are not equal" + ) + np.testing.assert_allclose( + terrain_mesh_1.faces, terrain_mesh_2.faces, atol=1e-5, err_msg="Faces are not equal" + ) + def test_generation_cache(self): """Generate the terrain and check that caching works. @@ -79,9 +119,7 @@ def test_generation_cache(self): # set a random seed to disturb the process # this is to ensure that the seed inside the terrain generator makes deterministic results - np.random.seed(12456) - torch.manual_seed(12456) - torch.cuda.manual_seed_all(12456) + torch_utils.set_seed(12456) # create terrain generator with cache enabled terrain_generator = TerrainGenerator(cfg=cfg) diff --git a/source/extensions/omni.isaac.lab/test/utils/test_configclass.py b/source/extensions/omni.isaac.lab/test/utils/test_configclass.py index eedf6db5d3..1ee984ce52 100644 --- a/source/extensions/omni.isaac.lab/test/utils/test_configclass.py +++ b/source/extensions/omni.isaac.lab/test/utils/test_configclass.py @@ -307,6 +307,14 @@ def instance_method(self): def class_method(cls, value: int) -> ClassFunctionImplementedDemoCfg: return cls(a=value) + @property + def a_proxy(self) -> int: + return self.a + + @a_proxy.setter + def a_proxy(self, value: int): + self.a = value + """ Dummy configuration: Nested dictionaries @@ -642,7 +650,7 @@ def test_function_impl_config(self): self.assertEqual(cfg.a, 10) def test_class_function_impl_config(self): - """Tests having class and static function defined in the class instance.""" + """Tests having class function defined in the class instance.""" cfg = ClassFunctionImplementedDemoCfg() # check that the annotations are correct @@ -659,6 +667,25 @@ def test_class_function_impl_config(self): # check value is correct self.assertEqual(new_cfg2.a, 20) + def test_class_property_impl_config(self): + """Tests having class property defined in the class instance.""" + cfg = ClassFunctionImplementedDemoCfg() + + # check that the annotations are correct + self.assertDictEqual(cfg.__annotations__, {"a": "int"}) + + # check all methods are callable + cfg.instance_method() + + # check value is correct + self.assertEqual(cfg.a, 5) + self.assertEqual(cfg.a_proxy, 5) + + # set through property + cfg.a_proxy = 10 + self.assertEqual(cfg.a, 10) + self.assertEqual(cfg.a_proxy, 10) + def test_dict_conversion_functions_config(self): """Tests conversion of config with functions into dictionary.""" cfg = FunctionsDemoCfg() diff --git a/source/extensions/omni.isaac.lab/test/utils/test_math.py b/source/extensions/omni.isaac.lab/test/utils/test_math.py index 02b7717984..47a9091e1d 100644 --- a/source/extensions/omni.isaac.lab/test/utils/test_math.py +++ b/source/extensions/omni.isaac.lab/test/utils/test_math.py @@ -3,7 +3,6 @@ # # SPDX-License-Identifier: BSD-3-Clause -import torch import unittest """Launch Isaac Sim Simulator first. @@ -19,6 +18,9 @@ """Rest everything follows.""" +import math +import torch +import torch.utils.benchmark as benchmark from math import pi as PI import omni.isaac.lab.utils.math as math_utils @@ -227,6 +229,153 @@ def test_wrap_to_pi(self): # Check that the wrapped angle is close to the expected value torch.testing.assert_close(wrapped_angle, expected_angle) + def test_quat_rotate_and_quat_rotate_inverse(self): + """Test for quat_rotate and quat_rotate_inverse methods. + + The new implementation uses :meth:`torch.einsum` instead of `torch.bmm` which allows + for more flexibility in the input dimensions and is faster than `torch.bmm`. + """ + + # define old implementation for quat_rotate and quat_rotate_inverse + # Based on commit: cdfa954fcc4394ca8daf432f61994e25a7b8e9e2 + + @torch.jit.script + def old_quat_rotate(q: torch.Tensor, v: torch.Tensor) -> torch.Tensor: + shape = q.shape + q_w = q[:, 0] + q_vec = q[:, 1:] + a = v * (2.0 * q_w**2 - 1.0).unsqueeze(-1) + b = torch.cross(q_vec, v, dim=-1) * q_w.unsqueeze(-1) * 2.0 + c = q_vec * torch.bmm(q_vec.view(shape[0], 1, 3), v.view(shape[0], 3, 1)).squeeze(-1) * 2.0 + return a + b + c + + @torch.jit.script + def old_quat_rotate_inverse(q: torch.Tensor, v: torch.Tensor) -> torch.Tensor: + shape = q.shape + q_w = q[:, 0] + q_vec = q[:, 1:] + a = v * (2.0 * q_w**2 - 1.0).unsqueeze(-1) + b = torch.cross(q_vec, v, dim=-1) * q_w.unsqueeze(-1) * 2.0 + c = q_vec * torch.bmm(q_vec.view(shape[0], 1, 3), v.view(shape[0], 3, 1)).squeeze(-1) * 2.0 + return a - b + c + + # check that implementation produces the same result as the new implementation + for device in ["cpu", "cuda:0"]: + # prepare random quaternions and vectors + q_rand = math_utils.random_orientation(num=1024, device=device) + v_rand = math_utils.sample_uniform(-1000, 1000, (1024, 3), device=device) + + # compute the result using the old implementation + old_result = old_quat_rotate(q_rand, v_rand) + old_result_inv = old_quat_rotate_inverse(q_rand, v_rand) + + # compute the result using the new implementation + new_result = math_utils.quat_rotate(q_rand, v_rand) + new_result_inv = math_utils.quat_rotate_inverse(q_rand, v_rand) + + # check that the result is close to the expected value + torch.testing.assert_close(old_result, new_result) + torch.testing.assert_close(old_result_inv, new_result_inv) + + # check the performance of the new implementation + for device in ["cpu", "cuda:0"]: + # prepare random quaternions and vectors + # new implementation supports batched inputs + q_shape = (1024, 2, 5, 4) + v_shape = (1024, 2, 5, 3) + # sample random quaternions and vectors + num_quats = math.prod(q_shape[:-1]) + q_rand = math_utils.random_orientation(num=num_quats, device=device).reshape(q_shape) + v_rand = math_utils.sample_uniform(-1000, 1000, v_shape, device=device) + + # create functions to test + def iter_quat_rotate(q: torch.Tensor, v: torch.Tensor) -> torch.Tensor: + """Iterative implementation of new quat_rotate.""" + out = torch.empty_like(v) + for i in range(q.shape[1]): + for j in range(q.shape[2]): + out[:, i, j] = math_utils.quat_rotate(q_rand[:, i, j], v_rand[:, i, j]) + return out + + def iter_quat_rotate_inverse(q: torch.Tensor, v: torch.Tensor) -> torch.Tensor: + """Iterative implementation of new quat_rotate_inverse.""" + out = torch.empty_like(v) + for i in range(q.shape[1]): + for j in range(q.shape[2]): + out[:, i, j] = math_utils.quat_rotate_inverse(q_rand[:, i, j], v_rand[:, i, j]) + return out + + def iter_old_quat_rotate(q: torch.Tensor, v: torch.Tensor) -> torch.Tensor: + """Iterative implementation of old quat_rotate.""" + out = torch.empty_like(v) + for i in range(q.shape[1]): + for j in range(q.shape[2]): + out[:, i, j] = old_quat_rotate(q_rand[:, i, j], v_rand[:, i, j]) + return out + + def iter_old_quat_rotate_inverse(q: torch.Tensor, v: torch.Tensor) -> torch.Tensor: + """Iterative implementation of old quat_rotate_inverse.""" + out = torch.empty_like(v) + for i in range(q.shape[1]): + for j in range(q.shape[2]): + out[:, i, j] = old_quat_rotate_inverse(q_rand[:, i, j], v_rand[:, i, j]) + return out + + # create benchmark + timer_iter_quat_rotate = benchmark.Timer( + stmt="iter_quat_rotate(q_rand, v_rand)", + globals={"iter_quat_rotate": iter_quat_rotate, "q_rand": q_rand, "v_rand": v_rand}, + ) + timer_iter_quat_rotate_inverse = benchmark.Timer( + stmt="iter_quat_rotate_inverse(q_rand, v_rand)", + globals={"iter_quat_rotate_inverse": iter_quat_rotate_inverse, "q_rand": q_rand, "v_rand": v_rand}, + ) + + timer_iter_old_quat_rotate = benchmark.Timer( + stmt="iter_old_quat_rotate(q_rand, v_rand)", + globals={"iter_old_quat_rotate": iter_old_quat_rotate, "q_rand": q_rand, "v_rand": v_rand}, + ) + timer_iter_old_quat_rotate_inverse = benchmark.Timer( + stmt="iter_old_quat_rotate_inverse(q_rand, v_rand)", + globals={ + "iter_old_quat_rotate_inverse": iter_old_quat_rotate_inverse, + "q_rand": q_rand, + "v_rand": v_rand, + }, + ) + + timer_quat_rotate = benchmark.Timer( + stmt="math_utils.quat_rotate(q_rand, v_rand)", + globals={"math_utils": math_utils, "q_rand": q_rand, "v_rand": v_rand}, + ) + timer_quat_rotate_inverse = benchmark.Timer( + stmt="math_utils.quat_rotate_inverse(q_rand, v_rand)", + globals={"math_utils": math_utils, "q_rand": q_rand, "v_rand": v_rand}, + ) + + # run the benchmark + print("--------------------------------") + print(f"Device: {device}") + print("Time for quat_rotate:", timer_quat_rotate.timeit(number=1000)) + print("Time for iter_quat_rotate:", timer_iter_quat_rotate.timeit(number=1000)) + print("Time for iter_old_quat_rotate:", timer_iter_old_quat_rotate.timeit(number=1000)) + print("--------------------------------") + print("Time for quat_rotate_inverse:", timer_quat_rotate_inverse.timeit(number=1000)) + print("Time for iter_quat_rotate_inverse:", timer_iter_quat_rotate_inverse.timeit(number=1000)) + print("Time for iter_old_quat_rotate_inverse:", timer_iter_old_quat_rotate_inverse.timeit(number=1000)) + print("--------------------------------") + + # check output values are the same + torch.testing.assert_close(math_utils.quat_rotate(q_rand, v_rand), iter_quat_rotate(q_rand, v_rand)) + torch.testing.assert_close(math_utils.quat_rotate(q_rand, v_rand), iter_old_quat_rotate(q_rand, v_rand)) + torch.testing.assert_close( + math_utils.quat_rotate_inverse(q_rand, v_rand), iter_quat_rotate_inverse(q_rand, v_rand) + ) + torch.testing.assert_close( + math_utils.quat_rotate_inverse(q_rand, v_rand), + iter_old_quat_rotate_inverse(q_rand, v_rand), + ) + if __name__ == "__main__": run_tests() diff --git a/source/extensions/omni.isaac.lab_tasks/omni/isaac/lab_tasks/direct/cartpole/cartpole_camera_env.py b/source/extensions/omni.isaac.lab_tasks/omni/isaac/lab_tasks/direct/cartpole/cartpole_camera_env.py index e962ffc772..b23f1f97bd 100644 --- a/source/extensions/omni.isaac.lab_tasks/omni/isaac/lab_tasks/direct/cartpole/cartpole_camera_env.py +++ b/source/extensions/omni.isaac.lab_tasks/omni/isaac/lab_tasks/direct/cartpole/cartpole_camera_env.py @@ -80,7 +80,7 @@ class CartpoleDepthCameraEnvCfg(CartpoleRGBCameraEnvCfg): tiled_camera: TiledCameraCfg = TiledCameraCfg( prim_path="/World/envs/env_.*/Camera", offset=TiledCameraCfg.OffsetCfg(pos=(-7.0, 0.0, 3.0), rot=(0.9945, 0.0, 0.1045, 0.0), convention="world"), - data_types=["depth"], + data_types=["distance_to_camera"], spawn=sim_utils.PinholeCameraCfg( focal_length=24.0, focus_distance=400.0, horizontal_aperture=20.955, clipping_range=(0.1, 20.0) ), @@ -172,7 +172,7 @@ def _apply_action(self) -> None: self._cartpole.set_joint_effort_target(self.actions, joint_ids=self._cart_dof_idx) def _get_observations(self) -> dict: - data_type = "rgb" if "rgb" in self.cfg.tiled_camera.data_types else "depth" + data_type = "rgb" if "rgb" in self.cfg.tiled_camera.data_types else "distance_to_camera" observations = {"policy": self._tiled_camera.data.output[data_type].clone()} if self.cfg.write_image_to_file: diff --git a/source/extensions/omni.isaac.lab_tasks/omni/isaac/lab_tasks/direct/franka_cabinet/agents/rsl_rl_ppo_cfg.py b/source/extensions/omni.isaac.lab_tasks/omni/isaac/lab_tasks/direct/franka_cabinet/agents/rsl_rl_ppo_cfg.py index b3cffb229f..f7d556766c 100644 --- a/source/extensions/omni.isaac.lab_tasks/omni/isaac/lab_tasks/direct/franka_cabinet/agents/rsl_rl_ppo_cfg.py +++ b/source/extensions/omni.isaac.lab_tasks/omni/isaac/lab_tasks/direct/franka_cabinet/agents/rsl_rl_ppo_cfg.py @@ -18,7 +18,7 @@ class FrankaCabinetPPORunnerCfg(RslRlOnPolicyRunnerCfg): max_iterations = 1500 save_interval = 50 experiment_name = "franka_cabinet_direct" - empirical_normalization = False + empirical_normalization = True policy = RslRlPpoActorCriticCfg( init_noise_std=1.0, actor_hidden_dims=[256, 128, 64], diff --git a/source/extensions/omni.isaac.lab_tasks/omni/isaac/lab_tasks/direct/franka_cabinet/franka_cabinet_env.py b/source/extensions/omni.isaac.lab_tasks/omni/isaac/lab_tasks/direct/franka_cabinet/franka_cabinet_env.py index 2bf24e93ee..4eb01953fe 100644 --- a/source/extensions/omni.isaac.lab_tasks/omni/isaac/lab_tasks/direct/franka_cabinet/franka_cabinet_env.py +++ b/source/extensions/omni.isaac.lab_tasks/omni/isaac/lab_tasks/direct/franka_cabinet/franka_cabinet_env.py @@ -155,13 +155,11 @@ class FrankaCabinetEnvCfg(DirectRLEnvCfg): dof_velocity_scale = 0.1 # reward scales - dist_reward_scale = 2.0 - rot_reward_scale = 0.5 - around_handle_reward_scale = 0.0 - open_reward_scale = 7.5 - action_penalty_scale = 0.01 - finger_dist_reward_scale = 0.0 - finger_close_reward_scale = 10.0 + dist_reward_scale = 1.5 + rot_reward_scale = 1.5 + open_reward_scale = 10.0 + action_penalty_scale = 0.05 + finger_reward_scale = 2.0 class FrankaCabinetEnv(DirectRLEnv): @@ -320,12 +318,10 @@ def _get_rewards(self) -> torch.Tensor: self.num_envs, self.cfg.dist_reward_scale, self.cfg.rot_reward_scale, - self.cfg.around_handle_reward_scale, self.cfg.open_reward_scale, - self.cfg.finger_dist_reward_scale, self.cfg.action_penalty_scale, + self.cfg.finger_reward_scale, self._robot.data.joint_pos, - self.cfg.finger_close_reward_scale, ) def _reset_idx(self, env_ids: torch.Tensor | None): @@ -413,12 +409,10 @@ def _compute_rewards( num_envs, dist_reward_scale, rot_reward_scale, - around_handle_reward_scale, open_reward_scale, - finger_dist_reward_scale, action_penalty_scale, + finger_reward_scale, joint_positions, - finger_close_reward_scale, ): # distance from hand to the drawer d = torch.norm(franka_grasp_pos - drawer_grasp_pos, p=2, dim=-1) @@ -440,64 +434,41 @@ def _compute_rewards( # reward for matching the orientation of the hand to the drawer (fingers wrapped) rot_reward = 0.5 * (torch.sign(dot1) * dot1**2 + torch.sign(dot2) * dot2**2) - # bonus if left finger is above the drawer handle and right below - around_handle_reward = torch.zeros_like(rot_reward) - around_handle_reward = torch.where( - franka_lfinger_pos[:, 2] > drawer_grasp_pos[:, 2], - torch.where( - franka_rfinger_pos[:, 2] < drawer_grasp_pos[:, 2], around_handle_reward + 0.5, around_handle_reward - ), - around_handle_reward, - ) - # reward for distance of each finger from the drawer - finger_dist_reward = torch.zeros_like(rot_reward) - lfinger_dist = torch.abs(franka_lfinger_pos[:, 2] - drawer_grasp_pos[:, 2]) - rfinger_dist = torch.abs(franka_rfinger_pos[:, 2] - drawer_grasp_pos[:, 2]) - finger_dist_reward = torch.where( - franka_lfinger_pos[:, 2] > drawer_grasp_pos[:, 2], - torch.where( - franka_rfinger_pos[:, 2] < drawer_grasp_pos[:, 2], - (0.04 - lfinger_dist) + (0.04 - rfinger_dist), - finger_dist_reward, - ), - finger_dist_reward, - ) - - finger_close_reward = torch.zeros_like(rot_reward) - finger_close_reward = torch.where( - d <= 0.03, (0.04 - joint_positions[:, 7]) + (0.04 - joint_positions[:, 8]), finger_close_reward - ) - # regularization on the actions (summed for each environment) action_penalty = torch.sum(actions**2, dim=-1) # how far the cabinet has been opened out - open_reward = cabinet_dof_pos[:, 3] * around_handle_reward + cabinet_dof_pos[:, 3] # drawer_top_joint + open_reward = cabinet_dof_pos[:, 3] # drawer_top_joint + + # penalty for distance of each finger from the drawer handle + lfinger_dist = franka_lfinger_pos[:, 2] - drawer_grasp_pos[:, 2] + rfinger_dist = drawer_grasp_pos[:, 2] - franka_rfinger_pos[:, 2] + finger_dist_penalty = torch.zeros_like(lfinger_dist) + finger_dist_penalty += torch.where(lfinger_dist < 0, lfinger_dist, torch.zeros_like(lfinger_dist)) + finger_dist_penalty += torch.where(rfinger_dist < 0, rfinger_dist, torch.zeros_like(rfinger_dist)) rewards = ( dist_reward_scale * dist_reward + rot_reward_scale * rot_reward - + around_handle_reward_scale * around_handle_reward + open_reward_scale * open_reward - + finger_dist_reward_scale * finger_dist_reward + + finger_reward_scale * finger_dist_penalty - action_penalty_scale * action_penalty - + finger_close_reward * finger_close_reward_scale ) self.extras["log"] = { "dist_reward": (dist_reward_scale * dist_reward).mean(), "rot_reward": (rot_reward_scale * rot_reward).mean(), - "around_handle_reward": (around_handle_reward_scale * around_handle_reward).mean(), "open_reward": (open_reward_scale * open_reward).mean(), - "finger_dist_reward": (finger_dist_reward_scale * finger_dist_reward).mean(), - "action_penalty": (action_penalty_scale * action_penalty).mean(), - "finger_close_reward": (finger_close_reward * finger_close_reward_scale).mean(), + "action_penalty": (-action_penalty_scale * action_penalty).mean(), + "left_finger_distance_reward": (finger_reward_scale * lfinger_dist).mean(), + "right_finger_distance_reward": (finger_reward_scale * rfinger_dist).mean(), + "finger_dist_penalty": (finger_reward_scale * finger_dist_penalty).mean(), } # bonus for opening drawer properly - rewards = torch.where(cabinet_dof_pos[:, 3] > 0.01, rewards + 0.5, rewards) - rewards = torch.where(cabinet_dof_pos[:, 3] > 0.2, rewards + around_handle_reward, rewards) - rewards = torch.where(cabinet_dof_pos[:, 3] > 0.39, rewards + (2.0 * around_handle_reward), rewards) + rewards = torch.where(cabinet_dof_pos[:, 3] > 0.01, rewards + 0.25, rewards) + rewards = torch.where(cabinet_dof_pos[:, 3] > 0.2, rewards + 0.25, rewards) + rewards = torch.where(cabinet_dof_pos[:, 3] > 0.35, rewards + 0.25, rewards) return rewards diff --git a/source/extensions/omni.isaac.lab_tasks/omni/isaac/lab_tasks/utils/parse_cfg.py b/source/extensions/omni.isaac.lab_tasks/omni/isaac/lab_tasks/utils/parse_cfg.py index 1f1b36895a..f7422ce197 100644 --- a/source/extensions/omni.isaac.lab_tasks/omni/isaac/lab_tasks/utils/parse_cfg.py +++ b/source/extensions/omni.isaac.lab_tasks/omni/isaac/lab_tasks/utils/parse_cfg.py @@ -13,11 +13,10 @@ import re import yaml -from omni.isaac.lab.envs import ManagerBasedRLEnvCfg -from omni.isaac.lab.utils import update_class_from_dict, update_dict +from omni.isaac.lab.envs import DirectRLEnvCfg, ManagerBasedRLEnvCfg -def load_cfg_from_registry(task_name: str, entry_point_key: str) -> dict | ManagerBasedRLEnvCfg: +def load_cfg_from_registry(task_name: str, entry_point_key: str) -> dict | object: """Load default configuration given its entry point from the gym registry. This function loads the configuration object from the gym registry for the given task name. @@ -46,7 +45,8 @@ def load_cfg_from_registry(task_name: str, entry_point_key: str) -> dict | Manag entry_point_key: The entry point key to resolve the configuration file. Returns: - The parsed configuration object. This is either a dictionary or a class object. + The parsed configuration object. If the entry point is a YAML file, it is parsed into a dictionary. + If the entry point is a Python class, it is instantiated and returned. Raises: ValueError: If the entry point key is not available in the gym registry for the task. @@ -98,7 +98,7 @@ def load_cfg_from_registry(task_name: str, entry_point_key: str) -> dict | Manag def parse_env_cfg( task_name: str, device: str = "cuda:0", num_envs: int | None = None, use_fabric: bool | None = None -) -> dict | ManagerBasedRLEnvCfg: +) -> ManagerBasedRLEnvCfg | DirectRLEnvCfg: """Parse configuration for an environment and override based on inputs. Args: @@ -110,35 +110,28 @@ def parse_env_cfg( Defaults to None, in which case it is left unchanged. Returns: - The parsed configuration object. This is either a dictionary or a class object. + The parsed configuration object. Raises: - ValueError: If the task name is not provided, i.e. None. + RuntimeError: If the configuration for the task is not a class. We assume users always use a class for the + environment configuration. """ - # check if a task name is provided - if task_name is None: - raise ValueError("Please provide a valid task name. Hint: Use --task .") - # create a dictionary to update from - args_cfg = {"sim": {"physx": dict()}, "scene": dict()} + # load the default configuration + cfg = load_cfg_from_registry(task_name, "env_cfg_entry_point") - # simulation device - args_cfg["sim"]["device"] = device + # check that it is not a dict + # we assume users always use a class for the configuration + if isinstance(cfg, dict): + raise RuntimeError(f"Configuration for the task: '{task_name}' is not a class. Please provide a class.") + # simulation device + cfg.sim.device = device # disable fabric to read/write through USD if use_fabric is not None: - args_cfg["sim"]["use_fabric"] = use_fabric - + cfg.sim.use_fabric = use_fabric # number of environments if num_envs is not None: - args_cfg["scene"]["num_envs"] = num_envs - - # load the default configuration - cfg = load_cfg_from_registry(task_name, "env_cfg_entry_point") - # update the main configuration - if isinstance(cfg, dict): - cfg = update_dict(cfg, args_cfg) - else: - update_class_from_dict(cfg, args_cfg) + cfg.scene.num_envs = num_envs return cfg @@ -165,12 +158,13 @@ def get_checkpoint_path( sort_alpha: Whether to sort the runs by alphabetical order. Defaults to True. If False, the folders in :attr:`run_dir` are sorted by the last modified time. + Returns: + The path to the model checkpoint. + Raises: ValueError: When no runs are found in the input directory. ValueError: When no checkpoints are found in the input directory. - Returns: - The path to the model checkpoint. """ # check if runs present in directory try: diff --git a/source/extensions/omni.isaac.lab_tasks/test/test_environments.py b/source/extensions/omni.isaac.lab_tasks/test/test_environments.py index b265782a9a..657055cb8d 100644 --- a/source/extensions/omni.isaac.lab_tasks/test/test_environments.py +++ b/source/extensions/omni.isaac.lab_tasks/test/test_environments.py @@ -18,10 +18,9 @@ import torch import unittest +import carb import omni.usd -from omni.isaac.lab.envs import ManagerBasedRLEnv, ManagerBasedRLEnvCfg - import omni.isaac.lab_tasks # noqa: F401 from omni.isaac.lab_tasks.utils.parse_cfg import parse_env_cfg @@ -38,14 +37,17 @@ def setUpClass(cls): cls.registered_tasks.append(task_spec.id) # sort environments by name cls.registered_tasks.sort() - # print all existing task names - print(">>> All registered environments:", cls.registered_tasks) + + # this flag is necessary to prevent a bug where the simulation gets stuck randomly when running the + # test on many environments. + carb_settings_iface = carb.settings.get_settings() + carb_settings_iface.set_bool("/physics/cooking/ujitsoCollisionCooking", False) """ Test fixtures. """ - def test_multiple_instances_gpu(self): + def test_multiple_num_envs_on_gpu(self): """Run all environments with multiple instances and check environments return valid signals.""" # common parameters num_envs = 32 @@ -60,7 +62,7 @@ def test_multiple_instances_gpu(self): print(f">>> Closing environment: {task_name}") print("-" * 80) - def test_single_instance_gpu(self): + def test_single_env_on_gpu(self): """Run all environments with single instance and check environments return valid signals.""" # common parameters num_envs = 1 @@ -80,16 +82,16 @@ def test_single_instance_gpu(self): """ def _check_random_actions(self, task_name: str, device: str, num_envs: int, num_steps: int = 1000): - """Run random actions and check environments return valid signals.""" + """Run random actions and check environments returned signals are valid.""" # create a new stage omni.usd.get_context().new_stage() # parse configuration - env_cfg: ManagerBasedRLEnvCfg = parse_env_cfg(task_name, device=device, num_envs=num_envs) + env_cfg = parse_env_cfg(task_name, device=device, num_envs=num_envs) # create environment - env: ManagerBasedRLEnv = gym.make(task_name, cfg=env_cfg) - # this flag is necessary to prevent a bug where the simulation gets stuck randomly when running the - # test on many environments. - env.sim.set_setting("/physics/cooking/ujitsoCollisionCooking", False) + env = gym.make(task_name, cfg=env_cfg) + + # disable control on stop + env.unwrapped.sim._app_control_on_stop_handle = None # type: ignore # reset environment obs, _ = env.reset() diff --git a/source/extensions/omni.isaac.lab_tasks/test/test_record_video.py b/source/extensions/omni.isaac.lab_tasks/test/test_record_video.py index 239ada5868..877d4d3912 100644 --- a/source/extensions/omni.isaac.lab_tasks/test/test_record_video.py +++ b/source/extensions/omni.isaac.lab_tasks/test/test_record_video.py @@ -20,8 +20,6 @@ import omni.usd -from omni.isaac.lab.envs import ManagerBasedRLEnvCfg - import omni.isaac.lab_tasks # noqa: F401 from omni.isaac.lab_tasks.utils import parse_env_cfg @@ -60,7 +58,7 @@ def test_record_video(self): omni.usd.get_context().new_stage() # parse configuration - env_cfg: ManagerBasedRLEnvCfg = parse_env_cfg(task_name, device=self.device, num_envs=self.num_envs) + env_cfg = parse_env_cfg(task_name, device=self.device, num_envs=self.num_envs) # create environment env = gym.make(task_name, cfg=env_cfg, render_mode="rgb_array") diff --git a/source/extensions/omni.isaac.lab_tasks/test/wrappers/test_rl_games_wrapper.py b/source/extensions/omni.isaac.lab_tasks/test/wrappers/test_rl_games_wrapper.py index 0305f8bfc8..e97ff5929e 100644 --- a/source/extensions/omni.isaac.lab_tasks/test/wrappers/test_rl_games_wrapper.py +++ b/source/extensions/omni.isaac.lab_tasks/test/wrappers/test_rl_games_wrapper.py @@ -20,8 +20,6 @@ import omni.usd -from omni.isaac.lab.envs import ManagerBasedRLEnvCfg - import omni.isaac.lab_tasks # noqa: F401 from omni.isaac.lab_tasks.utils.parse_cfg import load_cfg_from_registry, parse_env_cfg from omni.isaac.lab_tasks.utils.wrappers.rl_games import RlGamesVecEnvWrapper @@ -58,7 +56,7 @@ def test_random_actions(self): # create a new stage omni.usd.get_context().new_stage() # parse configuration - env_cfg: ManagerBasedRLEnvCfg = parse_env_cfg(task_name, device=self.device, num_envs=self.num_envs) + env_cfg = parse_env_cfg(task_name, device=self.device, num_envs=self.num_envs) agent_cfg = load_cfg_from_registry(task_name, "rl_games_cfg_entry_point") # noqa: F841 # create environment env = gym.make(task_name, cfg=env_cfg) diff --git a/source/extensions/omni.isaac.lab_tasks/test/wrappers/test_rsl_rl_wrapper.py b/source/extensions/omni.isaac.lab_tasks/test/wrappers/test_rsl_rl_wrapper.py index 5860374d5e..154171e4cd 100644 --- a/source/extensions/omni.isaac.lab_tasks/test/wrappers/test_rsl_rl_wrapper.py +++ b/source/extensions/omni.isaac.lab_tasks/test/wrappers/test_rsl_rl_wrapper.py @@ -20,8 +20,6 @@ import omni.usd -from omni.isaac.lab.envs import ManagerBasedRLEnvCfg - import omni.isaac.lab_tasks # noqa: F401 from omni.isaac.lab_tasks.utils.parse_cfg import load_cfg_from_registry, parse_env_cfg from omni.isaac.lab_tasks.utils.wrappers.rsl_rl import RslRlVecEnvWrapper @@ -58,7 +56,7 @@ def test_random_actions(self): # create a new stage omni.usd.get_context().new_stage() # parse configuration - env_cfg: ManagerBasedRLEnvCfg = parse_env_cfg(task_name, device=self.device, num_envs=self.num_envs) + env_cfg = parse_env_cfg(task_name, device=self.device, num_envs=self.num_envs) agent_cfg = load_cfg_from_registry(task_name, "rsl_rl_cfg_entry_point") # noqa: F841 # create environment env = gym.make(task_name, cfg=env_cfg) @@ -94,7 +92,7 @@ def test_no_time_outs(self): # create a new stage omni.usd.get_context().new_stage() # parse configuration - env_cfg: ManagerBasedRLEnvCfg = parse_env_cfg(task_name, device=self.device, num_envs=self.num_envs) + env_cfg = parse_env_cfg(task_name, device=self.device, num_envs=self.num_envs) # change to finite horizon env_cfg.is_finite_horizon = True diff --git a/source/extensions/omni.isaac.lab_tasks/test/wrappers/test_sb3_wrapper.py b/source/extensions/omni.isaac.lab_tasks/test/wrappers/test_sb3_wrapper.py index ac92f870ca..afee3a8f04 100644 --- a/source/extensions/omni.isaac.lab_tasks/test/wrappers/test_sb3_wrapper.py +++ b/source/extensions/omni.isaac.lab_tasks/test/wrappers/test_sb3_wrapper.py @@ -21,8 +21,6 @@ import omni.usd -from omni.isaac.lab.envs import ManagerBasedRLEnvCfg - import omni.isaac.lab_tasks # noqa: F401 from omni.isaac.lab_tasks.utils.parse_cfg import load_cfg_from_registry, parse_env_cfg from omni.isaac.lab_tasks.utils.wrappers.sb3 import Sb3VecEnvWrapper @@ -59,7 +57,7 @@ def test_random_actions(self): # create a new stage omni.usd.get_context().new_stage() # parse configuration - env_cfg: ManagerBasedRLEnvCfg = parse_env_cfg(task_name, device=self.device, num_envs=self.num_envs) + env_cfg = parse_env_cfg(task_name, device=self.device, num_envs=self.num_envs) agent_cfg = load_cfg_from_registry(task_name, "sb3_cfg_entry_point") # noqa: F841 # create environment env = gym.make(task_name, cfg=env_cfg) diff --git a/source/extensions/omni.isaac.lab_tasks/test/wrappers/test_skrl_wrapper.py b/source/extensions/omni.isaac.lab_tasks/test/wrappers/test_skrl_wrapper.py index 302f56c760..ed3ba3f959 100644 --- a/source/extensions/omni.isaac.lab_tasks/test/wrappers/test_skrl_wrapper.py +++ b/source/extensions/omni.isaac.lab_tasks/test/wrappers/test_skrl_wrapper.py @@ -20,8 +20,6 @@ import omni.usd -from omni.isaac.lab.envs import ManagerBasedRLEnvCfg - import omni.isaac.lab_tasks # noqa: F401 from omni.isaac.lab_tasks.utils.parse_cfg import load_cfg_from_registry, parse_env_cfg from omni.isaac.lab_tasks.utils.wrappers.skrl import SkrlVecEnvWrapper @@ -58,7 +56,7 @@ def test_random_actions(self): # create a new stage omni.usd.get_context().new_stage() # parse configuration - env_cfg: ManagerBasedRLEnvCfg = parse_env_cfg(task_name, device=self.device, num_envs=self.num_envs) + env_cfg = parse_env_cfg(task_name, device=self.device, num_envs=self.num_envs) agent_cfg = load_cfg_from_registry(task_name, "skrl_cfg_entry_point") # noqa: F841 # create environment env = gym.make(task_name, cfg=env_cfg) diff --git a/source/standalone/demos/cameras.py b/source/standalone/demos/cameras.py index 65159bc05d..7f140c9a9c 100644 --- a/source/standalone/demos/cameras.py +++ b/source/standalone/demos/cameras.py @@ -96,7 +96,7 @@ class SensorsSceneCfg(InteractiveSceneCfg): update_period=0.1, height=480, width=640, - data_types=["rgb", "depth"], + data_types=["rgb", "distance_to_camera"], spawn=None, # the camera is already spawned in the scene offset=TiledCameraCfg.OffsetCfg(pos=(0.510, 0.0, 0.015), rot=(0.5, -0.5, 0.5, -0.5), convention="ros"), ) @@ -221,7 +221,7 @@ def run_simulator(sim: sim_utils.SimulationContext, scene: InteractiveScene): print("-------------------------------") print(scene["tiled_camera"]) print("Received shape of rgb image: ", scene["tiled_camera"].data.output["rgb"].shape) - print("Received shape of depth image: ", scene["tiled_camera"].data.output["depth"].shape) + print("Received shape of depth image: ", scene["tiled_camera"].data.output["distance_to_camera"].shape) print("-------------------------------") print(scene["raycast_camera"]) print("Received shape of depth: ", scene["raycast_camera"].data.output["distance_to_image_plane"].shape) @@ -242,7 +242,7 @@ def run_simulator(sim: sim_utils.SimulationContext, scene: InteractiveScene): # compare generated Depth images across different cameras depth_images = [ scene["camera"].data.output["distance_to_image_plane"][0], - scene["tiled_camera"].data.output["depth"][0, ..., 0], + scene["tiled_camera"].data.output["distance_to_camera"][0, ..., 0], scene["raycast_camera"].data.output["distance_to_image_plane"][0], ] save_images_grid( @@ -250,7 +250,7 @@ def run_simulator(sim: sim_utils.SimulationContext, scene: InteractiveScene): cmap="turbo", subtitles=["Camera", "TiledCamera", "RaycasterCamera"], title="Depth Image: Cam0", - filename=os.path.join(output_dir, "depth", f"{count:04d}.jpg"), + filename=os.path.join(output_dir, "distance_to_camera", f"{count:04d}.jpg"), ) # save all tiled RGB images diff --git a/source/standalone/tutorials/01_assets/run_articulation.py b/source/standalone/tutorials/01_assets/run_articulation.py index ff14aa7054..2f1079969b 100644 --- a/source/standalone/tutorials/01_assets/run_articulation.py +++ b/source/standalone/tutorials/01_assets/run_articulation.py @@ -55,7 +55,7 @@ def design_scene() -> tuple[dict, list[list[float]]]: cfg = sim_utils.DomeLightCfg(intensity=3000.0, color=(0.75, 0.75, 0.75)) cfg.func("/World/Light", cfg) - # Create separate groups called "Origin1", "Origin2", "Origin3" + # Create separate groups called "Origin1", "Origin2" # Each group will have a robot in it origins = [[0.0, 0.0, 0.0], [-1.0, 0.0, 0.0]] # Origin 1 diff --git a/source/standalone/tutorials/02_scene/create_scene.py b/source/standalone/tutorials/02_scene/create_scene.py index 2e1c9260b0..a4ed8f5f1f 100644 --- a/source/standalone/tutorials/02_scene/create_scene.py +++ b/source/standalone/tutorials/02_scene/create_scene.py @@ -8,7 +8,7 @@ .. code-block:: bash # Usage - ./isaaclab.sh -p source/standalone/tutorials/03_scene/create_scene.py --num_envs 32 + ./isaaclab.sh -p source/standalone/tutorials/02_scene/create_scene.py --num_envs 32 """ diff --git a/source/standalone/workflows/rl_games/train.py b/source/standalone/workflows/rl_games/train.py index 672f09f9ea..9552593a85 100644 --- a/source/standalone/workflows/rl_games/train.py +++ b/source/standalone/workflows/rl_games/train.py @@ -88,6 +88,10 @@ def main(env_cfg: ManagerBasedRLEnvCfg | DirectRLEnvCfg, agent_cfg: dict): # update env config device env_cfg.sim.device = f"cuda:{app_launcher.local_rank}" + # set the environment seed (after multi-gpu config for updated rank from agent seed) + # note: certain randomizations occur in the environment initialization so we set the seed here + env_cfg.seed = agent_cfg["params"]["seed"] + # specify directory for logging experiments log_root_path = os.path.join("logs", "rl_games", agent_cfg["params"]["config"]["name"]) log_root_path = os.path.abspath(log_root_path) @@ -139,8 +143,6 @@ def main(env_cfg: ManagerBasedRLEnvCfg | DirectRLEnvCfg, agent_cfg: dict): runner = Runner(IsaacAlgoObserver()) runner.load(agent_cfg) - # set seed of the env - env.seed(agent_cfg["params"]["seed"]) # reset the agent and env runner.reset() # train the agent diff --git a/source/standalone/workflows/rsl_rl/cli_args.py b/source/standalone/workflows/rsl_rl/cli_args.py index 32827ea47c..60d7af75aa 100644 --- a/source/standalone/workflows/rsl_rl/cli_args.py +++ b/source/standalone/workflows/rsl_rl/cli_args.py @@ -67,7 +67,7 @@ def update_rsl_rl_cfg(agent_cfg: RslRlOnPolicyRunnerCfg, args_cli: argparse.Name The updated configuration for RSL-RL agent based on inputs. """ # override the default configuration with CLI arguments - if args_cli.seed is not None: + if hasattr("args_cli", "seed") and args_cli.seed is not None: agent_cfg.seed = args_cli.seed if args_cli.resume is not None: agent_cfg.resume = args_cli.resume diff --git a/source/standalone/workflows/rsl_rl/play.py b/source/standalone/workflows/rsl_rl/play.py index 4beba6f40a..3020800beb 100644 --- a/source/standalone/workflows/rsl_rl/play.py +++ b/source/standalone/workflows/rsl_rl/play.py @@ -23,7 +23,6 @@ ) parser.add_argument("--num_envs", type=int, default=None, help="Number of environments to simulate.") parser.add_argument("--task", type=str, default=None, help="Name of the task.") -parser.add_argument("--seed", type=int, default=None, help="Seed used for the environment") # append RSL-RL cli arguments cli_args.add_rsl_rl_args(parser) # append AppLauncher cli args diff --git a/source/standalone/workflows/rsl_rl/train.py b/source/standalone/workflows/rsl_rl/train.py index 4749cbaff5..898c097e69 100644 --- a/source/standalone/workflows/rsl_rl/train.py +++ b/source/standalone/workflows/rsl_rl/train.py @@ -76,6 +76,10 @@ def main(env_cfg: ManagerBasedRLEnvCfg | DirectRLEnvCfg, agent_cfg: RslRlOnPolic args_cli.max_iterations if args_cli.max_iterations is not None else agent_cfg.max_iterations ) + # set the environment seed + # note: certain randomizations occur in the environment initialization so we set the seed here + env_cfg.seed = agent_cfg.seed + # specify directory for logging experiments log_root_path = os.path.join("logs", "rsl_rl", agent_cfg.experiment_name) log_root_path = os.path.abspath(log_root_path) @@ -114,9 +118,6 @@ def main(env_cfg: ManagerBasedRLEnvCfg | DirectRLEnvCfg, agent_cfg: RslRlOnPolic # load previously trained model runner.load(resume_path) - # set seed of the environment - env.seed(agent_cfg.seed) - # dump the configuration into log-directory dump_yaml(os.path.join(log_dir, "params", "env.yaml"), env_cfg) dump_yaml(os.path.join(log_dir, "params", "agent.yaml"), agent_cfg) diff --git a/source/standalone/workflows/sb3/train.py b/source/standalone/workflows/sb3/train.py index f06653f7ea..47ecb2c3f7 100644 --- a/source/standalone/workflows/sb3/train.py +++ b/source/standalone/workflows/sb3/train.py @@ -72,6 +72,10 @@ def main(env_cfg: ManagerBasedRLEnvCfg | DirectRLEnvCfg, agent_cfg: dict): if args_cli.max_iterations is not None: agent_cfg["n_timesteps"] = args_cli.max_iterations * agent_cfg["n_steps"] * env_cfg.scene.num_envs + # set the environment seed + # note: certain randomizations occur in the environment initialization so we set the seed here + env_cfg.seed = agent_cfg["seed"] + # directory for logging into log_dir = os.path.join("logs", "sb3", args_cli.task, datetime.now().strftime("%Y-%m-%d_%H-%M-%S")) # dump the configuration into log-directory @@ -101,8 +105,6 @@ def main(env_cfg: ManagerBasedRLEnvCfg | DirectRLEnvCfg, agent_cfg: dict): env = gym.wrappers.RecordVideo(env, **video_kwargs) # wrap around environment for stable baselines env = Sb3VecEnvWrapper(env) - # set the seed - env.seed(seed=agent_cfg["seed"]) if "normalize_input" in agent_cfg: env = VecNormalize( diff --git a/source/standalone/workflows/skrl/train.py b/source/standalone/workflows/skrl/train.py index 6ef94352fb..6e3fa11898 100644 --- a/source/standalone/workflows/skrl/train.py +++ b/source/standalone/workflows/skrl/train.py @@ -88,6 +88,7 @@ def main(env_cfg: ManagerBasedRLEnvCfg | DirectRLEnvCfg, agent_cfg: dict): # override configurations with non-hydra CLI arguments env_cfg.scene.num_envs = args_cli.num_envs if args_cli.num_envs is not None else env_cfg.scene.num_envs set_seed(args_cli.seed if args_cli.seed is not None else agent_cfg["seed"]) + # multi-gpu training config if args_cli.distributed: if args_cli.ml_framework.startswith("jax"): @@ -101,6 +102,10 @@ def main(env_cfg: ManagerBasedRLEnvCfg | DirectRLEnvCfg, agent_cfg: dict): if args_cli.ml_framework.startswith("jax"): skrl.config.jax.backend = "jax" if args_cli.ml_framework == "jax" else "numpy" + # set the environment seed + # note: certain randomizations occur in the environment initialization so we set the seed here + env_cfg.seed = args_cli.seed if args_cli.seed is not None else agent_cfg["seed"] + # specify directory for logging experiments log_root_path = os.path.join("logs", "skrl", agent_cfg["agent"]["experiment"]["directory"]) log_root_path = os.path.abspath(log_root_path) diff --git a/tools/per_test_timeouts.py b/tools/per_test_timeouts.py index 2bebd99601..17e3447858 100644 --- a/tools/per_test_timeouts.py +++ b/tools/per_test_timeouts.py @@ -9,6 +9,7 @@ """ PER_TEST_TIMEOUTS = { "test_environments.py": 1200, # This test runs through all the environments for 100 steps each + "test_environment_determinism.py": 200, # This test runs through many the environments for 100 steps each "test_env_rendering_logic.py": 300, "test_rsl_rl_wrapper.py": 200, "test_sb3_wrapper.py": 200,