GVS Warp Integration API¶
Integration API
SoRoMoX users should call the public GVS kinematics and dynamics methods.
The symbols on this page are intended for packages that reuse the GVS
kinematics, dynamics, or actuation pipelines with preallocated Warp
buffers.
Linear-threadlike actuation¶
GVSThreadlikeOperands.from_model(robot) exposes the ordered built-in linear
routing data together with interior body quadrature, link strain bases and
reference strains, pre-scaled link bases, physical quadrature coordinates and
weights, segment spans, and link-local/global coordinate maps.
GVSThreadlikeShapes specifies the shared caller-owned strain workspace
(E, S, Q, 6), matrix output (E, D, A), and fused-force output (E, D).
The exact launch sequences are:
launch_gvs_threadlike_actuation_matrix(...)prepares every quadrature strain once in(E, S, Q, 6), then integrates and writes every matrix entry.launch_gvs_threadlike_actuation_force(...)prepares the same workspace, appliescoordinate_scale[path] * controls[e, path], and reduces paths directly into(E, D). CUDA uses one 128-lane block per environment and segment; Warp CPU uses a scalar-coordinate kernel.
Both second stages explicitly write inactive paths and joint-only coordinates as zero, so neither sequence requires a separate output-clear launch. Matrix and force calls may reuse the same strain workspace when they do not overlap.
Floating-point inputs, workspaces, and outputs are FP64; coordinate maps and
path spans are INT32. Callers own and retain all Warp views and buffers.
Neither launcher allocates, calls JAX, synchronizes, or transfers data, and
both two-launch sequences may be captured in a CUDA graph. Environment,
segment, link-DOF, quadrature, and path dimensions remain runtime-shaped. The
normalization test is exactly
norm > global_eps; a collapsed tangent contributes zero, matching JAX.
soromox.execution.warp.gvs
¶
Public Warp-native GVS kinematics and dynamics building blocks.
The kernels and launch functions in this module operate entirely on
warp.array objects. They do not require JAX and do not allocate output
buffers, making them suitable for external CUDA-graph-capturable integrators
such as a Newton solver. Callers own the buffers and must preserve the shapes,
dtypes, coordinate maps, and launch ordering described by each function.
Soromox system users should normally call :meth:GVS.dynamics_terms
<soromox.systems.GVS.dynamics_terms> or :meth:GVS.forward_dynamics
<soromox.systems.GVS.forward_dynamics> instead. The lower-level API is intended
for integration packages that need to compose the kinematics and dynamics
pipelines inside a larger Warp-native simulation loop.
__getattr__
¶
Load a public GVS Warp symbol without making Warp a core dependency.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Attribute requested from this package. |
required |
Returns:
| Type | Description |
|---|---|
Any
|
The public operand type, kernel, or launch function named by |
Raises:
| Type | Description |
|---|---|
AttributeError
|
If |
ImportError
|
If a kernel is requested without |
__dir__
¶
Include lazily exported Warp symbols in interactive discovery.
Returns:
| Type | Description |
|---|---|
list[str]
|
Sorted module globals and public lazy exports. |