Utilities#

Interop#

mink_warp.to_wp(data: TypeAliasForwardRef('ArrayLike') | array, *, dtype=<class 'float'>, device: str | None = None) array[source]#

Upload data to a Warp array, or return it unchanged if already one.

Use only at API boundaries (script init, tests). Prefer keeping wp.array end-to-end in the solve loop.

Helpers#

mink_warp.get_freejoint_dims(model: MjModel) tuple[list[int], list[int]][source]#

Get all floating joint configuration and tangent indices.

Constants#

Frame lookup tables used by tasks (defined in mink_warp.constants):

  • SUPPORTED_FRAMES("body", "geom", "site")

  • FRAME_TO_ENUM — maps frame type string to mjtObj

  • FRAME_TO_POS_ATTR — batched position array attribute on wp_data

  • FRAME_TO_XMAT_ATTR — batched orientation array attribute on wp_data

Exceptions#

class mink_warp.MinkWarpError[source]#

Bases: Exception

Base class for mink-warp exceptions.

class mink_warp.UnsupportedFrame[source]#

Bases: MinkWarpError

Exception raised when a frame type is unsupported.

class mink_warp.InvalidFrame[source]#

Bases: MinkWarpError

Exception raised when a frame name is not found in the robot model.

class mink_warp.InvalidKeyframe[source]#

Bases: MinkWarpError

Exception raised when a keyframe name is not found in the robot model.

class mink_warp.TaskDefinitionError[source]#

Bases: MinkWarpError

Exception raised when a task definition is ill-formed.

class mink_warp.TargetNotSet[source]#

Bases: MinkWarpError

Exception raised when attempting to use a task with an unset target.

class mink_warp.InvalidTarget[source]#

Bases: MinkWarpError

Exception raised when the target is invalid.

class mink_warp.InvalidGain[source]#

Bases: MinkWarpError

Exception raised when the gain is outside the valid range.

class mink_warp.InvalidDamping[source]#

Bases: MinkWarpError

Exception raised when the damping is outside the valid range.

class mink_warp.InvalidConstraint[source]#

Bases: MinkWarpError

Exception raised when a model constraint is invalid or inactive.

Integration#

mink_warp.integrate.integrate_qpos(*, q_in: array, q_out: array, velocity: array, dt_buf: array, jnt_type: array, jnt_qposadr: array, jnt_dofadr: array, nworld: int, njnt: int) None[source]#

q_out = integrate(q_in, velocity, dt) using mjwarp _next_position.

q_in and q_out must be distinct buffers (required for CUDA graphs). dt_buf must already hold the timestep (do not host-assign inside a graph).