IArticulationDataView#

Fully qualified name: isaacsim::core::experimental::prims::IArticulationDataView

struct IArticulationDataView : public isaacsim::core::experimental::prims::IXformDataView#

Read-only view for Articulation data.

Extends IXformDataView with DOF/link/dynamics.

Transform getters (native device pointers)

virtual const float *getWorldPositions(int *outCount) = 0#

Get world positions (float[3] per prim, device memory).

virtual const float *getWorldOrientations(int *outCount) = 0#

Get world orientations (quaternion float[4] per prim, device memory).

virtual const float *getLocalTranslations(int *outCount) = 0#

Get local translations (float[3] per prim, device memory).

virtual const float *getLocalOrientations(int *outCount) = 0#

Get local orientations (quaternion float[4] per prim, device memory).

virtual const float *getLocalScales(int *outCount) = 0#

Get local scales (float[3] per prim, device memory).

Host-memory transform getters (always CPU pointers, copied from GPU if needed)

virtual const float *getWorldPositionsHost(int *outCount) = 0#

Get world positions (float[3] per prim, host memory).

virtual const float *getWorldOrientationsHost(int *outCount) = 0#

Get world orientations (quaternion float[4] per prim, host memory).

virtual const float *getLocalTranslationsHost(int *outCount) = 0#

Get local translations (float[3] per prim, host memory).

virtual const float *getLocalOrientationsHost(int *outCount) = 0#

Get local orientations (quaternion float[4] per prim, host memory).

virtual const float *getLocalScalesHost(int *outCount) = 0#

Get local scales (float[3] per prim, host memory).

Combined pose getters

virtual Poses getWorldPoses() = 0#

Get combined world positions and orientations (device memory). Prefer this over calling getWorldPositions + getWorldOrientations separately as it invokes the shared fill callback only once instead of twice.

virtual Poses getWorldPosesHost() = 0#

Get combined world positions and orientations (host memory). Prefer this over calling getWorldPositionsHost + getWorldOrientationsHost separately as it invokes the shared fill callback only once instead of twice.

Buffer and callback management (used by Python during setup)

virtual bool allocateBufferFloat(
const char *fieldName,
size_t count,
) = 0#

Allocate a named float buffer of the given element count.

virtual bool allocateBufferUint8(
const char *fieldName,
size_t count,
) = 0#

Allocate a named uint8 buffer of the given element count.

virtual uintptr_t getBufferPtr(const char *fieldName) = 0#

Get the raw pointer to a named buffer.

virtual size_t getBufferSize(const char *fieldName) = 0#

Get the byte size of a named buffer.

virtual int getBufferDevice() = 0#

Get the CUDA device ordinal of the data buffers (-1 for CPU).

virtual void registerFieldCallback(
const char *fieldName,
std::function<void()> callback,
) = 0#

Register a callback invoked when the named field is updated.

Public Functions

virtual const float *getDofPositions(int *outCount) = 0#

Get DOF positions (device memory).

virtual const float *getDofVelocities(int *outCount) = 0#

Get DOF velocities (device memory).

virtual const float *getDofEfforts(int *outCount) = 0#

Get DOF efforts / forces (device memory).

virtual const float *getRootTransforms(int *outCount) = 0#

Get root link transforms (float[7] per articulation, device memory).

virtual const float *getRootVelocities(int *outCount) = 0#

Get root link velocities (float[6] per articulation, device memory).

virtual const uint8_t *getDofTypes(int *outCount) = 0#

Get DOF types (0 = rotation, 1 = translation, device memory).

virtual const float *getDofPositionsHost(int *outCount) = 0#

Get DOF positions (host memory).

virtual const float *getDofVelocitiesHost(int *outCount) = 0#

Get DOF velocities (host memory).

virtual const float *getDofEffortsHost(int *outCount) = 0#

Get DOF efforts / forces (host memory).

virtual const float *getRootTransformsHost(int *outCount) = 0#

Get root link transforms (float[7] per articulation, host memory).

virtual const float *getRootVelocitiesHost(int *outCount) = 0#

Get root link velocities (float[6] per articulation, host memory).

virtual const uint8_t *getDofTypesHost(int *outCount) = 0#

Get DOF types (0 = rotation, 1 = translation, host memory).

virtual int getDofIndex(const char *dofPrimPath) = 0#

Resolve the DOF index for a joint given its USD prim path.

Parameters:

dofPrimPath – USD path to the joint prim.

Returns:

DOF index (>= 0), or -1 if the joint is not found in this view.

virtual const char *const *getDofNames(int *outCount) = 0#

Get DOF names in articulation order (index 0 .

. N-1).

Parameters:

outCount – Receives the number of DOFs.

Returns:

Pointer to array of C-strings, or nullptr if none. Valid until view is removed or reader re-initialized.

virtual bool getArticulationLinks(
const char *rootPath,
const LinkInfo **outLinks,
size_t *outCount,
) = 0#

Enumerate UsdPhysicsRigidBodyAPI descendants of rootPath (must have ArticulationRootAPI). outLinks owned by the view; valid until next call or view removal. Returns false if rootPath is not an articulation or stage unavailable.

virtual bool update() = 0#

Batch pre-fetch all fields for this view.

virtual bool getPrimFrameName(
const char *primPath,
char *outName,
size_t maxLen,
) = 0#

Resolve frame name for any prim in the stage: checks isaac:nameOverride, falls back to prim name. outName: caller buffer of maxLen bytes. Returns false if prim not found or stage unavailable.

virtual bool getPrimWorldTransform(
const char *primPath,
float *outPos3,
float *outOri4,
) = 0#

World transform of any prim in the stage via Fabric (no physics required). outPos3: float[3] (x,y,z). outOri4: float[4] (qw,qx,qy,qz). Returns false if prim not found or stage unavailable.