[isaacsim.core.prims] Isaac Sim Core API (Prims)#
Warning
Deprecation: Extension deprecated since Isaac Sim 6.0.0 in favor of the Core Experimental extension: isaacsim.core.experimental.prims
Version: 0.11.7
Overview#
Deprecated since version 6.0.0: This extension is deprecated in favor of isaacsim.core.experimental.prims.
The isaacsim.core.prims extension provides high-level Python wrappers for reading and writing state on USD prims used in simulation. It gives you a consistent way to work with transforms, geometry, rigid bodies, articulations, SDF shapes, and particle systems without directly managing every USD or PhysX schema detail.
The module supports both single-prim wrappers, such as SingleRigidPrim, and view-style wrappers, such as RigidPrim, that operate on one or more prims matched by a path expression. This makes it useful for both simple scene objects and batched simulation workflows with cloned environments.
The public classes form the following inheritance relationships:
Concepts#
Single Prim vs Prim View#
The module uses two common access patterns:
SingleXFormPrim,SingleGeometryPrim,SingleRigidPrim,SingleArticulation, andSingleParticleSystemwrap one prim at a specificprim_path.XFormPrim,GeometryPrim,RigidPrim,Articulation,SdfShapePrim, andParticleSystemwrap one or more prims usingprim_paths_expr.
View classes are designed for batched operations. Most methods accept indices so you can read or update only part of the wrapped prim set.
from isaacsim.core.prims import RigidPrim
rigids = RigidPrim(
prim_paths_expr="/World/envs/env.*/Cube",
name="cube_view",
)
rigids.initialize()
# Move only selected rigid bodies
rigids.set_world_poses(
positions=[[0.0, 0.0, 1.0], [1.0, 0.0, 1.0]],
indices=[0, 2],
)
Path Expressions#
Most view classes use prim_paths_expr to match prims in the stage. A normal prim path can wrap one prim, while a regex-style expression can wrap many cloned prims.
For example, "/World/envs/env.*/panda" can match several robot instances under cloned environments. Some classes also accept a list of path expressions.
Initialization#
Physics-backed classes such as RigidPrim, GeometryPrim, Articulation, SdfShapePrim, and ParticleSystem must be initialized before methods that depend on the PhysX tensor API can be used. Their initialize() methods accept an optional omni.physics.tensors.SimulationView.
If the object is added to a scene that handles reset, initialization may happen during reset. After a hard reset, such as stopping and playing the timeline, these objects may need to be initialized again before physics methods are used.
Data Shapes#
Most batched APIs use array-like inputs with shapes based on the number of wrapped prims. The module commonly accepts numpy.ndarray, torch.Tensor, and warp.array where supported.
Common conventions include:
Positions:
(N, 3)Orientations:
(N, 4), scalar-first quaternion(w, x, y, z)Linear or angular velocities:
(N, 3)Combined linear and angular velocities:
(N, 6)Joint values for articulations:
(N, num_dof)
Functionality#
Transform State#
XFormPrim and SingleXFormPrim provide the base transform workflow. They manage world poses, local poses, scale, visibility, default state, and visual materials.
XFormPrim can read and write poses through USD, and some methods expose a usd flag for choosing USD or Fabric-backed data access where supported.
from isaacsim.core.prims import XFormPrim
import numpy as np
prims = XFormPrim("/World/envs/env.*", name="xforms")
positions = np.zeros((5, 3))
positions[:, 0] = np.arange(5)
orientations = np.tile(np.array([1.0, 0.0, 0.0, 0.0]), (5, 1))
prims.set_world_poses(positions=positions, orientations=orientations)
current_positions, current_orientations = prims.get_world_poses()
Geometry and Collision#
GeometryPrim and SingleGeometryPrim extend transform handling with geometry and collision-related properties. They can enable or disable collision, apply collision APIs, configure collision approximation, and apply physics materials.
They also support contact-force reporting when contact tracking is configured during construction.
from isaacsim.core.prims import GeometryPrim
geoms = GeometryPrim(
prim_paths_expr="/World/envs/env.*/Obstacle",
collisions=[True] * 5,
track_contact_forces=True,
)
geoms.initialize()
geoms.set_collision_approximations(["convexHull"] * 5)
forces = geoms.get_net_contact_forces()
SingleGeometryPrim exposes the same ideas for one prim, using scalar methods such as set_contact_offset(), set_collision_enabled(), and apply_physics_material().
Rigid Bodies#
RigidPrim and SingleRigidPrim wrap prims with the Rigid Body API. If the Rigid Body API is not already applied, the wrapper applies it during initialization.
Rigid body APIs cover:
World and local poses
Linear and angular velocities
Forces and torques
Mass, density, inertia, and center of mass
Gravity and rigid body physics toggles
Sleep thresholds
Default and current dynamic state
Contact and friction data when configured
from isaacsim.core.prims import RigidPrim
import numpy as np
rigids = RigidPrim("/World/envs/env.*/Box", name="box_view")
rigids.initialize()
# Set velocity for every wrapped rigid body
velocities = np.zeros((rigids.count, 6))
velocities[:, 0] = 1.0
rigids.set_velocities(velocities)
# Apply force to selected bodies
rigids.apply_forces(
forces=np.tile(np.array([0.0, 0.0, 100.0]), (2, 1)),
indices=np.array([0, 3]),
)
Articulations#
Articulation and SingleArticulation wrap prims that have the Root Articulation API applied. They are the main interfaces for robot-like structures with joints, links, drives, and articulated dynamics.
They provide APIs for:
DOF, joint, body, and link metadata
Joint position, velocity, and effort state
Joint position and velocity targets
ArticulationActionsorArticulationActionbased controlPD gains, max efforts, max joint velocities, and effort modes
Solver iteration counts, stabilization, sleep thresholds, and self-collision flags
Jacobians, mass matrices, gravity forces, and Coriolis and centrifugal forces
Body mass, inertia, center of mass, and gravity settings
Fixed tendon properties for articulations that use fixed tendons
from isaacsim.core.prims import SingleArticulation
from isaacsim.core.utils.types import ArticulationAction
import numpy as np
robot = SingleArticulation("/World/envs/env_0/panda", name="panda")
robot.initialize()
# Move all joints using an articulation action
action = ArticulationAction(
joint_positions=np.array([0.0, -1.0, 0.0, -2.2, 0.0, 2.4, 0.8, 0.04, 0.04])
)
robot.apply_action(action)
# Query joint state
state = robot.get_joints_state()
positions = state.positions
velocities = state.velocities
For batched robots, use Articulation with a path expression and optional indices or joint_indices to target specific articulations and joints.
SDF Shapes#
SdfShapePrim extends GeometryPrim for mesh geometry prims that provide a Signed Distance Field. It creates a SDF shape view and can query SDF values and gradients for local-space points.
It also exposes SDF collision settings such as margin, narrow band thickness, subgrid resolution, and resolution.
from isaacsim.core.prims import SdfShapePrim
import numpy as np
sdf_view = SdfShapePrim(
prim_paths_expr="/World/envs/env.*/Mesh",
num_query_points=16,
)
sdf_view.initialize()
points = np.zeros((sdf_view.num_shapes, sdf_view.num_query_points, 3))
sdf_and_gradients = sdf_view.get_sdf_and_gradients(points)
The returned SDF query data stores the SDF value in the first component and the gradient in the last three components.
Particle Systems#
ParticleSystem and SingleParticleSystem wrap PhysX particle systems. They provide access to particle system solver and collision parameters, including contact offsets, rest offsets, CCD, wind, max velocity, neighborhood size, and self-collision settings.
Particle systems use GPU-accelerated position-based dynamics. CPU simulation of particles is not supported, and particle system solver parameters cannot be changed once the scene is playing.
from isaacsim.core.prims import SingleParticleSystem
particles = SingleParticleSystem(
prim_path="/World/ParticleSystem",
particle_contact_offset=0.05,
solid_rest_offset=0.025,
fluid_rest_offset=0.025,
enable_ccd=True,
)
particles.set_wind([1.0, 0.0, 0.0])
particles.set_max_velocity(10.0)
ParticleSystem provides the same style of operations for multiple particle systems matched by prim_paths_expr.
Key Components#
XFormPrim#
Base view for transformable prims. Use it when you need batched pose, scale, visibility, default-state, or visual-material operations without requiring rigid-body or articulation behavior.
GeometryPrim#
Geometry view for one or more geometry prims. Use it for collision setup, collision approximation, contact offsets, physics materials, and contact-force reporting on geometry.
RigidPrim#
Rigid body view for one or more rigid prims. Use it for physics state, velocities, forces, masses, inertias, gravity, and contact data.
Articulation#
Articulation view for one or more articulated prims. Use it for batched robot state, joint control, dynamics queries, solver settings, and body-level articulation properties.
SdfShapePrim#
Specialized geometry view for querying Signed Distance Field values and gradients from mesh geometry prims.
ParticleSystem#
View for one or more PhysX particle systems. Use it to configure particle solver, collision, material, and wind parameters.
Single-Prim Wrappers#
SingleXFormPrim, SingleGeometryPrim, SingleRigidPrim, SingleArticulation, and SingleParticleSystem provide scalar-style access to one prim. They are convenient when you are working with a single object or robot and do not need batched indexing.
Usage Examples#
Wrap Cloned Rigid Bodies#
from isaacsim.core.prims import RigidPrim
import numpy as np
rigids = RigidPrim(
prim_paths_expr="/World/envs/env.*/Cube",
name="cube_view",
masses=np.full(5, 1.0),
)
rigids.initialize()
positions, orientations = rigids.get_world_poses()
rigids.set_linear_velocities(np.zeros((5, 3)))
Control Multiple Articulations#
from isaacsim.core.prims import Articulation
from isaacsim.core.utils.types import ArticulationActions
import numpy as np
robots = Articulation("/World/envs/env.*/panda", name="panda_view")
robots.initialize()
joint_positions = np.zeros((robots.count, robots.num_dof))
actions = ArticulationActions(joint_positions=joint_positions)
robots.apply_action(actions)
Configure Collision on Geometry#
from isaacsim.core.prims import SingleGeometryPrim
geom = SingleGeometryPrim(
prim_path="/World/Obstacle",
collision=True,
)
geom.initialize()
geom.set_collision_approximation("convexHull")
geom.set_contact_offset(0.02)
geom.set_rest_offset(0.01)
Relationships#
Physics-backed classes use omni.physics.tensors.SimulationView in their initialize() methods to create PhysX tensor views. Several APIs also use state containers from isaacsim.core.utils.types, such as DynamicState, DynamicsViewState, JointsState, ArticulationAction, and ArticulationActions.
Material-related methods use material classes from isaacsim.core.api.materials, including visual materials, PhysicsMaterial, and ParticleMaterial. The wrappers also expose USD and PhysX schema objects where relevant, such as UsdGeom.Gprim for geometry and PhysxSchema.PhysxParticleSystem for particle systems.
Enable Extension#
The extension can be enabled (if not already) in one of the following ways:
Define the next entry as an application argument from a terminal.
APP_SCRIPT.(sh|bat) --enable isaacsim.core.prims
Define the next entry under [dependencies] in an experience (.kit) file or an extension configuration (extension.toml) file.
[dependencies]
"isaacsim.core.prims" = {}
Open the Window > Extensions menu in a running application instance and search for isaacsim.core.prims.
Then, toggle the enable control button if it is not already active.
Python API#
Warning
The use of Single Prim classes (a particular case of the Prims classes for a single prim) is discouraged as they will be removed in future versions. Use Prims classes (formerly Prim Views) instead.
Prims
Provide a high-level wrapper for prims that have the Root Articulation API applied. |
|
Deprecated cloth prim class. |
|
Deprecated deformable prim class. |
|
High level wrapper to deal with geom prims (one or many) as well as their attributes/properties. |
|
Provides high-level functions to deal with particle systems (1 or more particle systems) as well as their attributes/properties. |
|
Provide high-level functions for prims that have the Rigid Body API applied to them. |
|
High-level functions to deal with geometry prims that provide their Signed Distance Field (SDF). |
|
Provide high-level functions for working with Xform prim views and their descendants. |
Single Prims
High-level wrapper for dealing with one articulation prim and its attributes/properties. |
|
Deprecated single cloth prim class. |
|
Deprecated single deformable prim class. |
|
High level wrapper to deal with a Geom prim (only one geometry prim) and its attributes/properties. |
|
A wrapper around PhysX particle system. |
|
High-level wrapper to deal with a rigid body prim (only one rigid body prim) and its attributes/properties. |
|
Provides high level functions to deal with an Xform prim (only one Xform prim) and its attributes/properties. |
Prims#
- class Articulation(
- prim_paths_expr: str | list[str],
- name: str = 'articulation_prim_view',
- positions: ndarray | Tensor | array | None = None,
- translations: ndarray | Tensor | array | None = None,
- orientations: ndarray | Tensor | array | None = None,
- scales: ndarray | Tensor | array | None = None,
- visibilities: ndarray | Tensor | array | None = None,
- reset_xform_properties: bool = True,
Bases:
XFormPrimProvide a high-level wrapper for prims that have the Root Articulation API applied.
Handle attributes and properties of single or multiple articulated prims.
Wrap all matching articulations found at the regex provided at the
prim_paths_exprargument.Note
Each prim will have
xformOp:orient,xformOp:translateandxformOp:scaleonly post-init, unless it is a non-root articulation link.Warning
The articulation view object must be initialized in order to be able to operate on it. See the
initializemethod for more details.- Parameters:
prim_paths_expr – Prim paths regex to encapsulate all prims that match it. Example: “/World/Env[1-5]/Franka” will match /World/Env1/Franka, /World/Env2/Franka, etc. A non-regex prim path can also be used to encapsulate one rigid prim.
name – Short name to be used as a key by Scene class. Note: needs to be unique if the object is added to the Scene.
positions – Default positions in the world frame of the prims. Shape is (N, 3).
translations – Default translations in the local frame of the prims with respect to its parent prims. Shape is (N, 3).
orientations – Default quaternion orientations in the world or local frame of the prims depending on whether translation or position is specified. Quaternion is scalar-first (w, x, y, z). Shape is (N, 4).
scales – Local scales to be applied to the prim’s dimensions in the view. Shape is (N, 3).
visibilities – Set to false for an invisible prim in the stage while rendering. Shape is (N,).
reset_xform_properties – True if the prims don’t have the right set of xform properties (i.e: translate, orient, and scale) ONLY and in that order. Set this parameter to False if the object was cloned using the cloner API in isaacsim.core.cloner.
Example:
>>> import isaacsim.core.utils.stage as stage_utils >>> from isaacsim.core.cloner import GridCloner >>> from isaacsim.core.prims import Articulation >>> from pxr import UsdGeom >>> >>> usd_path = "/home/<user>/Documents/Assets/Robots/FrankaRobotics/FrankaPanda/franka.usd" >>> env_zero_path = "/World/envs/env_0" >>> num_envs = 5 >>> >>> # load the Franka Panda robot USD file >>> stage_utils.add_reference_to_stage(usd_path, prim_path=f"{env_zero_path}/panda") # /World/envs/env_0/panda >>> >>> # clone the environment (num_envs) >>> cloner = GridCloner(spacing=1.5) >>> cloner.define_base_env(env_zero_path) >>> UsdGeom.Xform.Define(stage_utils.get_current_stage(), env_zero_path) >>> cloner.clone(source_prim_path=env_zero_path, prim_paths=cloner.generate_paths("/World/envs/env", num_envs)) >>> >>> # wrap all articulations >>> prims = Articulation(prim_paths_expr="/World/envs/env.*/panda", name="franka_panda_view") >>> prims <isaacsim.core.prims.articulation.Articulation object at 0x7ff174054b20>
- apply_action(
- control_actions: ArticulationActions,
- indices: ndarray | list | Tensor | array | None = None,
Apply joint position targets, velocity targets, and efforts to control articulations.
Note
This method can be used instead of the separate
set_joint_position_targets,set_joint_velocity_targetsandset_joint_efforts.- Parameters:
control_actions – Actions to apply for the next physics step.
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
Hint
High stiffness makes joints snap faster and harder to the desired target, and higher damping smooths but also slows the joint movement to the target. For position control, set relatively high stiffness and low damping to reduce vibrations. For velocity control, stiffness must be set to zero with non-zero damping. For effort control, stiffness and damping must be set to zero.
- apply_visual_materials(
- visual_materials: 'VisualMaterial' | list['VisualMaterial'],
- weaker_than_descendants: bool | list[bool] | None = None,
- indices: np.ndarray | list | torch.Tensor | wp.array | None = None,
Apply visual material to the prims and optionally their prim descendants.
- Parameters:
visual_materials – Visual materials to be applied to the prims. Currently supports PreviewSurface, OmniPBR and OmniGlass. If a list is provided then its size has to be equal the view’s size or indices size. If one material is provided it will be applied to all prims in the view.
weaker_than_descendants – True if the material shouldn’t override the descendants materials, otherwise False. If a list of visual materials is provided then a list has to be provided with the same size for this arg as well.
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Raises:
Exception – length of visual materials != length of prims indexed
Exception – length of visual materials != length of weaker descendants bools arg
Exception – If the prim view is not valid.
Example:
>>> from isaacsim.core.api.materials import OmniGlass >>> >>> # create a dark-red glass visual material >>> material = OmniGlass( ... prim_path="/World/material/glass", # path to the material prim to create ... ior=1.25, ... depth=0.001, ... thin_walled=False, ... color=np.array([0.5, 0.0, 0.0]) ... ) >>> prims.apply_visual_materials(material)
- destroy() None#
Clean up and invalidate the prim view by deregistering callbacks and clearing internal state.
- get_angular_velocities(
- indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
Get the angular velocities of prims in the view.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
Angular velocities of the prims in the view. Shape is (M, 3).
- get_applied_actions(
- clone: bool = True,
Get the last applied articulation actions.
- Parameters:
clone – True to return clones of the internal buffers. Otherwise False.
- Returns:
Current applied actions, including current position targets, velocity targets, and joint efforts.
- get_applied_joint_efforts(
- indices: ndarray | list | Tensor | array | None = None,
- joint_indices: ndarray | list | Tensor | array | None = None,
- joint_names: list[str] | None = None,
- clone: bool = True,
Get the joint efforts of articulations in the view.
This method will return the efforts set by the
set_joint_effortsmethod.- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
joint_indices – Joint indices to specify which joints to query. Shape (K,). Where K <= num of dofs.
joint_names – Joint names to specify which joints to manipulate (can’t be specified together with joint_indices). Shape (K,). Where K <= num of dofs.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
Joint efforts of articulations in the view. Shape is (M, K).
- Raises:
Exception – If both
joint_indicesandjoint_namesare specified.
- get_applied_visual_materials(
- indices: np.ndarray | list | torch.Tensor | wp.array | None = None,
Get the current applied visual materials.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
A list of the current applied visual materials to the prims if its type is currently supported.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all applied visual materials. Returned size is 5 for the example: 5 envs >>> prims.get_applied_visual_materials() [<isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>, <isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>, <isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>, <isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>, <isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>] >>> >>> # get the applied visual materials for the first, middle and last of the 5 envs. Returned size is 3 >>> prims.get_applied_visual_materials(indices=np.array([0, 2, 4])) [<isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>, <isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>, <isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>]
- get_armatures(
- indices: ndarray | list | Tensor | array | None = None,
- joint_indices: ndarray | list | Tensor | array | None = None,
- joint_names: list[str] | None = None,
- clone: bool = True,
Get armatures for articulation joints in the view.
Search for “Joint Armature” in PhysX docs for more details.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
joint_indices – Joint indices to specify which joints to query. Shape (K,). Where K <= num of dofs.
joint_names – Joint names to specify which joints to manipulate (can’t be specified together with joint_indices). Shape (K,). Where K <= num of dofs.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
Joint armatures for articulations in the view. Shape (M, K).
- Raises:
Exception – If both
joint_indicesandjoint_namesare specified.
- get_articulation_body_count() int#
Get the number of rigid bodies (links) of the articulations.
- Returns:
Maximum number of rigid bodies (links) in the articulation.
- get_body_coms(
- indices: ndarray | list | Tensor | array | None = None,
- body_indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
Get rigid body center of mass (COM) of articulations in the view.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
body_indices – Body indices to specify which bodies to query. Shape (K,). Where K <= num of bodies.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
Rigid body center of mass positions and orientations of articulations in the view. Position shape is (M, K, 3), orientation shape is (M, K, 4).
- get_body_disable_gravity(
- indices: ndarray | list | Tensor | array | None = None,
- body_indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
Get whether gravity is disabled for rigid bodies of articulations in the view.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
body_indices – Body indices to specify which bodies to query. Shape (K,). Where K <= num of bodies.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
Rigid body gravity disabled flags of articulations in the view. Shape is (M, K).
- get_body_index(body_name: str) int#
Get a rigid body (link) index in the articulation view given its name.
- Parameters:
body_name – Name of the rigid body to query.
- Returns:
Index of the rigid body in the articulation buffers.
Example:
>>> # get the index of the left finger: panda_leftfinger >>> prims.get_body_index("panda_leftfinger") 10
- get_body_inertias(
- indices: ndarray | list | Tensor | array | None = None,
- body_indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
Get rigid body inertias of articulations in the view.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
body_indices – Body indices to specify which bodies to query. Shape (K,). Where K <= num of bodies.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
Rigid body inertias of articulations in the view. Shape is (M, K, 9).
- get_body_inv_inertias(
- indices: ndarray | list | Tensor | array | None = None,
- body_indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
Get rigid body inverse inertias of articulations in the view.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
body_indices – Body indices to specify which bodies to query. Shape (K,). Where K <= num of bodies.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
Rigid body inverse inertias of articulations in the view. Shape is (M, K, 9).
Example
>>> # get all body inverse inertias. Returned shape is (5, 12, 9) for the example: 5 envs, 12 rigid bodies >>> prims.get_body_inv_inertias() [[[7.6990012e+05 0.0 0.0 0.0 6.0475844e+05 0.0 0.0 0.0 4.9185578e+05] [5.3514888e+05 0.0 0.0 0.0 6.9545931e+05 0.0 0.0 0.0 1.1027645e+06] ... [2.3786132e+09 0.0 0.0 0.0 2.5623703e+09 0.0 0.0 0.0 7.4920422e+09] [2.3786132e+09 0.0 0.0 0.0 2.5623703e+09 0.0 0.0 0.0 7.4920422e+09]]] >>> >>> # get finger body inverse inertias: panda_leftfinger (10) and panda_rightfinger (11) >>> # for the first, middle and last of the 5 envs. Returned shape is (3, 2, 9) >>> prims.get_body_inv_inertias(indices=np.array([0, 2, 4]), body_indices=np.array([10, 11])) [[[2.3786132e+09 0.0 0.0 0.0 2.5623703e+09 0.0 0.0 0.0 7.4920422e+09] [2.3786132e+09 0.0 0.0 0.0 2.5623703e+09 0.0 0.0 0.0 7.4920422e+09]] ... [[2.3786132e+09 0.0 0.0 0.0 2.5623703e+09 0.0 0.0 0.0 7.4920422e+09] [2.3786132e+09 0.0 0.0 0.0 2.5623703e+09 0.0 0.0 0.0 7.4920422e+09]]]
- get_body_inv_masses(
- indices: ndarray | list | Tensor | array | None = None,
- body_indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
Get rigid body inverse masses of articulations in the view.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
body_indices – Body indices to specify which bodies to query. Shape (K,). Where K <= num of bodies.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
Rigid body inverse masses of articulations in the view. Shape is (M, K).
- get_body_masses(
- indices: ndarray | list | Tensor | array | None = None,
- body_indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
Get rigid body masses of articulations in the view.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
body_indices – Body indices to specify which bodies to query. Shape (K,). Where K <= num of bodies.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
Rigid body masses of articulations in the view. Shape is (M, K).
- get_coriolis_and_centrifugal_forces(
- indices: ndarray | list | Tensor | array | None = None,
- joint_indices: ndarray | list | Tensor | array | None = None,
- joint_names: list[str] | None = None,
- clone: bool = True,
Get the Coriolis and centrifugal forces of articulations in the view.
These forces are the joint DOF forces required to counteract Coriolis and centrifugal forces for the given articulation state.
Search for Coriolis and Centrifugal Forces in PhysX docs for more details.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
joint_indices – Joint indices to specify which joints to query. Shape (K,). Where K <= num of dofs for fixed-base articulations and K <= num of dofs + 6 for floating-base articulations.
joint_names – Joint names to specify which joints to manipulate. Cannot be specified together with joint_indices. Shape (K,). Where K <= num of dofs.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
Coriolis and centrifugal forces of articulations in the view. Shape is (M, K).
- Raises:
Exception – If both
joint_indicesandjoint_namesare specified.
- get_default_state() XFormPrimViewState#
Get the default states (positions and orientations) defined with the
set_default_statemethod.- Returns:
The default state of the prims that is used after each reset.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> state = prims.get_default_state() >>> state <isaacsim.core.utils.types.XFormPrimViewState object at 0x7f82f73e3070> >>> state.positions [[ 1.5 -0.75 0. ] [ 1.5 0.75 0. ] [ 0. -0.75 0. ] [ 0. 0.75 0. ] [-1.5 -0.75 0. ]] >>> state.orientations [[1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.]]
- get_dof_index(dof_name: str) int#
Get a DOF index in the joint buffers given its name.
- Parameters:
dof_name – Name of the joint that corresponds to the degree of freedom to query.
- Returns:
Index of the degree of freedom in the joint buffers.
Example:
>>> # get the index of the left finger joint: panda_finger_joint1 >>> prims.get_dof_index("panda_finger_joint1") 7
- get_dof_limits() ndarray | Tensor#
Get the articulations DOF limits (lower and upper).
- Returns:
Degrees of freedom position limits. Shape is (N, num_dof, 2). For the last dimension, index 0 is lower limits and index 1 is upper limits.
Example:
>>> # get DOF limits. Returned shape is (5, 9, 2) for the example: 5 envs, 9 DOFs >>> prims.get_dof_limits() [[[-2.8973 2.8973] [-1.7628 1.7628] [-2.8973 2.8973] [-3.0718 -0.0698] [-2.8973 2.8973] [-0.0175 3.7525] [-2.8973 2.8973] [ 0. 0.04 ] [ 0. 0.04 ]] ... [[-2.8973 2.8973] [-1.7628 1.7628] [-2.8973 2.8973] [-3.0718 -0.0698] [-2.8973 2.8973] [-0.0175 3.7525] [-2.8973 2.8973] [ 0. 0.04 ] [ 0. 0.04 ]]]
- get_dof_types(dof_names: list[str] = None) list[str]#
Get the DOF types given the DOF names.
- Parameters:
dof_names – Names of the joints that correspond to the degrees of freedom to query.
- Returns:
Types of the joints that correspond to the degrees of freedom. Types can be invalid, translation, or rotation.
Example:
>>> # get all DOF types >>> prims.get_dof_types() [<DofType.Rotation: 0>, <DofType.Rotation: 0>, <DofType.Rotation: 0>, <DofType.Rotation: 0>, <DofType.Rotation: 0>, <DofType.Rotation: 0>, <DofType.Rotation: 0>, <DofType.Translation: 1>, <DofType.Translation: 1>] >>> >>> # get only the finger DOF types: panda_finger_joint1 and panda_finger_joint2 >>> prims.get_dof_types(dof_names=["panda_finger_joint1", "panda_finger_joint2"]) [<DofType.Translation: 1>, <DofType.Translation: 1>]
- get_drive_types() ndarray | Tensor#
Get the articulations DOF drive types.
- Returns:
Degrees of freedom drive types. Shape is (N, num_dof).
- get_effort_modes(
- indices: ndarray | list | Tensor | array | None = None,
- joint_indices: ndarray | list | Tensor | array | None = None,
- joint_names: list[str] | None = None,
Get effort modes for articulations in the view.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
joint_indices – Joint indices to specify which joints to query. Shape (K,). Where K <= num of dofs.
joint_names – Joint names to specify which joints to query. Cannot be specified together with joint_indices. Shape (K,). Where K <= num of dofs.
- Returns:
A list of size (M, K) indicating the effort modes,
accelerationorforce.- Raises:
Exception – If joint_indices and joint_names are both specified.
- get_enabled_self_collisions(
- indices: ndarray | list | Tensor | array | None = None,
Get the enable self collisions flag (
physxArticulation:enabledSelfCollisions) for all articulations.- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
Self collisions flags, with booleans interpreted as integers. Shape (M,).
Example:
>>> # get all self collisions flags. Returned shape is (5,) for the example: 5 envs >>> prims.get_enabled_self_collisions() [0 0 0 0 0] >>> >>> # get the self collisions flags for the first, middle and last of the 5 envs. Returned shape is (3,) >>> prims.get_enabled_self_collisions(indices=np.array([0, 2, 4])) [0 0 0]
- get_fixed_tendon_dampings(
- indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
Get the dampings of fixed tendons for articulations in the view.
Search for Fixed Tendon in PhysX docs for more details.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
Fixed tendon dampings of articulations in the view. Shape is (M, K).
Example
>>> # get the fixed tendon dampings >>> # for the ShadowHand articulation that has 4 fixed tendons (prims.num_fixed_tendons) >>> prims.get_fixed_tendon_dampings() [[0. 0. 0. 0.] [0. 0. 0. 0.] [0. 0. 0. 0.] [0. 0. 0. 0.] [0. 0. 0. 0.]]
- get_fixed_tendon_limit_stiffnesses(
- indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
Get the limit stiffness of fixed tendons for articulations in the view.
Search for Fixed Tendon in PhysX docs for more details.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
Fixed tendon limit stiffnesses of articulations in the view. Shape is (M, K).
Example
>>> # get the fixed tendon limit stiffnesses >>> # for the ShadowHand articulation that has 4 fixed tendons (prims.num_fixed_tendons) >>> prims.get_fixed_tendon_limit_stiffnesses() [[0. 0. 0. 0.] [0. 0. 0. 0.] [0. 0. 0. 0.] [0. 0. 0. 0.] [0. 0. 0. 0.]]
- get_fixed_tendon_limits(
- indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
Get the limits of fixed tendons for articulations in the view.
Search for Fixed Tendon in PhysX docs for more details.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
Fixed tendon limits of articulations in the view. Shape is (M, K, 2).
Example
>>> # get the fixed tendon limits >>> # for the ShadowHand articulation that has 4 fixed tendons (prims.num_fixed_tendons) >>> prims.get_fixed_tendon_limits() [[[-0.001 0.001] [-0.001 0.001] [-0.001 0.001] [-0.001 0.001]] [[-0.001 0.001] [-0.001 0.001] [-0.001 0.001] [-0.001 0.001]] [[-0.001 0.001] [-0.001 0.001] [-0.001 0.001] [-0.001 0.001]] [[-0.001 0.001] [-0.001 0.001] [-0.001 0.001] [-0.001 0.001]] [[-0.001 0.001] [-0.001 0.001] [-0.001 0.001] [-0.001 0.001]]]
- get_fixed_tendon_offsets(
- indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
Get the offsets of fixed tendons for articulations in the view.
Search for Fixed Tendon in PhysX docs for more details.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
Fixed tendon offsets of articulations in the view. Shape is (M, K).
Example:
>>> # get the fixed tendon offsets >>> # for the ShadowHand articulation that has 4 fixed tendons (prims.num_fixed_tendons) >>> prims.get_fixed_tendon_offsets() [[0. 0. 0. 0.] [0. 0. 0. 0.] [0. 0. 0. 0.] [0. 0. 0. 0.] [0. 0. 0. 0.]]
- get_fixed_tendon_rest_lengths(
- indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
Get the rest length of fixed tendons for articulations in the view.
Search for Fixed Tendon in PhysX docs for more details.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
Fixed tendon rest lengths of articulations in the view. Shape is (M, K).
Example:
>>> # get the fixed tendon rest lengths >>> # for the ShadowHand articulation that has 4 fixed tendons (prims.num_fixed_tendons) >>> prims.get_fixed_tendon_rest_lengths() [[0. 0. 0. 0.] [0. 0. 0. 0.] [0. 0. 0. 0.] [0. 0. 0. 0.] [0. 0. 0. 0.]]
- get_fixed_tendon_stiffnesses(
- indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
Get the stiffness of fixed tendons for articulations in the view.
Search for Fixed Tendon in PhysX docs for more details.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
Fixed tendon stiffnesses of articulations in the view. Shape is (M, K).
Example
>>> # get the fixed tendon stiffnesses >>> # for the ShadowHand articulation that has 4 fixed tendons (prims.num_fixed_tendons) >>> prims.get_fixed_tendon_stiffnesses() [[0. 0. 0. 0.] [0. 0. 0. 0.] [0. 0. 0. 0.] [0. 0. 0. 0.] [0. 0. 0. 0.]]
- get_friction_coefficients(
- indices: ndarray | list | Tensor | array | None = None,
- joint_indices: ndarray | list | Tensor | array | None = None,
- joint_names: list[str] | None = None,
- clone: bool = True,
Get the friction coefficients for the articulation joints in the view.
Search for “Joint Friction Coefficient” in PhysX docs for more details.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
joint_indices – Joint indices to specify which joints to query. Shape (K,). Where K <= num of dofs.
joint_names – Joint names to specify which joints to manipulate (can’t be specified together with joint_indices). Shape (K,). Where K <= num of dofs.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
Joint friction coefficients for articulations in the view. Shape (M, K).
- Raises:
Exception – If both
joint_indicesandjoint_namesare specified.
- get_gains(
- indices: np.ndarray | list | torch.Tensor | wp.array | None = None,
- joint_indices: np.ndarray | list | torch.Tensor | wp.array | None = None,
- joint_names: list[str] | None = None,
- clone: bool = True,
Get the implicit Proportional-Derivative (PD) controller’s Kps (stiffnesses) and Kds (dampings) of articulations in the view.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
joint_indices – Joint indices to specify which joints to query. Shape (K,). Where K <= num of dofs.
joint_names – Joint names to specify which joints to manipulate (can’t be specified together with joint_indices). Shape (K,). Where K <= num of dofs.
clone – True to return clones of the internal buffers. Otherwise False.
- Raises:
Exception – If both joint_indices and joint_names are specified.
- Returns:
Stiffness and damping of articulations in the view respectively. shapes are (M, K).
Example
>>> # get all joint stiffness and damping. Returned shape is (5, 9) for the example: 5 envs, 9 DOFs >>> stiffnesses, dampings = prims.get_gains() >>> stiffnesses [[60000. 60000. 60000. 60000. 25000. 15000. 5000. 6000. 6000.] [60000. 60000. 60000. 60000. 25000. 15000. 5000. 6000. 6000.] [60000. 60000. 60000. 60000. 25000. 15000. 5000. 6000. 6000.] [60000. 60000. 60000. 60000. 25000. 15000. 5000. 6000. 6000.] [60000. 60000. 60000. 60000. 25000. 15000. 5000. 6000. 6000.]] >>> dampings [[3000. 3000. 3000. 3000. 3000. 3000. 3000. 1000. 1000.] [3000. 3000. 3000. 3000. 3000. 3000. 3000. 1000. 1000.] [3000. 3000. 3000. 3000. 3000. 3000. 3000. 1000. 1000.] [3000. 3000. 3000. 3000. 3000. 3000. 3000. 1000. 1000.] [3000. 3000. 3000. 3000. 3000. 3000. 3000. 1000. 1000.]] >>> >>> # get finger joints stiffness and damping: panda_finger_joint1 (7) and panda_finger_joint2 (8) >>> # for the first, middle and last of the 5 envs. Returned shape is (3, 2) >>> stiffnesses, dampings = prims.get_gains(indices=np.array([0, 2, 4]), joint_indices=np.array([7, 8])) >>> stiffnesses [[6000. 6000.] [6000. 6000.] [6000. 6000.]] >>> dampings [[1000. 1000.] [1000. 1000.] [1000. 1000.]]
- get_generalized_gravity_forces(
- indices: ndarray | list | Tensor | array | None = None,
- joint_indices: ndarray | list | Tensor | array | None = None,
- joint_names: list[str] | None = None,
- clone: bool = True,
Get the generalized gravity forces of articulations in the view.
These forces are the joint DOF forces required to counteract gravitational forces for the given articulation pose.
Search for Generalized Gravity Force in PhysX docs for more details.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
joint_indices – Joint indices to specify which joints to query. Shape (K,). Where K <= num of dofs for fixed-base articulations and K <= num of dofs + 6 for floating-base articulations.
joint_names – Joint names to specify which joints to manipulate. Cannot be specified together with joint_indices. Shape (K,). Where K <= num of dofs.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
Generalized gravity forces of articulations in the view. Shape is (M, K).
- Raises:
Exception – If both
joint_indicesandjoint_namesare specified.
- get_jacobian_shape() ndarray | Tensor | array#
Get the Jacobian matrix shape of a single articulation.
The Jacobian matrix maps the joint space velocities of a DOF to its Cartesian and angular velocities.
The shape of the Jacobian depends on the number of links (rigid bodies), DOFs, and whether the articulation base is fixed, such as robotic manipulators, or not fixed, such as mobile robots.
Fixed articulation base:
(num_bodies - 1, 6, num_dof)Non-fixed articulation base:
(num_bodies, 6, num_dof + 6)
Each body has 6 values in the Jacobian representing its linear and angular motion along the three coordinate axes. The extra 6 DOFs in the last dimension, for non-fixed base cases, correspond to the linear and angular degrees of freedom of the free root link.
- Returns:
Shape of Jacobian for a single articulation.
- get_jacobians(
- indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
Get the Jacobian matrices of articulations in the view.
Note
The first dimension corresponds to the amount of wrapped articulations while the last 3 dimensions are the Jacobian matrix shape. Refer to the
get_jacobian_shapemethod for details about the Jacobian matrix shape.- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
Jacobian matrices of articulations in the view. Shape is (M, jacobian_shape).
- get_joint_index(joint_name: str) int#
Get a joint index in the joint buffers given its name.
- Parameters:
joint_name – Name of the joint that corresponds to the index of the joint in the articulation.
- Returns:
Index of the joint in the joint buffers.
- get_joint_max_velocities(
- indices: ndarray | list | Tensor | array | None = None,
- joint_indices: ndarray | list | Tensor | array | None = None,
- joint_names: list[str] | None = None,
- clone: bool = True,
Get the maximum joint velocities for articulation dofs in the view.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
joint_indices – Joint indices to specify which joints to query. Shape (K,). Where K <= num of dofs.
joint_names – Joint names to specify which joints to manipulate (can’t be specified together with joint_indices). Shape (K,). Where K <= num of dofs.
clone – True to return a clone of the internal buffer. Otherwise False.
- Raises:
Exception – If both joint_indices and joint_names are specified.
- Returns:
Maximum joint velocities for articulations dofs in the view. shape (M, K).
- get_joint_positions(
- indices: ndarray | list | Tensor | array | None = None,
- joint_indices: ndarray | list | Tensor | array | None = None,
- joint_names: list[str] | None = None,
- clone: bool = True,
Get the joint positions of articulations in the view.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
joint_indices – Joint indices to specify which joints to query. Shape (K,). Where K <= num of dofs.
joint_names – Joint names to specify which joints to manipulate. Cannot be specified together with joint_indices. Shape (K,). Where K <= num of dofs.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
Joint positions of articulations in the view. Shape is (M, K).
- Raises:
Exception – If joint_indices and joint_names are both specified.
- get_joint_velocities(
- indices: ndarray | list | Tensor | array | None = None,
- joint_indices: ndarray | list | Tensor | array | None = None,
- joint_names: list[str] | None = None,
- clone: bool = True,
Get the joint velocities of articulations in the view.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
joint_indices – Joint indices to specify which joints to query. Shape (K,). Where K <= num of dofs.
joint_names – Joint names to specify which joints to manipulate. Cannot be specified together with joint_indices. Shape (K,). Where K <= num of dofs.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
Joint velocities of articulations in the view. Shape is (M, K).
- Raises:
Exception – If joint_indices and joint_names are both specified.
- get_joints_default_state() JointsState#
Get the default joint states defined with the
set_joints_default_statemethod.- Returns:
An object that contains the default joint states.
- get_joints_state() JointsState#
Get the current joint states (positions and velocities).
- Returns:
An object that contains the current joint positions and velocities.
- get_linear_velocities(
- indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
Get the linear velocities of prims in the view.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
Linear velocities of the prims in the view. Shape is (M, 3).
- get_link_index(link_name: str) int#
Get a link index in the link buffers given its name.
- Parameters:
link_name – Name of the link that corresponds to the index of the link in the articulation.
- Returns:
Index of the link in the link buffers.
- get_local_poses(
- indices: ndarray | list | Tensor | array | None = None,
Get prim poses in the view with respect to the local frame, which is the prim’s parent frame.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
A tuple containing positions in the local frame of the prims and quaternion orientations in the local frame of the prims. Position shape is (M, 3). Quaternion is scalar-first (w, x, y, z), and orientation shape is (M, 4).
- get_local_scales(
- indices: ndarray | list | Tensor | array | None = None,
Get prim scales in the view with respect to the local frame (the parent’s frame).
- Parameters:
indices – indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
scales applied to the prim’s dimensions in the local frame. shape is (M, 3).
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all prims scales with respect to the local frame. >>> # Returned shape is (5, 3) for the example: 5 envs >>> prims.get_local_scales() [[1. 1. 1.] [1. 1. 1.] [1. 1. 1.] [1. 1. 1.] [1. 1. 1.]] >>> >>> # get only the prims scales with respect to the local frame for the first, middle and last of the 5 envs. >>> # Returned shape is (3, 3) for the example: 3 envs selected >>> prims.get_local_scales(indices=np.array([0, 2, 4])) [[1. 1. 1.] [1. 1. 1.] [1. 1. 1.]]
- get_mass_matrices(
- indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
Get the mass matrices of articulations in the view.
Note
The first dimension corresponds to the amount of wrapped articulations while the last 2 dimensions are the mass matrix shape. Refer to the
get_mass_matrix_shapemethod for details about the mass matrix shape.- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
Mass matrices of articulations in the view. Shape is (M, mass_matrix_shape).
- get_mass_matrix_shape() ndarray | Tensor | array#
Get the mass matrix shape of a single articulation.
The mass matrix contains the generalized mass of the robot depending on the current configuration.
The shape of the mass matrix depends on the number of DOFs and whether the articulation is fixed-base or floating-base. For fixed-base articulations the shape is
(num_dof, num_dof). For floating-base articulations the shape is(num_dof + 6, num_dof + 6).- Returns:
Shape of mass matrix for a single articulation.
- get_max_efforts(
- indices: ndarray | list | Tensor | array | None = None,
- joint_indices: ndarray | list | Tensor | array | None = None,
- joint_names: list[str] | None = None,
- clone: bool = True,
Get the maximum efforts for articulation in the view.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
joint_indices – Joint indices to specify which joints to query. Shape (K,). Where K <= num of dofs.
joint_names – Joint names to specify which joints to manipulate (can’t be specified together with joint_indices). Shape (K,). Where K <= num of dofs.
clone – True to return a clone of the internal buffer. Otherwise False.
- Raises:
Exception – If both joint_indices and joint_names are specified.
- Returns:
Maximum efforts for articulations in the view. shape (M, K).
Example
>>> # get all joint maximum efforts. Returned shape is (5, 9) for the example: 5 envs, 9 DOFs >>> prims.get_max_efforts() [[5220. 5220. 5220. 5220. 720. 720. 720. 720. 720.] [5220. 5220. 5220. 5220. 720. 720. 720. 720. 720.] [5220. 5220. 5220. 5220. 720. 720. 720. 720. 720.] [5220. 5220. 5220. 5220. 720. 720. 720. 720. 720.] [5220. 5220. 5220. 5220. 720. 720. 720. 720. 720.]] >>> >>> # get finger joint maximum efforts: panda_finger_joint1 (7) and panda_finger_joint2 (8) >>> # for the first, middle and last of the 5 envs. Returned shape is (3, 2) >>> prims.get_max_efforts(indices=np.array([0, 2, 4]), joint_indices=np.array([7, 8])) [[720. 720.] [720. 720.] [720. 720.]]
- get_measured_joint_efforts(
- indices: ndarray | list | Tensor | array | None = None,
- joint_indices: ndarray | list | Tensor | array | None = None,
- joint_names: list[str] | None = None,
- clone: bool = True,
Return the efforts computed or measured by the physics solver from joint forces in the DOF motion direction.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
joint_indices – Joint indices to specify which joints to query. Shape (K,). Where K <= num of dofs.
joint_names – Joint names to specify which joints to manipulate. Cannot be specified together with joint_indices. Shape (K,). Where K <= num of dofs.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
Computed joint efforts of articulations in the view. Shape is (M, K).
- Raises:
Exception – If joint_indices and joint_names are both specified.
- get_measured_joint_forces(
- indices: ndarray | list | Tensor | None = None,
- joint_indices: ndarray | list | Tensor | None = None,
- joint_names: list[str] | None = None,
- clone: bool = True,
Get the measured joint reaction forces and torques to external loads.
Forces and torques are reported in the local body reference frame, which is the child joint frame of the link’s incoming joint.
Note
To retrieve a specific row for the link incoming joint force or torque, use
joint_index + 1when specifying thejoint_indicesparameter. For thejoint_namesparameter, the conversion is done internally.- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
joint_indices – Link indices to specify which link incoming joints to query. Shape (K,). Where K <= num of links or bodies.
joint_names – Joint names to specify which joints to manipulate. Cannot be specified together with joint_indices. Shape (K,). Where K <= num of dofs.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
Joint forces and torques of articulations in the view. Shape is (M, num_joint + 1, 6). Column index 0 is the incoming joint of the base link. For the last dimension, the first 3 values are forces and the last 3 values are torques.
- Raises:
Exception – If joint_indices and joint_names are both specified.
- get_sleep_thresholds(
- indices: ndarray | list | Tensor | array | None = None,
Get the threshold for articulations to enter a sleep state.
Search for Articulations and Sleeping in PhysX docs for more details.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
Sleep thresholds. Shape (M,).
Example:
>>> # get all sleep thresholds. Returned shape is (5,) for the example: 5 envs >>> prims.get_sleep_thresholds() [0.005 0.005 0.005 0.005 0.005] >>> >>> # get the sleep thresholds for the first, middle and last of the 5 envs. Returned shape is (3,) >>> prims.get_sleep_thresholds(indices=np.array([0, 2, 4])) [0.005 0.005 0.005]
- get_solver_position_iteration_counts(
- indices: ndarray | list | Tensor | array | None = None,
Get the solver (position) iteration count for the articulations.
The solver iteration count determines how accurately contacts, drives, and limits are resolved. Search for Solver Iteration Count in PhysX docs for more details.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
Position iteration count. Shape (M,).
Example:
>>> # get all position iteration count. Returned shape is (5,) for the example: 5 envs >>> prims.get_solver_position_iteration_counts() [32 32 32 32 32] >>> >>> # get the position iteration count for the first, middle and last of the 5 envs. Returned shape is (3,) >>> prims.get_solver_position_iteration_counts(indices=np.array([0, 2, 4])) [32 32 32]
- get_solver_velocity_iteration_counts(
- indices: ndarray | list | Tensor | array | None = None,
Get the solver (velocity) iteration count for the articulations.
The solver iteration count determines how accurately contacts, drives, and limits are resolved. Search for Solver Iteration Count in PhysX docs for more details.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
Velocity iteration count. Shape (M,).
Example:
>>> # get all velocity iteration count. Returned shape is (5,) for the example: 5 envs >>> prims.get_solver_velocity_iteration_counts() [32 32 32 32 32] >>> >>> # get the velocity iteration count for the first, middle and last of the 5 envs. Returned shape is (3,) >>> prims.get_solver_velocity_iteration_counts(indices=np.array([0, 2, 4])) [32 32 32]
- get_stabilization_thresholds(
- indices: ndarray | list | Tensor | array | None = None,
Get the mass-normalized kinetic energy below which the articulations may participate in stabilization.
Search for Stabilization Threshold in PhysX docs for more details.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
Stabilization threshold. Shape (M,).
Example:
>>> # get all stabilization thresholds. Returned shape is (5,) for the example: 5 envs >>> prims.get_solver_velocity_iteration_counts() [0.001 0.001 0.001 0.001 0.001] >>> >>> # get the stabilization thresholds for the first, middle and last of the 5 envs. Returned shape is (3,) >>> prims.get_solver_velocity_iteration_counts(indices=np.array([0, 2, 4])) [0.001 0.001 0.001]
- get_velocities(
- indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
Get the linear and angular velocities of prims in the view.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
Linear and angular velocities of the prims in the view concatenated. Shape is (M, 6). For the last dimension, the first 3 values are for linear velocities and the last 3 are for angular velocities.
- get_visibilities(
- indices: ndarray | list | Tensor | array | None = None,
Return the current visibilities of the prims in stage.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
Shape (M,) with type bool, where each item holds True if the prim is visible in stage. False otherwise.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all visibilities. Returned shape is (5,) for the example: 5 envs >>> prims.get_visibilities() [ True True True True True] >>> >>> # get the visibilities for the first, middle and last of the 5 envs. Returned shape is (3,) >>> prims.get_visibilities(indices=np.array([0, 2, 4])) [ True True True]
- get_world_poses(
- indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
- usd: bool = True,
Get the poses of the prims in the view with respect to the world’s frame.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
usd – True to query from USD. Otherwise False to query from Fabric data.
- Returns:
A tuple containing positions in the world frame of the prims and quaternion orientations in the world frame of the prims. Position shape is (M, 3). Quaternion is scalar-first (w, x, y, z), and orientation shape is (M, 4).
- get_world_scales(
- indices: ndarray | list | Tensor | array | None = None,
Get prim scales in the view with respect to the world’s frame.
- Parameters:
indices – indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
scales applied to the prim’s dimensions in the world frame. shape is (M, 3).
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all prims scales with respect to the world's frame. >>> # Returned shape is (5, 3) for the example: 5 envs >>> prims.get_world_scales() [[1. 1. 1.] [1. 1. 1.] [1. 1. 1.] [1. 1. 1.] [1. 1. 1.]] >>> >>> # get only the prims scales with respect to the world's frame for the first, middle and last of the 5 envs. >>> # Returned shape is (3, 3) for the example: 3 envs selected >>> prims.get_world_scales(indices=np.array([0, 2, 4])) [[1. 1. 1.] [1. 1. 1.] [1. 1. 1.]]
- initialize(
- physics_sim_view: omni.physics.tensors.SimulationView = None,
Initialize the articulation physics view when the physics handle is not valid.
- Parameters:
physics_sim_view – Current physics simulation view.
- Raises:
Exception – If no articulations match the articulation prim path expressions.
AssertionError – If the articulation physics view is not homogeneous.
Example:
>>> prims.initialize()
- is_physics_handle_valid() bool#
Check whether the articulation view’s physics handler is initialized.
Warning
If the physics handler is not valid, many methods that require PhysX return None.
- Returns:
False if
.initialize()must be called again for the physics handle to be valid. Otherwise True.
Example:
>>> prims.is_physics_handle_valid() True
- is_valid(
- indices: ndarray | list | Tensor | array | None = None,
Check whether the prim view is valid.
- Parameters:
indices – Indices accepted for API compatibility. The current view validity is returned regardless of indices.
- Returns:
True if the prim view has not been invalidated by destroy or matching prim deletion. False otherwise.
Example:
>>> prims.is_valid() True
- is_visual_material_applied(
- indices: ndarray | list | Tensor | array | None = None,
Check if there is a visual material applied.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
True if there is a visual material applied to the corresponding prim in the view. False otherwise.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # given a visual material that is applied only to the first and the last environment >>> prims.is_visual_material_applied() [True, False, False, False, True] >>> >>> # check for the first, middle and last of the 5 envs >>> prims.is_visual_material_applied(indices=np.array([0, 2, 4])) [True, False, True]
- resume_motion() None#
Resume the motion of all articulations wrapped under the Articulation using the position and velocity DOF targets cached when
pause_motionwas called.
- set_angular_velocities(
- velocities: ndarray | Tensor | array | None = None,
- indices: ndarray | list | Tensor | array | None = None,
Set the angular velocities of the prims in the view.
The method does this through the PhysX API only. It has to be called after initialization. Note: This method is not supported for the GPU pipeline.
set_velocitiesmethod should be used instead.Warning
This method will immediately set the articulation state.
- Parameters:
velocities – Angular velocities to set the rigid prims to. Shape is (M, 3).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
Hint
This method belongs to the methods used to set the articulation kinematic state:
set_velocities(set_linear_velocities,set_angular_velocities),set_joint_positions,set_joint_velocities,set_joint_efforts.
- set_armatures(
- values: ndarray | Tensor | array,
- indices: ndarray | list | Tensor | array | None = None,
- joint_indices: ndarray | list | Tensor | array | None = None,
- joint_names: list[str] | None = None,
Set armatures for articulation joints in the view.
Search for “Joint Armature” in PhysX docs for more details.
- Parameters:
values – Armatures for articulation joints in the view. Shape (M, K).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
joint_indices – Joint indices to specify which joints to manipulate. Shape (K,). Where K <= num of dofs.
joint_names – Joint names to specify which joints to manipulate (can’t be specified together with joint_indices). Shape (K,). Where K <= num of dofs.
- Raises:
Exception – If both
joint_indicesandjoint_namesare specified.
- set_body_coms(
- positions: ndarray | Tensor | array = None,
- orientations: ndarray | Tensor | array = None,
- indices: ndarray | list | Tensor | array | None = None,
- body_indices: ndarray | list | Tensor | array | None = None,
Set body center of mass (COM) positions and orientations for articulation bodies in the view.
- Parameters:
positions – Body center of mass positions for articulations in the view. shape (M, K, 3).
orientations – Body center of mass orientations for articulations in the view. shape (M, K, 4).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
body_indices – Body indices to specify which bodies to manipulate. Shape (K,). Where K <= num of bodies.
Example
>>> # set the center of mass for all the articulation rigid bodies to the indicated values. >>> # Since there are 5 envs, the inertias are repeated 5 times >>> positions = np.tile(np.array([0.01, 0.02, 0.03]), (num_envs, prims.num_bodies, 1)) >>> orientations = np.tile(np.array([1.0, 0.0, 0.0, 0.0]), (num_envs, prims.num_bodies, 1)) >>> prims.set_body_coms(positions, orientations) >>> >>> # set the fingers center of mass: panda_leftfinger (10) and panda_rightfinger (11) to 0.2 >>> # for the first, middle and last of the 5 envs >>> positions = np.tile(np.array([0.01, 0.02, 0.03]), (3, 2, 1)) >>> orientations = np.tile(np.array([1.0, 0.0, 0.0, 0.0]), (3, 2, 1)) >>> prims.set_body_coms( ... positions, orientations, indices=np.array([0, 2, 4]), body_indices=np.array([10, 11]) ... )
- set_body_disable_gravity(
- values: ndarray | Tensor | array,
- indices: ndarray | list | Tensor | array | None = None,
- body_indices: ndarray | list | Tensor | array | None = None,
Set whether gravity is disabled for articulation bodies in the view.
- Parameters:
values – Gravity disabled flags for articulations in the view. shape (M, K).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
body_indices – Body indices to specify which bodies to manipulate. Shape (K,). Where K <= num of bodies.
- set_body_inertias(
- values: ndarray | Tensor | array,
- indices: ndarray | list | Tensor | array | None = None,
- body_indices: ndarray | list | Tensor | array | None = None,
Set body inertias for articulation bodies in the view.
- Parameters:
values – Body inertias for articulations in the view. shape (M, K, 9).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
body_indices – Body indices to specify which bodies to manipulate. Shape (K,). Where K <= num of bodies.
Example
>>> # set the inertias for all the articulation rigid bodies to the indicated values. >>> # Since there are 5 envs, the inertias are repeated 5 times >>> inertias = np.tile( ... np.array([0.1, 0.0, 0.0, 0.0, 0.1, 0.0, 0.0, 0.0, 0.1]), ... (num_envs, prims.num_bodies, 1), ... ) >>> prims.set_body_inertias(inertias) >>> >>> # set the fingers inertias: panda_leftfinger (10) and panda_rightfinger (11) to 0.2 >>> # for the first, middle and last of the 5 envs >>> inertias = np.tile(np.array([0.1, 0.0, 0.0, 0.0, 0.1, 0.0, 0.0, 0.0, 0.1]), (3, 2, 1)) >>> prims.set_body_inertias(inertias, indices=np.array([0, 2, 4]), body_indices=np.array([10, 11]))
- set_body_masses(
- values: ndarray | Tensor | array,
- indices: ndarray | list | Tensor | array | None = None,
- body_indices: ndarray | list | Tensor | array | None = None,
Set body masses for articulation bodies in the view.
- Parameters:
values – Body masses for articulations in the view. shape (M, K).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
body_indices – Body indices to specify which bodies to manipulate. Shape (K,). Where K <= num of bodies.
Example
>>> # set the masses for all the articulation rigid bodies to the indicated values. >>> # Since there are 5 envs, the masses are repeated 5 times >>> masses = np.tile( ... np.array([1.2, 1.1, 1.0, 0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2, 0.2]), ... (num_envs, 1), ... ) >>> prims.set_body_masses(masses) >>> >>> # set the fingers masses: panda_leftfinger (10) and panda_rightfinger (11) to 0.2 >>> # for the first, middle and last of the 5 envs >>> masses = np.tile(np.array([0.2, 0.2]), (3, 1)) >>> prims.set_body_masses(masses, indices=np.array([0, 2, 4]), body_indices=np.array([10, 11]))
- set_default_state(
- positions: ndarray | Tensor | array | None = None,
- orientations: ndarray | Tensor | array | None = None,
- indices: ndarray | list | Tensor | array | None = None,
Set the default state of the prims (positions and orientations), that will be used after each reset.
Note
The default states will be set during post-reset (e.g., calling
.post_reset()orworld.reset()methods)- Parameters:
positions – Positions in the world frame of the prim. shape is (M, 3).
orientations – Quaternion orientations in the world frame of the prim. quaternion is scalar-first (w, x, y, z). shape is (M, 4).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # configure default states for all prims >>> positions = np.zeros((num_envs, 3)) >>> positions[:, 0] = np.arange(num_envs) >>> orientations = np.tile(np.array([1.0, 0.0, 0.0, 0.0]), (num_envs, 1)) >>> prims.set_default_state(positions=positions, orientations=orientations) >>> >>> # set default states during post-reset >>> prims.post_reset()
- set_effort_modes(
- mode: str,
- indices: ndarray | list | Tensor | array | None = None,
- joint_indices: ndarray | list | Tensor | None = None,
- joint_names: list[str] | None = None,
Set effort modes for articulations in the view.
- Parameters:
mode – Effort mode to be applied to prims in the view, either
accelerationorforce.indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
joint_indices – Joint indices to specify which joints to manipulate. Shape (K,). Where K <= num of dofs.
joint_names – Joint names to specify which joints to manipulate (can’t be specified together with joint_indices). Shape (K,). Where K <= num of dofs.
- Raises:
Exception – If mode is not
forceoracceleration.Exception – If both joint_indices and joint_names are specified.
Example
>>> # set the effort mode for all joints to 'force' >>> prims.set_effort_modes("force") >>> >>> # set only the finger joints effort mode to 'force' for the first, middle and last of the 5 envs >>> prims.set_effort_modes("force", indices=np.array([0, 2, 4]), joint_indices=np.array([7, 8]))
- set_enabled_self_collisions(
- flags: ndarray | Tensor | array,
- indices: ndarray | list | Tensor | array | None = None,
Set the enable self collisions flag (
physxArticulation:enabledSelfCollisions).- Parameters:
flags – True to enable self collision. Otherwise False. Shape (M,).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
Example:
>>> # enable the self collisions flag for all envs >>> prims.set_enabled_self_collisions(np.full((num_envs,), True)) >>> >>> # enable the self collisions flag only for the first, middle and last of the 5 envs >>> prims.set_enabled_self_collisions(np.full((3,), True), indices=np.array([0, 2, 4]))
- set_fixed_tendon_properties(
- stiffnesses: ndarray | Tensor | array = None,
- dampings: ndarray | Tensor | array = None,
- limit_stiffnesses: ndarray | Tensor | array = None,
- limits: ndarray | Tensor | array = None,
- rest_lengths: ndarray | Tensor | array = None,
- offsets: ndarray | Tensor | array = None,
- indices: ndarray | list | Tensor | array | None = None,
Set fixed tendon properties for articulations in the view.
Search for Fixed Tendon in PhysX docs for more details.
- Parameters:
stiffnesses – Fixed tendon stiffnesses for articulations in the view. Shape (M, K).
dampings – Fixed tendon dampings for articulations in the view. Shape (M, K).
limit_stiffnesses – Fixed tendon limit stiffnesses for articulations in the view. Shape (M, K).
limits – Fixed tendon limits for articulations in the view. Shape (M, K, 2).
rest_lengths – Fixed tendon rest lengths for articulations in the view. Shape (M, K).
offsets – Fixed tendon offsets for articulations in the view. Shape (M, K).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
Example:
>>> # set the limit stiffnesses and dampings >>> # for the ShadowHand articulation that has 4 fixed tendons (prims.num_fixed_tendons) >>> limit_stiffnesses = np.full((num_envs, prims.num_fixed_tendons), fill_value=10.0) >>> dampings = np.full((num_envs, prims.num_fixed_tendons), fill_value=0.1) >>> prims.set_fixed_tendon_properties(dampings=dampings, limit_stiffnesses=limit_stiffnesses)
- set_friction_coefficients(
- values: ndarray | Tensor,
- indices: ndarray | list | Tensor | array | None = None,
- joint_indices: ndarray | list | Tensor | array | None = None,
- joint_names: list[str] | None = None,
Set the friction coefficients for articulation joints in the view.
Search for “Joint Friction Coefficient” in PhysX docs for more details.
- Parameters:
values – Friction coefficients for articulation joints in the view. Shape (M, K).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
joint_indices – Joint indices to specify which joints to manipulate. Shape (K,). Where K <= num of dofs.
joint_names – Joint names to specify which joints to manipulate (can’t be specified together with joint_indices). Shape (K,). Where K <= num of dofs.
- Raises:
Exception – If both
joint_namesandjoint_indicesare specified.
Example:
>>> # set all joint friction coefficients to 0.05 for all envs >>> prims.set_friction_coefficients(np.full((num_envs, prims.num_dof), 0.05)) >>> >>> # set only the finger joint (panda_finger_joint1 (7) and panda_finger_joint2 (8)) friction coefficients >>> # for the first, middle and last of the 5 envs to 0.05 >>> prims.set_friction_coefficients( ... np.full((3, 2), 0.05), indices=np.array([0, 2, 4]), joint_indices=np.array([7, 8]) ... )
- set_gains(
- kps: ndarray | Tensor | array | None = None,
- kds: ndarray | Tensor | array | None = None,
- indices: ndarray | list | Tensor | array | None = None,
- joint_indices: ndarray | list | Tensor | array | None = None,
- joint_names: list[str] | None = None,
- save_to_usd: bool = False,
Set the implicit Proportional-Derivative (PD) controller’s Kps (stiffnesses) and Kds (dampings) of articulations in the view.
- Parameters:
kps – Stiffness of the drives. shape is (M, K).
kds – Damping of the drives. shape is (M, K).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
joint_indices – Joint indices to specify which joints to manipulate. Shape (K,). Where K <= num of dofs.
joint_names – Joint names to specify which joints to manipulate (can’t be specified together with joint_indices). Shape (K,). Where K <= num of dofs.
save_to_usd – True to save the gains in USD. Otherwise False.
- Raises:
Exception – If both joint_indices and joint_names are specified.
Example
>>> # set the gains (stiffnesses and dampings) for all the articulation joints to the indicated values. >>> # Since there are 5 envs, the gains are repeated 5 times >>> stiffnesses = np.tile( ... np.array([100000, 100000, 100000, 100000, 80000, 80000, 80000, 50000, 50000]), ... (num_envs, 1), ... ) >>> dampings = np.tile( ... np.array([8000, 8000, 8000, 8000, 5000, 5000, 5000, 2000, 2000]), ... (num_envs, 1), ... ) >>> prims.set_gains(kps=stiffnesses, kds=dampings) >>> >>> # set the fingers gains (stiffnesses and dampings): panda_finger_joint1 (7) and panda_finger_joint2 (8) >>> # to 50000 and 2000 respectively for the first, middle and last of the 5 envs >>> stiffnesses = np.tile(np.array([50000, 50000]), (3, 1)) >>> dampings = np.tile(np.array([2000, 2000]), (3, 1)) >>> prims.set_gains( ... kps=stiffnesses, ... kds=dampings, ... indices=np.array([0, 2, 4]), ... joint_indices=np.array([7, 8]), ... )
- set_joint_efforts(
- efforts: ndarray | Tensor | array | None,
- indices: ndarray | list | Tensor | array | None = None,
- joint_indices: ndarray | list | Tensor | array | None = None,
- joint_names: list[str] | None = None,
Set the joint efforts of articulations in the view.
Note
This method can be used for effort control. For this purpose, there must be no joint drive or the stiffness and damping must be set to zero.
- Parameters:
efforts – Efforts of articulations in the view to be set to in the next frame. Shape is (M, K).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
joint_indices – Joint indices to specify which joints to manipulate. Shape (K,). Where K <= num of dofs.
joint_names – Joint names to specify which joints to manipulate (can’t be specified together with joint_indices). Shape (K,). Where K <= num of dofs.
- Raises:
Exception – If both
joint_indicesandjoint_namesare specified.
Hint
This method belongs to the methods used to set the articulation kinematic states:
set_velocities(set_linear_velocities,set_angular_velocities),set_joint_positions,set_joint_velocities,set_joint_efforts
- set_joint_position_targets(
- positions: ndarray | Tensor | array | None,
- indices: ndarray | list | Tensor | array | None = None,
- joint_indices: ndarray | list | Tensor | array | None = None,
- joint_names: list[str] | None = None,
Set the joint position targets for the implicit Proportional-Derivative (PD) controllers.
Note
This is an independent method for controlling joints. To apply multiple targets (position, velocity, and/or effort) in the same call, consider using the
apply_actionmethod- Parameters:
positions – Joint position targets for the implicit PD controller. Shape is (M, K).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
joint_indices – Joint indices to specify which joints to manipulate. Shape (K,). Where K <= num of dofs.
joint_names – Joint names to specify which joints to manipulate (can’t be specified together with joint_indices). Shape (K,). Where K <= num of dofs.
- Raises:
Exception – If both
joint_indicesandjoint_namesare specified.
Hint
High stiffness makes the joints snap faster and harder to the desired target, and higher damping smooths but also slows down the joint’s movement to target
For position control, set relatively high stiffness and low damping (to reduce vibrations)
- set_joint_positions(
- positions: ndarray | Tensor | array | None,
- indices: ndarray | list | Tensor | array | None = None,
- joint_indices: ndarray | list | Tensor | array | None = None,
- joint_names: list[str] | None = None,
Set the joint positions of articulations in the view.
Warning
This method will immediately set (teleport) the affected joints to the indicated value. Use the
set_joint_position_targetsor theapply_actionmethods to control the articulation joints.- Parameters:
positions – Joint positions of articulations in the view to be set to in the next frame. Shape is (M, K).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
joint_indices – Joint indices to specify which joints to manipulate. Shape (K,). Where K <= num of dofs.
joint_names – Joint names to specify which joints to manipulate (can’t be specified together with joint_indices). Shape (K,). Where K <= num of dofs.
- Raises:
Exception – If both
joint_indicesandjoint_namesare specified.
Hint
This method belongs to the methods used to set the articulation kinematic states:
set_velocities(set_linear_velocities,set_angular_velocities),set_joint_positions,set_joint_velocities,set_joint_efforts
- set_joint_velocities(
- velocities: ndarray | Tensor | array | None,
- indices: ndarray | list | Tensor | array | None = None,
- joint_indices: ndarray | list | Tensor | array | None = None,
- joint_names: list[str] | None = None,
Set the joint velocities of articulations in the view.
Warning
This method will immediately set the affected joints to the indicated value. Use the
set_joint_velocity_targetsor theapply_actionmethods to control the articulation joints.- Parameters:
velocities – Joint velocities of articulations in the view to be set to in the next frame. Shape is (M, K).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
joint_indices – Joint indices to specify which joints to manipulate. Shape (K,). Where K <= num of dofs.
joint_names – Joint names to specify which joints to manipulate (can’t be specified together with joint_indices). Shape (K,). Where K <= num of dofs.
- Raises:
Exception – If both
joint_indicesandjoint_namesare specified.
Hint
This method belongs to the methods used to set the articulation kinematic states:
set_velocities(set_linear_velocities,set_angular_velocities),set_joint_positions,set_joint_velocities,set_joint_efforts
- set_joint_velocity_targets(
- velocities: ndarray | Tensor | array | None,
- indices: ndarray | list | Tensor | array | None = None,
- joint_indices: ndarray | list | Tensor | array | None = None,
- joint_names: list[str] | None = None,
Set the joint velocity targets for the implicit Proportional-Derivative (PD) controllers.
Note
This is an independent method for controlling joints. To apply multiple targets (position, velocity, and/or effort) in the same call, consider using the
apply_actionmethod- Parameters:
velocities – Joint velocity targets for the implicit PD controller. Shape is (M, K).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
joint_indices – Joint indices to specify which joints to manipulate. Shape (K,). Where K <= num of dofs.
joint_names – Joint names to specify which joints to manipulate (can’t be specified together with joint_indices). Shape (K,). Where K <= num of dofs.
- Raises:
Exception – If both
joint_indicesandjoint_namesare specified.
Hint
High stiffness makes the joints snap faster and harder to the desired target, and higher damping smooths but also slows down the joint’s movement to target
For velocity control, stiffness must be set to zero with a non-zero damping
- set_joints_default_state(
- positions: ndarray | Tensor | array | None = None,
- velocities: ndarray | Tensor | array | None = None,
- efforts: ndarray | Tensor | array | None = None,
Set the joints default state (joint positions, velocities, and efforts) to be applied after each reset.
Note
The default states will be set during post-reset, such as calling
.post_reset()orworld.reset().- Parameters:
positions – Default joint positions. Shape is (N, num of dofs).
velocities – Default joint velocities. Shape is (N, num of dofs).
efforts – Default joint efforts. Shape is (N, num of dofs).
- set_linear_velocities(
- velocities: ndarray | Tensor | array | None = None,
- indices: ndarray | list | Tensor | array | None = None,
Set the linear velocities of the prims in the view.
The method does this through the PhysX API only. It has to be called after initialization. Note: This method is not supported for the GPU pipeline.
set_velocitiesmethod should be used instead.Warning
This method will immediately set the articulation state.
- Parameters:
velocities – Linear velocities to set the rigid prims to. Shape is (M, 3).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
Hint
This method belongs to the methods used to set the articulation kinematic state:
set_velocities(set_linear_velocities,set_angular_velocities),set_joint_positions,set_joint_velocities,set_joint_efforts.
- set_local_poses(
- translations: ndarray | Tensor | array | None = None,
- orientations: ndarray | Tensor | array | None = None,
- indices: ndarray | list | Tensor | array | None = None,
Set prim poses in the view with respect to the local frame, which is the prim’s parent frame.
Warning
This method changes the prim poses immediately to the indicated values.
- Parameters:
translations – Translations in the local frame of the prims with respect to their parent prim. Shape is (M, 3). If not defined, translations are left unchanged.
orientations – Quaternion orientations in the local frame of the prims. Quaternion is scalar-first (w, x, y, z). Shape is (M, 4). If not defined, orientations are left unchanged.
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
Hint
This method belongs to the methods used to set the prim state.
- set_local_scales( ) None#
Set prim scales in the view with respect to the local frame (the prim’s parent frame).
- Parameters:
scales – scales to be applied to the prim’s dimensions in the view. shape is (M, 3).
indices – indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # set the scale for all prims. Since there are 5 envs, the scale is repeated 5 times >>> scales = np.tile(np.array([1.0, 0.75, 0.5]), (num_envs, 1)) >>> prims.set_local_scales(scales) >>> >>> # set the scale for the first, middle and last of the 5 envs >>> scales = np.tile(np.array([1.0, 0.75, 0.5]), (3, 1)) >>> prims.set_local_scales(scales, indices=np.array([0, 2, 4]))
- set_max_efforts(
- values: ndarray | Tensor | array,
- indices: ndarray | list | Tensor | array | None = None,
- joint_indices: ndarray | list | Tensor | array | None = None,
- joint_names: list[str] | None = None,
Set maximum efforts for articulation in the view.
- Parameters:
values – Maximum efforts for articulations in the view. shape (M, K).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
joint_indices – Joint indices to specify which joints to manipulate. Shape (K,). Where K <= num of dofs.
joint_names – Joint names to specify which joints to manipulate (can’t be specified together with joint_indices). Shape (K,). Where K <= num of dofs.
- Raises:
Exception – If both joint_indices and joint_names are specified.
Example
>>> # set the max efforts for all the articulation joints to the indicated values. >>> # Since there are 5 envs, the joint efforts are repeated 5 times >>> max_efforts = np.tile( ... np.array([10000, 9000, 8000, 7000, 6000, 5000, 4000, 1000, 1000]), ... (num_envs, 1), ... ) >>> prims.set_max_efforts(max_efforts) >>> >>> # set the fingers max efforts: panda_finger_joint1 (7) and panda_finger_joint2 (8) to 1000 >>> # for the first, middle and last of the 5 envs >>> max_efforts = np.tile(np.array([1000, 1000]), (3, 1)) >>> prims.set_max_efforts(max_efforts, indices=np.array([0, 2, 4]), joint_indices=np.array([7, 8]))
- set_max_joint_velocities(
- values: ndarray | Tensor | array,
- indices: ndarray | list | Tensor | array | None = None,
- joint_indices: ndarray | list | Tensor | array | None = None,
- joint_names: list[str] | None = None,
Set maximum velocities for articulation in the view.
- Parameters:
values – Maximum velocities for articulations in the view. shape (M, K).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
joint_indices – Joint indices to specify which joints to manipulate. Shape (K,). Where K <= num of dofs.
joint_names – Joint names to specify which joints to manipulate (can’t be specified together with joint_indices). Shape (K,). Where K <= num of dofs.
- Raises:
Exception – If both joint_indices and joint_names are specified.
- set_sleep_thresholds(
- thresholds: ndarray | Tensor | array,
- indices: ndarray | list | Tensor | array | None = None,
Set the threshold for articulations to enter a sleep state.
Search for Articulations and Sleeping in PhysX docs for more details.
- Parameters:
thresholds – Sleep thresholds to be applied. Shape (M,).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
Example:
>>> # set the sleep threshold for all envs >>> prims.set_sleep_thresholds(np.full((num_envs,), 0.01)) >>> >>> # set only the sleep threshold for the first, middle and last of the 5 envs >>> prims.set_sleep_thresholds(np.full((3,), 0.01), indices=np.array([0, 2, 4]))
- set_solver_position_iteration_counts(
- counts: ndarray | Tensor | array,
- indices: ndarray | list | Tensor | array | None = None,
Set the solver (position) iteration count for the articulations.
The solver iteration count determines how accurately contacts, drives, and limits are resolved. Search for Solver Iteration Count in PhysX docs for more details.
Warning
Setting a higher number of iterations may improve simulation fidelity, although it may affect performance.
- Parameters:
counts – Number of iterations for the solver. Shape (M,).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
Example:
>>> # set the position iteration count for all envs >>> prims.set_solver_position_iteration_counts(np.full((num_envs,), 64)) >>> >>> # set only the position iteration count for the first, middle and last of the 5 envs >>> prims.set_solver_position_iteration_counts(np.full((3,), 64), indices=np.array([0, 2, 4]))
- set_solver_velocity_iteration_counts(
- counts: ndarray | Tensor | array,
- indices: ndarray | list | Tensor | array | None = None,
Set the solver (velocity) iteration count for the articulations.
The solver iteration count determines how accurately contacts, drives, and limits are resolved. Search for Solver Iteration Count in PhysX docs for more details.
Warning
Setting a higher number of iterations may improve simulation fidelity, although it may affect performance.
- Parameters:
counts – Number of iterations for the solver. Shape (M,).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
Example:
>>> # set the velocity iteration count for all envs >>> prims.set_solver_velocity_iteration_counts(np.full((num_envs,), 64)) >>> >>> # set only the velocity iteration count for the first, middle and last of the 5 envs >>> prims.set_solver_velocity_iteration_counts(np.full((3,), 64), indices=np.array([0, 2, 4]))
- set_stabilization_thresholds(
- thresholds: ndarray | Tensor | array,
- indices: ndarray | list | Tensor | array | None = None,
Set the mass-normalized kinetic energy below which the articulation may participate in stabilization.
Search for Stabilization Threshold in PhysX docs for more details.
- Parameters:
thresholds – Stabilization thresholds to be applied. Shape (M,).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
Example:
>>> # set the stabilization threshold for all envs >>> prims.set_stabilization_thresholds(np.full((num_envs,), 0.005)) >>> >>> # set only the stabilization threshold for the first, middle and last of the 5 envs >>> prims.set_stabilization_thresholds(np.full((3,), 0.0051), indices=np.array([0, 2, 4]))
- set_velocities(
- velocities: ndarray | Tensor | array | None = None,
- indices: ndarray | list | Tensor | array | None = None,
Set the linear and angular velocities of the prims in the view at once.
The method does this through the PhysX API only. It has to be called after initialization.
Warning
This method will immediately set the articulation state.
- Parameters:
velocities – Linear and angular velocities respectively to set the rigid prims to. Shape is (M, 6).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
Hint
This method belongs to the methods used to set the articulation kinematic state:
set_velocities(set_linear_velocities,set_angular_velocities),set_joint_positions,set_joint_velocities,set_joint_efforts.
- set_visibilities(
- visibilities: ndarray | Tensor | array,
- indices: ndarray | list | Tensor | array | None = None,
Set the visibilities of the prims in stage.
- Parameters:
visibilities – Flag to set the visibilities of the USD prims in stage. Shape (M,). Where M <= size of the encapsulated prims in the view.
indices – Indices to specify which prims to manipulate. Shape (M,).
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # make all prims not visible in the stage >>> prims.set_visibilities(visibilities=[False] * num_envs)
- set_world_poses(
- positions: ndarray | Tensor | array | None = None,
- orientations: ndarray | Tensor | array | None = None,
- indices: ndarray | list | Tensor | array | None = None,
- usd: bool = True,
Set poses of prims in the view with respect to the world’s frame.
Warning
This method changes the prim poses immediately to the indicated values.
- Parameters:
positions – Positions in the world frame of the prim. Shape is (M, 3). If not defined, positions are left unchanged.
orientations – Quaternion orientations in the world frame of the prims. Quaternion is scalar-first (w, x, y, z). Shape is (M, 4). If not defined, orientations are left unchanged.
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
usd – Whether to set the pose through USD when the physics view is unavailable.
Hint
This method belongs to the methods used to set the prim state.
- switch_control_mode(
- mode: str,
- indices: ndarray | list | Tensor | array | None = None,
- joint_indices: ndarray | list | Tensor | array | None = None,
- joint_names: list[str] | None = None,
Switch control mode between
"position","velocity", or"effort"for all joints.This method will set the implicit Proportional-Derivative (PD) controller’s Kps (stiffnesses) and Kds (dampings), defined via the
set_gainsmethod, of the selected articulations and joints according to the following rule:Control mode
Stiffnesses
Dampings
"position"Kps
Kds
"velocity"0
Kds
"effort"0
0
- Parameters:
mode – Control mode to switch the articulations specified to. It can be
"position","velocity", or"effort".indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
joint_indices – Joint indices to specify which joints to manipulate. Shape (K,). Where K <= num of dofs.
joint_names – Joint names to specify which joints to manipulate (can’t be specified together with joint_indices). Shape (K,). Where K <= num of dofs.
- Raises:
Exception – If both joint_indices and joint_names are specified.
Example
>>> # set 'velocity' as control mode for all joints >>> prims.switch_control_mode("velocity") >>> >>> # set 'effort' as control mode only for the fingers: panda_finger_joint1 (7) and panda_finger_joint2 (8) >>> # for the first, middle and last of the 5 envs >>> prims.switch_control_mode("effort", indices=np.array([0, 2, 4]), joint_indices=np.array([7, 8]))
- switch_dof_control_mode(
- mode: str,
- dof_index: int,
- indices: ndarray | list | Tensor | array | None = None,
Switch control mode between
"position","velocity", or"effort"for the specified DOF.This method will set the implicit Proportional-Derivative (PD) controller’s Kps (stiffnesses) and Kds (dampings), defined via the
set_gainsmethod, of the selected DOF according to the following rule:Control mode
Stiffnesses
Dampings
"position"Kps
Kds
"velocity"0
Kds
"effort"0
0
- Parameters:
mode – Control mode to switch the DOF specified to. It can be
"position","velocity"or"effort".dof_index – DOF index to switch the control mode of.
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
Example
>>> # set 'velocity' as control mode for the panda_joint1 (0) joint for all envs >>> prims.switch_dof_control_mode("velocity", dof_index=0) >>> >>> # set 'effort' as control mode for the panda_joint1 (0) for the first, middle and last of the 5 envs >>> prims.switch_dof_control_mode("effort", dof_index=0, indices=np.array([0, 2, 4]))
- property body_names: list[str] | None#
List of prim names for each rigid body (link) of the articulations.
- Returns:
Ordered names of bodies that correspond to links for the articulations in the view, or None if not initialized.
Example:
>>> prims.body_names ['panda_link0', 'panda_link1', 'panda_link2', 'panda_link3', 'panda_link4', 'panda_link5', 'panda_link6', 'panda_link7', 'panda_link8', 'panda_hand', 'panda_leftfinger', 'panda_rightfinger']
- property count: int#
Number of prims encapsulated in this view.
- Returns:
The number of prims encapsulated in this view.
Example:
>>> prims.count 5
- property dof_names: list[str] | None#
List of prim names for each DOF of the articulations.
- Returns:
Ordered names of joints that correspond to degrees of freedom for the articulations in the view, or None if not initialized.
Example:
>>> prims.dof_names ['panda_joint1', 'panda_joint2', 'panda_joint3', 'panda_joint4', 'panda_joint5', 'panda_joint6', 'panda_joint7', 'panda_finger_joint1', 'panda_finger_joint2']
- property initialized: bool#
Whether a physics simulation view is available for the prim view.
- Returns:
True if a physics simulation view is available from SimulationManager. False otherwise.
Example:
>>> # given an active physics simulation view >>> prims.initialized True
- property is_non_root_articulation_link: bool#
True if the prim corresponds to a non root link in an articulation.
- Returns:
True if the prim corresponds to a non root link in an articulation. Otherwise False.
- property joint_names: list[str] | None#
List of prim names for each joint of the articulations.
- Returns:
Ordered names of joints that correspond to degrees of freedom for the articulations in the view, or None if not initialized.
- property name: str#
Name given to the prims view when instantiating it.
- Returns:
The name given to the prims view when instantiating it.
- property num_bodies: int | None#
Number of rigid bodies (links) of the articulations.
- Returns:
Maximum number of rigid bodies for the articulations in the view, or None if the articulation is not initialized.
Example:
>>> prims.num_bodies 12
- property num_dof: int | None#
Number of DOF of the articulations.
- Returns:
Maximum number of DOFs for the articulations in the view, or None if the articulation is not initialized.
Example:
>>> prims.num_dof 9
- property num_fixed_tendons: int | None#
Number of fixed tendons of the articulations.
- Returns:
Maximum number of fixed tendons for the articulations in the view, or None if the articulation is not initialized.
Example:
>>> prims.num_fixed_tendons 0
- property num_joints: int | None#
Number of joints of the articulations.
- Returns:
Number of joints of the articulations in the view, or None if the articulation is not initialized.
- property num_shapes: int | None#
Number of rigid shapes of the articulations.
- Returns:
Maximum number of rigid shapes for the articulations in the view, or None if the articulation is not initialized.
Example:
>>> prims.num_shapes 17
- property prim_paths: list[str]#
Prim paths in the stage encapsulated in this view.
- Returns:
The prim paths in the stage encapsulated in this view.
Example:
>>> prims.prim_paths ['/World/envs/env_0', '/World/envs/env_1', '/World/envs/env_2', '/World/envs/env_3', '/World/envs/env_4']
- property prims: list[pxr.Usd.Prim]#
USD Prim objects encapsulated in this view.
- Returns:
The USD Prim objects encapsulated in this view.
Example:
>>> prims.prims [Usd.Prim(</World/envs/env_0>), Usd.Prim(</World/envs/env_1>), Usd.Prim(</World/envs/env_2>), Usd.Prim(</World/envs/env_3>), Usd.Prim(</World/envs/env_4>)]
- class ClothPrim(*args: Any, **kwargs: Any)#
Bases:
objectDeprecated cloth prim class. No longer available.
- Parameters:
*args – Unused positional arguments.
**kwargs – Unused keyword arguments.
- Raises:
NotImplementedError – Raised because ClothPrim is no longer available.
- class DeformablePrim(*args: Any, **kwargs: Any)#
Bases:
objectDeprecated deformable prim class. No longer available.
- Parameters:
*args – Unused positional arguments.
**kwargs – Unused keyword arguments.
- Raises:
NotImplementedError – Always raised because DeformablePrim is no longer available.
- class GeometryPrim(
- prim_paths_expr: str,
- name: str = 'geometry_prim_view',
- positions: ndarray | Tensor | array | None = None,
- translations: ndarray | Tensor | array | None = None,
- orientations: ndarray | Tensor | array | None = None,
- scales: ndarray | Tensor | array | None = None,
- visibilities: ndarray | Tensor | array | None = None,
- reset_xform_properties: bool = True,
- collisions: ndarray | Tensor | array | None = None,
- track_contact_forces: bool = False,
- prepare_contact_sensors: bool = False,
- disable_stablization: bool = True,
- contact_filter_prim_paths_expr: list[str] | None = None,
- max_contact_count: int = 0,
Bases:
XFormPrimHigh level wrapper to deal with geom prims (one or many) as well as their attributes/properties.
This class wraps all matching geom prims found at the regex provided to the
prim_paths_exprargument.Note
Each prim will have
xformOp:orient,xformOp:translateandxformOp:scaleonly after initialization, unless it is a non-root articulation link.Warning
The geometry prim view object must be initialized in order to be able to operate on it. See the
initializemethod for more details.Warning
Some methods require the prims to have the PhysX Collision API. Instantiate the class with the
collisionsparameter set to a list of True values to apply the collision API.- Parameters:
prim_paths_expr – Prim paths regex to encapsulate all prims that match it. example: “/World/Env[1-5]/Microwave” will match /World/Env1/Microwave, /World/Env2/Microwave, etc. A non-regex prim path can also be used to encapsulate one XForm.
name – Short name to be used as a key by Scene class. Note: needs to be unique if the object is added to the Scene.
positions – Positions in the world frame of the prim. Shape is (N, 3).
translations – Translations in the local frame of the prims with respect to their parent prims. Shape is (N, 3).
orientations – Quaternion orientations in the world or local frame of the prim, depending on whether translation or position is specified. Quaternion is scalar-first (w, x, y, z). Shape is (N, 4).
scales – Local scales to be applied to the prim’s dimensions. Shape is (N, 3).
visibilities – Set to False for an invisible prim in the stage while rendering. Shape is (N,).
reset_xform_properties – True if the prims do not have the right set of xform properties (i.e: translate, orient and scale) ONLY and in that order. Set this parameter to False if the object was cloned using the cloner API in isaacsim.core.cloner.
collisions – Set to True if the geometry already has or should have a collider (i.e. not only a visual geometry). Shape is (N,).
track_contact_forces – If enabled, the view will track the net contact forces on each geometry prim in the view. Note that the collision flag should be set to True to report contact forces.
prepare_contact_sensors – Applies contact reporter API to the prim if it does not already have one.
disable_stablization – Disables the contact stabilization parameter in the physics context.
contact_filter_prim_paths_expr – A list of filter expressions that allows tracking contact forces between the geometry prim and this subset through get_contact_force_matrix().
max_contact_count – Maximum number of contact data to report when detailed contact information is needed.
Example:
>>> import isaacsim.core.utils.stage as stage_utils >>> from isaacsim.core.cloner import GridCloner >>> from isaacsim.core.prims import GeometryPrim >>> from pxr import UsdGeom >>> >>> env_zero_path = "/World/envs/env_0" >>> num_envs = 5 >>> >>> # clone the environment (num_envs) >>> cloner = GridCloner(spacing=1.5) >>> cloner.define_base_env(env_zero_path) >>> UsdGeom.Xform.Define(stage_utils.get_current_stage(), env_zero_path) >>> stage_utils.get_current_stage().DefinePrim(f"{env_zero_path}/Xform", "Xform") >>> stage_utils.get_current_stage().DefinePrim(f"{env_zero_path}/Xform/Cube", "Cube") >>> env_pos = cloner.clone( ... source_prim_path=env_zero_path, ... prim_paths=cloner.generate_paths("/World/envs/env", num_envs), ... copy_from_source=True ... ) >>> >>> # wrap the prims >>> prims = GeometryPrim( ... prim_paths_expr="/World/envs/env.*/Xform", ... name="geometry_prim_view", ... collisions=[True] * num_envs ... ) >>> prims <isaacsim.core.prims.geometry_prim.GeometryPrim object at 0x7f372bb21630>
- apply_collision_apis(
- indices: ndarray | list | Tensor | array | None = None,
Apply the collision API to prims in the view and update internal variables.
- Parameters:
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
Example
>>> # apply the collision API for all prims >>> prims.apply_collision_apis() >>> >>> # apply the collision API for the first, middle and last of the 5 envs >>> prims.apply_collision_apis(indices=np.array([0, 2, 4]))
- apply_physics_materials(
- physics_materials: PhysicsMaterial | list[PhysicsMaterial],
- weaker_than_descendants: bool | list[bool] | None = None,
- indices: np.ndarray | list | torch.Tensor | wp.array | None = None,
Apply physics material to prims in the view and optionally its descendants.
- Parameters:
physics_materials – Physics materials to apply to prims in the view. Physics material can be used to define friction, restitution, etc. Note: if a physics material is not defined, the defaults will be used from PhysX. If a list is provided then its size has to be equal the view’s size or indices size. If one material is provided it will be applied to all prims in the view.
weaker_than_descendants – True if the material should not override the descendants materials. If a list of physics materials is provided, provide a list with the same size for this argument.
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Raises:
Exception – If the length of physics materials does not match the number of selected prims.
Exception – If the length of physics materials does not match weaker_than_descendants.
Example
>>> from isaacsim.core.api.materials import PhysicsMaterial >>> >>> # create a rigid body physical material >>> material = PhysicsMaterial( ... prim_path="/World/physics_material/aluminum", # path to the material prim to create ... dynamic_friction=0.4, ... static_friction=1.1, ... restitution=0.1 ... ) >>> >>> # apply the material to all prims >>> prims.apply_physics_materials(material) # or [material] * num_envs >>> >>> # apply the collision API for the first, middle and last of the 5 envs >>> prims.apply_physics_materials(material, indices=np.array([0, 2, 4]))
- apply_visual_materials(
- visual_materials: 'VisualMaterial' | list['VisualMaterial'],
- weaker_than_descendants: bool | list[bool] | None = None,
- indices: np.ndarray | list | torch.Tensor | wp.array | None = None,
Apply visual material to the prims and optionally their prim descendants.
- Parameters:
visual_materials – Visual materials to be applied to the prims. Currently supports PreviewSurface, OmniPBR and OmniGlass. If a list is provided then its size has to be equal the view’s size or indices size. If one material is provided it will be applied to all prims in the view.
weaker_than_descendants – True if the material shouldn’t override the descendants materials, otherwise False. If a list of visual materials is provided then a list has to be provided with the same size for this arg as well.
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Raises:
Exception – length of visual materials != length of prims indexed
Exception – length of visual materials != length of weaker descendants bools arg
Exception – If the prim view is not valid.
Example:
>>> from isaacsim.core.api.materials import OmniGlass >>> >>> # create a dark-red glass visual material >>> material = OmniGlass( ... prim_path="/World/material/glass", # path to the material prim to create ... ior=1.25, ... depth=0.001, ... thin_walled=False, ... color=np.array([0.5, 0.0, 0.0]) ... ) >>> prims.apply_visual_materials(material)
- destroy() None#
Clean up and invalidate the prim view by deregistering callbacks and clearing internal state.
- disable_collision(
- indices: ndarray | list | Tensor | array | None = None,
Disable collision on prims in the view.
- Parameters:
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
Example
>>> # disable the collision API for all prims >>> prims.disable_collision() >>> >>> # disable the collision API for the prims for the first, middle and last of the 5 envs >>> prims.disable_collision(indices=np.array([0, 2, 4]))
- enable_collision(
- indices: ndarray | list | Tensor | array | None = None,
Enable collision on prims in the view.
- Parameters:
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
Example
>>> # enable the collision API for all prims >>> prims.enable_collision() >>> >>> # enable the collision API for the prims for the first, middle and last of the 5 envs >>> prims.enable_collision(indices=np.array([0, 2, 4]))
- get_applied_physics_materials(
- indices: np.ndarray | list | torch.Tensor | wp.array | None = None,
Get the applied physics material for prims in the view.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
Current applied physics materials for prims in the view.
Example
>>> # get the applied material for all prims >>> prims.get_applied_physics_materials() [<isaacsim.core.api.materials.physics_material.PhysicsMaterial object at 0x7f720859ece0>, <isaacsim.core.api.materials.physics_material.PhysicsMaterial object at 0x7f720859ece0>, <isaacsim.core.api.materials.physics_material.PhysicsMaterial object at 0x7f720859ece0>, <isaacsim.core.api.materials.physics_material.PhysicsMaterial object at 0x7f720859ece0>, <isaacsim.core.api.materials.physics_material.PhysicsMaterial object at 0x7f720859ece0>] >>> >>> # get the applied material for the first, middle and last of the 5 envs >>> prims.get_applied_physics_materials(indices=np.array([0, 2, 4])) [<isaacsim.core.api.materials.physics_material.PhysicsMaterial object at 0x7f720859ece0>, <isaacsim.core.api.materials.physics_material.PhysicsMaterial object at 0x7f720859ece0>, <isaacsim.core.api.materials.physics_material.PhysicsMaterial object at 0x7f720859ece0>]
- get_applied_visual_materials(
- indices: np.ndarray | list | torch.Tensor | wp.array | None = None,
Get the current applied visual materials.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
A list of the current applied visual materials to the prims if its type is currently supported.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all applied visual materials. Returned size is 5 for the example: 5 envs >>> prims.get_applied_visual_materials() [<isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>, <isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>, <isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>, <isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>, <isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>] >>> >>> # get the applied visual materials for the first, middle and last of the 5 envs. Returned size is 3 >>> prims.get_applied_visual_materials(indices=np.array([0, 2, 4])) [<isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>, <isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>, <isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>]
- get_collision_approximations(
- indices: ndarray | list | Tensor | array | None = None,
Get collision approximation types for prims in the view.
Approximation
Full name
Description
"none"Triangle Mesh
The mesh geometry is used directly as a collider without any approximation
"convexDecomposition"Convex Decomposition
A convex mesh decomposition is performed. This results in a set of convex mesh colliders
"convexHull"Convex Hull
A convex hull of the mesh is generated and used as the collider
"boundingSphere"Bounding Sphere
A bounding sphere is computed around the mesh and used as a collider
"boundingCube"Bounding Cube
An optimally fitting box collider is computed around the mesh
"meshSimplification"Mesh Simplification
A mesh simplification step is performed, resulting in a simplified triangle mesh collider
"sdf"SDF Mesh
SDF (Signed-Distance-Field) uses high-detail triangle meshes as collision shape
"sphereFill"Sphere Approximation
A sphere mesh decomposition is performed. This results in a set of sphere colliders
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
Collision approximation types. Size == M or size of the view.
Example
>>> # get the collision approximation of all prims. Returned size is (5,). >>> prims.get_collision_approximations() ['none', 'none', 'none', 'none', 'none'] >>> >>> # get the collision approximation of the prims for the first, middle and last of the 5 envs >>> prims.get_collision_approximations(indices=np.array([0, 2, 4])) ['none', 'none', 'none']
- get_contact_force_data(
- indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
- dt: float = 1.0,
Get detailed contact data between the prims in the view and the filter prims.
This method provides individual contact normals, contact points, contact separations, and contact forces for each pair. The sum of the contact forces equals the force aggregate for a pair returned by get_contact_force_matrix. Due to the dynamic nature of collision between bodies, this method provides contact data buffers arranged sequentially for each pair. The starting index and number of contact data points for each pair in this stream can be read from the pair_contacts_start_indices and pair_contacts_count tensors. They both have a dimension of (self.num_shapes, self.num_filters), where filter_count is determined according to the filter_paths_expr parameter.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
dt – Time step multiplier to convert the underlying impulses to forces.
- Returns:
A set of buffers for normal forces with shape (max_contact_count, 1), points with shape (max_contact_count, 3), normals with shape (max_contact_count, 3), and distances with shape (max_contact_count, 1), as well as two tensors with shape (M, self.num_filters) to indicate the starting index and number of contact data points per pair in the aforementioned buffers. None if no contact filter is specified.
- get_contact_force_matrix(
- indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
- dt: float = 1.0,
Return contact forces between the prims in the view and filter prims when contact filters are specified.
The returned matrix has shape (self.count, self._contact_view.num_filters, 3) before indexing. The number of filters is determined according to the filter_paths_expr parameter.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
dt – Time step multiplier to convert the underlying impulses to forces. A value of 1.0 returns contact impulses.
- Returns:
Net contact forces of the prims with shape (M, self._contact_view.num_filters, 3). None if no contact filter is specified.
- get_contact_offsets(
- indices: ndarray | list | Tensor | array | None = None,
Get contact offsets for prims in the view.
Shapes whose distance is less than the sum of their contact offset values will generate contacts.
Search for Advanced Collision Detection in PhysX docs for more details.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
Contact offsets of the collision shapes. Shape is (M,).
Example:
>>> # get the contact offsets of all prims. Returned shape is (5,). >>> prims.get_contact_offsets() [-inf -inf -inf -inf -inf] >>> >>> # get the contact offsets of the prims for the first, middle and last of the 5 envs >>> prims.get_contact_offsets(indices=np.array([0, 2, 4])) [-inf -inf -inf]
- get_default_state() XFormPrimViewState#
Get the default states (positions and orientations) defined with the
set_default_statemethod.- Returns:
The default state of the prims that is used after each reset.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> state = prims.get_default_state() >>> state <isaacsim.core.utils.types.XFormPrimViewState object at 0x7f82f73e3070> >>> state.positions [[ 1.5 -0.75 0. ] [ 1.5 0.75 0. ] [ 0. -0.75 0. ] [ 0. 0.75 0. ] [-1.5 -0.75 0. ]] >>> state.orientations [[1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.]]
- get_friction_data(
- indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
- dt: float = 1.0,
Get friction data between the prims in the view and the filter prims.
This method provides frictional contact forces and points. The data is reported for anchor points that include tangential forces in a single tangent direction to the contact normal. Due to the dynamic nature of collision between bodies, this method provides friction data buffers arranged sequentially for each pair. The starting index and number of contact data points for each pair in this stream can be read from the pair_contacts_start_indices and pair_contacts_count tensors. They both have a dimension of (self.num_shapes, self.num_filters), where filter_count is determined according to the filter_paths_expr parameter.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
dt – Time step multiplier to convert the underlying impulses to forces.
- Returns:
A set of buffers for tangential forces per patch at anchor points, each in a single direction, with shape (max_contact_count, 3), points with shape (max_contact_count, 3), as well as two tensors with shape (M, self.num_filters) to indicate the starting index and number of contact data points per pair in the aforementioned buffers. None if no contact filter is specified.
- get_local_poses(
- indices: ndarray | list | Tensor | array | None = None,
Get prim poses in the view with respect to the local frame (the prim’s parent frame).
- Parameters:
indices – indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
first index is translations in the local frame of the prims. shape is (M, 3). second index is quaternion orientations in the local frame of the prims. quaternion is scalar-first (w, x, y, z). shape is (M, 4).
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all prims poses with respect to the local frame. >>> # Returned shape is position (5, 3) and orientation (5, 4) for the example: 5 envs >>> positions, orientations = prims.get_local_poses() >>> positions [[ 1.5 -0.75 0. ] [ 1.5 0.75 0. ] [ 0. -0.75 0. ] [ 0. 0.75 0. ] [-1.5 -0.75 0. ]] >>> orientations [[1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.]] >>> >>> # get only the prims poses with respect to the local frame for the first, middle and last of the 5 envs. >>> # Returned shape is position (3, 3) and orientation (3, 4) for the example: 3 envs selected >>> positions, orientations = prims.get_local_poses(indices=np.array([0, 2, 4])) >>> positions [[ 1.5 -0.75 0. ] [ 0. -0.75 0. ] [-1.5 -0.75 0. ]] >>> orientations [[1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.]]
- get_local_scales(
- indices: ndarray | list | Tensor | array | None = None,
Get prim scales in the view with respect to the local frame (the parent’s frame).
- Parameters:
indices – indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
scales applied to the prim’s dimensions in the local frame. shape is (M, 3).
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all prims scales with respect to the local frame. >>> # Returned shape is (5, 3) for the example: 5 envs >>> prims.get_local_scales() [[1. 1. 1.] [1. 1. 1.] [1. 1. 1.] [1. 1. 1.] [1. 1. 1.]] >>> >>> # get only the prims scales with respect to the local frame for the first, middle and last of the 5 envs. >>> # Returned shape is (3, 3) for the example: 3 envs selected >>> prims.get_local_scales(indices=np.array([0, 2, 4])) [[1. 1. 1.] [1. 1. 1.] [1. 1. 1.]]
- get_min_torsional_patch_radii(
- indices: ndarray | list | Tensor | None = None,
Get minimum torsional patch radii for prims in the view.
Search for “Torsional Patch Radius” in PhysX docs for more details.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
Minimum radius of the contact patch used to apply torsional friction. Shape is (M,).
Example:
>>> # get the minimum torsional patch radius of all prims. Returned shape is (5,). >>> prims.get_min_torsional_patch_radii() [0. 0. 0. 0. 0.] >>> >>> # get the minimum torsional patch radius of the prims for the first, middle and last of the 5 envs >>> prims.get_min_torsional_patch_radii(indices=np.array([0, 2, 4])) [0. 0. 0.]
- get_net_contact_forces(
- indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
- dt: float = 1.0,
Return net contact forces on prims when contact force tracking is enabled.
The returned matrix has shape (self.count, 3) before indexing.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
dt – Time step multiplier to convert the underlying impulses to forces. A value of 1.0 returns contact impulses.
- Returns:
Net contact forces of the prims with shape (M, 3). None if contact tracking is not enabled.
- get_rest_offsets(
- indices: ndarray | list | Tensor | array | None = None,
Get rest offsets for prims in the view.
Two shapes will come to rest at a distance equal to the sum of their rest offset values. If the rest offset is 0, they should converge to touching exactly.
Search for Advanced Collision Detection in PhysX docs for more details.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
Rest offsets of the collision shapes. Shape is (M,).
Example:
>>> # get the rest offsets of all prims. Returned shape is (5,). >>> prims.get_rest_offsets() [-inf -inf -inf -inf -inf] >>> >>> # get the rest offsets of the prims for the first, middle and last of the 5 envs >>> prims.get_rest_offsets(indices=np.array([0, 2, 4])) [-inf -inf -inf]
- get_torsional_patch_radii(
- indices: ndarray | list | Tensor | array | None = None,
Get torsional patch radii for prims in the view.
Search for “Torsional Patch Radius” in PhysX docs for more details.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
Radius of the contact patch used to apply torsional friction. Shape is (M,).
Example:
>>> # get the torsional patch radius of all prims. Returned shape is (5,). >>> prims.get_torsional_patch_radii() [0. 0. 0. 0. 0.] >>> >>> # get the torsional patch radius of the prims for the first, middle and last of the 5 envs >>> prims.get_torsional_patch_radii(indices=np.array([0, 2, 4])) [0. 0. 0.]
- get_visibilities(
- indices: ndarray | list | Tensor | array | None = None,
Return the current visibilities of the prims in stage.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
Shape (M,) with type bool, where each item holds True if the prim is visible in stage. False otherwise.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all visibilities. Returned shape is (5,) for the example: 5 envs >>> prims.get_visibilities() [ True True True True True] >>> >>> # get the visibilities for the first, middle and last of the 5 envs. Returned shape is (3,) >>> prims.get_visibilities(indices=np.array([0, 2, 4])) [ True True True]
- get_world_poses(
- indices: ndarray | list | Tensor | array | None = None,
- usd: bool = True,
Get the poses of the prims in the view with respect to the world’s frame.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
usd – True to query from USD. Otherwise False to query from Fabric data.
- Returns:
First index is positions in the world frame of the prims. shape is (M, 3). Second index is quaternion orientations in the world frame of the prims. quaternion is scalar-first (w, x, y, z). shape is (M, 4).
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all prims poses with respect to the world's frame. >>> # Returned shape is position (5, 3) and orientation (5, 4) for the example: 5 envs >>> positions, orientations = prims.get_world_poses() >>> positions [[ 1.5 -0.75 0. ] [ 1.5 0.75 0. ] [ 0. -0.75 0. ] [ 0. 0.75 0. ] [-1.5 -0.75 0. ]] >>> orientations [[1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.]] >>> >>> # get only the prims poses with respect to the world's frame for the first, middle and last of the 5 envs. >>> # Returned shape is position (3, 3) and orientation (3, 4) for the example: 3 envs selected >>> positions, orientations = prims.get_world_poses(indices=np.array([0, 2, 4])) >>> positions [[ 1.5 -0.75 0. ] [ 0. -0.75 0. ] [-1.5 -0.75 0. ]] >>> orientations [[1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.]]
- get_world_scales(
- indices: ndarray | list | Tensor | array | None = None,
Get prim scales in the view with respect to the world’s frame.
- Parameters:
indices – indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
scales applied to the prim’s dimensions in the world frame. shape is (M, 3).
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all prims scales with respect to the world's frame. >>> # Returned shape is (5, 3) for the example: 5 envs >>> prims.get_world_scales() [[1. 1. 1.] [1. 1. 1.] [1. 1. 1.] [1. 1. 1.] [1. 1. 1.]] >>> >>> # get only the prims scales with respect to the world's frame for the first, middle and last of the 5 envs. >>> # Returned shape is (3, 3) for the example: 3 envs selected >>> prims.get_world_scales(indices=np.array([0, 2, 4])) [[1. 1. 1.] [1. 1. 1.] [1. 1. 1.]]
- initialize(
- physics_sim_view: omni.physics.tensors.SimulationView | None = None,
Create a physics simulation view if not passed and set other properties using the PhysX tensor API.
Note
If the rigid prim view has been added to the world scene (e.g.,
world.scene.add(prims)), it will be automatically initialized when the world is reset (e.g.,world.reset()).Warning
This method needs to be called after each hard reset (e.g., Stop + Play on the timeline) before interacting with any other class method.
- Parameters:
physics_sim_view – Current physics simulation view.
Example:
>>> prims.initialize()
- is_collision_enabled(
- indices: ndarray | list | Tensor | array | None = None,
Query whether collision is enabled on prims in the view.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
True if collision is enabled. Shape is (M,).
Example
>>> # check if the collision is enabled for all prims. Returned size is (5,). >>> prims.is_collision_enabled() [ True True True True True] >>> >>> # check if the collision is enabled for the first, middle and last of the 5 envs >>> prims.is_collision_enabled(indices=np.array([0, 2, 4])) [ True True True]
- is_valid(
- indices: ndarray | list | Tensor | array | None = None,
Check whether the prim view is valid.
- Parameters:
indices – Indices accepted for API compatibility. The current view validity is returned regardless of indices.
- Returns:
True if the prim view has not been invalidated by destroy or matching prim deletion. False otherwise.
Example:
>>> prims.is_valid() True
- is_visual_material_applied(
- indices: ndarray | list | Tensor | array | None = None,
Check if there is a visual material applied.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
True if there is a visual material applied to the corresponding prim in the view. False otherwise.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # given a visual material that is applied only to the first and the last environment >>> prims.is_visual_material_applied() [True, False, False, False, True] >>> >>> # check for the first, middle and last of the 5 envs >>> prims.is_visual_material_applied(indices=np.array([0, 2, 4])) [True, False, True]
- set_collision_approximations(
- approximation_types: list[str],
- indices: ndarray | list | Tensor | array | None = None,
Set collision approximation types for prims in the view.
Approximation
Full name
Description
"none"Triangle Mesh
The mesh geometry is used directly as a collider without any approximation
"convexDecomposition"Convex Decomposition
A convex mesh decomposition is performed. This results in a set of convex mesh colliders
"convexHull"Convex Hull
A convex hull of the mesh is generated and used as the collider
"boundingSphere"Bounding Sphere
A bounding sphere is computed around the mesh and used as a collider
"boundingCube"Bounding Cube
An optimally fitting box collider is computed around the mesh
"meshSimplification"Mesh Simplification
A mesh simplification step is performed, resulting in a simplified triangle mesh collider
"sdf"SDF Mesh
SDF (Signed-Distance-Field) uses high-detail triangle meshes as collision shape
"sphereFill"Sphere Approximation
A sphere mesh decomposition is performed. This results in a set of sphere colliders
- Parameters:
approximation_types – Collision approximation types. List size == M or the size of the view.
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
Example
>>> # set the collision approximations for all the prims to the specified values. >>> prims.set_collision_approximations(["convexDecomposition"] * num_envs) >>> >>> # set the collision approximations for the first, middle and last of the 5 envs >>> types = ["convexDecomposition", "convexHull", "meshSimplification"] >>> prims.set_collision_approximations(types, indices=np.array([0, 2, 4]))
- set_contact_offsets(
- offsets: ndarray | Tensor | array,
- indices: ndarray | list | Tensor | array | None = None,
Set contact offsets for prims in the view.
Shapes whose distance is less than the sum of their contact offset values will generate contacts.
Search for Advanced Collision Detection in PhysX docs for more details.
- Parameters:
offsets – Contact offsets of the collision shapes. Allowed range [maximum(0, rest_offset), 0]. Shape (M,).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
Example:
>>> # set the contact offset for all the prims to the specified values. >>> prims.set_contact_offsets(np.full(num_envs, 0.02)) >>> >>> # set the contact offset for the first, middle and last of the 5 envs >>> prims.set_contact_offsets(np.full(3, 0.02), indices=np.array([0, 2, 4]))
- set_default_state(
- positions: ndarray | Tensor | array | None = None,
- orientations: ndarray | Tensor | array | None = None,
- indices: ndarray | list | Tensor | array | None = None,
Set the default state of the prims (positions and orientations), that will be used after each reset.
Note
The default states will be set during post-reset (e.g., calling
.post_reset()orworld.reset()methods)- Parameters:
positions – Positions in the world frame of the prim. shape is (M, 3).
orientations – Quaternion orientations in the world frame of the prim. quaternion is scalar-first (w, x, y, z). shape is (M, 4).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # configure default states for all prims >>> positions = np.zeros((num_envs, 3)) >>> positions[:, 0] = np.arange(num_envs) >>> orientations = np.tile(np.array([1.0, 0.0, 0.0, 0.0]), (num_envs, 1)) >>> prims.set_default_state(positions=positions, orientations=orientations) >>> >>> # set default states during post-reset >>> prims.post_reset()
- set_local_poses(
- translations: ndarray | Tensor | array | None = None,
- orientations: ndarray | Tensor | array | None = None,
- indices: ndarray | list | Tensor | array | None = None,
Set prim poses in the view with respect to the local frame (the prim’s parent frame).
Warning
This method will change (teleport) the prim poses immediately to the indicated value
- Parameters:
translations – translations in the local frame of the prims (with respect to its parent prim). shape is (M, 3).
orientations – quaternion orientations in the local frame of the prims. quaternion is scalar-first (w, x, y, z). shape is (M, 4).
indices – indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Raises:
Exception – If the prim view is not valid.
Hint
This method belongs to the methods used to set the prim state
Example:
>>> # reposition all prims >>> positions = np.zeros((num_envs, 3)) >>> positions[:,0] = np.arange(num_envs) >>> orientations = np.tile(np.array([1.0, 0.0, 0.0, 0.0]), (num_envs, 1)) >>> prims.set_local_poses(positions, orientations) >>> >>> # reposition only the prims for the first, middle and last of the 5 envs >>> positions = np.zeros((3, 3)) >>> positions[:,1] = np.arange(3) >>> orientations = np.tile(np.array([1.0, 0.0, 0.0, 0.0]), (3, 1)) >>> prims.set_local_poses(positions, orientations, indices=np.array([0, 2, 4]))
- set_local_scales( ) None#
Set prim scales in the view with respect to the local frame (the prim’s parent frame).
- Parameters:
scales – scales to be applied to the prim’s dimensions in the view. shape is (M, 3).
indices – indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # set the scale for all prims. Since there are 5 envs, the scale is repeated 5 times >>> scales = np.tile(np.array([1.0, 0.75, 0.5]), (num_envs, 1)) >>> prims.set_local_scales(scales) >>> >>> # set the scale for the first, middle and last of the 5 envs >>> scales = np.tile(np.array([1.0, 0.75, 0.5]), (3, 1)) >>> prims.set_local_scales(scales, indices=np.array([0, 2, 4]))
- set_min_torsional_patch_radii(
- radii: ndarray | Tensor | array,
- indices: ndarray | list | Tensor | array | None = None,
Set minimum torsional patch radii for prims in the view.
Search for “Torsional Patch Radius” in PhysX docs for more details.
- Parameters:
radii – Minimum radius of the contact patch used to apply torsional friction. Allowed range [0, max_float]. Shape is (M, ).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
Example:
>>> # set the minimum torsional patch radius for all the prims to the specified values. >>> prims.set_min_torsional_patch_radii(np.full(num_envs, 0.05)) >>> >>> # set the minimum torsional patch radius for the first, middle and last of the 5 envs >>> prims.set_min_torsional_patch_radii(np.full(3, 0.05), indices=np.array([0, 2, 4]))
- set_rest_offsets(
- offsets: ndarray | Tensor | array,
- indices: ndarray | list | Tensor | array | None = None,
Set rest offsets for prims in the view.
Two shapes will come to rest at a distance equal to the sum of their rest offset values. If the rest offset is 0, they should converge to touching exactly.
Search for Advanced Collision Detection in PhysX docs for more details.
Warning
The contact offset must be positive and greater than the rest offset.
- Parameters:
offsets – Rest offset of a collision shape. Allowed range [-max_float, contact_offset]. Shape (M,).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
Example:
>>> # set the rest offset for all the prims to the specified values. >>> prims.set_rest_offsets(np.full(num_envs, 0.01)) >>> >>> # set the rest offset for the first, middle and last of the 5 envs >>> prims.set_rest_offsets(np.full(3, 0.01), indices=np.array([0, 2, 4]))
- set_torsional_patch_radii(
- radii: ndarray | Tensor | array,
- indices: ndarray | list | Tensor | array | None = None,
Set torsional patch radii for prims in the view.
Search for “Torsional Patch Radius” in PhysX docs for more details.
- Parameters:
radii – Radius of the contact patch used to apply torsional friction. Allowed range [0, max_float]. Shape is (M,).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
Example:
>>> # set the torsional patch radius for all the prims to the specified values. >>> prims.set_torsional_patch_radii(np.full(num_envs, 0.1)) >>> >>> # set the torsional patch radius for the first, middle and last of the 5 envs >>> prims.set_torsional_patch_radii(np.full(3, 0.1), indices=np.array([0, 2, 4]))
- set_visibilities(
- visibilities: ndarray | Tensor | array,
- indices: ndarray | list | Tensor | array | None = None,
Set the visibilities of the prims in stage.
- Parameters:
visibilities – Flag to set the visibilities of the USD prims in stage. Shape (M,). Where M <= size of the encapsulated prims in the view.
indices – Indices to specify which prims to manipulate. Shape (M,).
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # make all prims not visible in the stage >>> prims.set_visibilities(visibilities=[False] * num_envs)
- set_world_poses(
- positions: ndarray | Tensor | array | None = None,
- orientations: ndarray | Tensor | array | None = None,
- indices: ndarray | list | Tensor | array | None = None,
- usd: bool = True,
Set prim poses in the view with respect to the world’s frame.
Warning
This method will change (teleport) the prim poses immediately to the indicated value
- Parameters:
positions – Positions in the world frame of the prims. shape is (M, 3).
orientations – Quaternion orientations in the world frame of the prims. quaternion is scalar-first (w, x, y, z). shape is (M, 4).
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
usd – True to query from USD. Otherwise False to query from Fabric data.
- Raises:
Exception – If the prim view is not valid.
Hint
This method belongs to the methods used to set the prim state
Example:
>>> # reposition all prims in row (x-axis) >>> positions = np.zeros((num_envs, 3)) >>> positions[:,0] = np.arange(num_envs) >>> orientations = np.tile(np.array([1.0, 0.0, 0.0, 0.0]), (num_envs, 1)) >>> prims.set_world_poses(positions, orientations) >>> >>> # reposition only the prims for the first, middle and last of the 5 envs in column (y-axis) >>> positions = np.zeros((3, 3)) >>> positions[:,1] = np.arange(3) >>> orientations = np.tile(np.array([1.0, 0.0, 0.0, 0.0]), (3, 1)) >>> prims.set_world_poses(positions, orientations, indices=np.array([0, 2, 4]))
- property count: int#
Number of prims encapsulated in this view.
- Returns:
The number of prims encapsulated in this view.
Example:
>>> prims.count 5
- property geoms: list[pxr.UsdGeom.Gprim]#
USD geom objects encapsulated.
- Returns:
USD geom objects encapsulated.
Example:
>>> prims.geoms [UsdGeom.Gprim(Usd.Prim(</World/envs/env_0/Xform>)), UsdGeom.Gprim(Usd.Prim(</World/envs/env_1/Xform>)), UsdGeom.Gprim(Usd.Prim(</World/envs/env_2/Xform>)), UsdGeom.Gprim(Usd.Prim(</World/envs/env_3/Xform>)), UsdGeom.Gprim(Usd.Prim(</World/envs/env_4/Xform>))]
- property initialized: bool#
Whether a physics simulation view is available for the prim view.
- Returns:
True if a physics simulation view is available from SimulationManager. False otherwise.
Example:
>>> # given an active physics simulation view >>> prims.initialized True
- property is_non_root_articulation_link: bool#
True if the prim corresponds to a non root link in an articulation.
- Returns:
True if the prim corresponds to a non root link in an articulation. Otherwise False.
- property name: str#
Name given to the prims view when instantiating it.
- Returns:
The name given to the prims view when instantiating it.
- property prim_paths: list[str]#
Prim paths in the stage encapsulated in this view.
- Returns:
The prim paths in the stage encapsulated in this view.
Example:
>>> prims.prim_paths ['/World/envs/env_0', '/World/envs/env_1', '/World/envs/env_2', '/World/envs/env_3', '/World/envs/env_4']
- property prims: list[pxr.Usd.Prim]#
USD Prim objects encapsulated in this view.
- Returns:
The USD Prim objects encapsulated in this view.
Example:
>>> prims.prims [Usd.Prim(</World/envs/env_0>), Usd.Prim(</World/envs/env_1>), Usd.Prim(</World/envs/env_2>), Usd.Prim(</World/envs/env_3>), Usd.Prim(</World/envs/env_4>)]
- class ParticleSystem(
- prim_paths_expr: str,
- name: str = 'particle_system_view',
- particle_systems_enabled: ndarray | Tensor | None = None,
- simulation_owners: Sequence[str] | None = None,
- contact_offsets: ndarray | Tensor | None = None,
- rest_offsets: ndarray | Tensor | None = None,
- particle_contact_offsets: ndarray | Tensor | None = None,
- solid_rest_offsets: ndarray | Tensor | None = None,
- fluid_rest_offsets: ndarray | Tensor | None = None,
- enable_ccds: ndarray | Tensor | None = None,
- solver_position_iteration_counts: ndarray | Tensor | None = None,
- max_depenetration_velocities: ndarray | Tensor | None = None,
- winds: ndarray | Tensor | None = None,
- max_neighborhoods: int | None = None,
- max_velocities: ndarray | Tensor | None = None,
- global_self_collisions_enabled: ndarray | Tensor | None = None,
Bases:
objectProvides high-level functions to deal with particle systems (1 or more particle systems) as well as their attributes/properties.
This object wraps all matching particle systems found by the regex provided at prim_paths_expr. Note: not all the attributes of PhysxSchema.PhysxParticleSystem are currently controlled with this view class. Tensor API support will be added in the future to extend the functionality of this class to applications beyond cloth.
- Parameters:
prim_paths_expr – Prim paths regex to encapsulate all prims that match it.
name – Short name to be used as a key by Scene class.
particle_systems_enabled – Whether to enable or disable the particle system.
simulation_owners – Single PhysicsScene that simulates this particle system.
contact_offsets – Contact offset used for collisions with non-particle objects such as rigid or deformable bodies.
rest_offsets – Rest offset used for collisions with non-particle objects such as rigid or deformable bodies.
particle_contact_offsets – Contact offset used for interactions between particles. Must be larger than solid and fluid rest offsets.
solid_rest_offsets – Rest offset used for solid-solid or solid-fluid particle interactions. Must be smaller than particle contact offset.
fluid_rest_offsets – Rest offset used for fluid-fluid particle interactions. Must be smaller than particle contact offset.
enable_ccds – Enable continuous collision detection for particles to help avoid tunneling effects.
solver_position_iteration_counts – Number of solver iterations for position.
max_depenetration_velocities – The maximum velocity permitted to be introduced by the solver to depenetrate intersecting particles.
winds – The wind applied to the current particle system.
max_neighborhoods – The particle neighborhood size.
max_velocities – Maximum particle velocity.
global_self_collisions_enabled – If True, self collisions follow particle-object-specific settings. If False, all particle self collisions are disabled, regardless of any other settings. Improves performance if self collisions are not needed.
- Raises:
Exception – If prim_paths_expr does not match any existing prim.
- apply_particle_materials(
- particle_materials: 'ParticleMaterial' | list['ParticleMaterial'],
- indices: np.ndarray | list | torch.Tensor | None = None,
Used to apply particle material to prims in the view.
- Parameters:
particle_materials – Particle materials to be applied to prims in the view. Note: if a physics material is not defined, the defaults will be used from PhysX. If a list is provided then its size has to be equal the view’s size or indices size. If one material is provided it will be applied to all prims in the view.
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Raises:
Exception – Length of particle materials != length of prims indexed.
- get_applied_particle_materials(
- indices: np.ndarray | list | torch.Tensor | None = None,
Gets the applied particle material to prims in the view.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
The current applied particle materials for prims in the view.
- get_contact_offsets(
- indices: ndarray | list | Tensor | None = None,
The contact offset used for collisions with non-particle objects for each particle system.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
The contact offset used for collisions with non-particle objects for each particle system. Shape is (M, ).
- get_enable_ccds(
- indices: ndarray | list | Tensor | None = None,
Whether continuous collision detection for particles is enabled for each particle system.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
Whether continuous collision detection for particles is enabled for each particle system. Shape is (M, ).
- get_fluid_rest_offsets(
- indices: ndarray | list | Tensor | None = None,
- clone: bool = True,
The rest offset used for fluid-fluid particle interactions.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
The rest offset used for fluid-fluid particle interactions. shape is (M, ).
- get_global_self_collisions_enabled(
- indices: ndarray | list | Tensor | None = None,
Whether self collisions follow particle-object-specific settings for each particle system.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
Whether self collisions follow particle-object-specific settings for each particle system. Shape is (M, ).
- get_max_depenetration_velocities(
- indices: ndarray | list | Tensor | None = None,
The maximum velocity permitted by the solver to depenetrate intersecting particles for each particle system.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
The maximum velocity permitted by the solver to depenetrate intersecting particles for each particle system. Shape is (M, ).
- get_max_neighborhoods(
- indices: ndarray | list | Tensor | None = None,
The particle neighborhood size for each particle system.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
The particle neighborhood size for each particle system. Shape is (M, ).
- get_max_velocities(
- indices: ndarray | list | Tensor | None = None,
The maximum particle velocities for each particle system.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
The maximum particle velocities for each particle system. shape is (M, ).
- get_particle_contact_offsets(
- indices: ndarray | list | Tensor | None = None,
- clone: bool = True,
The contact offset used for interactions between particles in the view concatenated.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
The contact offset used for interactions between particles in the view concatenated. shape is (M, ).
- get_particle_systems_enabled(
- indices: ndarray | list | Tensor | None = None,
Whether each particle system is enabled.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
Whether each particle system is enabled. Shape is (M, ).
- get_rest_offsets(
- indices: ndarray | list | Tensor | None = None,
The rest offset used for collisions with non-particle objects for each particle system.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
The rest offset used for collisions with non-particle objects for each particle system. Shape is (M, ).
- get_simulation_owners(
- indices: ndarray | list | Tensor | None = None,
The physics scene prim path attached to each particle system.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
The physics scene prim paths attached to each particle system. Shape is (M, ).
- get_solid_rest_offsets(
- indices: ndarray | list | Tensor | None = None,
- clone: bool = True,
The rest offset used for solid-solid or solid-fluid particle interactions.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
The rest offset used for solid-solid or solid-fluid particle interactions. shape is (M, ).
- get_solver_position_iteration_counts(
- indices: ndarray | list | Tensor | None = None,
The number of solver iterations for positions for each particle system.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
The number of solver iterations for positions for each particle system. Shape is (M, ).
- get_winds(
- indices: ndarray | list | Tensor | None = None,
- clone: bool = True,
The winds applied to the current particle system.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
The winds applied to the current particle system. shape is (M, 3).
- initialize(
- physics_sim_view: omni.physics.tensors.SimulationView = None,
Creates a physics simulation view if not passed and creates a Particle System View.
- Parameters:
physics_sim_view – Current physics simulation view.
- is_physics_handle_valid() bool#
Checks whether the physics handle of the view is valid.
- Returns:
True if the physics handle of the view is valid, i.e., physics is initialized for the view. Otherwise False.
- is_valid(
- indices: ndarray | list | Tensor | None = None,
Checks whether all prim paths in the view correspond to valid prims in the stage.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
True if all prim paths specified in the view correspond to a valid prim in stage. False otherwise.
- set_contact_offsets(
- values: ndarray | Tensor,
- indices: ndarray | list | Tensor | None = None,
Sets the contact offset used for collisions with non-particle objects such as rigid or deformable bodies for particle systems.
- Parameters:
values – Contact offset tensor to set particle systems to. shape is (M, ).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- set_enable_ccds(
- values: ndarray | Tensor,
- indices: ndarray | list | Tensor | None = None,
Enable continuous collision detection for particles for particle systems.
- Parameters:
values – Whether to enable continuous collision detection tensor to set particle systems to. shape is (M, ).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- set_fluid_rest_offsets(
- values: ndarray | Tensor,
- indices: ndarray | list | Tensor | None = None,
Sets the rest offset used for fluid-fluid particle interactions.
Note
Must be smaller than particle contact offset.
- Parameters:
values – Fluid rest offset to set particle systems to. shape is (M, ).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- set_global_self_collisions_enabled(
- values: ndarray | Tensor,
- indices: ndarray | list | Tensor | None = None,
Enable self collisions to follow particle-object-specific settings for particle systems.
- Parameters:
values – Whether to enable global self collisions tensor to set particle systems to. shape is (M, ).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- set_max_depenetration_velocities(
- values: ndarray | Tensor,
- indices: ndarray | list | Tensor | None = None,
Sets the maximum velocity permitted to be introduced by the solver to depenetrate intersecting particles for particle systems.
- Parameters:
values – Maximum particle velocity tensor to set particle systems to. shape is (M, ).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- set_max_neighborhoods(
- values: ndarray | Tensor,
- indices: ndarray | list | Tensor | None = None,
Set the particle neighborhood size for particle systems.
- Parameters:
values – Particle neighborhood size tensor to set particle systems to. shape is (M, ).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- set_max_velocities(
- values: ndarray | Tensor,
- indices: ndarray | list | Tensor | None = None,
Sets the maximum particle velocity for particle systems.
- Parameters:
values – Maximum particle velocity tensor to set particle systems to. shape is (M, ).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- set_particle_contact_offsets(
- values: ndarray | Tensor,
- indices: ndarray | list | Tensor | None = None,
Sets the contact offset used for interactions between particles.
Note
Must be larger than solid and fluid rest offsets.
- Parameters:
values – The contact offset.
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- set_particle_systems_enabled(
- values: ndarray | Tensor,
- indices: ndarray | list | Tensor | None = None,
Set enabling of the particle systems.
- Parameters:
values – Whether to enable particle system tensor to set particle systems to. shape is (M, ).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- set_rest_offsets(
- values: ndarray | Tensor,
- indices: ndarray | list | Tensor | None = None,
Sets the rest offset used for collisions with non-particle objects such as rigid or deformable bodies for particle systems.
- Parameters:
values – Rest offset tensor to set particle systems to. shape is (M, ).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- set_simulation_owners(
- values: Sequence[str],
- indices: ndarray | list | Tensor | None = None,
Set the PhysicsScene that simulates particle systems.
- Parameters:
values – PhysicsScene list to set particle systems to. shape is (M, ).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- set_solid_rest_offsets(
- values: ndarray | Tensor,
- indices: ndarray | list | Tensor | None = None,
Sets the rest offset used for solid-solid or solid-fluid particle interactions.
Note
Must be smaller than particle contact offset.
- Parameters:
values – Solid rest offset to set particle systems to. shape is (M, ).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- set_solver_position_iteration_counts(
- values: ndarray | Tensor,
- indices: ndarray | list | Tensor | None = None,
Sets the number of solver iterations for position for particle systems.
- Parameters:
values – Solver position iteration count tensor to set particle systems to. shape is (M, ).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- set_winds(
- values: ndarray | Tensor,
- indices: ndarray | list | Tensor | None = None,
Sets the winds velocities applied to the current particle system.
- Parameters:
values – The wind applied to the current particle system. shape is (M, 3).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- property count: int#
Number of particle systems in the view.
- Returns:
Number of particle systems for the prims in the view.
- property name: str#
Name given to the view when instantiating it.
- Returns:
Name given to the view when instantiating it.
- class RigidPrim(
- prim_paths_expr: str | list[str],
- name: str = 'rigid_prim_view',
- positions: ndarray | Tensor | array | None = None,
- translations: ndarray | Tensor | array | None = None,
- orientations: ndarray | Tensor | array | None = None,
- scales: ndarray | Tensor | array | None = None,
- visibilities: ndarray | Tensor | array | None = None,
- reset_xform_properties: bool = True,
- masses: ndarray | Tensor | array | None = None,
- densities: ndarray | Tensor | array | None = None,
- linear_velocities: ndarray | Tensor | array | None = None,
- angular_velocities: ndarray | Tensor | array | None = None,
- track_contact_forces: bool = False,
- prepare_contact_sensors: bool = True,
- disable_stablization: bool = True,
- contact_filter_prim_paths_expr: list[str] | None = None,
- max_contact_count: int = 0,
Bases:
XFormPrimProvide high-level functions for prims that have the Rigid Body API applied to them.
Handle attributes and properties of single or multiple rigid body prims.
Wrap all matching rigid prims found at the regex provided by the
prim_paths_exprargument.Note
Each prim will have
xformOp:orient,xformOp:translateandxformOp:scaleonly post-init, unless it is a non-root articulation link.If the prims do not already have the Rigid Body API applied to them before init, it will apply it.
Warning
The rigid prim view object must be initialized in order to operate on it. See the
initializemethod for more details.- Parameters:
prim_paths_expr – Prim path regex to encapsulate all prims that match it. Example: “/World/Env[1-5]/Cube” will match /World/Env1/Cube, /World/Env2/Cube, etc. A non-regex prim path can also be used to encapsulate one rigid prim. Additionally, a list of regexes can be provided. Example: [“/World/Env[1-5]/Cube”, “/World/Env[10-19]/Cube”].
name – Short name to be used as a key by the Scene class. Note: needs to be unique if the object is added to the Scene.
positions – Default positions in the world frame of the prims. Shape is (N, 3).
translations – Default translations in the local frame of the prims with respect to their parent prims. Shape is (N, 3).
orientations – Default quaternion orientations in the world/local frame of the prims depending on whether translations or positions are specified. Quaternion is scalar-first (w, x, y, z). Shape is (N, 4).
scales – Local scales to be applied to the prims’ dimensions in the view. Shape is (N, 3).
visibilities – Set to False for an invisible prim in the stage while rendering. Shape is (N,).
reset_xform_properties – True if the prims do not have the right set of xform properties (i.e: translate, orient and scale) ONLY and in that order. Set this parameter to False if the objects were cloned using the cloner API in isaacsim.core.cloner.
masses – Mass in kg specified for each prim in the view. Shape is (N,).
densities – Density in kg/m^3 specified for each prim in the view. Shape is (N,).
linear_velocities – Default linear velocity of each prim in the view to be applied in the first frame and on resets. Shape is (N, 3).
angular_velocities – Default angular velocity of each prim in the view to be applied in the first frame and on resets. Shape is (N, 3).
track_contact_forces – If enabled, the view will track the net contact forces on each rigid prim in the view.
prepare_contact_sensors – If rigid prims in the view are not cloned from a prim in a prepared state, although slow for large numbers of prims, this ensures that appropriate physics settings are applied on all the prims in the view.
disable_stablization – Disables the contact stabilization parameter in the physics context.
contact_filter_prim_paths_expr – A list of filter expressions which allows tracking contact forces between prims and this subset through get_contact_force_matrix().
max_contact_count – Maximum number of contact data entries to report when detailed contact information is needed.
Example:
>>> import isaacsim.core.utils.stage as stage_utils >>> from isaacsim.core.cloner import GridCloner >>> from isaacsim.core.prims import RigidPrim >>> from pxr import UsdGeom >>> >>> env_zero_path = "/World/envs/env_0" >>> num_envs = 5 >>> >>> # clone the environment (num_envs) >>> cloner = GridCloner(spacing=1.5) >>> cloner.define_base_env(env_zero_path) >>> UsdGeom.Xform.Define(stage_utils.get_current_stage(), env_zero_path) >>> stage_utils.get_current_stage().DefinePrim(f"{env_zero_path}/Xform", "Xform") >>> stage_utils.get_current_stage().DefinePrim(f"{env_zero_path}/Xform/Cube", "Cube") >>> env_pos = cloner.clone( ... source_prim_path=env_zero_path, ... prim_paths=cloner.generate_paths("/World/envs/env", num_envs), ... copy_from_source=True ... ) >>> >>> # wrap the prims >>> prims = RigidPrim(prim_paths_expr="/World/envs/env.*/Xform", name="rigid_prim_view") >>> prims <isaacsim.core.prims.rigid_prim.RigidPrim object at 0x7f9a23b8bb80>
- apply_forces(
- forces: ndarray | Tensor | array | None,
- indices: ndarray | list | Tensor | array | None = None,
- is_global: bool = True,
Apply forces to prims in the view.
- Parameters:
forces – forces to be applied to the prims.
indices – indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
is_global – True if forces are in the global frame. Otherwise False.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # apply an external force to all the rigid bodies to the indicated values. >>> # Since there are 5 envs, the inertias are repeated 5 times >>> forces = np.tile(np.array([2e5, 1e5, 0.0]), (num_envs, 1)) >>> prims.apply_forces(forces) >>> >>> # apply an external force to the rigid bodies for the first, middle and last of the 5 envs >>> forces = np.tile(np.array([2e5, 1e5, 0.0]), (3, 1)) >>> prims.apply_forces(forces, indices=np.array([0, 2, 4]))
- apply_forces_and_torques_at_pos(
- forces: ndarray | Tensor | array | None = None,
- torques: ndarray | Tensor | array | None = None,
- positions: ndarray | Tensor | array | None = None,
- indices: ndarray | list | Tensor | array | None = None,
- is_global: bool = True,
Apply forces and torques to prims in the view. The forces and/or torques can be in local or global coordinates.
The forces can be applied at a location given by positions variable.
- Parameters:
forces – forces to be applied to the prims. If not specified, no force will be applied.
torques – torques to be applied to the prims. If not specified, no torque will be applied.
positions – position of the forces with respect to the body frame. If not specified, the forces are applied at the origin of the body frame.
indices – indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
is_global – True if forces, torques, and positions are in the global frame. False if forces, torques, and positions are in the local frame.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # apply an external force and torque to all the rigid bodies to the indicated values. >>> # Since there are 5 envs, the inertias are repeated 5 times >>> forces = np.tile(np.array([2e5, 1e5, 0.0]), (num_envs, 1)) >>> torques = np.tile(np.array([2e5, 1e5, 0.0]), (num_envs, 1)) >>> prims.apply_forces_and_torques_at_pos(forces, torques) >>> >>> # apply an external force and torque to the rigid bodies for the first, middle and last of the 5 envs >>> forces = np.tile(np.array([2e5, 1e5, 0.0]), (3, 1)) >>> torques = np.tile(np.array([2e5, 1e5, 0.0]), (3, 1)) >>> prims.apply_forces_and_torques_at_pos(forces, torques, indices=np.array([0, 2, 4]))
- apply_visual_materials(
- visual_materials: 'VisualMaterial' | list['VisualMaterial'],
- weaker_than_descendants: bool | list[bool] | None = None,
- indices: np.ndarray | list | torch.Tensor | wp.array | None = None,
Apply visual material to the prims and optionally their prim descendants.
- Parameters:
visual_materials – Visual materials to be applied to the prims. Currently supports PreviewSurface, OmniPBR and OmniGlass. If a list is provided then its size has to be equal the view’s size or indices size. If one material is provided it will be applied to all prims in the view.
weaker_than_descendants – True if the material shouldn’t override the descendants materials, otherwise False. If a list of visual materials is provided then a list has to be provided with the same size for this arg as well.
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Raises:
Exception – length of visual materials != length of prims indexed
Exception – length of visual materials != length of weaker descendants bools arg
Exception – If the prim view is not valid.
Example:
>>> from isaacsim.core.api.materials import OmniGlass >>> >>> # create a dark-red glass visual material >>> material = OmniGlass( ... prim_path="/World/material/glass", # path to the material prim to create ... ior=1.25, ... depth=0.001, ... thin_walled=False, ... color=np.array([0.5, 0.0, 0.0]) ... ) >>> prims.apply_visual_materials(material)
- destroy() None#
Clean up and invalidate the prim view by deregistering callbacks and clearing internal state.
- disable_gravities(
- indices: ndarray | list | Tensor | array | None = None,
Disable gravity on rigid bodies.
- Parameters:
indices – Indices specifying which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # disable the gravity for all rigid bodies >>> prims.disable_gravities() >>> >>> # disable the rigid body gravity for the first, middle and last of the 5 envs >>> prims.disable_gravities(indices=np.array([0, 2, 4]))
- disable_rigid_body_physics(
- indices: ndarray | list | Tensor | array | None = None,
Disable rigid body physics.
When disabled, the objects will not be moved by external forces such as gravity and collisions.
- Parameters:
indices – indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # disable the rigid body dynamics for all rigid bodies >>> prims.disable_rigid_body_physics() >>> >>> # disable the rigid body dynamics for the first, middle and last of the 5 envs >>> prims.disable_rigid_body_physics(indices=np.array([0, 2, 4]))
- enable_gravities(
- indices: ndarray | list | Tensor | array | None = None,
Enable gravity on rigid bodies.
- Parameters:
indices – Indices specifying which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # enable the gravity for all rigid bodies >>> prims.enable_gravities() >>> >>> # enable the rigid body gravity for the first, middle and last of the 5 envs >>> prims.enable_gravities(indices=np.array([0, 2, 4]))
- enable_rigid_body_physics(
- indices: ndarray | list | Tensor | array | None = None,
Enable rigid body physics.
When enabled, the objects will be moved by external forces such as gravity and collisions.
- Parameters:
indices – indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # enable the rigid body dynamics for all rigid bodies >>> prims.enable_rigid_body_physics() >>> >>> # enable the rigid body dynamics for the first, middle and last of the 5 envs >>> prims.enable_rigid_body_physics(indices=np.array([0, 2, 4]))
- get_angular_velocities(
- indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
Get the angular velocities of prims in the view.
- Parameters:
indices – indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
Angular velocities of the prims in the view. shape is (M, 3).
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all rigid prim angular velocities. Returned shape is (5, 3) for the example: 5 envs, angular (3) >>> prims.get_angular_velocities() [[0. 0. 0.] [0. 0. 0.] [0. 0. 0.] [0. 0. 0.] [0. 0. 0.]] >>> >>> # get only the rigid prim angular velocities for the first, middle and last of the 5 envs >>> # Returned shape is (5, 3) for the example: 3 envs selected, angular (3) >>> prims.get_angular_velocities(indices=np.array([0, 2, 4])) [[0. 0. 0.] [0. 0. 0.] [0. 0. 0.]]
- get_applied_visual_materials(
- indices: np.ndarray | list | torch.Tensor | wp.array | None = None,
Get the current applied visual materials.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
A list of the current applied visual materials to the prims if its type is currently supported.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all applied visual materials. Returned size is 5 for the example: 5 envs >>> prims.get_applied_visual_materials() [<isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>, <isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>, <isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>, <isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>, <isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>] >>> >>> # get the applied visual materials for the first, middle and last of the 5 envs. Returned size is 3 >>> prims.get_applied_visual_materials(indices=np.array([0, 2, 4])) [<isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>, <isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>, <isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>]
- get_coms(
- indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
Get rigid body center of mass (COM) of bodies in the view.
- Parameters:
indices – indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
Rigid body center of mass positions and orientations of prims in the view. position shape is (M, 1, 3), orientation shape is (M, 1, 4).
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all rigid body center of mass. >>> # Returned shape is (5, 1, 3) for positions and (5, 1, 4) for orientations for the example: 5 envs >>> positions, orientations = prims.get_coms() >>> positions [[[0. 0. 0.]] [[0. 0. 0.]] [[0. 0. 0.]] [[0. 0. 0.]] [[0. 0. 0.]]] >>> orientations [[[1. 0. 0. 0.]] [[1. 0. 0. 0.]] [[1. 0. 0. 0.]] [[1. 0. 0. 0.]] [[1. 0. 0. 0.]]] >>> >>> # get rigid body center of mass for the first, middle and last of the 5 envs. >>> # Returned shape is (3, 1, 3) for positions and (3, 1, 4) for orientations >>> positions, orientations = prims.get_coms(indices=np.array([0, 2, 4])) >>> positions [[[0. 0. 0.]] [[0. 0. 0.]] [[0. 0. 0.]]] >>> orientations [[[1. 0. 0. 0.]] [[1. 0. 0. 0.]] [[1. 0. 0. 0.]]]
- get_contact_force_data(
- indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
- dt: float = 1.0,
Get detailed contact information between the prims in the view and the filter prims.
Provides individual contact normals, contact points, contact separations, and contact forces for each pair. The sum of per-contact forces equals the force aggregate returned by
get_contact_force_matrix.Due to the dynamic nature of collision between bodies, contact data is arranged sequentially for each pair. The starting index and number of contact data points for each pair are provided by pair_contacts_start_indices and pair_contacts_count tensors. Both have dimension
(num_shapes, _contact_view.num_filters), where_contact_view.num_filtersis determined bycontact_filter_prim_paths_expr.Note
This method requires
contact_filter_prim_paths_exprto define filter prim paths andmax_contact_countto be greater than 0 during view creation.- Parameters:
indices – Indices specifying which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
dt – Time step multiplier to convert the underlying impulses to forces. Use 1.0 to leave values as contact impulses.
- Returns:
Buffers for normal forces with shape (max_contact_count, 1), points with shape (max_contact_count, 3), normals with shape (max_contact_count, 3), and distances with shape (max_contact_count, 1), plus two tensors with shape (M, self.num_filters) for the starting index and number of contact data points per pair.
- Raises:
Exception – If the prim view is not valid.
- get_contact_force_matrix(
- indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
- dt: float = 1.0,
Return the contact forces between the prims in the view and the filter prims.
Returns a matrix with dimension
(self.count, _contact_view.num_filters, 3), where_contact_view.num_filtersis determined bycontact_filter_prim_paths_expr.Note
This method requires
contact_filter_prim_paths_exprto define filter prim paths andmax_contact_countto be greater than 0 during view creation.- Parameters:
indices – Indices specifying which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
dt – Time step multiplier to convert the underlying impulses to forces. Use 1.0 to leave values as contact impulses.
- Returns:
Contact forces of the prims with shape (M, self._contact_view.num_filters, 3), or None if no filter is set.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # for the example, the cubes are on top of each other. >>> # The view was instantiated with contact_filter_prim_paths_expr and max_contact_count. >>> prims.get_contact_force_matrix() [[[ 0.0000000e+00 0.0000000e+00 0.0000000e+00]] [[-7.8665102e-03 8.3034458e-03 -4.9063504e+02]] [[ 0.0000000e+00 0.0000000e+00 0.0000000e+00]] [[ 5.2445102e-03 -5.5358098e-03 3.2710065e+02]] [[ 0.0000000e+00 0.0000000e+00 0.0000000e+00]]]
- get_current_dynamic_state() DynamicsViewState#
Current rigid body states for prims in the view.
- Returns:
The current positions, orientations, linear velocities, and angular velocities of the rigid bodies.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # for the example the rigid bodies are in free fall >>> state = prims.get_current_dynamic_state() <isaacsim.core.utils.types.DynamicsViewState object at 0x7f182bd72590> >>> state.positions [[ 1.5 -0.75 -207.76808] [ 1.5 0.75 -207.76808] [ 0. -0.75 -207.76808] [ 0. 0.75 -207.76808] [ -1.5 -0.75 -207.76808]]
- get_default_state() DynamicsViewState#
Default state of prims in the view that is used after each reset.
- Returns:
The default positions, orientations, linear velocities, and angular velocities of the prims.
Example:
>>> state = prims.get_default_state() <isaacsim.core.utils.types.DynamicsViewState object at 0x7f184e555480> >>> state.positions [[ 1.4999989e+00 -7.4999851e-01 -1.5118626e-07] [ 1.4999989e+00 7.5000149e-01 -2.5988294e-07] [-1.0017333e-06 -7.4999845e-01 7.6070329e-08] [-9.5906785e-07 7.5000149e-01 1.0593490e-07] [-1.5000011e+00 -7.4999851e-01 1.9655154e-07]]
- get_densities(
- indices: ndarray | list | Tensor | array | None = None,
Get densities of prims in the view.
- Parameters:
indices – indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
Densities of prims in the view in kg/m^3. shape (M,).
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all rigid body densities. Returned shape is (5,) for the example: 5 envs >>> prims.get_densities() [0. 0. 0. 0. 0.] >>> >>> # get rigid body densities for the first, middle and last of the 5 envs. Returned shape is (3,) >>> prims.get_densities(indices=np.array([0, 2, 4])) [0. 0. 0.]
- get_friction_data(
- indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
- dt: float = 1.0,
Get friction data between the prims in the view and the filter prims.
Provides frictional contact forces and points for anchor points that include tangential forces in a single tangent direction to the contact normal. Due to the dynamic nature of collision between bodies, friction data is arranged sequentially for each pair. The starting index and number of contact data points for each pair are provided by pair_contacts_start_indices and pair_contacts_count tensors. Both have dimension (self.num_shapes, self.num_filters), where filter_count is determined by filter_paths_expr.
- Parameters:
indices – Indices specifying which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
dt – Time step multiplier to convert the underlying impulses to forces. Use 1.0 to leave values as contact impulses.
- Returns:
Buffers for tangential forces per patch with shape (max_contact_count, 3), points with shape (max_contact_count, 3), and two tensors with shape (M, self.num_filters) for the starting index and number of contact data points per pair.
- Raises:
Exception – If the prim view is not valid.
- get_inertias(
- indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
Get rigid body inertias of prims in the view.
- Parameters:
indices – indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
Rigid body inertias of prims in the view. Shape is (M, 9).
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all rigid body inertias. Returned shape is (5, 9) for the example: 5 envs >>> prims.get_inertias() [[166.66667 0. 0. 0. 166.66667 0. 0. 0. 166.66667] [166.66667 0. 0. 0. 166.66667 0. 0. 0. 166.66667] [166.66667 0. 0. 0. 166.66667 0. 0. 0. 166.66667] [166.66667 0. 0. 0. 166.66667 0. 0. 0. 166.66667] [166.66667 0. 0. 0. 166.66667 0. 0. 0. 166.66667]] >>> >>> # get rigid body inertias for the first, middle and last of the 5 envs. Returned shape is (3, 9) >>> prims.get_inertias(indices=np.array([0, 2, 4])) [[166.66667 0. 0. 0. 166.66667 0. 0. 0. 166.66667] [166.66667 0. 0. 0. 166.66667 0. 0. 0. 166.66667] [166.66667 0. 0. 0. 166.66667 0. 0. 0. 166.66667]]
- get_inv_inertias(
- indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
Get rigid body inverse inertias of prims in the view.
- Parameters:
indices – indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
Rigid body inverse inertias of prims in the view. Shape is (M, 9). None if Physics Simulation View is not created yet.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all rigid body inverse inertias. Returned shape is (5, 9) for the example: 5 envs >>> prims.get_inv_inertias() [[0.006 0. 0. 0. 0.006 0. 0. 0. 0.006] [0.006 0. 0. 0. 0.006 0. 0. 0. 0.006] [0.006 0. 0. 0. 0.006 0. 0. 0. 0.006] [0.006 0. 0. 0. 0.006 0. 0. 0. 0.006] [0.006 0. 0. 0. 0.006 0. 0. 0. 0.006]] >>> >>> # get rigid body inverse inertias for the first, middle and last of the 5 envs. >>> # Returned shape is (3, 9) >>> prims.get_inv_inertias(indices=np.array([0, 2, 4])) [[0.006 0. 0. 0. 0.006 0. 0. 0. 0.006] [0.006 0. 0. 0. 0.006 0. 0. 0. 0.006] [0.006 0. 0. 0. 0.006 0. 0. 0. 0.006]]
- get_inv_masses(
- indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
Get rigid body inverse masses of prims in the view.
- Parameters:
indices – indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
Rigid body inverse masses of prims in the view. Shape is (M,).
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all rigid body inverse masses. Returned shape is (5, 1) for the example: 5 envs >>> prims.get_inv_masses() [[0.001] [0.001] [0.001] [0.001] [0.001]] >>> >>> # get rigid body inverse masses for the first, middle and last of the 5 envs. Returned shape is (3, 1) >>> prims.get_inv_masses(indices=np.array([0, 2, 4])) [[0.001] [0.001] [0.001]]
- get_linear_velocities(
- indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
Get the linear velocities of prims in the view.
- Parameters:
indices – Indices to specify which prims to query. Shape is (M,). Where M <= size of the encapsulated prims in the view. If not specified, all prims in the view are used.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
Linear velocities of the prims in the view. Shape is (M, 3).
- Raises:
Exception – If the prim view is not valid.
- get_local_poses(
- indices: ndarray | list | Tensor | array | None = None,
Get prim poses in the view with respect to the local frame (the prim’s parent frame).
- Parameters:
indices – Indices to specify which prims to query. Shape is (M,). Where M <= size of the encapsulated prims in the view. If not specified, all prims in the view are used.
- Returns:
A tuple containing positions in the local frame with shape (M, 3) and quaternion orientations with shape (M, 4). The quaternion is scalar-first (w, x, y, z).
- Raises:
Exception – If the prim view is not valid.
- get_local_scales(
- indices: ndarray | list | Tensor | array | None = None,
Get prim scales in the view with respect to the local frame (the parent’s frame).
- Parameters:
indices – indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
scales applied to the prim’s dimensions in the local frame. shape is (M, 3).
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all prims scales with respect to the local frame. >>> # Returned shape is (5, 3) for the example: 5 envs >>> prims.get_local_scales() [[1. 1. 1.] [1. 1. 1.] [1. 1. 1.] [1. 1. 1.] [1. 1. 1.]] >>> >>> # get only the prims scales with respect to the local frame for the first, middle and last of the 5 envs. >>> # Returned shape is (3, 3) for the example: 3 envs selected >>> prims.get_local_scales(indices=np.array([0, 2, 4])) [[1. 1. 1.] [1. 1. 1.] [1. 1. 1.]]
- get_masses(
- indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
Get rigid body masses of prims in the view.
- Parameters:
indices – indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
Masses in kg of prims in the view. shape is (M,).
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all rigid body masses. Returned shape is (5,) for the example: 5 envs >>> prims.get_masses() [999.99994 999.99994 999.99994 999.99994 999.99994] >>> >>> # get rigid body masses for the first, middle and last of the 5 envs. Returned shape is (3,) >>> prims.get_masses(indices=np.array([0, 2, 4])) [999.99994 999.99994 999.99994]
- get_net_contact_forces(
- indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
- dt: float = 1.0,
Return the net contact forces on prims.
Note
This method requires tracking contact forces by setting
track_contact_forcesto True during view creation.- Parameters:
indices – Indices specifying which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
dt – Time step multiplier to convert the underlying impulses to forces. Use 1.0 to leave values as contact impulses.
- Returns:
Net contact forces of the prims with shape (M, 3), or None if contact forces are not tracked.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get the net contact force on all rigid bodies. Returned shape is (5, 3). >>> # For the example the view was instantiated with the extra parameter: track_contact_forces=True >>> prims.get_net_contact_forces() [[2.1967362e-05 0.0000000e+00 1.6349771e+02] [2.1967124e-05 0.0000000e+00 1.6349591e+02] [2.1967891e-05 0.0000000e+00 1.6350165e+02] [2.1967257e-05 0.0000000e+00 1.6349693e+02] [2.1966895e-05 0.0000000e+00 1.6349425e+02]]
- get_sleep_thresholds(
- indices: ndarray | list | Tensor | array | None = None,
Get sleep thresholds of prims in the view.
Search for Rigid Body Dynamics > Sleeping in PhysX docs for more details.
- Parameters:
indices – indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
Mass-normalized kinetic energy threshold below which an actor may go to sleep. Range is [0, inf). Units: distance^2 / second^2. shape (M,).
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all sleep threshold. Returned shape is (5,) for the example: 5 envs >>> prims.get_sleep_thresholds() [5.e-05 5.e-05 5.e-05 5.e-05 5.e-05] >>> >>> # get sleep threshold for the first, middle and last of the 5 envs. Returned shape is (3,) >>> prims.get_sleep_thresholds(indices=np.array([0, 2, 4])) [5.e-05 5.e-05 5.e-05]
- get_velocities(
- indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
Get the linear and angular velocities of prims in the view.
- Parameters:
indices – indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
Linear and angular velocities of the prims in the view concatenated. shape is (M, 6).
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all rigid prim velocities. Returned shape is (5, 6) for the example: 5 envs, linear (3) and angular (3) >>> prims.get_velocities() [[0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0.]] >>> >>> # get only the rigid prim velocities for the first, middle and last of the 5 envs. >>> # Returned shape is (3, 6) for the example: 3 envs selected, linear (3) and angular (3) >>> prims.get_velocities(indices=np.array([0, 2, 4])) [[0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0.]]
- get_visibilities(
- indices: ndarray | list | Tensor | array | None = None,
Return the current visibilities of the prims in stage.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
Shape (M,) with type bool, where each item holds True if the prim is visible in stage. False otherwise.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all visibilities. Returned shape is (5,) for the example: 5 envs >>> prims.get_visibilities() [ True True True True True] >>> >>> # get the visibilities for the first, middle and last of the 5 envs. Returned shape is (3,) >>> prims.get_visibilities(indices=np.array([0, 2, 4])) [ True True True]
- get_world_poses(
- indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
- usd: bool = True,
Get the poses of the prims in the view with respect to the world’s frame.
- Parameters:
indices – Indices to specify which prims to query. Shape is (M,). Where M <= size of the encapsulated prims in the view. If not specified, all prims in the view are used.
clone – True to return a clone of the internal buffer. Otherwise False.
usd – True to query from USD. Otherwise False to query from Fabric data.
- Returns:
A tuple containing positions in the world frame with shape (M, 3) and quaternion orientations with shape (M, 4). The quaternion is scalar-first (w, x, y, z).
- Raises:
Exception – If the prim view is not valid.
- get_world_scales(
- indices: ndarray | list | Tensor | array | None = None,
Get prim scales in the view with respect to the world’s frame.
- Parameters:
indices – indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
scales applied to the prim’s dimensions in the world frame. shape is (M, 3).
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all prims scales with respect to the world's frame. >>> # Returned shape is (5, 3) for the example: 5 envs >>> prims.get_world_scales() [[1. 1. 1.] [1. 1. 1.] [1. 1. 1.] [1. 1. 1.] [1. 1. 1.]] >>> >>> # get only the prims scales with respect to the world's frame for the first, middle and last of the 5 envs. >>> # Returned shape is (3, 3) for the example: 3 envs selected >>> prims.get_world_scales(indices=np.array([0, 2, 4])) [[1. 1. 1.] [1. 1. 1.] [1. 1. 1.]]
- initialize(
- physics_sim_view: omni.physics.tensors.SimulationView = None,
Create a physics simulation view and set rigid body properties using the PhysX tensor API.
Note
For this particular class, calling this method will do nothing if the physics handle is already valid.
- Parameters:
physics_sim_view – Current physics simulation view.
Example:
>>> prims.initialize()
- is_physics_handle_valid() bool#
Check whether the rigid prim view’s physics handle is initialized.
Warning
If the physics handle is not valid, methods that require PhysX can return None.
- Returns:
True if the physics handle of the view is valid, otherwise False.
- is_valid(
- indices: ndarray | list | Tensor | array | None = None,
Check whether the prim view is valid.
- Parameters:
indices – Indices accepted for API compatibility. The current view validity is returned regardless of indices.
- Returns:
True if the prim view has not been invalidated by destroy or matching prim deletion. False otherwise.
Example:
>>> prims.is_valid() True
- is_visual_material_applied(
- indices: ndarray | list | Tensor | array | None = None,
Check if there is a visual material applied.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
True if there is a visual material applied to the corresponding prim in the view. False otherwise.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # given a visual material that is applied only to the first and the last environment >>> prims.is_visual_material_applied() [True, False, False, False, True] >>> >>> # check for the first, middle and last of the 5 envs >>> prims.is_visual_material_applied(indices=np.array([0, 2, 4])) [True, False, True]
- set_angular_velocities(
- velocities: ndarray | Tensor | array | None,
- indices: ndarray | list | Tensor | array | None = None,
Set the angular velocities of the prims in the view.
The method does this through the PhysX API only. It has to be called after initialization. Note: This method is not supported for the gpu pipeline.
set_velocitiesmethod should be used instead.Warning
This method will immediately set the rigid prim state
- Parameters:
velocities – Angular velocities to set the rigid prims to. shape is (M, 3).
indices – indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Raises:
Exception – If the prim view is not valid.
Hint
This method belongs to the methods used to set the rigid prim kinematic state:
set_velocities(set_linear_velocities,set_angular_velocities)Example:
>>> # set each rigid prim linear velocity to (5.0, 5.0, 5.0) >>> velocities = np.full((num_envs, 3), fill_value=5.0) >>> prims.set_angular_velocities(velocities) >>> >>> # set only the rigid prim linear velocities for the first, middle and last of the 5 envs >>> velocities = np.full((3, 3), fill_value=5.0) >>> prims.set_angular_velocities(velocities, indices=np.array([0, 2, 4]))
- set_coms(
- positions: ndarray | Tensor | array = None,
- orientations: ndarray | Tensor | array = None,
- indices: ndarray | list | Tensor | array | None = None,
Set body center of mass (COM) positions and orientations for bodies in the view.
- Parameters:
positions – body center of mass positions for bodies in the view. shape (M, 1, 3).
orientations – body center of mass orientations for bodies in the view. shape (M, 1, 4).
indices – indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # set the center of mass for all the rigid bodies to the specified values. >>> # Since there are 5 envs, the inertias are repeated 5 times >>> positions = np.tile(np.array([0.01, 0.02, 0.03]), (num_envs, 1, 1)) >>> orientations = np.tile(np.array([1.0, 0.0, 0.0, 0.0]), (num_envs, 1, 1)) >>> prims.set_coms(positions, orientations) >>> >>> # set the rigid bodies center of mass for the first, middle and last of the 5 envs >>> positions = np.tile(np.array([0.01, 0.02, 0.03]), (3, 1, 1)) >>> orientations = np.tile(np.array([1.0, 0.0, 0.0, 0.0]), (3, 1, 1)) >>> prims.set_coms(positions, orientations, indices=np.array([0, 2, 4]))
- set_default_state(
- positions: ndarray | Tensor | array | None = None,
- orientations: ndarray | Tensor | array | None = None,
- linear_velocities: ndarray | Tensor | array | None = None,
- angular_velocities: ndarray | Tensor | array | None = None,
- indices: ndarray | list | Tensor | array | None = None,
Set the default state of prims in the view after each reset.
Note
The default states are set during post-reset, such as calling
.post_reset()orworld.reset().- Parameters:
positions – Default positions in the world frame of the prim. Shape is (M, 3).
orientations – Default quaternion orientations in the world frame of the prims. Quaternion is scalar-first (w, x, y, z). Shape is (M, 4).
linear_velocities – Default linear velocities of each prim in the view to apply in the first frame and on resets. Shape is (M, 3).
angular_velocities – Default angular velocities of each prim in the view to apply in the first frame and on resets. Shape is (M, 3).
indices – Indices specifying which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
Example:
>>> # configure default states for all prims >>> positions = np.zeros((num_envs, 3)) >>> positions[:, 0] = np.arange(num_envs) >>> orientations = np.tile(np.array([1.0, 0.0, 0.0, 0.0]), (num_envs, 1)) >>> linear_velocities = np.zeros((num_envs, 3)) >>> angular_velocities = np.zeros((num_envs, 3)) >>> prims.set_default_state( ... positions=positions, ... orientations=orientations, ... linear_velocities=linear_velocities, ... angular_velocities=angular_velocities ... ) >>> >>> # set default states during post-reset >>> prims.post_reset()
- set_densities( ) None#
Set densities of prims in the view.
- Parameters:
densities – density in kg/m^3 specified for each prim in the view. shape is (M,).
indices – indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # set all rigid body densities to the specified values >>> prims.set_densities(np.full(num_envs, 0.9)) >>> >>> # set rigid body densities for the first, middle and last of the 5 envs >>> prims.set_densities(np.full(3, 0.9), indices=np.array([0, 2, 4]))
- set_inertias(
- values: ndarray | Tensor | array,
- indices: ndarray | list | Tensor | array | None = None,
Set rigid body inertias for prims in the view.
- Parameters:
values – body inertias for prims in the view. shape (M, 9).
indices – indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # set the rigid body inertias for all the rigid bodies to the specified values. >>> # Since there are 5 envs, the inertias are repeated 5 times >>> inertia = np.array([0.1, 0.0, 0.0, 0.0, 0.1, 0.0, 0.0, 0.0, 0.1]) >>> inertias = np.tile(inertia, (num_envs, 1)) >>> prims.set_inertias(inertias) >>> >>> # set the rigid body inertias for the first, middle and last of the 5 envs >>> inertias = np.tile(inertia, (3, 1)) >>> prims.set_inertias(inertias, indices=np.array([0, 2, 4]))
- set_linear_velocities(
- velocities: ndarray | Tensor | array | None,
- indices: ndarray | list | Tensor | array | None = None,
Set the linear velocities of the prims in the view.
When the physics handle is valid, the method sets velocities through the PhysX API. For the GPU pipeline, use
set_velocitiesinstead.Warning
This method will immediately set the rigid prim state.
- Parameters:
velocities – Linear velocities to set the rigid prims to. Shape is (M, 3).
indices – Indices to specify which prims to manipulate. Shape is (M,). Where M <= size of the encapsulated prims in the view. If not specified, all prims in the view are used.
- Raises:
Exception – If the prim view is not valid.
- set_local_poses(
- translations: ndarray | Tensor | array | None = None,
- orientations: ndarray | Tensor | array | None = None,
- indices: ndarray | list | Tensor | array | None = None,
Set prim poses in the view with respect to the local frame (the prim’s parent frame).
- Parameters:
translations – Translations in the local frame of the prims. With respect to their parent prim. Shape is (M, 3). If not specified, left unchanged.
orientations – Quaternion orientations in the local frame of the prims. Quaternion is scalar-first (w, x, y, z). Shape is (M, 4). If not specified, left unchanged.
indices – Indices to specify which prims to manipulate. Shape is (M,). Where M <= size of the encapsulated prims in the view. If not specified, all prims in the view are used.
- Raises:
Exception – If the prim view is not valid.
- set_local_scales( ) None#
Set prim scales in the view with respect to the local frame (the prim’s parent frame).
- Parameters:
scales – scales to be applied to the prim’s dimensions in the view. shape is (M, 3).
indices – indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # set the scale for all prims. Since there are 5 envs, the scale is repeated 5 times >>> scales = np.tile(np.array([1.0, 0.75, 0.5]), (num_envs, 1)) >>> prims.set_local_scales(scales) >>> >>> # set the scale for the first, middle and last of the 5 envs >>> scales = np.tile(np.array([1.0, 0.75, 0.5]), (3, 1)) >>> prims.set_local_scales(scales, indices=np.array([0, 2, 4]))
- set_masses(
- masses: ndarray | Tensor | array,
- indices: ndarray | list | Tensor | array | None = None,
Set body masses for prims in the view.
- Parameters:
masses – body masses for prims in kg. shape (M,).
indices – indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # set the rigid body masses for all the rigid bodies to the indicated values. >>> prims.set_masses(np.full(num_envs, 10.0)) >>> >>> # set the rigid body masses for the first, middle and last of the 5 envs >>> prims.set_masses(np.full(3, 10.0), indices=np.array([0, 2, 4]))
- set_sleep_thresholds(
- thresholds: ndarray | Tensor | array | None,
- indices: ndarray | list | Tensor | array | None = None,
Set sleep thresholds of prims in the view.
Search for Rigid Body Dynamics > Sleeping in PhysX docs for more details.
- Parameters:
thresholds – Mass-normalized kinetic energy threshold below which an actor may go to sleep. Range: [0, inf) Units: distance^2 / second^2. shape (M,).
indices – indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # set all rigid body densities to the specified values >>> prims.set_sleep_thresholds(np.full(num_envs, 1e-5)) >>> >>> # set rigid body densities for the first, middle and last of the 5 envs >>> prims.set_sleep_thresholds(np.full(3, 1e-5), indices=np.array([0, 2, 4]))
- set_velocities(
- velocities: ndarray | Tensor | array,
- indices: ndarray | list | Tensor | array | None = None,
Set the linear and angular velocities of the prims in the view at once.
The method does this through the PhysX API only. It has to be called after initialization.
Warning
This method will immediately set the rigid prim state
- Parameters:
velocities – Linear and angular velocities respectively to set the rigid prims to. shape is (M, 6).
indices – indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Raises:
Exception – If the prim view is not valid.
Hint
This method belongs to the methods used to set the rigid prim kinematic state:
set_velocities(set_linear_velocities,set_angular_velocities)Example:
>>> # set each rigid prim linear velocity to (1., 1., 1.) and angular velocity to (5., 5., 5.) >>> velocities = np.ones((num_envs, 6)) >>> velocities[:,3:] = 5.0 >>> prims.set_velocities(velocities) >>> >>> # set only the rigid prim velocities for the first, middle and last of the 5 envs >>> velocities = np.ones((3, 6)) >>> velocities[:,3:] = 5.0 >>> prims.set_velocities(velocities, indices=np.array([0, 2, 4]))
- set_visibilities(
- visibilities: ndarray | Tensor | array,
- indices: ndarray | list | Tensor | array | None = None,
Set the visibilities of the prims in stage.
- Parameters:
visibilities – Flag to set the visibilities of the USD prims in stage. Shape (M,). Where M <= size of the encapsulated prims in the view.
indices – Indices to specify which prims to manipulate. Shape (M,).
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # make all prims not visible in the stage >>> prims.set_visibilities(visibilities=[False] * num_envs)
- set_world_poses(
- positions: ndarray | Tensor | array | None = None,
- orientations: ndarray | Tensor | array | None = None,
- indices: ndarray | list | Tensor | array | None = None,
- usd: bool = True,
Set poses of prims in the view with respect to the world’s frame.
Warning
This method will change (teleport) the prim poses immediately to the specified value.
- Parameters:
positions – Positions in the world frame of the prims. Shape is (M, 3). If not specified, left unchanged.
orientations – Quaternion orientations in the world frame of the prims. Quaternion is scalar-first (w, x, y, z). Shape is (M, 4). If not specified, left unchanged.
indices – Indices to specify which prims to manipulate. Shape is (M,). Where M <= size of the encapsulated prims in the view. If not specified, all prims in the view are used.
usd – Whether to use USD data instead of Fabric data when setting poses.
Hint
This method belongs to the methods used to set the prim state.
- Raises:
Exception – If the prim view is not valid.
- property count: int#
Number of prims encapsulated in this view.
- Returns:
The number of prims encapsulated in this view.
Example:
>>> prims.count 5
- property initialized: bool#
Whether a physics simulation view is available for the prim view.
- Returns:
True if a physics simulation view is available from SimulationManager. False otherwise.
Example:
>>> # given an active physics simulation view >>> prims.initialized True
- property is_non_root_articulation_link: bool#
True if the prim corresponds to a non root link in an articulation.
- Returns:
True if the prim corresponds to a non root link in an articulation. Otherwise False.
- property name: str#
Name given to the prims view when instantiating it.
- Returns:
The name given to the prims view when instantiating it.
- property num_shapes: int#
Number of rigid shapes for the prims in the view.
- Returns:
Number of rigid shapes for the prims in the view.
- property prim_paths: list[str]#
Prim paths in the stage encapsulated in this view.
- Returns:
The prim paths in the stage encapsulated in this view.
Example:
>>> prims.prim_paths ['/World/envs/env_0', '/World/envs/env_1', '/World/envs/env_2', '/World/envs/env_3', '/World/envs/env_4']
- property prims: list[pxr.Usd.Prim]#
USD Prim objects encapsulated in this view.
- Returns:
The USD Prim objects encapsulated in this view.
Example:
>>> prims.prims [Usd.Prim(</World/envs/env_0>), Usd.Prim(</World/envs/env_1>), Usd.Prim(</World/envs/env_2>), Usd.Prim(</World/envs/env_3>), Usd.Prim(</World/envs/env_4>)]
- class SdfShapePrim(
- prim_paths_expr: str,
- num_query_points: int,
- prepare_sdf_schemas: bool = True,
- name: str = 'sdf_shape_view',
- positions: ndarray | Tensor | array | None = None,
- translations: ndarray | Tensor | array | None = None,
- orientations: ndarray | Tensor | array | None = None,
- scales: ndarray | Tensor | array | None = None,
- visibilities: ndarray | Tensor | array | None = None,
- reset_xform_properties: bool = True,
- collisions: ndarray | Tensor | array | None = None,
- track_contact_forces: bool = False,
- prepare_contact_sensors: bool = False,
- disable_stablization: bool = True,
- contact_filter_prim_paths_expr: list[str] | None = None,
Bases:
GeometryPrimHigh-level functions to deal with geometry prims that provide their Signed Distance Field (SDF).
This object wraps all matching mesh geometry prims found at the regex provided by prim_paths_expr.
- Parameters:
prim_paths_expr – Prim paths regex to encapsulate all prims that match it. Example: “/World/Env[1-5]/Microwave” will match /World/Env1/Microwave, /World/Env2/Microwave, etc. A non-regex prim path can also be used to encapsulate one XForm.
num_query_points – Number of points queried by this view object.
prepare_sdf_schemas – Apply PhysxSDFMeshCollisionAPI to prims in prim_paths_expr.
name – Short name to be used as a key by Scene class. Note: needs to be unique if the object is added to the Scene.
positions – Default positions in the world frame of the prim. Shape is (N, 3).
translations – Default translations in the local frame of the prims with respect to their parent prims. Shape is (N, 3).
orientations – Default quaternion orientations in the world or local frame of the prims, depending on whether translation or position is specified. Quaternion is scalar-first (w, x, y, z). Shape is (N, 4).
scales – Local scales to be applied to the prim’s dimensions. Shape is (N, 3).
visibilities – Set to False for an invisible prim in the stage while rendering. Shape is (N,).
reset_xform_properties – True if the prims do not have the right set of xform properties (i.e., translate, orient and scale) ONLY and in that order. Set this parameter to False if the object was cloned using the cloner API in isaacsim.core.cloner.
collisions – Set to True if the geometry prims already have or should have a collider (i.e., not only a visual geometry). Shape is (N,).
track_contact_forces – If enabled, the view will track the net contact forces on each geometry prim in the view. Note that the collision flag should be set to True to report contact forces.
prepare_contact_sensors – Applies contact reporter API to the prim if it does not already have one.
disable_stablization – Disables the contact stabilization parameter in the physics context.
contact_filter_prim_paths_expr – A list of filter expressions that allow for tracking contact forces between the geometry prim and this subset through get_contact_force_matrix().
- apply_collision_apis(
- indices: ndarray | list | Tensor | array | None = None,
Apply the collision API to prims in the view and update internal variables.
- Parameters:
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
Example
>>> # apply the collision API for all prims >>> prims.apply_collision_apis() >>> >>> # apply the collision API for the first, middle and last of the 5 envs >>> prims.apply_collision_apis(indices=np.array([0, 2, 4]))
- apply_physics_materials(
- physics_materials: PhysicsMaterial | list[PhysicsMaterial],
- weaker_than_descendants: bool | list[bool] | None = None,
- indices: np.ndarray | list | torch.Tensor | wp.array | None = None,
Apply physics material to prims in the view and optionally its descendants.
- Parameters:
physics_materials – Physics materials to apply to prims in the view. Physics material can be used to define friction, restitution, etc. Note: if a physics material is not defined, the defaults will be used from PhysX. If a list is provided then its size has to be equal the view’s size or indices size. If one material is provided it will be applied to all prims in the view.
weaker_than_descendants – True if the material should not override the descendants materials. If a list of physics materials is provided, provide a list with the same size for this argument.
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Raises:
Exception – If the length of physics materials does not match the number of selected prims.
Exception – If the length of physics materials does not match weaker_than_descendants.
Example
>>> from isaacsim.core.api.materials import PhysicsMaterial >>> >>> # create a rigid body physical material >>> material = PhysicsMaterial( ... prim_path="/World/physics_material/aluminum", # path to the material prim to create ... dynamic_friction=0.4, ... static_friction=1.1, ... restitution=0.1 ... ) >>> >>> # apply the material to all prims >>> prims.apply_physics_materials(material) # or [material] * num_envs >>> >>> # apply the collision API for the first, middle and last of the 5 envs >>> prims.apply_physics_materials(material, indices=np.array([0, 2, 4]))
- apply_visual_materials(
- visual_materials: 'VisualMaterial' | list['VisualMaterial'],
- weaker_than_descendants: bool | list[bool] | None = None,
- indices: np.ndarray | list | torch.Tensor | wp.array | None = None,
Apply visual material to the prims and optionally their prim descendants.
- Parameters:
visual_materials – Visual materials to be applied to the prims. Currently supports PreviewSurface, OmniPBR and OmniGlass. If a list is provided then its size has to be equal the view’s size or indices size. If one material is provided it will be applied to all prims in the view.
weaker_than_descendants – True if the material shouldn’t override the descendants materials, otherwise False. If a list of visual materials is provided then a list has to be provided with the same size for this arg as well.
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Raises:
Exception – length of visual materials != length of prims indexed
Exception – length of visual materials != length of weaker descendants bools arg
Exception – If the prim view is not valid.
Example:
>>> from isaacsim.core.api.materials import OmniGlass >>> >>> # create a dark-red glass visual material >>> material = OmniGlass( ... prim_path="/World/material/glass", # path to the material prim to create ... ior=1.25, ... depth=0.001, ... thin_walled=False, ... color=np.array([0.5, 0.0, 0.0]) ... ) >>> prims.apply_visual_materials(material)
- destroy() None#
Clean up and invalidate the prim view by deregistering callbacks and clearing internal state.
- disable_collision(
- indices: ndarray | list | Tensor | array | None = None,
Disable collision on prims in the view.
- Parameters:
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
Example
>>> # disable the collision API for all prims >>> prims.disable_collision() >>> >>> # disable the collision API for the prims for the first, middle and last of the 5 envs >>> prims.disable_collision(indices=np.array([0, 2, 4]))
- enable_collision(
- indices: ndarray | list | Tensor | array | None = None,
Enable collision on prims in the view.
- Parameters:
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
Example
>>> # enable the collision API for all prims >>> prims.enable_collision() >>> >>> # enable the collision API for the prims for the first, middle and last of the 5 envs >>> prims.enable_collision(indices=np.array([0, 2, 4]))
- get_applied_physics_materials(
- indices: np.ndarray | list | torch.Tensor | wp.array | None = None,
Get the applied physics material for prims in the view.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
Current applied physics materials for prims in the view.
Example
>>> # get the applied material for all prims >>> prims.get_applied_physics_materials() [<isaacsim.core.api.materials.physics_material.PhysicsMaterial object at 0x7f720859ece0>, <isaacsim.core.api.materials.physics_material.PhysicsMaterial object at 0x7f720859ece0>, <isaacsim.core.api.materials.physics_material.PhysicsMaterial object at 0x7f720859ece0>, <isaacsim.core.api.materials.physics_material.PhysicsMaterial object at 0x7f720859ece0>, <isaacsim.core.api.materials.physics_material.PhysicsMaterial object at 0x7f720859ece0>] >>> >>> # get the applied material for the first, middle and last of the 5 envs >>> prims.get_applied_physics_materials(indices=np.array([0, 2, 4])) [<isaacsim.core.api.materials.physics_material.PhysicsMaterial object at 0x7f720859ece0>, <isaacsim.core.api.materials.physics_material.PhysicsMaterial object at 0x7f720859ece0>, <isaacsim.core.api.materials.physics_material.PhysicsMaterial object at 0x7f720859ece0>]
- get_applied_visual_materials(
- indices: np.ndarray | list | torch.Tensor | wp.array | None = None,
Get the current applied visual materials.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
A list of the current applied visual materials to the prims if its type is currently supported.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all applied visual materials. Returned size is 5 for the example: 5 envs >>> prims.get_applied_visual_materials() [<isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>, <isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>, <isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>, <isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>, <isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>] >>> >>> # get the applied visual materials for the first, middle and last of the 5 envs. Returned size is 3 >>> prims.get_applied_visual_materials(indices=np.array([0, 2, 4])) [<isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>, <isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>, <isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>]
- get_collision_approximations(
- indices: ndarray | list | Tensor | array | None = None,
Get collision approximation types for prims in the view.
Approximation
Full name
Description
"none"Triangle Mesh
The mesh geometry is used directly as a collider without any approximation
"convexDecomposition"Convex Decomposition
A convex mesh decomposition is performed. This results in a set of convex mesh colliders
"convexHull"Convex Hull
A convex hull of the mesh is generated and used as the collider
"boundingSphere"Bounding Sphere
A bounding sphere is computed around the mesh and used as a collider
"boundingCube"Bounding Cube
An optimally fitting box collider is computed around the mesh
"meshSimplification"Mesh Simplification
A mesh simplification step is performed, resulting in a simplified triangle mesh collider
"sdf"SDF Mesh
SDF (Signed-Distance-Field) uses high-detail triangle meshes as collision shape
"sphereFill"Sphere Approximation
A sphere mesh decomposition is performed. This results in a set of sphere colliders
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
Collision approximation types. Size == M or size of the view.
Example
>>> # get the collision approximation of all prims. Returned size is (5,). >>> prims.get_collision_approximations() ['none', 'none', 'none', 'none', 'none'] >>> >>> # get the collision approximation of the prims for the first, middle and last of the 5 envs >>> prims.get_collision_approximations(indices=np.array([0, 2, 4])) ['none', 'none', 'none']
- get_contact_force_data(
- indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
- dt: float = 1.0,
Get detailed contact data between the prims in the view and the filter prims.
This method provides individual contact normals, contact points, contact separations, and contact forces for each pair. The sum of the contact forces equals the force aggregate for a pair returned by get_contact_force_matrix. Due to the dynamic nature of collision between bodies, this method provides contact data buffers arranged sequentially for each pair. The starting index and number of contact data points for each pair in this stream can be read from the pair_contacts_start_indices and pair_contacts_count tensors. They both have a dimension of (self.num_shapes, self.num_filters), where filter_count is determined according to the filter_paths_expr parameter.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
dt – Time step multiplier to convert the underlying impulses to forces.
- Returns:
A set of buffers for normal forces with shape (max_contact_count, 1), points with shape (max_contact_count, 3), normals with shape (max_contact_count, 3), and distances with shape (max_contact_count, 1), as well as two tensors with shape (M, self.num_filters) to indicate the starting index and number of contact data points per pair in the aforementioned buffers. None if no contact filter is specified.
- get_contact_force_matrix(
- indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
- dt: float = 1.0,
Return contact forces between the prims in the view and filter prims when contact filters are specified.
The returned matrix has shape (self.count, self._contact_view.num_filters, 3) before indexing. The number of filters is determined according to the filter_paths_expr parameter.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
dt – Time step multiplier to convert the underlying impulses to forces. A value of 1.0 returns contact impulses.
- Returns:
Net contact forces of the prims with shape (M, self._contact_view.num_filters, 3). None if no contact filter is specified.
- get_contact_offsets(
- indices: ndarray | list | Tensor | array | None = None,
Get contact offsets for prims in the view.
Shapes whose distance is less than the sum of their contact offset values will generate contacts.
Search for Advanced Collision Detection in PhysX docs for more details.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
Contact offsets of the collision shapes. Shape is (M,).
Example:
>>> # get the contact offsets of all prims. Returned shape is (5,). >>> prims.get_contact_offsets() [-inf -inf -inf -inf -inf] >>> >>> # get the contact offsets of the prims for the first, middle and last of the 5 envs >>> prims.get_contact_offsets(indices=np.array([0, 2, 4])) [-inf -inf -inf]
- get_default_state() XFormPrimViewState#
Get the default states (positions and orientations) defined with the
set_default_statemethod.- Returns:
The default state of the prims that is used after each reset.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> state = prims.get_default_state() >>> state <isaacsim.core.utils.types.XFormPrimViewState object at 0x7f82f73e3070> >>> state.positions [[ 1.5 -0.75 0. ] [ 1.5 0.75 0. ] [ 0. -0.75 0. ] [ 0. 0.75 0. ] [-1.5 -0.75 0. ]] >>> state.orientations [[1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.]]
- get_friction_data(
- indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
- dt: float = 1.0,
Get friction data between the prims in the view and the filter prims.
This method provides frictional contact forces and points. The data is reported for anchor points that include tangential forces in a single tangent direction to the contact normal. Due to the dynamic nature of collision between bodies, this method provides friction data buffers arranged sequentially for each pair. The starting index and number of contact data points for each pair in this stream can be read from the pair_contacts_start_indices and pair_contacts_count tensors. They both have a dimension of (self.num_shapes, self.num_filters), where filter_count is determined according to the filter_paths_expr parameter.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
dt – Time step multiplier to convert the underlying impulses to forces.
- Returns:
A set of buffers for tangential forces per patch at anchor points, each in a single direction, with shape (max_contact_count, 3), points with shape (max_contact_count, 3), as well as two tensors with shape (M, self.num_filters) to indicate the starting index and number of contact data points per pair in the aforementioned buffers. None if no contact filter is specified.
- get_local_poses(
- indices: ndarray | list | Tensor | array | None = None,
Get prim poses in the view with respect to the local frame (the prim’s parent frame).
- Parameters:
indices – indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
first index is translations in the local frame of the prims. shape is (M, 3). second index is quaternion orientations in the local frame of the prims. quaternion is scalar-first (w, x, y, z). shape is (M, 4).
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all prims poses with respect to the local frame. >>> # Returned shape is position (5, 3) and orientation (5, 4) for the example: 5 envs >>> positions, orientations = prims.get_local_poses() >>> positions [[ 1.5 -0.75 0. ] [ 1.5 0.75 0. ] [ 0. -0.75 0. ] [ 0. 0.75 0. ] [-1.5 -0.75 0. ]] >>> orientations [[1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.]] >>> >>> # get only the prims poses with respect to the local frame for the first, middle and last of the 5 envs. >>> # Returned shape is position (3, 3) and orientation (3, 4) for the example: 3 envs selected >>> positions, orientations = prims.get_local_poses(indices=np.array([0, 2, 4])) >>> positions [[ 1.5 -0.75 0. ] [ 0. -0.75 0. ] [-1.5 -0.75 0. ]] >>> orientations [[1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.]]
- get_local_scales(
- indices: ndarray | list | Tensor | array | None = None,
Get prim scales in the view with respect to the local frame (the parent’s frame).
- Parameters:
indices – indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
scales applied to the prim’s dimensions in the local frame. shape is (M, 3).
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all prims scales with respect to the local frame. >>> # Returned shape is (5, 3) for the example: 5 envs >>> prims.get_local_scales() [[1. 1. 1.] [1. 1. 1.] [1. 1. 1.] [1. 1. 1.] [1. 1. 1.]] >>> >>> # get only the prims scales with respect to the local frame for the first, middle and last of the 5 envs. >>> # Returned shape is (3, 3) for the example: 3 envs selected >>> prims.get_local_scales(indices=np.array([0, 2, 4])) [[1. 1. 1.] [1. 1. 1.] [1. 1. 1.]]
- get_min_torsional_patch_radii(
- indices: ndarray | list | Tensor | None = None,
Get minimum torsional patch radii for prims in the view.
Search for “Torsional Patch Radius” in PhysX docs for more details.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
Minimum radius of the contact patch used to apply torsional friction. Shape is (M,).
Example:
>>> # get the minimum torsional patch radius of all prims. Returned shape is (5,). >>> prims.get_min_torsional_patch_radii() [0. 0. 0. 0. 0.] >>> >>> # get the minimum torsional patch radius of the prims for the first, middle and last of the 5 envs >>> prims.get_min_torsional_patch_radii(indices=np.array([0, 2, 4])) [0. 0. 0.]
- get_net_contact_forces(
- indices: ndarray | list | Tensor | array | None = None,
- clone: bool = True,
- dt: float = 1.0,
Return net contact forces on prims when contact force tracking is enabled.
The returned matrix has shape (self.count, 3) before indexing.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
dt – Time step multiplier to convert the underlying impulses to forces. A value of 1.0 returns contact impulses.
- Returns:
Net contact forces of the prims with shape (M, 3). None if contact tracking is not enabled.
- get_rest_offsets(
- indices: ndarray | list | Tensor | array | None = None,
Get rest offsets for prims in the view.
Two shapes will come to rest at a distance equal to the sum of their rest offset values. If the rest offset is 0, they should converge to touching exactly.
Search for Advanced Collision Detection in PhysX docs for more details.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
Rest offsets of the collision shapes. Shape is (M,).
Example:
>>> # get the rest offsets of all prims. Returned shape is (5,). >>> prims.get_rest_offsets() [-inf -inf -inf -inf -inf] >>> >>> # get the rest offsets of the prims for the first, middle and last of the 5 envs >>> prims.get_rest_offsets(indices=np.array([0, 2, 4])) [-inf -inf -inf]
- get_sdf_and_gradients(
- points: ndarray | Tensor,
- indices: ndarray | Tensor | None = None,
- clone: bool = True,
Gets the SDF values and gradients of the query points.
- Parameters:
points – Points represented in the local frames of meshes to query for SDF and gradients. Shape is (self.num_shapes, self.num_query_points, 3).
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – True to return a clone of the internal buffer. Otherwise False.
- Returns:
SDF values and gradients of points for prims with shape (self.num_shapes, self.num_query_points, 4). The first component is the SDF value while the last three represent the gradient.
- get_sdf_margins(
- indices: ndarray | list | Tensor | None = None,
- clone: bool = True,
Gets SDF margin values for prims in the view.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – Included for API compatibility.
- Returns:
Margins of the SDF collision APIs for prims in the view. Shape is (M,).
- get_sdf_narrow_band_thickness(
- indices: ndarray | list | Tensor | None = None,
- clone: bool = True,
Gets SDF collision narrow band thickness values for prims in the view.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – Included for API compatibility.
- Returns:
Narrow band thickness of the SDF collision APIs for prims in the view. Shape is (M,).
- get_sdf_resolution(
- indices: ndarray | list | Tensor | None = None,
- clone: bool = True,
Gets SDF collision resolution values for prims in the view.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – Included for API compatibility.
- Returns:
Resolutions of the SDF collision APIs for prims in the view. Shape is (M,).
- get_sdf_subgrid_resolution(
- indices: ndarray | list | Tensor | None = None,
- clone: bool = True,
Gets SDF collision subgrid resolution values for prims in the view.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
clone – Included for API compatibility.
- Returns:
Subgrid resolutions of the SDF collision APIs for prims in the view. Shape is (M,).
- get_torsional_patch_radii(
- indices: ndarray | list | Tensor | array | None = None,
Get torsional patch radii for prims in the view.
Search for “Torsional Patch Radius” in PhysX docs for more details.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
Radius of the contact patch used to apply torsional friction. Shape is (M,).
Example:
>>> # get the torsional patch radius of all prims. Returned shape is (5,). >>> prims.get_torsional_patch_radii() [0. 0. 0. 0. 0.] >>> >>> # get the torsional patch radius of the prims for the first, middle and last of the 5 envs >>> prims.get_torsional_patch_radii(indices=np.array([0, 2, 4])) [0. 0. 0.]
- get_visibilities(
- indices: ndarray | list | Tensor | array | None = None,
Return the current visibilities of the prims in stage.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
Shape (M,) with type bool, where each item holds True if the prim is visible in stage. False otherwise.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all visibilities. Returned shape is (5,) for the example: 5 envs >>> prims.get_visibilities() [ True True True True True] >>> >>> # get the visibilities for the first, middle and last of the 5 envs. Returned shape is (3,) >>> prims.get_visibilities(indices=np.array([0, 2, 4])) [ True True True]
- get_world_poses(
- indices: ndarray | list | Tensor | array | None = None,
- usd: bool = True,
Get the poses of the prims in the view with respect to the world’s frame.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
usd – True to query from USD. Otherwise False to query from Fabric data.
- Returns:
First index is positions in the world frame of the prims. shape is (M, 3). Second index is quaternion orientations in the world frame of the prims. quaternion is scalar-first (w, x, y, z). shape is (M, 4).
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all prims poses with respect to the world's frame. >>> # Returned shape is position (5, 3) and orientation (5, 4) for the example: 5 envs >>> positions, orientations = prims.get_world_poses() >>> positions [[ 1.5 -0.75 0. ] [ 1.5 0.75 0. ] [ 0. -0.75 0. ] [ 0. 0.75 0. ] [-1.5 -0.75 0. ]] >>> orientations [[1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.]] >>> >>> # get only the prims poses with respect to the world's frame for the first, middle and last of the 5 envs. >>> # Returned shape is position (3, 3) and orientation (3, 4) for the example: 3 envs selected >>> positions, orientations = prims.get_world_poses(indices=np.array([0, 2, 4])) >>> positions [[ 1.5 -0.75 0. ] [ 0. -0.75 0. ] [-1.5 -0.75 0. ]] >>> orientations [[1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.]]
- get_world_scales(
- indices: ndarray | list | Tensor | array | None = None,
Get prim scales in the view with respect to the world’s frame.
- Parameters:
indices – indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
scales applied to the prim’s dimensions in the world frame. shape is (M, 3).
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all prims scales with respect to the world's frame. >>> # Returned shape is (5, 3) for the example: 5 envs >>> prims.get_world_scales() [[1. 1. 1.] [1. 1. 1.] [1. 1. 1.] [1. 1. 1.] [1. 1. 1.]] >>> >>> # get only the prims scales with respect to the world's frame for the first, middle and last of the 5 envs. >>> # Returned shape is (3, 3) for the example: 3 envs selected >>> prims.get_world_scales(indices=np.array([0, 2, 4])) [[1. 1. 1.] [1. 1. 1.] [1. 1. 1.]]
- initialize(
- physics_sim_view: omni.physics.tensors.SimulationView = None,
Creates a physics simulation view and a SDF shape view in PhysX.
- Parameters:
physics_sim_view – Current physics simulation view.
- is_collision_enabled(
- indices: ndarray | list | Tensor | array | None = None,
Query whether collision is enabled on prims in the view.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
True if collision is enabled. Shape is (M,).
Example
>>> # check if the collision is enabled for all prims. Returned size is (5,). >>> prims.is_collision_enabled() [ True True True True True] >>> >>> # check if the collision is enabled for the first, middle and last of the 5 envs >>> prims.is_collision_enabled(indices=np.array([0, 2, 4])) [ True True True]
- is_physics_handle_valid() bool#
Whether the physics handle of the view is valid.
- Returns:
True if physics is initialized for the view, otherwise False.
- is_valid(
- indices: ndarray | list | Tensor | array | None = None,
Check whether the prim view is valid.
- Parameters:
indices – Indices accepted for API compatibility. The current view validity is returned regardless of indices.
- Returns:
True if the prim view has not been invalidated by destroy or matching prim deletion. False otherwise.
Example:
>>> prims.is_valid() True
- is_visual_material_applied(
- indices: ndarray | list | Tensor | array | None = None,
Check if there is a visual material applied.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
True if there is a visual material applied to the corresponding prim in the view. False otherwise.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # given a visual material that is applied only to the first and the last environment >>> prims.is_visual_material_applied() [True, False, False, False, True] >>> >>> # check for the first, middle and last of the 5 envs >>> prims.is_visual_material_applied(indices=np.array([0, 2, 4])) [True, False, True]
- set_collision_approximations(
- approximation_types: list[str],
- indices: ndarray | list | Tensor | array | None = None,
Set collision approximation types for prims in the view.
Approximation
Full name
Description
"none"Triangle Mesh
The mesh geometry is used directly as a collider without any approximation
"convexDecomposition"Convex Decomposition
A convex mesh decomposition is performed. This results in a set of convex mesh colliders
"convexHull"Convex Hull
A convex hull of the mesh is generated and used as the collider
"boundingSphere"Bounding Sphere
A bounding sphere is computed around the mesh and used as a collider
"boundingCube"Bounding Cube
An optimally fitting box collider is computed around the mesh
"meshSimplification"Mesh Simplification
A mesh simplification step is performed, resulting in a simplified triangle mesh collider
"sdf"SDF Mesh
SDF (Signed-Distance-Field) uses high-detail triangle meshes as collision shape
"sphereFill"Sphere Approximation
A sphere mesh decomposition is performed. This results in a set of sphere colliders
- Parameters:
approximation_types – Collision approximation types. List size == M or the size of the view.
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
Example
>>> # set the collision approximations for all the prims to the specified values. >>> prims.set_collision_approximations(["convexDecomposition"] * num_envs) >>> >>> # set the collision approximations for the first, middle and last of the 5 envs >>> types = ["convexDecomposition", "convexHull", "meshSimplification"] >>> prims.set_collision_approximations(types, indices=np.array([0, 2, 4]))
- set_contact_offsets(
- offsets: ndarray | Tensor | array,
- indices: ndarray | list | Tensor | array | None = None,
Set contact offsets for prims in the view.
Shapes whose distance is less than the sum of their contact offset values will generate contacts.
Search for Advanced Collision Detection in PhysX docs for more details.
- Parameters:
offsets – Contact offsets of the collision shapes. Allowed range [maximum(0, rest_offset), 0]. Shape (M,).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
Example:
>>> # set the contact offset for all the prims to the specified values. >>> prims.set_contact_offsets(np.full(num_envs, 0.02)) >>> >>> # set the contact offset for the first, middle and last of the 5 envs >>> prims.set_contact_offsets(np.full(3, 0.02), indices=np.array([0, 2, 4]))
- set_default_state(
- positions: ndarray | Tensor | array | None = None,
- orientations: ndarray | Tensor | array | None = None,
- indices: ndarray | list | Tensor | array | None = None,
Set the default state of the prims (positions and orientations), that will be used after each reset.
Note
The default states will be set during post-reset (e.g., calling
.post_reset()orworld.reset()methods)- Parameters:
positions – Positions in the world frame of the prim. shape is (M, 3).
orientations – Quaternion orientations in the world frame of the prim. quaternion is scalar-first (w, x, y, z). shape is (M, 4).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # configure default states for all prims >>> positions = np.zeros((num_envs, 3)) >>> positions[:, 0] = np.arange(num_envs) >>> orientations = np.tile(np.array([1.0, 0.0, 0.0, 0.0]), (num_envs, 1)) >>> prims.set_default_state(positions=positions, orientations=orientations) >>> >>> # set default states during post-reset >>> prims.post_reset()
- set_local_poses(
- translations: ndarray | Tensor | array | None = None,
- orientations: ndarray | Tensor | array | None = None,
- indices: ndarray | list | Tensor | array | None = None,
Set prim poses in the view with respect to the local frame (the prim’s parent frame).
Warning
This method will change (teleport) the prim poses immediately to the indicated value
- Parameters:
translations – translations in the local frame of the prims (with respect to its parent prim). shape is (M, 3).
orientations – quaternion orientations in the local frame of the prims. quaternion is scalar-first (w, x, y, z). shape is (M, 4).
indices – indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Raises:
Exception – If the prim view is not valid.
Hint
This method belongs to the methods used to set the prim state
Example:
>>> # reposition all prims >>> positions = np.zeros((num_envs, 3)) >>> positions[:,0] = np.arange(num_envs) >>> orientations = np.tile(np.array([1.0, 0.0, 0.0, 0.0]), (num_envs, 1)) >>> prims.set_local_poses(positions, orientations) >>> >>> # reposition only the prims for the first, middle and last of the 5 envs >>> positions = np.zeros((3, 3)) >>> positions[:,1] = np.arange(3) >>> orientations = np.tile(np.array([1.0, 0.0, 0.0, 0.0]), (3, 1)) >>> prims.set_local_poses(positions, orientations, indices=np.array([0, 2, 4]))
- set_local_scales( ) None#
Set prim scales in the view with respect to the local frame (the prim’s parent frame).
- Parameters:
scales – scales to be applied to the prim’s dimensions in the view. shape is (M, 3).
indices – indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # set the scale for all prims. Since there are 5 envs, the scale is repeated 5 times >>> scales = np.tile(np.array([1.0, 0.75, 0.5]), (num_envs, 1)) >>> prims.set_local_scales(scales) >>> >>> # set the scale for the first, middle and last of the 5 envs >>> scales = np.tile(np.array([1.0, 0.75, 0.5]), (3, 1)) >>> prims.set_local_scales(scales, indices=np.array([0, 2, 4]))
- set_min_torsional_patch_radii(
- radii: ndarray | Tensor | array,
- indices: ndarray | list | Tensor | array | None = None,
Set minimum torsional patch radii for prims in the view.
Search for “Torsional Patch Radius” in PhysX docs for more details.
- Parameters:
radii – Minimum radius of the contact patch used to apply torsional friction. Allowed range [0, max_float]. Shape is (M, ).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
Example:
>>> # set the minimum torsional patch radius for all the prims to the specified values. >>> prims.set_min_torsional_patch_radii(np.full(num_envs, 0.05)) >>> >>> # set the minimum torsional patch radius for the first, middle and last of the 5 envs >>> prims.set_min_torsional_patch_radii(np.full(3, 0.05), indices=np.array([0, 2, 4]))
- set_rest_offsets(
- offsets: ndarray | Tensor | array,
- indices: ndarray | list | Tensor | array | None = None,
Set rest offsets for prims in the view.
Two shapes will come to rest at a distance equal to the sum of their rest offset values. If the rest offset is 0, they should converge to touching exactly.
Search for Advanced Collision Detection in PhysX docs for more details.
Warning
The contact offset must be positive and greater than the rest offset.
- Parameters:
offsets – Rest offset of a collision shape. Allowed range [-max_float, contact_offset]. Shape (M,).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
Example:
>>> # set the rest offset for all the prims to the specified values. >>> prims.set_rest_offsets(np.full(num_envs, 0.01)) >>> >>> # set the rest offset for the first, middle and last of the 5 envs >>> prims.set_rest_offsets(np.full(3, 0.01), indices=np.array([0, 2, 4]))
- set_sdf_margins(
- values: ndarray | Tensor,
- indices: ndarray | list | Tensor | None = None,
Sets signed distance field margins for prims in the view.
- Parameters:
values – SDF margins to set. Shape (M,).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- set_sdf_narrow_band_thickness(
- values: ndarray | Tensor,
- indices: ndarray | list | Tensor | None = None,
Sets signed distance field narrow band thicknesses for prims in the view.
- Parameters:
values – SDF narrow band thicknesses to set. Shape (M,).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- set_sdf_resolution(
- values: ndarray | Tensor,
- indices: ndarray | list | Tensor | None = None,
Sets signed distance field resolutions for prims in the view.
- Parameters:
values – SDF resolutions to set. Shape (M,).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- set_sdf_subgrid_resolution(
- values: ndarray | Tensor,
- indices: ndarray | list | Tensor | None = None,
Sets signed distance field subgrid resolutions for prims in the view.
- Parameters:
values – SDF subgrid resolutions to set. Shape (M,).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- set_torsional_patch_radii(
- radii: ndarray | Tensor | array,
- indices: ndarray | list | Tensor | array | None = None,
Set torsional patch radii for prims in the view.
Search for “Torsional Patch Radius” in PhysX docs for more details.
- Parameters:
radii – Radius of the contact patch used to apply torsional friction. Allowed range [0, max_float]. Shape is (M,).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
Example:
>>> # set the torsional patch radius for all the prims to the specified values. >>> prims.set_torsional_patch_radii(np.full(num_envs, 0.1)) >>> >>> # set the torsional patch radius for the first, middle and last of the 5 envs >>> prims.set_torsional_patch_radii(np.full(3, 0.1), indices=np.array([0, 2, 4]))
- set_visibilities(
- visibilities: ndarray | Tensor | array,
- indices: ndarray | list | Tensor | array | None = None,
Set the visibilities of the prims in stage.
- Parameters:
visibilities – Flag to set the visibilities of the USD prims in stage. Shape (M,). Where M <= size of the encapsulated prims in the view.
indices – Indices to specify which prims to manipulate. Shape (M,).
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # make all prims not visible in the stage >>> prims.set_visibilities(visibilities=[False] * num_envs)
- set_world_poses(
- positions: ndarray | Tensor | array | None = None,
- orientations: ndarray | Tensor | array | None = None,
- indices: ndarray | list | Tensor | array | None = None,
- usd: bool = True,
Set prim poses in the view with respect to the world’s frame.
Warning
This method will change (teleport) the prim poses immediately to the indicated value
- Parameters:
positions – Positions in the world frame of the prims. shape is (M, 3).
orientations – Quaternion orientations in the world frame of the prims. quaternion is scalar-first (w, x, y, z). shape is (M, 4).
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
usd – True to query from USD. Otherwise False to query from Fabric data.
- Raises:
Exception – If the prim view is not valid.
Hint
This method belongs to the methods used to set the prim state
Example:
>>> # reposition all prims in row (x-axis) >>> positions = np.zeros((num_envs, 3)) >>> positions[:,0] = np.arange(num_envs) >>> orientations = np.tile(np.array([1.0, 0.0, 0.0, 0.0]), (num_envs, 1)) >>> prims.set_world_poses(positions, orientations) >>> >>> # reposition only the prims for the first, middle and last of the 5 envs in column (y-axis) >>> positions = np.zeros((3, 3)) >>> positions[:,1] = np.arange(3) >>> orientations = np.tile(np.array([1.0, 0.0, 0.0, 0.0]), (3, 1)) >>> prims.set_world_poses(positions, orientations, indices=np.array([0, 2, 4]))
- property count: int#
Number of prims encapsulated in this view.
- Returns:
The number of prims encapsulated in this view.
Example:
>>> prims.count 5
- property geoms: list[pxr.UsdGeom.Gprim]#
USD geom objects encapsulated.
- Returns:
USD geom objects encapsulated.
Example:
>>> prims.geoms [UsdGeom.Gprim(Usd.Prim(</World/envs/env_0/Xform>)), UsdGeom.Gprim(Usd.Prim(</World/envs/env_1/Xform>)), UsdGeom.Gprim(Usd.Prim(</World/envs/env_2/Xform>)), UsdGeom.Gprim(Usd.Prim(</World/envs/env_3/Xform>)), UsdGeom.Gprim(Usd.Prim(</World/envs/env_4/Xform>))]
- property initialized: bool#
Whether a physics simulation view is available for the prim view.
- Returns:
True if a physics simulation view is available from SimulationManager. False otherwise.
Example:
>>> # given an active physics simulation view >>> prims.initialized True
- property is_non_root_articulation_link: bool#
True if the prim corresponds to a non root link in an articulation.
- Returns:
True if the prim corresponds to a non root link in an articulation. Otherwise False.
- property name: str#
Name given to the prims view when instantiating it.
- Returns:
The name given to the prims view when instantiating it.
- property num_query_points: int#
Number of points queried by this view object.
- Returns:
Number of points queried by this view object.
- property prim_paths: list[str]#
Prim paths in the stage encapsulated in this view.
- Returns:
The prim paths in the stage encapsulated in this view.
Example:
>>> prims.prim_paths ['/World/envs/env_0', '/World/envs/env_1', '/World/envs/env_2', '/World/envs/env_3', '/World/envs/env_4']
- property prims: list[pxr.Usd.Prim]#
USD Prim objects encapsulated in this view.
- Returns:
The USD Prim objects encapsulated in this view.
Example:
>>> prims.prims [Usd.Prim(</World/envs/env_0>), Usd.Prim(</World/envs/env_1>), Usd.Prim(</World/envs/env_2>), Usd.Prim(</World/envs/env_3>), Usd.Prim(</World/envs/env_4>)]
- class XFormPrim(
- prim_paths_expr: str | list[str],
- name: str = 'xform_prim_view',
- positions: ndarray | Tensor | None = None,
- translations: ndarray | Tensor | None = None,
- orientations: ndarray | Tensor | None = None,
- scales: ndarray | Tensor | None = None,
- visibilities: ndarray | Tensor | None = None,
- reset_xform_properties: bool = True,
- usd: bool = True,
Bases:
PrimProvide high-level functions for working with Xform prim views and their descendants.
Handle attributes and properties of single or multiple Xform prims.
Wrap all matching Xforms found at the regex provided at the
prim_paths_exprargument.Note
Each prim will have
xformOp:orient,xformOp:translateandxformOp:scaleonly after initialization, unless it is a non-root articulation link.- Parameters:
prim_paths_expr – Prim path regex to encapsulate all prims that match it. For example, “/World/Env[1-5]/Franka” will match /World/Env1/Franka, /World/Env2/Franka, etc. A non-regex prim path can also be used to encapsulate one Xform. Additionally, a list of regex can be provided. For example, [“/World/Env[1-5]/Franka”, “/World/Env[10-19]/Franka”].
name – Short name to be used as a key by Scene class. Note: needs to be unique if the object is added to the Scene.
positions – Default positions in the world frame of the prim. Shape is (N, 3).
translations – Default translations in the local frame of the prims with respect to their parent prims. Shape is (N, 3).
orientations – Default quaternion orientations in the world/local frame of the prim depending on whether translation or position is specified. Quaternion is scalar-first (w, x, y, z). Shape is (N, 4).
scales – Local scales to be applied to the prim’s dimensions. Shape is (N, 3).
visibilities – Set to False for an invisible prim in the stage while rendering. Shape is (N,).
reset_xform_properties – True if the prims do not have the right set of xform properties (i.e: translate, orient and scale) ONLY and in that order. Set this parameter to False if the object was cloned using the cloner API in isaacsim.core.cloner.
usd – True to strictly read/write from USD. Otherwise False to allow read/write from Fabric during initialization.
- Raises:
Exception – if translations and positions are defined at the same time.
Exception – No prim was matched using the prim_paths_expr provided.
Example:
>>> import isaacsim.core.utils.stage as stage_utils >>> from isaacsim.core.cloner import GridCloner >>> from isaacsim.core.prims import XFormPrim >>> from pxr import UsdGeom >>> >>> env_zero_path = "/World/envs/env_0" >>> num_envs = 5 >>> >>> # load the Franka Panda robot USD file >>> stage_utils.add_reference_to_stage(usd_path, prim_path=f"{env_zero_path}/panda") # /World/envs/env_0/panda >>> >>> # clone the environment (num_envs) >>> cloner = GridCloner(spacing=1.5) >>> cloner.define_base_env(env_zero_path) >>> UsdGeom.Xform.Define(stage_utils.get_current_stage(), env_zero_path) >>> env_pos = cloner.clone( ... source_prim_path=env_zero_path, ... prim_paths=cloner.generate_paths("/World/envs/env", num_envs), ... copy_from_source=True ... ) >>> >>> # wrap all Xforms >>> prims = XFormPrim(prim_paths_expr="/World/envs/env.*", name="xform_view") >>> prims <isaacsim.core.prims.xform_prim.XFormPrim object at 0x7f8ffd22ebc0>
- apply_visual_materials(
- visual_materials: 'VisualMaterial' | list['VisualMaterial'],
- weaker_than_descendants: bool | list[bool] | None = None,
- indices: np.ndarray | list | torch.Tensor | wp.array | None = None,
Apply visual material to the prims and optionally their prim descendants.
- Parameters:
visual_materials – Visual materials to be applied to the prims. Currently supports PreviewSurface, OmniPBR and OmniGlass. If a list is provided then its size has to be equal the view’s size or indices size. If one material is provided it will be applied to all prims in the view.
weaker_than_descendants – True if the material shouldn’t override the descendants materials, otherwise False. If a list of visual materials is provided then a list has to be provided with the same size for this arg as well.
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Raises:
Exception – length of visual materials != length of prims indexed
Exception – length of visual materials != length of weaker descendants bools arg
Exception – If the prim view is not valid.
Example:
>>> from isaacsim.core.api.materials import OmniGlass >>> >>> # create a dark-red glass visual material >>> material = OmniGlass( ... prim_path="/World/material/glass", # path to the material prim to create ... ior=1.25, ... depth=0.001, ... thin_walled=False, ... color=np.array([0.5, 0.0, 0.0]) ... ) >>> prims.apply_visual_materials(material)
- destroy() None#
Clean up and invalidate the prim view by deregistering callbacks and clearing internal state.
- get_applied_visual_materials(
- indices: np.ndarray | list | torch.Tensor | wp.array | None = None,
Get the current applied visual materials.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
A list of the current applied visual materials to the prims if its type is currently supported.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all applied visual materials. Returned size is 5 for the example: 5 envs >>> prims.get_applied_visual_materials() [<isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>, <isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>, <isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>, <isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>, <isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>] >>> >>> # get the applied visual materials for the first, middle and last of the 5 envs. Returned size is 3 >>> prims.get_applied_visual_materials(indices=np.array([0, 2, 4])) [<isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>, <isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>, <isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f829c165de0>]
- get_default_state() XFormPrimViewState#
Get the default states (positions and orientations) defined with the
set_default_statemethod.- Returns:
The default state of the prims that is used after each reset.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> state = prims.get_default_state() >>> state <isaacsim.core.utils.types.XFormPrimViewState object at 0x7f82f73e3070> >>> state.positions [[ 1.5 -0.75 0. ] [ 1.5 0.75 0. ] [ 0. -0.75 0. ] [ 0. 0.75 0. ] [-1.5 -0.75 0. ]] >>> state.orientations [[1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.]]
- get_local_poses(
- indices: ndarray | list | Tensor | array | None = None,
Get prim poses in the view with respect to the local frame (the prim’s parent frame).
- Parameters:
indices – indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
first index is translations in the local frame of the prims. shape is (M, 3). second index is quaternion orientations in the local frame of the prims. quaternion is scalar-first (w, x, y, z). shape is (M, 4).
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all prims poses with respect to the local frame. >>> # Returned shape is position (5, 3) and orientation (5, 4) for the example: 5 envs >>> positions, orientations = prims.get_local_poses() >>> positions [[ 1.5 -0.75 0. ] [ 1.5 0.75 0. ] [ 0. -0.75 0. ] [ 0. 0.75 0. ] [-1.5 -0.75 0. ]] >>> orientations [[1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.]] >>> >>> # get only the prims poses with respect to the local frame for the first, middle and last of the 5 envs. >>> # Returned shape is position (3, 3) and orientation (3, 4) for the example: 3 envs selected >>> positions, orientations = prims.get_local_poses(indices=np.array([0, 2, 4])) >>> positions [[ 1.5 -0.75 0. ] [ 0. -0.75 0. ] [-1.5 -0.75 0. ]] >>> orientations [[1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.]]
- get_local_scales(
- indices: ndarray | list | Tensor | array | None = None,
Get prim scales in the view with respect to the local frame (the parent’s frame).
- Parameters:
indices – indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
scales applied to the prim’s dimensions in the local frame. shape is (M, 3).
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all prims scales with respect to the local frame. >>> # Returned shape is (5, 3) for the example: 5 envs >>> prims.get_local_scales() [[1. 1. 1.] [1. 1. 1.] [1. 1. 1.] [1. 1. 1.] [1. 1. 1.]] >>> >>> # get only the prims scales with respect to the local frame for the first, middle and last of the 5 envs. >>> # Returned shape is (3, 3) for the example: 3 envs selected >>> prims.get_local_scales(indices=np.array([0, 2, 4])) [[1. 1. 1.] [1. 1. 1.] [1. 1. 1.]]
- get_visibilities(
- indices: ndarray | list | Tensor | array | None = None,
Return the current visibilities of the prims in stage.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
Shape (M,) with type bool, where each item holds True if the prim is visible in stage. False otherwise.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all visibilities. Returned shape is (5,) for the example: 5 envs >>> prims.get_visibilities() [ True True True True True] >>> >>> # get the visibilities for the first, middle and last of the 5 envs. Returned shape is (3,) >>> prims.get_visibilities(indices=np.array([0, 2, 4])) [ True True True]
- get_world_poses(
- indices: ndarray | list | Tensor | array | None = None,
- usd: bool = True,
Get the poses of the prims in the view with respect to the world’s frame.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
usd – True to query from USD. Otherwise False to query from Fabric data.
- Returns:
First index is positions in the world frame of the prims. shape is (M, 3). Second index is quaternion orientations in the world frame of the prims. quaternion is scalar-first (w, x, y, z). shape is (M, 4).
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all prims poses with respect to the world's frame. >>> # Returned shape is position (5, 3) and orientation (5, 4) for the example: 5 envs >>> positions, orientations = prims.get_world_poses() >>> positions [[ 1.5 -0.75 0. ] [ 1.5 0.75 0. ] [ 0. -0.75 0. ] [ 0. 0.75 0. ] [-1.5 -0.75 0. ]] >>> orientations [[1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.]] >>> >>> # get only the prims poses with respect to the world's frame for the first, middle and last of the 5 envs. >>> # Returned shape is position (3, 3) and orientation (3, 4) for the example: 3 envs selected >>> positions, orientations = prims.get_world_poses(indices=np.array([0, 2, 4])) >>> positions [[ 1.5 -0.75 0. ] [ 0. -0.75 0. ] [-1.5 -0.75 0. ]] >>> orientations [[1. 0. 0. 0.] [1. 0. 0. 0.] [1. 0. 0. 0.]]
- get_world_scales(
- indices: ndarray | list | Tensor | array | None = None,
Get prim scales in the view with respect to the world’s frame.
- Parameters:
indices – indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
scales applied to the prim’s dimensions in the world frame. shape is (M, 3).
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # get all prims scales with respect to the world's frame. >>> # Returned shape is (5, 3) for the example: 5 envs >>> prims.get_world_scales() [[1. 1. 1.] [1. 1. 1.] [1. 1. 1.] [1. 1. 1.] [1. 1. 1.]] >>> >>> # get only the prims scales with respect to the world's frame for the first, middle and last of the 5 envs. >>> # Returned shape is (3, 3) for the example: 3 envs selected >>> prims.get_world_scales(indices=np.array([0, 2, 4])) [[1. 1. 1.] [1. 1. 1.] [1. 1. 1.]]
- initialize(
- physics_sim_view: omni.physics.tensors.SimulationView = None,
Refresh backend references from SimulationManager for this prim view.
Note
This class does not create class-specific PhysX tensor API data.
- Parameters:
physics_sim_view – Current physics simulation view accepted for API compatibility.
Example:
>>> prims.initialize()
- is_valid(
- indices: ndarray | list | Tensor | array | None = None,
Check whether the prim view is valid.
- Parameters:
indices – Indices accepted for API compatibility. The current view validity is returned regardless of indices.
- Returns:
True if the prim view has not been invalidated by destroy or matching prim deletion. False otherwise.
Example:
>>> prims.is_valid() True
- is_visual_material_applied(
- indices: ndarray | list | Tensor | array | None = None,
Check if there is a visual material applied.
- Parameters:
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Returns:
True if there is a visual material applied to the corresponding prim in the view. False otherwise.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # given a visual material that is applied only to the first and the last environment >>> prims.is_visual_material_applied() [True, False, False, False, True] >>> >>> # check for the first, middle and last of the 5 envs >>> prims.is_visual_material_applied(indices=np.array([0, 2, 4])) [True, False, True]
- set_default_state(
- positions: ndarray | Tensor | array | None = None,
- orientations: ndarray | Tensor | array | None = None,
- indices: ndarray | list | Tensor | array | None = None,
Set the default state of the prims (positions and orientations), that will be used after each reset.
Note
The default states will be set during post-reset (e.g., calling
.post_reset()orworld.reset()methods)- Parameters:
positions – Positions in the world frame of the prim. shape is (M, 3).
orientations – Quaternion orientations in the world frame of the prim. quaternion is scalar-first (w, x, y, z). shape is (M, 4).
indices – Indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # configure default states for all prims >>> positions = np.zeros((num_envs, 3)) >>> positions[:, 0] = np.arange(num_envs) >>> orientations = np.tile(np.array([1.0, 0.0, 0.0, 0.0]), (num_envs, 1)) >>> prims.set_default_state(positions=positions, orientations=orientations) >>> >>> # set default states during post-reset >>> prims.post_reset()
- set_local_poses(
- translations: ndarray | Tensor | array | None = None,
- orientations: ndarray | Tensor | array | None = None,
- indices: ndarray | list | Tensor | array | None = None,
Set prim poses in the view with respect to the local frame (the prim’s parent frame).
Warning
This method will change (teleport) the prim poses immediately to the indicated value
- Parameters:
translations – translations in the local frame of the prims (with respect to its parent prim). shape is (M, 3).
orientations – quaternion orientations in the local frame of the prims. quaternion is scalar-first (w, x, y, z). shape is (M, 4).
indices – indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Raises:
Exception – If the prim view is not valid.
Hint
This method belongs to the methods used to set the prim state
Example:
>>> # reposition all prims >>> positions = np.zeros((num_envs, 3)) >>> positions[:,0] = np.arange(num_envs) >>> orientations = np.tile(np.array([1.0, 0.0, 0.0, 0.0]), (num_envs, 1)) >>> prims.set_local_poses(positions, orientations) >>> >>> # reposition only the prims for the first, middle and last of the 5 envs >>> positions = np.zeros((3, 3)) >>> positions[:,1] = np.arange(3) >>> orientations = np.tile(np.array([1.0, 0.0, 0.0, 0.0]), (3, 1)) >>> prims.set_local_poses(positions, orientations, indices=np.array([0, 2, 4]))
- set_local_scales( ) None#
Set prim scales in the view with respect to the local frame (the prim’s parent frame).
- Parameters:
scales – scales to be applied to the prim’s dimensions in the view. shape is (M, 3).
indices – indices to specify which prims to manipulate. Shape (M,). Where M <= size of the encapsulated prims in the view.
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # set the scale for all prims. Since there are 5 envs, the scale is repeated 5 times >>> scales = np.tile(np.array([1.0, 0.75, 0.5]), (num_envs, 1)) >>> prims.set_local_scales(scales) >>> >>> # set the scale for the first, middle and last of the 5 envs >>> scales = np.tile(np.array([1.0, 0.75, 0.5]), (3, 1)) >>> prims.set_local_scales(scales, indices=np.array([0, 2, 4]))
- set_visibilities(
- visibilities: ndarray | Tensor | array,
- indices: ndarray | list | Tensor | array | None = None,
Set the visibilities of the prims in stage.
- Parameters:
visibilities – Flag to set the visibilities of the USD prims in stage. Shape (M,). Where M <= size of the encapsulated prims in the view.
indices – Indices to specify which prims to manipulate. Shape (M,).
- Raises:
Exception – If the prim view is not valid.
Example:
>>> # make all prims not visible in the stage >>> prims.set_visibilities(visibilities=[False] * num_envs)
- set_world_poses(
- positions: ndarray | Tensor | array | None = None,
- orientations: ndarray | Tensor | array | None = None,
- indices: ndarray | list | Tensor | array | None = None,
- usd: bool = True,
Set prim poses in the view with respect to the world’s frame.
Warning
This method will change (teleport) the prim poses immediately to the indicated value
- Parameters:
positions – Positions in the world frame of the prims. shape is (M, 3).
orientations – Quaternion orientations in the world frame of the prims. quaternion is scalar-first (w, x, y, z). shape is (M, 4).
indices – Indices to specify which prims to query. Shape (M,). Where M <= size of the encapsulated prims in the view.
usd – True to query from USD. Otherwise False to query from Fabric data.
- Raises:
Exception – If the prim view is not valid.
Hint
This method belongs to the methods used to set the prim state
Example:
>>> # reposition all prims in row (x-axis) >>> positions = np.zeros((num_envs, 3)) >>> positions[:,0] = np.arange(num_envs) >>> orientations = np.tile(np.array([1.0, 0.0, 0.0, 0.0]), (num_envs, 1)) >>> prims.set_world_poses(positions, orientations) >>> >>> # reposition only the prims for the first, middle and last of the 5 envs in column (y-axis) >>> positions = np.zeros((3, 3)) >>> positions[:,1] = np.arange(3) >>> orientations = np.tile(np.array([1.0, 0.0, 0.0, 0.0]), (3, 1)) >>> prims.set_world_poses(positions, orientations, indices=np.array([0, 2, 4]))
- property count: int#
Number of prims encapsulated in this view.
- Returns:
The number of prims encapsulated in this view.
Example:
>>> prims.count 5
- property initialized: bool#
Whether a physics simulation view is available for the prim view.
- Returns:
True if a physics simulation view is available from SimulationManager. False otherwise.
Example:
>>> # given an active physics simulation view >>> prims.initialized True
- property is_non_root_articulation_link: bool#
True if the prim corresponds to a non root link in an articulation.
- Returns:
True if the prim corresponds to a non root link in an articulation. Otherwise False.
- property name: str#
Name given to the prims view when instantiating it.
- Returns:
The name given to the prims view when instantiating it.
- property prim_paths: list[str]#
Prim paths in the stage encapsulated in this view.
- Returns:
The prim paths in the stage encapsulated in this view.
Example:
>>> prims.prim_paths ['/World/envs/env_0', '/World/envs/env_1', '/World/envs/env_2', '/World/envs/env_3', '/World/envs/env_4']
- property prims: list[pxr.Usd.Prim]#
USD Prim objects encapsulated in this view.
- Returns:
The USD Prim objects encapsulated in this view.
Example:
>>> prims.prims [Usd.Prim(</World/envs/env_0>), Usd.Prim(</World/envs/env_1>), Usd.Prim(</World/envs/env_2>), Usd.Prim(</World/envs/env_3>), Usd.Prim(</World/envs/env_4>)]
Single Prims#
Warning
The use of Single Prim classes (a particular case of the Prims classes for a single prim) is discouraged as they will be removed in future versions. Use Prims classes (formerly Prim Views) instead.
- class SingleArticulation(
- prim_path: str,
- name: str = 'articulation',
- position: Sequence[float] | None = None,
- translation: Sequence[float] | None = None,
- orientation: Sequence[float] | None = None,
- scale: Sequence[float] | None = None,
- visible: bool | None = None,
- reset_xform_properties: bool = True,
- articulation_controller: 'ArticulationController' | None = None,
Bases:
_SinglePrimWrapperHigh-level wrapper for dealing with one articulation prim and its attributes/properties.
Warning
The articulation object must be initialized in order to operate on it. See the
initializemethod for more details.- Parameters:
prim_path – Prim path of the Prim to encapsulate or create.
name – Short name to be used as a key by Scene class. Note: needs to be unique if the object is added to the Scene.
position – Position in the world frame of the prim. Shape is (3, ).
translation – Translation in the local frame of the prim (with respect to its parent prim). Shape is (3, ).
orientation – Quaternion orientation in the world or local frame of the prim (depends if translation or position is specified). Quaternion is scalar-first (w, x, y, z). Shape is (4, ).
scale – Local scale to be applied to the prim’s dimensions. Shape is (3, ).
visible – Set to False for an invisible prim in the stage while rendering.
reset_xform_properties – True if the prim does not have the right set of xform properties (i.e.: translate, orient and scale) ONLY and in that order. Set this parameter to False if the object was cloned using the cloner API in isaacsim.core.cloner.
articulation_controller – Custom ArticulationController that inherits from ArticulationController. If not provided, a basic ArticulationController is created.
Example:
>>> import isaacsim.core.utils.stage as stage_utils >>> from isaacsim.core.prims import SingleArticulation >>> >>> usd_path = "/home/<user>/Documents/Assets/Robots/FrankaRobotics/FrankaPanda/franka.usd" >>> prim_path = "/World/envs/env_0/panda" >>> >>> # load the Franka Panda robot USD file >>> stage_utils.add_reference_to_stage(usd_path, prim_path) >>> >>> # wrap the prim as an articulation >>> prim = SingleArticulation(prim_path=prim_path, name="franka_panda") >>> prim <isaacsim.core.prims.single_articulation.SingleArticulation object at 0x7fdd165bf520>
- apply_action(
- control_actions: ArticulationAction,
Apply joint positions, velocities and/or efforts to control an articulation.
- Parameters:
control_actions – Actions to be applied for next physics step.
Hint
High stiffness makes the joints snap faster and harder to the desired target, and higher damping smoothes but also slows down the joint’s movement to target
For position control, set relatively high stiffness and low damping (to reduce vibrations)
For velocity control, stiffness must be set to zero with a non-zero damping
For effort control, stiffness and damping must be set to zero
Example:
>>> from isaacsim.core.utils.types import ArticulationAction >>> >>> # move all the robot joints to the indicated position >>> action = ArticulationAction(joint_positions=np.array([0.0, -1.0, 0.0, -2.2, 0.0, 2.4, 0.8, 0.04, 0.04])) >>> prim.apply_action(action) >>> >>> # close the robot fingers: panda_finger_joint1 (7) and panda_finger_joint2 (8) to 0.0 >>> action = ArticulationAction(joint_positions=np.array([0.0, 0.0]), joint_indices=np.array([7, 8])) >>> prim.apply_action(action)
- apply_visual_material(
- visual_material: VisualMaterial,
- weaker_than_descendants: bool = False,
Apply visual material to the held prim and optionally its descendants.
- Parameters:
visual_material – Visual material to be applied to the held prim. Currently supports PreviewSurface, OmniPBR and OmniGlass.
weaker_than_descendants – True if the material shouldn’t override the descendants materials, otherwise False.
Example:
>>> from isaacsim.core.api.materials import OmniGlass >>> >>> # create a dark-red glass visual material >>> material = OmniGlass( ... prim_path="/World/material/glass", # path to the material prim to create ... ior=1.25, ... depth=0.001, ... thin_walled=False, ... color=np.array([0.5, 0.0, 0.0]) ... ) >>> prim.apply_visual_material(material)
- get_angular_velocity() ndarray#
Angular velocity of the root articulation prim.
- Returns:
3D angular velocity vector. Shape (3,).
Example:
>>> prim.get_angular_velocity() [0. 0. 0.]
- get_applied_action() ArticulationAction#
Last applied action.
- Returns:
Last applied action. Note that a dictionary is used as the object’s string representation.
Example:
>>> # last applied action: joint_positions -> [0.0, -1.0, 0.0, -2.2, 0.0, 2.4, 0.8, 0.04, 0.04] >>> prim.get_applied_action() {'joint_positions': [0.0, -1.0, 0.0, -2.200000047683716, 0.0, 2.4000000953674316, 0.800000011920929, 0.03999999910593033, 0.03999999910593033], 'joint_velocities': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 'joint_efforts': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}
- get_applied_joint_efforts(
- joint_indices: list | ndarray | None = None,
Get the efforts applied to the joints set by the
set_joint_effortsmethod.- Parameters:
joint_indices – Indices to specify which joints to read. If not specified, all joints are read.
- Raises:
Exception – If the handlers are not initialized.
- Returns:
All or selected articulation joint applied efforts.
Example
>>> # get all applied joint efforts >>> prim.get_applied_joint_efforts() [ 0. 0. 0. 0. 0. 0. 0. 0. 0.] >>> >>> # get finger applied efforts: panda_finger_joint1 (7) and panda_finger_joint2 (8) >>> prim.get_applied_joint_efforts(joint_indices=np.array([7, 8])) [0. 0.]
- get_applied_visual_material() VisualMaterial#
Return the current applied visual material if it was applied using apply_visual_material or is one of the following materials that was already applied before: PreviewSurface, OmniPBR and OmniGlass.
- Returns:
The current applied visual material if its type is currently supported.
Example:
>>> # given a visual material applied >>> prim.get_applied_visual_material() <isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f36263106a0>
- get_articulation_body_count() int#
Get the number of bodies (links) that make up the articulation.
- Returns:
Amount of bodies.
Example:
>>> prim.get_articulation_body_count() 12
- get_articulation_controller() ArticulationController#
Get the articulation controller.
Note
If no
articulation_controllerwas passed during class instantiation, a default controller of typeArticulationController(a Proportional-Derivative controller that can apply position targets, velocity targets and efforts) will be used- Returns:
Articulation controller.
Example:
>>> prim.get_articulation_controller() <isaacsim.core.api.controllers.articulation_controller.ArticulationController object at 0x7f04a0060190>
- get_default_state() XFormPrimState#
Get the default prim states (spatial position and orientation).
- Returns:
An object that contains the default state of the prim (position and orientation).
Example:
>>> state = prim.get_default_state() >>> state <isaacsim.core.utils.types.XFormPrimState object at 0x7f33addda650> >>> >>> state.position [-4.5299529e-08 -1.8347054e-09 -2.8610229e-08] >>> state.orientation [1. 0. 0. 0.]
- get_dof_index(dof_name: str) int#
Get a DOF index given its name.
- Parameters:
dof_name – Name of the DOF.
- Returns:
DOF index.
Example:
>>> prim.get_dof_index("panda_finger_joint2") 8
- get_enabled_self_collisions() uint8#
Get the enable self collisions flag (
physxArticulation:enabledSelfCollisions).- Returns:
Self collisions flag, with boolean values interpreted as integers.
Example:
>>> prim.get_enabled_self_collisions() 0
- get_joint_positions(
- joint_indices: list | ndarray | None = None,
Get the articulation joint positions.
- Parameters:
joint_indices – Indices to specify which joints to read. If not specified, all joints are read.
- Returns:
All or selected articulation joint positions.
Example
>>> # get all joint positions >>> prim.get_joint_positions() [ 1.1999920e-02 -5.6962633e-01 1.3480479e-08 -2.8105433e+00 6.8284894e-06 3.0301569e+00 7.3234749e-01 3.9912373e-02 3.9999999e-02] >>> >>> # get finger positions: panda_finger_joint1 (7) and panda_finger_joint2 (8) >>> prim.get_joint_positions(joint_indices=np.array([7, 8])) [0.03991237 3.9999999e-02]
- get_joint_velocities(
- joint_indices: list | ndarray | None = None,
Get the articulation joint velocities.
- Parameters:
joint_indices – Indices to specify which joints to read. If not specified, all joints are read.
- Returns:
All or selected articulation joint velocities.
Example
>>> # get all joint velocities >>> prim.get_joint_velocities() [ 1.91603772e-06 -7.67638255e-03 -2.19138826e-07 1.10636465e-02 -4.63412944e-05 3.48245539e-02 8.84692147e-02 5.40335372e-04 1.02849208e-05] >>> >>> # get finger velocities: panda_finger_joint1 (7) and panda_finger_joint2 (8) >>> prim.get_joint_velocities(joint_indices=np.array([7, 8])) [5.4033537e-04 1.0284921e-05]
- get_joints_default_state() JointsState#
Default joint states (positions and velocities).
- Returns:
An object that contains the default joint positions and velocities.
Example:
>>> state = prim.get_joints_default_state() >>> state <isaacsim.core.utils.types.JointsState object at 0x7f04a0061240> >>> >>> state.positions [ 0.012 -0.57000005 0. -2.81 0. 3.037 0.785398 0.04 0.04 ] >>> state.velocities [0. 0. 0. 0. 0. 0. 0. 0. 0.]
- get_joints_state() JointsState#
Current joint states (positions and velocities).
- Returns:
An object that contains the current joint positions and velocities.
Example:
>>> state = prim.get_joints_state() >>> state <isaacsim.core.utils.types.JointsState object at 0x7f02f6df57b0> >>> >>> state.positions [ 1.1999920e-02 -5.6962633e-01 1.3480479e-08 -2.8105433e+00 6.8284894e-06 3.0301569e+00 7.3234749e-01 3.9912373e-02 3.9999999e-02] >>> state.velocities [ 1.91603772e-06 -7.67638255e-03 -2.19138826e-07 1.10636465e-02 -4.63412944e-05 245539e-02 8.84692147e-02 5.40335372e-04 1.02849208e-05]
- get_linear_velocity() ndarray#
Linear velocity of the root articulation prim.
- Returns:
3D linear velocity vector. Shape (3,).
Example:
>>> prim.get_linear_velocity() [0. 0. 0.]
- get_local_pose() tuple[ndarray, ndarray]#
Get prim’s pose with respect to the local frame (the prim’s parent frame).
- Returns:
First index is the position in the local frame (with shape (3, )). Second index is quaternion orientation (with shape (4, )) in the local frame.
Example:
>>> # if the prim is in position (1.0, 0.5, 0.0) with respect to the world frame >>> position, orientation = prim.get_local_pose() >>> position [0. 0. 0.] >>> orientation [0. 0. 0.]
- get_local_scale() ndarray#
Get prim’s scale with respect to the local frame (the parent’s frame).
- Returns:
Scale applied to the prim’s dimensions in the local frame. shape is (3, ).
Example:
>>> prim.get_local_scale() [1. 1. 1.]
- get_measured_joint_efforts(
- joint_indices: list | ndarray | None = None,
Returns the efforts computed/measured by the physics solver of the joint forces in the DOF motion direction.
- Parameters:
joint_indices – Indices to specify which joints to read. If not specified, all joints are read.
- Raises:
Exception – If the handlers are not initialized.
- Returns:
All or selected articulation joint measured efforts.
Example
>>> # get all joint efforts >>> prim.get_measured_joint_efforts() [ 2.7897308e-06 -6.9083519e+00 -3.6398471e-06 1.9158335e+01 -4.3552645e-06 1.1866090e+00 -4.7079347e-06 3.2339853e-04 -3.2044132e-04] >>> >>> # get finger efforts: panda_finger_joint1 (7) and panda_finger_joint2 (8) >>> prim.get_measured_joint_efforts(joint_indices=np.array([7, 8])) [ 0.0003234 -0.00032044]
- get_measured_joint_forces(
- joint_indices: list | ndarray | None = None,
Get the measured joint reaction forces and torques (link incoming joint forces and torques) to external loads.
Forces and torques are reported in the local body reference frame (child joint frame of the link’s incoming joint).
Note
Since the name->index map for joints has not been exposed yet, it is possible to access the joint names and their indices through the articulation metadata.
prim._articulation_view._metadata.joint_names # list of names prim._articulation_view._metadata.joint_indices # dict of name: index
To retrieve a specific row for the link incoming joint force/torque use
joint_index + 1- Parameters:
joint_indices – Indices to specify which joints to read. If not specified, all joints are read.
- Raises:
Exception – If the handlers are not initialized.
- Returns:
Measured joint forces and torques. Shape is (num_joint + 1, 6). Row index 0 is the incoming joint of the base link. For the last dimension the first 3 values are for forces and the last 3 for torques.
Example
>>> # get all measured joint forces and torques >>> prim.get_measured_joint_forces() [[ 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00] [ 1.4995076e+02 4.2574748e-06 5.6364370e-04 4.8701895e-05 -6.9072924e+00 3.1881387e-05] [-2.8971717e-05 -1.0677823e+02 -6.8384506e+01 -6.9072924e+00 -5.4927128e-05 6.1222494e-07] [ 8.7120995e+01 -4.3871860e-05 -5.5795174e+01 5.3687054e-05 -2.4538563e+01 1.3333466e-05] [ 5.3519474e-05 -4.8109909e+01 6.0709282e+01 1.9157074e+01 -5.9258469e-05 8.2744418e-07] [-3.1691040e+01 2.3313689e-04 3.9990173e+01 -5.8968733e-05 -1.1863431e+00 2.2335558e-05] [-1.0809851e-04 1.5340537e+01 -1.5458489e+01 1.1863426e+00 6.1094368e-05 -1.5940281e-05] [-7.5418940e+00 -5.0814648e+00 -5.6512990e+00 -5.6385466e-05 3.8859999e-01 -3.4943256e-01] [ 4.7421460e+00 -3.1945827e+00 3.5528181e+00 5.5852943e-05 8.4794536e-03 7.6405057e-03] [ 4.0760727e+00 2.1640673e-01 -4.0513167e+00 -5.9565349e-04 1.1407082e-02 2.1432268e-06] [ 5.1680198e-03 -9.7754575e-02 -9.7093947e-02 -8.4155556e-12 -1.2910691e-12 -1.9347857e-11] [-5.1910793e-03 9.7588278e-02 -9.7106412e-02 8.4155573e-12 1.2910637e-12 -1.9347855e-11]] >>> >>> # get measured joint force and torque for the fingers >>> metadata = prim._articulation_view._metadata >>> joint_indices = 1 + np.array([ ... metadata.joint_indices["panda_finger_joint1"], ... metadata.joint_indices["panda_finger_joint2"], ... ]) >>> joint_indices [10 11] >>> prim.get_measured_joint_forces(joint_indices) [[ 5.1680198e-03 -9.7754575e-02 -9.7093947e-02 -8.4155556e-12 -1.2910691e-12 -1.9347857e-11] [-5.1910793e-03 9.7588278e-02 -9.7106412e-02 8.4155573e-12 1.2910637e-12 -1.9347855e-11]]
- get_sleep_threshold() float#
Get the threshold for articulations to enter a sleep state.
Search for Articulations and Sleeping in PhysX docs for more details.
- Returns:
Sleep threshold.
Example:
>>> prim.get_sleep_threshold() 0.005
- get_solver_position_iteration_count() int#
Get the solver (position) iteration count for the articulation.
The solver iteration count determines how accurately contacts, drives, and limits are resolved. Search for Solver Iteration Count in PhysX docs for more details.
- Returns:
Position iteration count.
Example:
>>> prim.get_solver_position_iteration_count() 32
- get_solver_velocity_iteration_count() int#
Get the solver (velocity) iteration count for the articulation.
The solver iteration count determines how accurately contacts, drives, and limits are resolved. Search for Solver Iteration Count in PhysX docs for more details.
- Returns:
Velocity iteration count.
Example:
>>> prim.get_solver_velocity_iteration_count() 32
- get_stabilization_threshold() float#
Get the mass-normalized kinetic energy below which the articulation may participate in stabilization.
Search for Stabilization Threshold in PhysX docs for more details.
- Returns:
Stabilization threshold.
Example:
>>> prim.get_stabilization_threshold() 0.0009999999
- get_visibility() bool#
Get the visibility of the prim in stage.
- Returns:
True if the prim is visible in stage. False otherwise.
Example:
>>> # get the visible state of a visible prim on the stage >>> prim.get_visibility() True
- get_world_pose() tuple[ndarray, ndarray]#
Get prim’s pose with respect to the world’s frame.
- Returns:
First index is the position in the world frame (with shape (3, )). Second index is quaternion orientation (with shape (4, )) in the world frame.
Example:
>>> # if the prim is in position (1.0, 0.5, 0.0) with respect to the world frame >>> position, orientation = prim.get_world_pose() >>> position [1. 0.5 0. ] >>> orientation [1. 0. 0. 0.]
- get_world_scale() ndarray#
Get prim’s scale with respect to the world’s frame.
- Returns:
Scale applied to the prim’s dimensions in the world frame. shape is (3, ).
Example:
>>> prim.get_world_scale() [1. 1. 1.]
- get_world_velocity() ndarray#
Get the articulation root velocity.
- Returns:
Current velocity of the root prim. Shape (6,).
- initialize(
- physics_sim_view: omni.physics.tensors.SimulationView = None,
Create a physics simulation view if not passed and an articulation view using PhysX tensor API.
Note
If the articulation has been added to the world scene (e.g.,
world.scene.add(prim)), it will be automatically initialized when the world is reset (e.g.,world.reset()).Warning
This method needs to be called after each hard reset (e.g., Stop + Play on the timeline) before interacting with any other class method.
- Parameters:
physics_sim_view – Current physics simulation view.
Example:
>>> prim.initialize()
- is_valid() bool#
Check if the prim path has a valid USD Prim at it.
- Returns:
True if the current prim path corresponds to a valid prim in stage. False otherwise.
Example:
>>> # given an existing and valid prim >>> prims.is_valid() True
- is_visual_material_applied() bool#
Check if there is a visual material applied.
- Returns:
True if there is a visual material applied. False otherwise.
Example:
>>> # given a visual material applied >>> prim.is_visual_material_applied() True
- post_reset() None#
Reset the prim to its default state (position and orientation).
Note
For an articulation, in addition to configuring the root prim’s default position and spatial orientation (defined via the
set_default_statemethod), the joint’s positions, velocities, and efforts (defined via theset_joints_default_statemethod) are imposed.Example:
>>> prim.post_reset()
- set_angular_velocity(
- velocity: ndarray,
Set the angular velocity of the root articulation prim.
Warning
This method will immediately set the articulation state
- Parameters:
velocity – 3D angular velocity vector. Shape (3,).
Hint
This method belongs to the methods used to set the articulation kinematic state:
set_linear_velocity,set_angular_velocity,set_joint_positions,set_joint_velocities,set_joint_effortsExample:
>>> prim.set_angular_velocity(np.array([0.1, 0.0, 0.0]))
- set_default_state( ) None#
Set the default state of the prim (position and orientation), that will be used after each reset.
- Parameters:
position – Position in the world frame of the prim. shape is (3, ). If None, the position is left unchanged.
orientation – Quaternion orientation in the world frame of the prim. Quaternion is scalar-first (w, x, y, z). shape is (4, ). If None, the orientation is left unchanged.
Example:
>>> # configure default state >>> prim.set_default_state(position=np.array([1.0, 0.5, 0.0]), orientation=np.array([1, 0, 0, 0])) >>> >>> # set default states during post-reset >>> prim.post_reset()
- set_enabled_self_collisions(flag: bool) None#
Set the enable self collisions flag (
physxArticulation:enabledSelfCollisions).- Parameters:
flag – Whether to enable self collisions.
Example:
>>> prim.set_enabled_self_collisions(True)
- set_joint_efforts(
- efforts: ndarray,
- joint_indices: list | ndarray | None = None,
Set the articulation joint efforts.
Note
This method can be used for effort control. For this purpose, there must be no joint drive or the stiffness and damping must be set to zero.
- Parameters:
efforts – Articulation joint efforts.
joint_indices – Indices to specify which joints to manipulate. If not specified, all joints are manipulated.
Hint
This method belongs to the methods used to set the articulation kinematic state:
set_linear_velocity,set_angular_velocity,set_joint_positions,set_joint_velocities,set_joint_effortsExample
>>> # set all the robot joint efforts to 0.0 >>> prim.set_joint_efforts(np.array([0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0])) >>> >>> # set only the fingers efforts: panda_finger_joint1 (7) and panda_finger_joint2 (8) to 10 >>> prim.set_joint_efforts(np.array([10, 10]), joint_indices=np.array([7, 8]))
- set_joint_positions(
- positions: ndarray,
- joint_indices: list | ndarray | None = None,
Set the articulation joint positions.
Warning
This method will immediately set (teleport) the affected joints to the indicated value. Use the
apply_actionmethod to control robot joints.- Parameters:
positions – Articulation joint positions.
joint_indices – Indices to specify which joints to manipulate. If not specified, all joints are manipulated.
Hint
This method belongs to the methods used to set the articulation kinematic state:
set_linear_velocity,set_angular_velocity,set_joint_positions,set_joint_velocities,set_joint_effortsExample
>>> # set all the robot joints >>> prim.set_joint_positions(np.array([0.0, -1.0, 0.0, -2.2, 0.0, 2.4, 0.8, 0.04, 0.04])) >>> >>> # set only the fingers in closed position: panda_finger_joint1 (7) and panda_finger_joint2 (8) to 0.0 >>> prim.set_joint_positions(np.array([0.04, 0.04]), joint_indices=np.array([7, 8]))
- set_joint_velocities(
- velocities: ndarray,
- joint_indices: list | ndarray | None = None,
Set the articulation joint velocities.
Warning
This method will immediately set the affected joints to the indicated value. Use the
apply_actionmethod to control robot joints.- Parameters:
velocities – Articulation joint velocities.
joint_indices – Indices to specify which joints to manipulate. If not specified, all joints are manipulated.
Hint
This method belongs to the methods used to set the articulation kinematic state:
set_linear_velocity,set_angular_velocity,set_joint_positions,set_joint_velocities,set_joint_effortsExample
>>> # set all the robot joint velocities to 0.0 >>> prim.set_joint_velocities(np.array([0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0])) >>> >>> # set only the fingers velocities: panda_finger_joint1 (7) and panda_finger_joint2 (8) to -0.01 >>> prim.set_joint_velocities(np.array([-0.01, -0.01]), joint_indices=np.array([7, 8]))
- set_joints_default_state(
- positions: ndarray | None = None,
- velocities: ndarray | None = None,
- efforts: ndarray | None = None,
Set the joint default states (positions, velocities and/or efforts) to be applied after each reset.
Note
The default states will be set during post-reset (e.g., calling
.post_reset()orworld.reset()methods)- Parameters:
positions – Joint positions.
velocities – Joint velocities.
efforts – Joint efforts.
Example:
>>> # configure default joint states >>> prim.set_joints_default_state( ... positions=np.array([0.0, -1.0, 0.0, -2.2, 0.0, 2.4, 0.8, 0.04, 0.04]), ... velocities=np.zeros(shape=(prim.num_dof,)), ... efforts=np.zeros(shape=(prim.num_dof,)) ... ) >>> >>> # set default states during post-reset >>> prim.post_reset()
- set_linear_velocity(
- velocity: ndarray,
Set the linear velocity of the root articulation prim.
Warning
This method will immediately set the articulation state
- Parameters:
velocity – 3D linear velocity vector. Shape (3,).
Hint
This method belongs to the methods used to set the articulation kinematic state:
set_linear_velocity,set_angular_velocity,set_joint_positions,set_joint_velocities,set_joint_effortsExample:
>>> prim.set_linear_velocity(np.array([0.1, 0.0, 0.0]))
- set_local_pose( ) None#
Set prim’s pose with respect to the local frame (the prim’s parent frame).
Warning
This method will change (teleport) the prim pose immediately to the indicated value
- Parameters:
translation – Translation in the local frame of the prim (with respect to its parent prim). shape is (3, ).
orientation – Quaternion orientation in the local frame of the prim. quaternion is scalar-first (w, x, y, z). shape is (4, ).
Hint
This method belongs to the methods used to set the prim state
Example:
>>> prim.set_local_pose(translation=np.array([1.0, 0.5, 0.0]), orientation=np.array([1., 0., 0., 0.]))
- set_local_scale(
- scale: Sequence[float] | None,
Set prim’s scale with respect to the local frame (the prim’s parent frame).
- Parameters:
scale – Scale to be applied to the prim’s dimensions. shape is (3, ).
Example:
>>> # scale prim 10 times smaller >>> prim.set_local_scale(np.array([0.1, 0.1, 0.1]))
- set_sleep_threshold(threshold: float) None#
Set the threshold for articulations to enter a sleep state.
Search for Articulations and Sleeping in PhysX docs for more details.
- Parameters:
threshold – Sleep threshold.
Example:
>>> prim.set_sleep_threshold(0.01)
- set_solver_position_iteration_count(
- count: int,
Set the solver (position) iteration count for the articulation.
The solver iteration count determines how accurately contacts, drives, and limits are resolved. Search for Solver Iteration Count in PhysX docs for more details.
Warning
Setting a higher number of iterations may improve the fidelity of the simulation, although it may affect its performance.
- Parameters:
count – Position iteration count.
Example:
>>> prim.set_solver_position_iteration_count(64)
- set_solver_velocity_iteration_count(
- count: int,
Set the solver (velocity) iteration count for the articulation.
The solver iteration count determines how accurately contacts, drives, and limits are resolved. Search for Solver Iteration Count in PhysX docs for more details.
Warning
Setting a higher number of iterations may improve the fidelity of the simulation, although it may affect its performance.
- Parameters:
count – Velocity iteration count.
Example:
>>> prim.set_solver_velocity_iteration_count(64)
- set_stabilization_threshold(
- threshold: float,
Set the mass-normalized kinetic energy below which the articulation may participate in stabilization.
Search for Stabilization Threshold in PhysX docs for more details.
- Parameters:
threshold – Stabilization threshold.
Example:
>>> prim.set_stabilization_threshold(0.005)
- set_visibility(visible: bool) None#
Set the visibility of the prim in stage.
- Parameters:
visible – Flag to set the visibility of the USD prim in stage.
Example:
>>> # make prim not visible in the stage >>> prim.set_visibility(visible=False)
- set_world_pose( ) None#
Set prim’s pose with respect to the world’s frame.
Warning
This method will change (teleport) the prim pose immediately to the indicated value
- Parameters:
position – Position in the world frame of the prim. shape is (3, ).
orientation – Quaternion orientation in the world frame of the prim. quaternion is scalar-first (w, x, y, z). shape is (4, ).
Hint
This method belongs to the methods used to set the prim state
Example:
>>> prim.set_world_pose(position=np.array([1.0, 0.5, 0.0]), orientation=np.array([1., 0., 0., 0.]))
- set_world_velocity(
- velocity: ndarray,
Set the articulation root velocity.
- Parameters:
velocity – Linear and angular velocity to set on the root prim. Shape (6,).
- property dof_names: list[str]#
Prim names for each DOF.
- Returns:
Prim names.
Example:
>>> prim.dof_names ['panda_joint1', 'panda_joint2', 'panda_joint3', 'panda_joint4', 'panda_joint5', 'panda_joint6', 'panda_joint7', 'panda_finger_joint1', 'panda_finger_joint2']
- property dof_properties: ndarray#
Articulation DOF properties.
DOF properties# Index
Property name
Description
0
typeDOF type: invalid/unknown/uninitialized (0), rotation (1), translation (2)
1
hasLimitsWhether the DOF has limits
2
lowerLower DOF limit (in radians or meters)
3
upperUpper DOF limit (in radians or meters)
4
driveModeDrive mode for the DOF: force (1), acceleration (2)
5
maxVelocityMaximum DOF velocity. In radians/s, or stage_units/s
6
maxEffortMaximum DOF effort. In N or N*stage_units
7
stiffnessDOF stiffness
8
dampingDOF damping
- Returns:
Named NumPy array of shape (num_dof, 9).
Example:
>>> # get properties for all DOFs >>> prim.dof_properties [(1, True, -2.8973, 2.8973, 1, 1.0000000e+01, 5220., 60000., 3000.) (1, True, -1.7628, 1.7628, 1, 1.0000000e+01, 5220., 60000., 3000.) (1, True, -2.8973, 2.8973, 1, 5.9390470e+36, 5220., 60000., 3000.) (1, True, -3.0718, -0.0698, 1, 5.9390470e+36, 5220., 60000., 3000.) (1, True, -2.8973, 2.8973, 1, 5.9390470e+36, 720., 25000., 3000.) (1, True, -0.0175, 3.7525, 1, 5.9390470e+36, 720., 15000., 3000.) (1, True, -2.8973, 2.8973, 1, 1.0000000e+01, 720., 5000., 3000.) (2, True, 0. , 0.04 , 1, 3.4028235e+38, 720., 6000., 1000.) (2, True, 0. , 0.04 , 1, 3.4028235e+38, 720., 6000., 1000.)] >>> >>> # property names >>> prim.dof_properties.dtype.names ('type', 'hasLimits', 'lower', 'upper', 'driveMode', 'maxVelocity', 'maxEffort', 'stiffness', 'damping') >>> >>> # get DOF upper limits >>> prim.dof_properties["upper"] [ 2.8973 1.7628 2.8973 -0.0698 2.8973 3.7525 2.8973 0.04 0.04 ] >>> >>> # get the last DOF (panda_finger_joint2) upper limit >>> prim.dof_properties["upper"][8] # or prim.dof_properties[8][3] 0.04
- property handles_initialized: bool#
Whether the articulation handler is initialized.
- Returns:
Whether the handler was initialized.
Example:
>>> prim.handles_initialized True
- property name: str | None#
Name given to the prim when instantiating it.
- Returns:
Name given to the prim when instantiating it. Otherwise None.
- property non_root_articulation_link: bool#
Whether the prim is a non-root articulation link.
- Returns:
True if the prim itself is a non-root link.
Example:
>>> # for a wrapped articulation (where the root prim has the Physics Articulation Root property applied) >>> prim.non_root_articulation_link False
- property num_bodies: int#
Number of articulation links.
- Returns:
Number of links.
Example:
>>> prim.num_bodies 9
- property num_dof: int#
Number of degrees of freedom of the articulation.
- Returns:
Amount of DOFs.
Example:
>>> prim.num_dof 9
- property prim: pxr.Usd.Prim#
USD Prim object that this object holds.
- Returns:
USD Prim object that this object holds.
- property prim_path: str#
Prim path in the stage.
- Returns:
Prim path in the stage.
- class SingleClothPrim(*args: Any, **kwargs: Any)#
Bases:
objectDeprecated single cloth prim class. No longer available.
- Parameters:
*args – Unused positional arguments.
**kwargs – Unused keyword arguments.
- Raises:
NotImplementedError – Always raised because SingleClothPrim is no longer available.
- class SingleDeformablePrim(*args: Any, **kwargs: Any)#
Bases:
objectDeprecated single deformable prim class. No longer available.
- Parameters:
*args – Unused positional arguments.
**kwargs – Unused keyword arguments.
- Raises:
NotImplementedError – Always raised because SingleDeformablePrim is no longer available.
- class SingleGeometryPrim(
- prim_path: str,
- name: str = 'geometry_prim',
- position: Sequence[float] | None = None,
- translation: Sequence[float] | None = None,
- orientation: Sequence[float] | None = None,
- scale: Sequence[float] | None = None,
- visible: bool | None = None,
- reset_xform_properties: bool = True,
- collision: bool = False,
- track_contact_forces: bool = False,
- prepare_contact_sensor: bool = False,
- disable_stablization: bool = True,
- contact_filter_prim_paths_expr: list[str] | None = None,
Bases:
_SinglePrimWrapperHigh level wrapper to deal with a Geom prim (only one geometry prim) and its attributes/properties.
The
prim_pathshould correspond to type UsdGeom.Cube, UsdGeom.Capsule, UsdGeom.Cone, UsdGeom.Cylinder, UsdGeom.Sphere or UsdGeom.Mesh.Warning
The geometry object must be initialized in order to be able to operate on it. See the
initializemethod for more details.Warning
Some methods require the prim to have the PhysX Collision API. Instantiate the class with the
collisionparameter set to True to apply the collision API.- Parameters:
prim_path – Prim path of the prim to encapsulate or create.
name – Short name to be used as a key by Scene class. Note: it must be unique if the object is added to the Scene.
position – Position in the world frame of the prim. Shape is (3, ).
translation – Translation in the local frame of the prim with respect to its parent prim. Shape is (3, ).
orientation – Quaternion orientation in the world or local frame of the prim depending on whether translation or position is specified. Quaternion is scalar-first (w, x, y, z). Shape is (4, ).
scale – Local scale to be applied to the prim’s dimensions. Shape is (3, ).
visible – Set to False for an invisible prim in the stage while rendering.
reset_xform_properties – True if the prims do not have the right set of xform properties (i.e., translate, orient and scale) ONLY and in that order. Set this parameter to False if the object was cloned using the cloner API in isaacsim.core.cloner.
collision – Set to True if the geometry should have a collider (i.e., not only a visual geometry).
track_contact_forces – If enabled, the view will track the net contact forces on each geometry prim in the view. Note that the collision flag should be set to True to report contact forces.
prepare_contact_sensor – Applies contact reporter API to the prim if it does not already have one.
disable_stablization – Disables the contact stabilization parameter in the physics context.
contact_filter_prim_paths_expr – A list of filter expressions that allow tracking contact forces between the geometry prim and this subset through get_contact_force_matrix().
Example:
>>> import isaacsim.core.utils.stage as stage_utils >>> from isaacsim.core.prims import SingleGeometryPrim >>> >>> # create a Cube at the given path >>> stage_utils.get_current_stage().DefinePrim("/World/Xform", "Xform") >>> stage_utils.get_current_stage().DefinePrim("/World/Xform/Cube", "Cube") >>> >>> # wrap the prim as geometry prim >>> prim = SingleGeometryPrim("/World/Xform", collision=True) >>> prim <isaacsim.core.prims.single_geometry_prim.SingleGeometryPrim object at 0x7fe960247400>
- apply_physics_material(
- physics_material: PhysicsMaterial,
- weaker_than_descendants: bool = False,
Apply physics material to the held prim and optionally its descendants.
- Parameters:
physics_material – Physics material to apply to the held prim. Use it to define friction, restitution, and related values. If a physics material is not defined, PhysX defaults are used.
weaker_than_descendants – Whether the material should not override descendant materials.
Example
>>> from isaacsim.core.api.materials import PhysicsMaterial >>> >>> # create a rigid body physical material >>> material = PhysicsMaterial( ... prim_path="/World/physics_material/aluminum", # path to the material prim to create ... dynamic_friction=0.4, ... static_friction=1.1, ... restitution=0.1 ... ) >>> prim.apply_physics_material(material)
- apply_visual_material(
- visual_material: VisualMaterial,
- weaker_than_descendants: bool = False,
Apply visual material to the held prim and optionally its descendants.
- Parameters:
visual_material – Visual material to be applied to the held prim. Currently supports PreviewSurface, OmniPBR and OmniGlass.
weaker_than_descendants – True if the material shouldn’t override the descendants materials, otherwise False.
Example:
>>> from isaacsim.core.api.materials import OmniGlass >>> >>> # create a dark-red glass visual material >>> material = OmniGlass( ... prim_path="/World/material/glass", # path to the material prim to create ... ior=1.25, ... depth=0.001, ... thin_walled=False, ... color=np.array([0.5, 0.0, 0.0]) ... ) >>> prim.apply_visual_material(material)
- get_applied_physics_material() PhysicsMaterial#
Return the current applied physics material, whether it was applied using apply_physics_material or not.
- Returns:
The current applied physics material.
Example
>>> # given a physics material applied >>> prim.get_applied_physics_material() <isaacsim.core.api.materials.physics_material.PhysicsMaterial object at 0x7fb66c30cd30>
- get_applied_visual_material() VisualMaterial#
Return the current applied visual material if it was applied using apply_visual_material or is one of the following materials that was already applied before: PreviewSurface, OmniPBR and OmniGlass.
- Returns:
The current applied visual material if its type is currently supported.
Example:
>>> # given a visual material applied >>> prim.get_applied_visual_material() <isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f36263106a0>
- get_collision_approximation() str#
Get the collision approximation.
Approximation
Full name
Description
"none"Triangle Mesh
The mesh geometry is used directly as a collider without any approximation
"convexDecomposition"Convex Decomposition
A convex mesh decomposition is performed. This results in a set of convex mesh colliders
"convexHull"Convex Hull
A convex hull of the mesh is generated and used as the collider
"boundingSphere"Bounding Sphere
A bounding sphere is computed around the mesh and used as a collider
"boundingCube"Bounding Cube
An optimally fitting box collider is computed around the mesh
"meshSimplification"Mesh Simplification
A mesh simplification step is performed, resulting in a simplified triangle mesh collider
"sdf"SDF Mesh
SDF (Signed-Distance-Field) use high-detail triangle meshes as collision shape
"sphereFill"Sphere Approximation
A sphere mesh decomposition is performed. This results in a set of sphere colliders
- Returns:
Approximation used for collision.
Example
>>> prim.get_collision_approximation() none
- get_collision_enabled() bool#
Check if the Collision API is enabled.
- Returns:
True if the Collision API is enabled. Otherwise False.
Example
>>> prim.get_collision_enabled() True
- get_contact_force_data(
- dt: float = 1.0,
Return detailed contact forces between the prim and filter prims if initialized with filter_paths_expr.
This includes normal contact forces, normal directions, contact points, and separations. The number of contacts per pair is determined from a static tensor of dimension (self._contact_view.num_filters), while the starting index of the associated contact in the above tensors is determined from another static tensor of dimension (self._contact_view.num_filters).
- Parameters:
dt – Time step multiplier to convert the underlying impulses to forces. A value of 1.0 leaves the result as contact impulses.
- Returns:
A set of buffers for normal forces with shape (max_contact_count, 1), points with shape (max_contact_count, 3), normals with shape (max_contact_count, 3), and distances with shape (max_contact_count, 1), as well as two tensors with shape (self.num_filters) to indicate the starting index and the number of contact data points per pair in the aforementioned buffers.
- get_contact_force_matrix(
- dt: float = 1.0,
Return contact forces between the prim and filter prims if initialized with filter_paths_expr.
The returned data has dimension (self._contact_view.num_filters, 3), where num_filters is determined according to filter_paths_expr.
- Parameters:
dt – Time step multiplier to convert the underlying impulses to forces. A value of 1.0 leaves the result as contact impulses.
- Returns:
Net contact forces of the prim with shape (self._geometry_prim_view._contact_view.num_filters, 3).
- get_contact_offset() float#
Get the contact offset.
Shapes whose distance is less than the sum of their contact offset values will generate contacts.
Search for Advanced Collision Detection in PhysX docs for more details.
- Returns:
Contact offset of the collision shape. Default value is -inf, means default is picked by simulation.
Example:
>>> prim.get_contact_offset() -inf
- get_default_state() XFormPrimState#
Get the default prim states (spatial position and orientation).
- Returns:
An object that contains the default state of the prim (position and orientation).
Example:
>>> state = prim.get_default_state() >>> state <isaacsim.core.utils.types.XFormPrimState object at 0x7f33addda650> >>> >>> state.position [-4.5299529e-08 -1.8347054e-09 -2.8610229e-08] >>> state.orientation [1. 0. 0. 0.]
- get_friction_data(
- dt: float = 1.0,
Return detailed friction forces between the prim and filter prims if initialized with filter_paths_expr.
This includes tangential forces and points. The number of points per pair is determined from a static tensor of dimension (self._contact_view.num_filters), while the starting index of the associated contact in the above tensors is determined from another static tensor of dimension (self._contact_view.num_filters).
- Parameters:
dt – Time step multiplier to convert the underlying impulses to forces. A value of 1.0 leaves the result as contact impulses.
- Returns:
A set of buffers for normal forces with shape (max_contact_count, 1), points with shape (max_contact_count, 3), as well as two tensors with shape (self.num_filters) to indicate the starting index and the number of contact data points per pair in the aforementioned buffers.
- get_local_pose() tuple[ndarray, ndarray]#
Get prim’s pose with respect to the local frame (the prim’s parent frame).
- Returns:
First index is the position in the local frame (with shape (3, )). Second index is quaternion orientation (with shape (4, )) in the local frame.
Example:
>>> # if the prim is in position (1.0, 0.5, 0.0) with respect to the world frame >>> position, orientation = prim.get_local_pose() >>> position [0. 0. 0.] >>> orientation [0. 0. 0.]
- get_local_scale() ndarray#
Get prim’s scale with respect to the local frame (the parent’s frame).
- Returns:
Scale applied to the prim’s dimensions in the local frame. shape is (3, ).
Example:
>>> prim.get_local_scale() [1. 1. 1.]
- get_min_torsional_patch_radius() float#
Get the minimum radius of the contact patch used to apply torsional friction.
Search for “Torsional Patch Radius” in PhysX docs for more details.
- Returns:
Minimum radius of the contact patch used to apply torsional friction. Allowed range [0, max_float].
Example:
>>> prim.get_min_torsional_patch_radius() 0.0
- get_net_contact_forces(
- dt: float = 1.0,
Return the net contact forces on the prim if contact forces are tracked.
The returned data has dimension (1, 3).
- Parameters:
dt – Time step multiplier to convert the underlying impulses to forces. A value of 1.0 leaves the result as contact impulses.
- Returns:
Net contact forces of the prim with shape (3).
- get_rest_offset() float#
Get the rest offset.
Two shapes will come to rest at a distance equal to the sum of their rest offset values. If the rest offset is 0, they should converge to touching exactly.
Search for Advanced Collision Detection in PhysX docs for more details.
- Returns:
Rest offset of the collision shape.
Example:
>>> prim.get_rest_offset() -inf
- get_torsional_patch_radius() float#
Get the radius of the contact patch used to apply torsional friction.
Search for “Torsional Patch Radius” in PhysX docs for more details.
- Returns:
Radius of the contact patch used to apply torsional friction. Allowed range [0, max_float].
Example:
>>> prim.get_torsional_patch_radius() 0.0
- get_visibility() bool#
Get the visibility of the prim in stage.
- Returns:
True if the prim is visible in stage. False otherwise.
Example:
>>> # get the visible state of a visible prim on the stage >>> prim.get_visibility() True
- get_world_pose() tuple[ndarray, ndarray]#
Get prim’s pose with respect to the world’s frame.
- Returns:
First index is the position in the world frame (with shape (3, )). Second index is quaternion orientation (with shape (4, )) in the world frame.
Example:
>>> # if the prim is in position (1.0, 0.5, 0.0) with respect to the world frame >>> position, orientation = prim.get_world_pose() >>> position [1. 0.5 0. ] >>> orientation [1. 0. 0. 0.]
- get_world_scale() ndarray#
Get prim’s scale with respect to the world’s frame.
- Returns:
Scale applied to the prim’s dimensions in the world frame. shape is (3, ).
Example:
>>> prim.get_world_scale() [1. 1. 1.]
- initialize(physics_sim_view: object = None) None#
Create a physics simulation view if not passed and using PhysX tensor API.
Note
If the prim has been added to the world scene (e.g.,
world.scene.add(prim)), it will be automatically initialized when the world is reset (e.g.,world.reset()).- Parameters:
physics_sim_view – Current physics simulation view.
Example:
>>> prim.initialize()
- is_valid() bool#
Check if the prim path has a valid USD Prim at it.
- Returns:
True if the current prim path corresponds to a valid prim in stage. False otherwise.
Example:
>>> # given an existing and valid prim >>> prims.is_valid() True
- is_visual_material_applied() bool#
Check if there is a visual material applied.
- Returns:
True if there is a visual material applied. False otherwise.
Example:
>>> # given a visual material applied >>> prim.is_visual_material_applied() True
- post_reset() None#
Reset the prim to its default state (position and orientation).
Note
For an articulation, in addition to configuring the root prim’s default position and spatial orientation (defined via the
set_default_statemethod), the joint’s positions, velocities, and efforts (defined via theset_joints_default_statemethod) are imposed.Example:
>>> prim.post_reset()
- set_collision_approximation(
- approximation_type: str,
Set the collision approximation.
Approximation
Full name
Description
"none"Triangle Mesh
The mesh geometry is used directly as a collider without any approximation
"convexDecomposition"Convex Decomposition
A convex mesh decomposition is performed. This results in a set of convex mesh colliders
"convexHull"Convex Hull
A convex hull of the mesh is generated and used as the collider
"boundingSphere"Bounding Sphere
A bounding sphere is computed around the mesh and used as a collider
"boundingCube"Bounding Cube
An optimally fitting box collider is computed around the mesh
"meshSimplification"Mesh Simplification
A mesh simplification step is performed, resulting in a simplified triangle mesh collider
"sdf"SDF Mesh
SDF (Signed-Distance-Field) uses high-detail triangle meshes as collision shape
"sphereFill"Sphere Approximation
A sphere mesh decomposition is performed. This results in a set of sphere colliders
Note
Use Convex Decomposition or SDF (Signed-Distance-Field) tri-meshes to capture details better
Warning
Switching to Convex Decomposition or SDF (Signed-Distance-Field) will have a simulation performance impact due to higher computational cost
- Parameters:
approximation_type – Approximation used for collision.
Example:
>>> prim.set_collision_approximation("convexDecomposition")
- set_collision_enabled(enabled: bool) None#
Enable or disable the Collision API.
- Parameters:
enabled – Whether to enable the Collision API.
Example
>>> # disable collisions >>> prim.set_collision_enabled(False)
- set_contact_offset(offset: float) None#
Set the contact offset.
Shapes whose distance is less than the sum of their contact offset values will generate contacts.
Search for Advanced Collision Detection in PhysX docs for more details.
Warning
The contact offset must be positive and greater than the rest offset
- Parameters:
offset – Contact offset of a collision shape. Allowed range [maximum(0, rest_offset), 0]. Default value is -inf, means default is picked by simulation based on the shape extent.
Example:
>>> prim.set_contact_offset(0.02)
- set_default_state( ) None#
Set the default state of the prim (position and orientation), that will be used after each reset.
- Parameters:
position – Position in the world frame of the prim. shape is (3, ). If None, the position is left unchanged.
orientation – Quaternion orientation in the world frame of the prim. Quaternion is scalar-first (w, x, y, z). shape is (4, ). If None, the orientation is left unchanged.
Example:
>>> # configure default state >>> prim.set_default_state(position=np.array([1.0, 0.5, 0.0]), orientation=np.array([1, 0, 0, 0])) >>> >>> # set default states during post-reset >>> prim.post_reset()
- set_local_pose( ) None#
Set prim’s pose with respect to the local frame (the prim’s parent frame).
Warning
This method will change (teleport) the prim pose immediately to the indicated value
- Parameters:
translation – Translation in the local frame of the prim (with respect to its parent prim). shape is (3, ).
orientation – Quaternion orientation in the local frame of the prim. quaternion is scalar-first (w, x, y, z). shape is (4, ).
Hint
This method belongs to the methods used to set the prim state
Example:
>>> prim.set_local_pose(translation=np.array([1.0, 0.5, 0.0]), orientation=np.array([1., 0., 0., 0.]))
- set_local_scale(
- scale: Sequence[float] | None,
Set prim’s scale with respect to the local frame (the prim’s parent frame).
- Parameters:
scale – Scale to be applied to the prim’s dimensions. shape is (3, ).
Example:
>>> # scale prim 10 times smaller >>> prim.set_local_scale(np.array([0.1, 0.1, 0.1]))
- set_min_torsional_patch_radius(
- radius: float,
Set the minimum radius of the contact patch used to apply torsional friction.
Search for “Torsional Patch Radius” in PhysX docs for more details.
- Parameters:
radius – Minimum radius of the contact patch used to apply torsional friction. Allowed range [0, max_float].
Example:
>>> prim.set_min_torsional_patch_radius(0.05)
- set_rest_offset(offset: float) None#
Set the rest offset.
Two shapes will come to rest at a distance equal to the sum of their rest offset values. If the rest offset is 0, they should converge to touching exactly.
Search for Advanced Collision Detection in PhysX docs for more details.
Warning
The contact offset must be positive and greater than the rest offset
- Parameters:
offset – Rest offset of a collision shape. Allowed range [-max_float, contact_offset]. Default value is -inf, means default is picked by simulation. For rigid bodies its zero.
Example:
>>> prim.set_rest_offset(0.01)
- set_torsional_patch_radius(radius: float) None#
Set the radius of the contact patch used to apply torsional friction.
Search for “Torsional Patch Radius” in PhysX docs for more details.
- Parameters:
radius – Radius of the contact patch used to apply torsional friction. Allowed range [0, max_float].
Example:
>>> prim.set_torsional_patch_radius(0.1)
- set_visibility(visible: bool) None#
Set the visibility of the prim in stage.
- Parameters:
visible – Flag to set the visibility of the USD prim in stage.
Example:
>>> # make prim not visible in the stage >>> prim.set_visibility(visible=False)
- set_world_pose( ) None#
Set prim’s pose with respect to the world’s frame.
Warning
This method will change (teleport) the prim pose immediately to the indicated value
- Parameters:
position – Position in the world frame of the prim. shape is (3, ).
orientation – Quaternion orientation in the world frame of the prim. quaternion is scalar-first (w, x, y, z). shape is (4, ).
Hint
This method belongs to the methods used to set the prim state
Example:
>>> prim.set_world_pose(position=np.array([1.0, 0.5, 0.0]), orientation=np.array([1., 0., 0., 0.]))
- property geom: pxr.UsdGeom.Gprim#
USD geometry object encapsulated.
- Returns:
USD geometry object encapsulated.
- property name: str | None#
Name given to the prim when instantiating it.
- Returns:
Name given to the prim when instantiating it. Otherwise None.
- property non_root_articulation_link: bool#
Whether the prim is a non-root articulation link.
- Returns:
True if the prim itself is a non-root link.
Example:
>>> # for a wrapped articulation (where the root prim has the Physics Articulation Root property applied) >>> prim.non_root_articulation_link False
- property prim: pxr.Usd.Prim#
USD Prim object that this object holds.
- Returns:
USD Prim object that this object holds.
- property prim_path: str#
Prim path in the stage.
- Returns:
Prim path in the stage.
- class SingleParticleSystem(
- prim_path: str,
- name: str | None = 'particle_system',
- particle_system_enabled: bool | None = None,
- simulation_owner: str | None = None,
- contact_offset: float | None = None,
- rest_offset: float | None = None,
- particle_contact_offset: float | None = None,
- solid_rest_offset: float | None = None,
- fluid_rest_offset: float | None = None,
- enable_ccd: bool | None = None,
- solver_position_iteration_count: float | None = None,
- max_depenetration_velocity: float | None = None,
- wind: Sequence[float] = None,
- max_neighborhood: int | None = None,
- max_velocity: float | None = None,
- global_self_collision_enabled: bool | None = None,
- non_particle_collision_enabled: bool | None = None,
Bases:
objectA wrapper around PhysX particle system.
PhysX uses GPU-accelerated position-based dynamics (PBD) particle simulation [1]. The particle system can be used to simulate fluids, cloth, and inflatables [2].
The wrapper is useful for creating and setting solver parameters common to the particle objects associated with the system. The particle system’s solver parameters cannot be changed once the scene is playing.
Initializes and applies PhysxSchema.PhysxParticleSystem to the prim at prim_path.
All arguments are accepted as
None. In this case, they either have the default values from PhysxParticleSystem schema (in case a new particle system is created), or the values present in the existing particle system.Note
CPU simulation of particles is not supported. PhysX must be simulated with GPU enabled.
- Reference:
[1] https://mmacklin.com/pbf_sig_preprint.pdf [2] https://docs.omniverse.nvidia.com/prod_extensions/prod_extensions/ext_physics.html#particle-simulation
- Parameters:
prim_path – The path to the particle system.
name – Name given to the prim when instantiating it.
particle_system_enabled – Whether to enable or disable the particle system.
simulation_owner – Single PhysicsScene that simulates this particle system.
contact_offset – Contact offset used for collisions with non-particle objects such as rigid or deformable bodies.
rest_offset – Rest offset used for collisions with non-particle objects such as rigid or deformable bodies.
particle_contact_offset – Contact offset used for interactions between particles. Must be larger than solid and fluid rest offsets.
solid_rest_offset – Rest offset used for solid-solid or solid-fluid particle interactions. Must be smaller than particle contact offset.
fluid_rest_offset – Rest offset used for fluid-fluid particle interactions. Must be smaller than particle contact offset.
enable_ccd – Enable continuous collision detection for particles to help avoid tunneling effects.
solver_position_iteration_count – Number of solver iterations for position.
max_depenetration_velocity – The maximum velocity permitted to be introduced by the solver to depenetrate intersecting particles.
wind – The wind applied to the current particle system.
max_neighborhood – The particle neighborhood size.
max_velocity – Maximum particle velocity.
global_self_collision_enabled – If True, self collisions follow particle-object-specific settings. If False, all particle self collisions are disabled, regardless of any other settings. Improves performance if self collisions are not needed.
non_particle_collision_enabled – Enable or disable particle collision with non-particle objects for all particles in the system. Improves performance if non-particle collisions are not needed.
- apply_particle_anisotropy() pxr.PhysxSchema.PhysxParticleAnisotropyAPI#
Applies anisotropy to the particle system.
This is used to compute anisotropic scaling of particles in a post-processing step. It only affects the rendering output including iso-surface generation.
- Returns:
The applied anisotropy API schema.
- apply_particle_isotropy() pxr.PhysxSchema.PhysxParticleAnisotropyAPI#
Applies iso-surface extraction to the particle system.
This is used to define settings to extract an iso-surface from the particles in a post-processing step. It only affects the rendering output including iso-surface generation.
- Returns:
The applied anisotropy API schema.
- apply_particle_material(
- particle_materials: ParticleMaterial,
Applies particle material to the particle system.
- Parameters:
particle_materials – The particle material to apply.
- apply_particle_smoothing() pxr.PhysxSchema.PhysxParticleSmoothingAPI#
Applies smoothing to the simulated particle system.
This is used to control smoothing of particles in a post-processing step. It only affects the rendering output including iso-surface generation.
- Returns:
The applied smoothing API schema.
- get_applied_particle_material() ParticleMaterial#
Gets the applied particle material from the particle system.
- Returns:
The applied particle material.
- get_contact_offset() float#
The contact offset used for collisions with non-particle objects.
- Returns:
The contact offset used for collisions with non-particle objects.
- get_enable_ccd() bool#
Whether continuous collision detection for particles is enabled or disabled.
- Returns:
Whether continuous collision detection for particles is enabled or disabled.
- get_fluid_rest_offset() float#
The rest offset used for fluid-fluid particle interactions.
- Returns:
The rest offset used for fluid-fluid particle interactions.
- get_global_self_collision_enabled() bool#
Whether self collisions follow particle-object-specific settings is enabled or disabled.
- Returns:
Whether self collisions follow particle-object-specific settings is enabled or disabled.
- get_max_depenetration_velocity() float#
The maximum velocity permitted between intersecting particles.
- Returns:
The maximum velocity permitted between intersecting particles.
- get_max_neighborhood() int#
The particle neighborhood size.
- Returns:
The particle neighborhood size.
- get_max_velocity() float#
The maximum particle velocity.
- Returns:
The maximum particle velocity.
- get_particle_contact_offset() float#
The contact offset used for interactions between particles.
- Returns:
The contact offset used for interactions between particles.
- get_particle_system_enabled() bool#
Whether particle system is enabled.
- Returns:
Whether particle system is enabled or not.
- get_rest_offset() float#
The rest offset used for collisions with non-particle objects.
- Returns:
The rest offset used for collisions with non-particle objects.
- get_simulation_owner() pxr.Usd.Prim#
The physics scene prim attached to particle system.
- Returns:
The physics scene prim attached to particle system.
- get_solid_rest_offset() float#
The rest offset used for solid-solid or solid-fluid particle interactions.
- Returns:
The rest offset used for solid-solid or solid-fluid particle interactions.
- get_solver_position_iteration_count() int#
The number of solver iterations for positions.
- Returns:
The number of solver iterations for positions.
- get_wind() Sequence[float]#
The wind applied to the current particle system.
- Returns:
The wind applied to the current particle system.
- initialize(
- physics_sim_view: object = None,
Initializes the particle system.
- Parameters:
physics_sim_view – Physics simulation view to initialize with.
- is_valid() bool#
Checks if the particle system prim is valid.
- Returns:
True if the current prim path corresponds to a valid prim in stage. False otherwise.
- set_contact_offset(value: float) None#
Set the contact offset used for collisions with non-particle objects such as rigid or deformable bodies.
- Parameters:
value – The contact offset.
- set_enable_ccd(value: bool) None#
Enable continuous collision detection for particles.
- Parameters:
value – Whether to enable or disable.
- set_fluid_rest_offset(value: float) None#
Set the rest offset used for fluid-fluid particle interactions.
Note
Must be smaller than particle contact offset.
- Parameters:
value – The rest offset.
- set_global_self_collision_enabled(
- value: bool,
Enable self collisions to follow particle-object-specific settings.
If True, self collisions follow particle-object-specific settings. If False, all particle self collisions are disabled, regardless of any other settings.
Note
Improves performance if self collisions are not needed.
- Parameters:
value – Whether to enable or disable.
- set_max_depenetration_velocity(
- value: float,
Set the maximum velocity permitted to be introduced by the solver to depenetrate intersecting particles.
- Parameters:
value – The maximum depenetration velocity.
- set_max_neighborhood(value: int) None#
Set the particle neighborhood size.
- Parameters:
value – The neighborhood size.
- set_max_velocity(value: float) None#
Set the maximum particle velocity.
- Parameters:
value – The maximum velocity.
- set_particle_contact_offset(value: float) None#
Set the contact offset used for interactions between particles.
Note
Must be larger than solid and fluid rest offsets.
- Parameters:
value – The contact offset.
- set_particle_system_enabled(value: bool) None#
Sets whether the particle system is enabled.
- Parameters:
value – Whether to enable or disable the particle system.
- set_rest_offset(value: float) None#
Set the rest offset used for collisions with non-particle objects such as rigid or deformable bodies.
- Parameters:
value – The rest offset.
- set_simulation_owner(value: str) None#
Set the PhysicsScene that simulates this particle system.
- Parameters:
value – The prim path to the physics scene.
- set_solid_rest_offset(value: float) None#
Set the rest offset used for solid-solid or solid-fluid particle interactions.
Note
Must be smaller than particle contact offset.
- Parameters:
value – The rest offset.
- set_solver_position_iteration_count(
- value: int,
Set the number of solver iterations for position.
- Parameters:
value – Number of solver iterations.
- set_wind(
- value: Sequence[float],
Set the wind velocity applied to the current particle system.
- Parameters:
value – The wind applied to the current particle system.
- property name: str | None#
Name given to the prim when instantiating it.
- Returns:
Name given to the prim when instantiating it. Otherwise None.
- property particle_system: pxr.PhysxSchema.PhysxParticleSystem#
PhysX particle system schema.
- Returns:
The particle system.
- property prim: pxr.Usd.Prim#
USD prim of the particle system.
- Returns:
The USD prim present.
- property prim_path: str#
Stage path to the particle system.
- Returns:
The stage path to the particle system.
- class SingleRigidPrim(
- prim_path: str,
- name: str = 'rigid_prim',
- position: Sequence[float] | None = None,
- translation: Sequence[float] | None = None,
- orientation: Sequence[float] | None = None,
- scale: Sequence[float] | None = None,
- visible: bool | None = None,
- reset_xform_properties: bool = True,
- mass: float | None = None,
- density: float | None = None,
- linear_velocity: ndarray | None = None,
- angular_velocity: ndarray | None = None,
Bases:
_SinglePrimWrapperHigh-level wrapper to deal with a rigid body prim (only one rigid body prim) and its attributes/properties.
Warning
The rigid body object must be initialized in order to be able to operate on it. See the
initializemethod for more details.Note
If the prim does not already have the Rigid Body API applied to it before initialization, it will apply it.
- Parameters:
prim_path – Prim path of the Prim to encapsulate or create.
name – Short name to be used as a key by Scene class. Note: needs to be unique if the object is added to the Scene.
position – Position in the world frame of the prim. Shape is (3, ).
translation – Translation in the local frame of the prim with respect to its parent prim. Shape is (3, ).
orientation – Quaternion orientation in the world or local frame of the prim depending on whether translation or position is specified. Quaternion is scalar-first (w, x, y, z). Shape is (4, ).
scale – Local scale to be applied to the prim’s dimensions. Shape is (3, ).
visible – Set to False for an invisible prim in the stage while rendering.
reset_xform_properties – True if the prim does not have the right set of xform properties (i.e: translate, orient and scale) ONLY and in that order. Set this parameter to False if the object was cloned using the cloner API in isaacsim.core.cloner.
mass – Mass in kg.
density – Density.
linear_velocity – Linear velocity in the world frame.
angular_velocity – Angular velocity in the world frame.
Example:
>>> import isaacsim.core.utils.stage as stage_utils >>> from isaacsim.core.prims import SingleRigidPrim >>> >>> # create a Cube at the given path >>> stage_utils.get_current_stage().DefinePrim("/World/Xform", "Xform") >>> stage_utils.get_current_stage().DefinePrim("/World/Xform/Cube", "Cube") >>> >>> # wrap the prim as rigid prim >>> prim = SingleRigidPrim("/World/Xform") >>> prim <isaacsim.core.prims.single_rigid_prim.SingleRigidPrim object at 0x7fc4a7f56e90>
- apply_visual_material(
- visual_material: VisualMaterial,
- weaker_than_descendants: bool = False,
Apply visual material to the held prim and optionally its descendants.
- Parameters:
visual_material – Visual material to be applied to the held prim. Currently supports PreviewSurface, OmniPBR and OmniGlass.
weaker_than_descendants – True if the material shouldn’t override the descendants materials, otherwise False.
Example:
>>> from isaacsim.core.api.materials import OmniGlass >>> >>> # create a dark-red glass visual material >>> material = OmniGlass( ... prim_path="/World/material/glass", # path to the material prim to create ... ior=1.25, ... depth=0.001, ... thin_walled=False, ... color=np.array([0.5, 0.0, 0.0]) ... ) >>> prim.apply_visual_material(material)
- disable_rigid_body_physics() None#
Disable the rigid body physics.
When disabled, the object will not be moved by external forces such as gravity and collisions.
Example:
>>> prim.disable_rigid_body_physics()
- enable_rigid_body_physics() None#
Enable the rigid body physics.
When enabled, the object will be moved by external forces such as gravity and collisions.
Example:
>>> prim.enable_rigid_body_physics()
- get_angular_velocity() ndarray#
Get the angular velocity of the rigid body.
- Returns:
Current angular velocity of the rigid prim. Shape (3,).
- get_applied_visual_material() VisualMaterial#
Return the current applied visual material if it was applied using apply_visual_material or is one of the following materials that was already applied before: PreviewSurface, OmniPBR and OmniGlass.
- Returns:
The current applied visual material if its type is currently supported.
Example:
>>> # given a visual material applied >>> prim.get_applied_visual_material() <isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f36263106a0>
- get_com() tuple[ndarray, ndarray]#
Get the center of mass pose of the rigid body.
- Returns:
A tuple of (position, orientation) where position is the center of mass position and orientation is the center of mass orientation.
- get_current_dynamic_state() DynamicState#
Get the current rigid body state (position, orientation, linear velocity, and angular velocity).
- Returns:
The dynamic state of the rigid body prim.
Example:
>>> # for the example the rigid body is in free fall >>> state = prim.get_current_dynamic_state() >>> state <isaacsim.core.utils.types.DynamicState object at 0x7f740b36f670> >>> state.position [ 0.99999857 2.0000017 -74.2862 ] >>> state.orientation [ 1.0000000e+00 -2.3961178e-07 -4.9891562e-09 4.9388258e-09] >>> state.linear_velocity [ 0. 0. -38.09554] >>> state.angular_velocity [0. 0. 0.]
- get_default_state() DynamicState#
Get the default rigid body state (position, orientation, linear velocity, and angular velocity).
- Returns:
The default state of the prim that is used after each reset.
Example:
>>> state = prim.get_default_state() >>> state <isaacsim.core.utils.types.DynamicState object at 0x7f7411fcbe20> >>> state.position [-7.8622378e-07 1.4450421e-06 1.6135601e-07] >>> state.orientation [ 9.9999994e-01 -2.7194994e-07 2.9607077e-07 2.7016510e-08] >>> state.linear_velocity [0. 0. 0.] >>> state.angular_velocity [0. 0. 0.]
- get_density() float#
Get the density of the rigid body.
- Returns:
Density of the rigid body.
Example:
>>> prim.get_density() 0
- get_linear_velocity() ndarray#
Get the linear velocity of the rigid body.
- Returns:
Current linear velocity of the rigid prim. Shape (3,).
Example:
>>> prim.get_linear_velocity() [ 1.0812164e-04 6.1415871e-05 -2.1341663e-04]
- get_local_pose() tuple[ndarray, ndarray]#
Get prim’s pose with respect to the local frame (the prim’s parent frame).
- Returns:
First index is the position in the local frame (with shape (3, )). Second index is quaternion orientation (with shape (4, )) in the local frame.
Example:
>>> # if the prim is in position (1.0, 0.5, 0.0) with respect to the world frame >>> position, orientation = prim.get_local_pose() >>> position [0. 0. 0.] >>> orientation [0. 0. 0.]
- get_local_scale() ndarray#
Get prim’s scale with respect to the local frame (the parent’s frame).
- Returns:
Scale applied to the prim’s dimensions in the local frame. shape is (3, ).
Example:
>>> prim.get_local_scale() [1. 1. 1.]
- get_mass() float#
Get the mass of the rigid body.
- Returns:
Mass of the rigid body in kg.
Example:
>>> prim.get_mass() 0
- get_sleep_threshold() float#
Get the threshold for the rigid body to enter a sleep state.
Search for Rigid Body Dynamics > Sleeping in PhysX docs for more details.
- Returns:
Mass-normalized kinetic energy threshold below which an actor may go to sleep. Range is [0, inf). Units are distance^2 / second^2.
Example:
>>> prim.get_sleep_threshold() 5e-05
- get_visibility() bool#
Get the visibility of the prim in stage.
- Returns:
True if the prim is visible in stage. False otherwise.
Example:
>>> # get the visible state of a visible prim on the stage >>> prim.get_visibility() True
- get_world_pose() tuple[ndarray, ndarray]#
Get prim’s pose with respect to the world’s frame.
- Returns:
First index is the position in the world frame (with shape (3, )). Second index is quaternion orientation (with shape (4, )) in the world frame.
Example:
>>> # if the prim is in position (1.0, 0.5, 0.0) with respect to the world frame >>> position, orientation = prim.get_world_pose() >>> position [1. 0.5 0. ] >>> orientation [1. 0. 0. 0.]
- get_world_scale() ndarray#
Get prim’s scale with respect to the world’s frame.
- Returns:
Scale applied to the prim’s dimensions in the world frame. shape is (3, ).
Example:
>>> prim.get_world_scale() [1. 1. 1.]
- initialize(physics_sim_view: object = None) None#
Create a physics simulation view if not passed and using PhysX tensor API.
Note
If the prim has been added to the world scene (e.g.,
world.scene.add(prim)), it will be automatically initialized when the world is reset (e.g.,world.reset()).- Parameters:
physics_sim_view – Current physics simulation view.
Example:
>>> prim.initialize()
- is_valid() bool#
Check if the prim path has a valid USD Prim at it.
- Returns:
True if the current prim path corresponds to a valid prim in stage. False otherwise.
Example:
>>> # given an existing and valid prim >>> prims.is_valid() True
- is_visual_material_applied() bool#
Check if there is a visual material applied.
- Returns:
True if there is a visual material applied. False otherwise.
Example:
>>> # given a visual material applied >>> prim.is_visual_material_applied() True
- post_reset() None#
Reset the prim to its default state (position and orientation).
Note
For an articulation, in addition to configuring the root prim’s default position and spatial orientation (defined via the
set_default_statemethod), the joint’s positions, velocities, and efforts (defined via theset_joints_default_statemethod) are imposed.Example:
>>> prim.post_reset()
- set_angular_velocity(velocity: ndarray) None#
Set the angular velocity of the rigid body in the stage.
Warning
This method will immediately set the rigid body state.
- Parameters:
velocity – Angular velocity to set the rigid prim to. Shape (3,).
- set_com(
- position: ndarray,
- orientation: ndarray,
Set the center of mass pose of the rigid body.
- Parameters:
position – Center of mass position. Shape (3,).
orientation – Center of mass orientation. Shape (4,).
- set_default_state(
- position: Sequence[float] | None = None,
- orientation: Sequence[float] | None = None,
- linear_velocity: ndarray | None = None,
- angular_velocity: ndarray | None = None,
Set the default state of the prim (position, orientation, linear velocity, and angular velocity).
The default state is used after each reset.
Note
The default states will be set during post-reset (e.g., calling
.post_reset()orworld.reset()methods)- Parameters:
position – Position in the world frame of the prim. Shape is (3, ). If not specified, the position is left unchanged.
orientation – Quaternion orientation in the world frame of the prim. Quaternion is scalar-first (w, x, y, z). Shape is (4, ). If not specified, the orientation is left unchanged.
linear_velocity – Linear velocity to set the rigid prim to. Shape (3,).
angular_velocity – Angular velocity to set the rigid prim to. Shape (3,).
Example:
>>> prim.set_default_state( ... position=np.array([1.0, 2.0, 3.0]), ... orientation=np.array([1.0, 0.0, 0.0, 0.0]), ... linear_velocity=np.array([0.0, 0.0, 0.0]), ... angular_velocity=np.array([0.0, 0.0, 0.0]) ... ) >>> >>> prim.post_reset()
- set_density(density: float) None#
Set the density of the rigid body.
- Parameters:
density – Density of the rigid body.
Example:
>>> prim.set_density(0.9)
- set_linear_velocity(velocity: ndarray) None#
Set the linear velocity of the rigid body in the stage.
Warning
This method will immediately set the rigid prim state.
- Parameters:
velocity – Linear velocity to set the rigid prim to. Shape (3,).
- set_local_pose( ) None#
Set prim’s pose with respect to the local frame (the prim’s parent frame).
Warning
This method will change (teleport) the prim pose immediately to the indicated value
- Parameters:
translation – Translation in the local frame of the prim (with respect to its parent prim). shape is (3, ).
orientation – Quaternion orientation in the local frame of the prim. quaternion is scalar-first (w, x, y, z). shape is (4, ).
Hint
This method belongs to the methods used to set the prim state
Example:
>>> prim.set_local_pose(translation=np.array([1.0, 0.5, 0.0]), orientation=np.array([1., 0., 0., 0.]))
- set_local_scale(
- scale: Sequence[float] | None,
Set prim’s scale with respect to the local frame (the prim’s parent frame).
- Parameters:
scale – Scale to be applied to the prim’s dimensions. shape is (3, ).
Example:
>>> # scale prim 10 times smaller >>> prim.set_local_scale(np.array([0.1, 0.1, 0.1]))
- set_mass(mass: float) None#
Set the mass of the rigid body.
- Parameters:
mass – Mass of the rigid body in kg.
Example:
>>> prim.set_mass(1.0)
- set_sleep_threshold(threshold: float) None#
Set the threshold for the rigid body to enter a sleep state.
Search for Rigid Body Dynamics > Sleeping in PhysX docs for more details.
- Parameters:
threshold – Mass-normalized kinetic energy threshold below which an actor may go to sleep. Range: [0, inf). Units: distance^2 / second^2.
Example:
>>> prim.set_sleep_threshold(1e-5)
- set_visibility(visible: bool) None#
Set the visibility of the prim in stage.
- Parameters:
visible – Flag to set the visibility of the USD prim in stage.
Example:
>>> # make prim not visible in the stage >>> prim.set_visibility(visible=False)
- set_world_pose( ) None#
Set prim’s pose with respect to the world’s frame.
Warning
This method will change (teleport) the prim pose immediately to the indicated value
- Parameters:
position – Position in the world frame of the prim. shape is (3, ).
orientation – Quaternion orientation in the world frame of the prim. quaternion is scalar-first (w, x, y, z). shape is (4, ).
Hint
This method belongs to the methods used to set the prim state
Example:
>>> prim.set_world_pose(position=np.array([1.0, 0.5, 0.0]), orientation=np.array([1., 0., 0., 0.]))
- property name: str | None#
Name given to the prim when instantiating it.
- Returns:
Name given to the prim when instantiating it. Otherwise None.
- property non_root_articulation_link: bool#
Whether the prim is a non-root articulation link.
- Returns:
True if the prim itself is a non-root link.
Example:
>>> # for a wrapped articulation (where the root prim has the Physics Articulation Root property applied) >>> prim.non_root_articulation_link False
- property prim: pxr.Usd.Prim#
USD Prim object that this object holds.
- Returns:
USD Prim object that this object holds.
- property prim_path: str#
Prim path in the stage.
- Returns:
Prim path in the stage.
- class SingleXFormPrim(
- prim_path: str,
- name: str = 'xform_prim',
- position: Sequence[float] | None = None,
- translation: Sequence[float] | None = None,
- orientation: Sequence[float] | None = None,
- scale: Sequence[float] | None = None,
- visible: bool | None = None,
- reset_xform_properties: bool = True,
Bases:
_SinglePrimWrapperProvides high level functions to deal with an Xform prim (only one Xform prim) and its attributes/properties.
If there is an Xform prim present at the path, it will use it. Otherwise, a new XForm prim at the specified prim path will be created.
Note
The prim will have
xformOp:orient,xformOp:translateandxformOp:scaleonly post-init, unless it is a non-root articulation link.- Parameters:
prim_path – Prim path of the Prim to encapsulate or create.
name – Short name to be used as a key by Scene class. Note: needs to be unique if the object is added to the Scene.
position – Position in the world frame of the prim. Shape is (3, ).
translation – Translation in the local frame of the prim (with respect to its parent prim). Shape is (3, ).
orientation – Quaternion orientation in the world/local frame of the prim (depends if translation or position is specified). Quaternion is scalar-first (w, x, y, z). Shape is (4, ).
scale – Local scale to be applied to the prim’s dimensions. Shape is (3, ).
visible – Set to false for an invisible prim in the stage while rendering.
reset_xform_properties – True if the prim does not have the right set of xform properties (i.e. translate, orient, and scale) ONLY and in that order. Set this parameter to False if the object was cloned using the cloner API in isaacsim.core.cloner.
- Raises:
Exception – If translation and position are defined at the same time.
Example:
>>> from isaacsim.core.prims import SingleXFormPrim >>> >>> # Given the stage: /World. Get the Xform prim at /World >>> prim = SingleXFormPrim("/World") >>> prim <isaacsim.core.prims.single_xform_prim.SingleXFormPrim object at 0x7f52381547c0> >>> >>> # Create a new Xform prim at path: /World/Objects >>> prim = SingleXFormPrim("/World/Objects", name="objects") >>> prim <isaacsim.core.prims.single_xform_prim.SingleXFormPrim object at 0x7f525c11d420>
- apply_visual_material(
- visual_material: VisualMaterial,
- weaker_than_descendants: bool = False,
Apply visual material to the held prim and optionally its descendants.
- Parameters:
visual_material – Visual material to be applied to the held prim. Currently supports PreviewSurface, OmniPBR and OmniGlass.
weaker_than_descendants – True if the material shouldn’t override the descendants materials, otherwise False.
Example:
>>> from isaacsim.core.api.materials import OmniGlass >>> >>> # create a dark-red glass visual material >>> material = OmniGlass( ... prim_path="/World/material/glass", # path to the material prim to create ... ior=1.25, ... depth=0.001, ... thin_walled=False, ... color=np.array([0.5, 0.0, 0.0]) ... ) >>> prim.apply_visual_material(material)
- get_applied_visual_material() VisualMaterial#
Return the current applied visual material if it was applied using apply_visual_material or is one of the following materials that was already applied before: PreviewSurface, OmniPBR and OmniGlass.
- Returns:
The current applied visual material if its type is currently supported.
Example:
>>> # given a visual material applied >>> prim.get_applied_visual_material() <isaacsim.core.api.materials.omni_glass.OmniGlass object at 0x7f36263106a0>
- get_default_state() XFormPrimState#
Get the default prim states (spatial position and orientation).
- Returns:
An object that contains the default state of the prim (position and orientation).
Example:
>>> state = prim.get_default_state() >>> state <isaacsim.core.utils.types.XFormPrimState object at 0x7f33addda650> >>> >>> state.position [-4.5299529e-08 -1.8347054e-09 -2.8610229e-08] >>> state.orientation [1. 0. 0. 0.]
- get_local_pose() tuple[ndarray, ndarray]#
Get prim’s pose with respect to the local frame (the prim’s parent frame).
- Returns:
First index is the position in the local frame (with shape (3, )). Second index is quaternion orientation (with shape (4, )) in the local frame.
Example:
>>> # if the prim is in position (1.0, 0.5, 0.0) with respect to the world frame >>> position, orientation = prim.get_local_pose() >>> position [0. 0. 0.] >>> orientation [0. 0. 0.]
- get_local_scale() ndarray#
Get prim’s scale with respect to the local frame (the parent’s frame).
- Returns:
Scale applied to the prim’s dimensions in the local frame. shape is (3, ).
Example:
>>> prim.get_local_scale() [1. 1. 1.]
- get_visibility() bool#
Get the visibility of the prim in stage.
- Returns:
True if the prim is visible in stage. False otherwise.
Example:
>>> # get the visible state of a visible prim on the stage >>> prim.get_visibility() True
- get_world_pose() tuple[ndarray, ndarray]#
Get prim’s pose with respect to the world’s frame.
- Returns:
First index is the position in the world frame (with shape (3, )). Second index is quaternion orientation (with shape (4, )) in the world frame.
Example:
>>> # if the prim is in position (1.0, 0.5, 0.0) with respect to the world frame >>> position, orientation = prim.get_world_pose() >>> position [1. 0.5 0. ] >>> orientation [1. 0. 0. 0.]
- get_world_scale() ndarray#
Get prim’s scale with respect to the world’s frame.
- Returns:
Scale applied to the prim’s dimensions in the world frame. shape is (3, ).
Example:
>>> prim.get_world_scale() [1. 1. 1.]
- initialize(physics_sim_view: object = None) None#
Create a physics simulation view if not passed and using PhysX tensor API.
Note
If the prim has been added to the world scene (e.g.,
world.scene.add(prim)), it will be automatically initialized when the world is reset (e.g.,world.reset()).- Parameters:
physics_sim_view – Current physics simulation view.
Example:
>>> prim.initialize()
- is_valid() bool#
Check if the prim path has a valid USD Prim at it.
- Returns:
True if the current prim path corresponds to a valid prim in stage. False otherwise.
Example:
>>> # given an existing and valid prim >>> prims.is_valid() True
- is_visual_material_applied() bool#
Check if there is a visual material applied.
- Returns:
True if there is a visual material applied. False otherwise.
Example:
>>> # given a visual material applied >>> prim.is_visual_material_applied() True
- post_reset() None#
Reset the prim to its default state (position and orientation).
Note
For an articulation, in addition to configuring the root prim’s default position and spatial orientation (defined via the
set_default_statemethod), the joint’s positions, velocities, and efforts (defined via theset_joints_default_statemethod) are imposed.Example:
>>> prim.post_reset()
- set_default_state( ) None#
Set the default state of the prim (position and orientation), that will be used after each reset.
- Parameters:
position – Position in the world frame of the prim. shape is (3, ). If None, the position is left unchanged.
orientation – Quaternion orientation in the world frame of the prim. Quaternion is scalar-first (w, x, y, z). shape is (4, ). If None, the orientation is left unchanged.
Example:
>>> # configure default state >>> prim.set_default_state(position=np.array([1.0, 0.5, 0.0]), orientation=np.array([1, 0, 0, 0])) >>> >>> # set default states during post-reset >>> prim.post_reset()
- set_local_pose( ) None#
Set prim’s pose with respect to the local frame (the prim’s parent frame).
Warning
This method will change (teleport) the prim pose immediately to the indicated value
- Parameters:
translation – Translation in the local frame of the prim (with respect to its parent prim). shape is (3, ).
orientation – Quaternion orientation in the local frame of the prim. quaternion is scalar-first (w, x, y, z). shape is (4, ).
Hint
This method belongs to the methods used to set the prim state
Example:
>>> prim.set_local_pose(translation=np.array([1.0, 0.5, 0.0]), orientation=np.array([1., 0., 0., 0.]))
- set_local_scale(
- scale: Sequence[float] | None,
Set prim’s scale with respect to the local frame (the prim’s parent frame).
- Parameters:
scale – Scale to be applied to the prim’s dimensions. shape is (3, ).
Example:
>>> # scale prim 10 times smaller >>> prim.set_local_scale(np.array([0.1, 0.1, 0.1]))
- set_visibility(visible: bool) None#
Set the visibility of the prim in stage.
- Parameters:
visible – Flag to set the visibility of the USD prim in stage.
Example:
>>> # make prim not visible in the stage >>> prim.set_visibility(visible=False)
- set_world_pose( ) None#
Set prim’s pose with respect to the world’s frame.
Warning
This method will change (teleport) the prim pose immediately to the indicated value
- Parameters:
position – Position in the world frame of the prim. shape is (3, ).
orientation – Quaternion orientation in the world frame of the prim. quaternion is scalar-first (w, x, y, z). shape is (4, ).
Hint
This method belongs to the methods used to set the prim state
Example:
>>> prim.set_world_pose(position=np.array([1.0, 0.5, 0.0]), orientation=np.array([1., 0., 0., 0.]))
- property name: str | None#
Name given to the prim when instantiating it.
- Returns:
Name given to the prim when instantiating it. Otherwise None.
- property non_root_articulation_link: bool#
Whether the prim is a non-root articulation link.
- Returns:
True if the prim itself is a non-root link.
Example:
>>> # for a wrapped articulation (where the root prim has the Physics Articulation Root property applied) >>> prim.non_root_articulation_link False
- property prim: pxr.Usd.Prim#
USD Prim object that this object holds.
- Returns:
USD Prim object that this object holds.
- property prim_path: str#
Prim path in the stage.
- Returns:
Prim path in the stage.