.. _tutorials:
.. _tutorials-have-moved:
.. _how-to:

How-to Guides
=============

.. role:: guide-tag
   :class: guide-tag

.. role:: guide-tag-newton
   :class: guide-tag guide-tag-newton

.. raw:: html

   <div class="guide-browser-toolbar" data-guide-browser>
     <label class="guide-search">
       <i class="fa-solid fa-magnifying-glass" aria-hidden="true"></i>
       <span class="visually-hidden">Search guides</span>
       <input type="search" data-guide-search placeholder="Search all guides" autocomplete="off">
     </label>
     <span class="guide-result-count" data-guide-count aria-live="polite"></span>
   </div>
   <p class="guide-empty-state" data-guide-empty hidden>No guides match this search.</p>
   <section class="guide-viewer" data-guide-viewer hidden aria-label="Selected guide">
     <div class="guide-viewer-header">
       <button type="button" class="guide-back-button" data-guide-back>
         <i class="fa-solid fa-arrow-left" aria-hidden="true"></i>
         Back to all guides
       </button>
       <a class="guide-open-page" data-guide-open-page target="_blank" rel="noopener">Open in a new tab</a>
     </div>
     <div class="guide-viewer-content">
       <p class="guide-loading" data-guide-loading role="status">Loading guide...</p>
       <iframe class="guide-frame" data-guide-frame title="Selected guide" hidden></iframe>
     </div>
   </section>

.. container:: guide-list

   .. container:: guide-group

      .. rubric:: Simulation Fundamentals

      .. container:: guide-entry

         :doc:`Creating an empty scene </source/how-to/create_empty>`

         Launch an empty simulation and learn the core startup sequence.

         .. container:: guide-metadata

            :guide-tag:`PhysX` :guide-tag:`Isaac Sim`

      .. container:: guide-entry

         :doc:`Spawning prims into the scene </source/how-to/spawn_prims>`

         Add lights, ground planes, and primitive shapes to a simulation stage.

         .. container:: guide-metadata

            :guide-tag:`PhysX` :guide-tag:`Isaac Sim`

      .. container:: guide-entry

         :doc:`Deep-dive into launching the simulation </source/how-to/launch_app>`

         Configure and launch simulation applications from Python and the command line.

         .. container:: guide-metadata

            :guide-tag:`PhysX` :guide-tag:`Isaac Sim`

   .. container:: guide-group

      .. _asset-authoring:

      .. rubric:: Assets

      .. container:: guide-entry

         :doc:`Interacting with a rigid object </source/how-to/run_rigid_object>`

         Create, reset, and command a cone; includes the runnable run_rigid_object.py example.

         .. container:: guide-metadata

            :guide-tag:`PhysX` :guide-tag:`Isaac Sim`

      .. container:: guide-entry

         :doc:`Interacting with an articulation </source/how-to/run_articulation>`

         Work with joint state, commands, and articulation data.

         .. container:: guide-metadata

            :guide-tag:`PhysX` :guide-tag:`Isaac Sim`

      .. container:: guide-entry

         :doc:`Interacting with a deformable object </source/how-to/run_deformable_object>`

         Spawn and manipulate deformable bodies in a scene.

         .. container:: guide-metadata

            :guide-tag:`PhysX` :guide-tag-newton:`Newton` :guide-tag:`Isaac Sim`

      .. container:: guide-entry

         :doc:`Interacting with a surface gripper </source/how-to/run_surface_gripper>`

         Attach and release rigid objects with a surface gripper.

         .. container:: guide-metadata

            :guide-tag:`PhysX` :guide-tag:`Isaac Sim`

      .. container:: guide-entry

         :doc:`Importing a new asset </source/how-to/import_new_asset>`

         Convert URDF, MJCF, or mesh assets into USD for use in Isaac Lab.

         .. container:: guide-metadata

            :guide-tag:`PhysX` :guide-tag-newton:`Newton` :guide-tag:`Isaac Sim`

      .. container:: guide-entry

         :doc:`Robot and articulation configuration </source/how-to/write_articulation_cfg>`

         Reuse or author a robot configuration, with a Jetbot/Dofbot worked example.

         .. container:: guide-metadata

            :guide-tag:`PhysX` :guide-tag:`Isaac Sim`

      .. container:: guide-entry

         :doc:`Making a physics prim fixed </source/how-to/make_fixed_prim>`

         Convert a floating asset into a fixed object in the simulation.

      .. container:: guide-entry

         :doc:`Spawning multiple assets </source/how-to/multi_asset_spawning>`

         Batch rigid objects and vary asset configurations across environments.

         .. container:: guide-metadata

            :guide-tag:`PhysX` :guide-tag-newton:`Newton`

      .. container:: guide-entry

         :doc:`Managing asset downloads </source/how-to/manage_asset_downloads>`

         Cache remote assets, migrate Nucleus setups, and select a regional asset service.

      .. container:: guide-entry

         :doc:`Preparing an asset for Newton with MJWarp </source/how-to/prepare_asset_for_newton>`

         Prepare an asset and task to run with the Newton MJWarp physics preset.

         .. container:: guide-metadata

            :guide-tag:`PhysX` :guide-tag-newton:`Newton`

      .. container:: guide-entry

         :doc:`Exploring MPM materials and coupling </source/how-to/mpm_tutorials>`

         Compare material response, fluid surface reconstruction, and robot--particle coupling.

         .. container:: guide-metadata

            :guide-tag-newton:`Newton`

   .. container:: guide-group

      .. rubric:: Scenes and Cloning

      .. container:: guide-entry

         :doc:`Using the interactive scene </source/how-to/create_scene>`

         Compose assets and sensors with the higher-level interactive scene interface.

         .. container:: guide-metadata

            :guide-tag:`PhysX` :guide-tag:`Isaac Sim`

      .. container:: guide-entry

         :doc:`Cloning environments </source/how-to/cloning>`

         Choose cloning strategies, build heterogeneous scenes, and filter collisions.

   .. container:: guide-group

      .. rubric:: Environments and Training

      .. container:: guide-entry

         :doc:`Creating a manager-based base environment </source/how-to/create_manager_base_env>`

         Build a non-RL environment from reusable manager terms.

         .. container:: guide-metadata

            :guide-tag:`PhysX` :guide-tag:`Isaac Sim`

      .. container:: guide-entry

         :doc:`Creating a manager-based RL environment </source/how-to/create_manager_rl_env>`

         Add rewards, terminations, curricula, and commands for reinforcement learning.

         .. container:: guide-metadata

            :guide-tag:`PhysX` :guide-tag-newton:`Newton` :guide-tag:`Isaac Sim`

      .. container:: guide-entry

         :doc:`Creating a direct workflow RL environment </source/how-to/create_direct_rl_env>`

         Implement an RL task with direct control over the environment loop.

         .. container:: guide-metadata

            :guide-tag:`PhysX` :guide-tag-newton:`Newton`

      .. container:: guide-entry

         :doc:`Registering an environment </source/how-to/register_rl_env_gym>`

         Register an Isaac Lab task with Gymnasium and expose its configurations.

         .. container:: guide-metadata

            :guide-tag:`PhysX` :guide-tag-newton:`Newton`

      .. container:: guide-entry

         :doc:`Training with an RL agent </source/how-to/run_rl_training>`

         Launch training and inference with a supported reinforcement learning library.

         .. container:: guide-metadata

            :guide-tag:`PhysX` :guide-tag-newton:`Newton`

      .. container:: guide-entry

         :doc:`Configuring an RL agent </source/how-to/configuring_rl_training>`

         Customize agent settings and training hyperparameters.

         .. container:: guide-metadata

            :guide-tag:`PhysX` :guide-tag-newton:`Newton`

      .. container:: guide-entry

         :doc:`Modifying an existing direct RL environment </source/how-to/modify_direct_rl_env>`

         Extend and adjust a direct workflow task without rebuilding it from scratch.

         .. container:: guide-metadata

            :guide-tag:`PhysX` :guide-tag-newton:`Newton`

      .. container:: guide-entry

         :doc:`Policy inference in a USD environment </source/how-to/policy_inference_in_usd>`

         Run a trained policy against an environment defined in a USD stage.

         .. container:: guide-metadata

            :guide-tag:`PhysX` :guide-tag-newton:`Newton`

      .. container:: guide-entry

         :doc:`Wrapping environments </source/how-to/wrap_rl_env>`

         Adapt Isaac Lab environments to external reinforcement learning interfaces.

      .. container:: guide-entry

         :doc:`Adding your own learning library </source/how-to/add_own_library>`

         Integrate an additional learning framework with Isaac Lab tasks.

      .. container:: guide-entry

         :doc:`Running scripted state machines </source/how-to/run_state_machines>`

         Drive environments with deterministic state-machine policies.

         .. container:: guide-metadata

            :guide-tag:`PhysX` :guide-tag-newton:`Newton`

      .. container:: guide-entry

         :doc:`Curriculum utilities </source/how-to/curriculums>`

         Change environment parameters dynamically during training.

      .. container:: guide-entry

         :doc:`Transferring policies between PhysX and Newton </source/how-to/transfer_policies_between_physx_and_newton>`

         Validate and evaluate policy checkpoints across the PhysX and Newton backends.

         .. container:: guide-metadata

            :guide-tag:`PhysX` :guide-tag-newton:`Newton`

   .. container:: guide-group

      .. rubric:: Sensors, Cameras, and Rendering

      .. container:: guide-entry

         :doc:`Adding sensors on a robot </source/how-to/add_sensors_on_robot>`

         Add camera, ray-caster, and contact sensors to an environment.

         .. container:: guide-metadata

            :guide-tag:`PhysX` :guide-tag:`Isaac Sim`

      .. container:: guide-entry

         :doc:`Saving rendered images and 3D re-projection </source/how-to/save_camera_output>`

         Save camera outputs and reconstruct point clouds from depth images.

         .. container:: guide-metadata

            :guide-tag:`PhysX` :guide-tag:`Isaac Sim`

      .. container:: guide-entry

         :doc:`Select and configure a Renderer </source/how-to/configure_rendering>`

         Choose Newton Warp, OVRTX, or legacy Isaac RTX and tune the selected renderer.

         .. container:: guide-metadata

            :guide-tag:`PhysX` :guide-tag-newton:`Newton`

      .. container:: guide-entry

         :doc:`Streaming a camera view in a visualizer </source/how-to/visualizer_streaming_camera_view>`

         Show tiled ground-truth camera feeds from many environments in a live visualizer panel.

      .. container:: guide-entry

         :doc:`Capturing sensor frames during training </source/how-to/capture_sensor_frames>`

         Record selected sensor outputs from a running training job.

         .. container:: guide-metadata

            :guide-tag:`PhysX` :guide-tag-newton:`Newton`

      .. container:: guide-entry

         :doc:`Recording video </source/how-to/record_video>`

         Record mp4 clips from a visualizer or scene sensor, from the CLI or an environment config.

      .. container:: guide-entry

         :doc:`Creating visualization markers </source/how-to/create_visualization_markers>`

         Draw frames, arrows, and custom shapes over the scene to debug per-environment state.

   .. container:: guide-group

      .. rubric:: Controllers

      .. container:: guide-entry

         :doc:`Using a task-space controller </source/how-to/run_diff_ik>`

         Control a robot end effector with differential inverse kinematics.

         .. container:: guide-metadata

            :guide-tag:`PhysX` :guide-tag:`Isaac Sim`

      .. container:: guide-entry

         :doc:`Using an operational space controller </source/how-to/run_osc>`

         Apply operational-space control to a robot manipulator.

         .. container:: guide-metadata

            :guide-tag:`PhysX` :guide-tag:`Isaac Sim`

   .. container:: guide-group

      .. rubric:: Simulation and Data

      .. container:: guide-entry

         :doc:`Reproducibility and determinism </source/how-to/reproducibility>`

         Seed runs and request deterministic physics, rendering, and training.

         .. container:: guide-metadata

            :guide-tag:`PhysX` :guide-tag-newton:`Newton`

      .. container:: guide-entry

         :doc:`Working with ProxyArray </source/how-to/proxy_array>`

         Consume asset and sensor data through Torch and Warp while keeping retained views valid.

      .. container:: guide-entry

         :doc:`Simulation performance </source/how-to/simulation_performance>`

         Diagnose bottlenecks and improve simulation throughput.

      .. _solver-tuning:

      .. container:: guide-entry

         :doc:`Tuning the PhysX solver </source/how-to/solver_tuning_physx>`

         Tune timestep, iterations, and contacts to diagnose PhysX solver stability.

         .. container:: guide-metadata

            :guide-tag:`PhysX` :guide-tag:`Isaac Sim`

      .. container:: guide-entry

         :doc:`Tuning the MJWarp solver </source/how-to/solver_tuning_mjwarp>`

         Tune Newton MuJoCo-Warp contact capacity, timestep, friction, and convergence.

         .. container:: guide-metadata

            :guide-tag-newton:`Newton`

      .. container:: guide-entry

         :doc:`Tuning the Kamino solver </source/how-to/solver_tuning_kamino>`

         Tune Newton Kamino PADMM or DVI convergence, stabilization, timestep, and substeps.

         .. container:: guide-metadata

            :guide-tag-newton:`Newton`

      .. container:: guide-entry

         :doc:`Tuning the VBD solver </source/how-to/solver_tuning_vbd>`

         Tune Newton Vertex Block Descent (VBD) materials, contacts, cloth, soft bodies, and proxy or ADMM coupling.

         .. container:: guide-metadata

            :guide-tag-newton:`Newton`

      .. container:: guide-entry

         :doc:`Tuning the MPM solver </source/how-to/solver_tuning_mpm>`

         Tune Newton Material Point Method (MPM) resolution, timestep, convergence, and material parameters.

         .. container:: guide-metadata

            :guide-tag-newton:`Newton`

   .. container:: guide-group

      .. rubric:: Teleoperation

      .. container:: guide-entry

         :doc:`Setting up Isaac Capture with CloudXR </source/how-to/cloudxr_teleoperation>`

         Connect XR devices through CloudXR for immersive teleoperation.

         .. container:: guide-metadata

            :guide-tag:`PhysX` :guide-tag:`Isaac Sim`

      .. container:: guide-entry

         :doc:`Setting up Haply teleoperation </source/how-to/haply_teleoperation>`

         Use Haply devices for robot control with directional force feedback.

         .. container:: guide-metadata

            :guide-tag:`PhysX` :guide-tag-newton:`Newton`

   .. container:: guide-group

      .. rubric:: Tools and Workflows

      .. container:: guide-entry

         :doc:`Recording animations of simulations </source/how-to/record_animation>`

         Capture simulation state and export an animation.

         .. container:: guide-metadata

            :guide-tag:`PhysX` :guide-tag:`Isaac Sim`

      .. container:: guide-entry

         :doc:`Mastering Omniverse for robotics </source/how-to/master_omniverse>`

         Find Omniverse workflows and resources relevant to Isaac Lab.

         .. container:: guide-metadata

            :guide-tag:`Isaac Sim`

      .. container:: guide-entry

         :doc:`Profiling Isaac Lab with Nsight Systems </source/how-to/profile_with_nsys>`

         Capture and inspect runtime traces with NVIDIA Nsight Systems.

.. container:: guide-browser-note

   .. note::

      This collection is a work in progress. If a question is not answered here, open an issue on the
      `Isaac Lab GitHub repository <https://github.com/isaac-sim/IsaacLab>`_.
