Jump to content

Connect SuperML | Leeroopedia MCP: Equip your AI agents with best practices, code verification, and debugging knowledge. Powered by Leeroo — building Organizational Superintelligence. Contact us at founders@leeroo.com.

Implementation:Google deepmind Mujoco Engine Util Misc Header

From Leeroopedia
Knowledge Sources
Domains Physics Simulation, Utility Functions
Last Updated 2026-02-15 04:00 GMT

Overview

Header file declaring the miscellaneous utility function API for MuJoCo, covering tendon wrapping, muscle dynamics, contact encoding, history buffers, type conversion, sorting, and general numerical helpers.

Description

This header declares the public and internal API for MuJoCo's miscellaneous utilities. It is organized into several functional groups: tendon and actuator functions (mju_wrap, mju_muscleGain, mju_muscleBias, mju_muscleDynamics, mju_muscleDynamicsTimescale, mju_muscleGainLength), geometry helpers (mju_geomSemiAxes, mju_insideGeom, mju_camPixelRay), flex interpolation (mju_defGradient, mju_evalBasis, mju_interpolate3D), Base64 encoding/decoding (mju_encodeBase64, mju_decodeBase64, mju_isValidBase64), history buffer management (mju_historyInit, mju_historyInsert, mju_historyRead), contact force encoding (mju_encodePyramid, mju_decodePyramid), numerical utilities (mju_min, mju_max, mju_clip, mju_sign, mju_round, mju_sigmoid, mju_springDamper, mju_outsideBox, mju_isBad, mju_isZero), type conversion (mju_f2n, mju_n2f, mju_d2n, mju_n2d), gather/scatter operations, sparse map construction, and sorting functions.

Usage

Included by engine modules that need tendon wrapping, muscle computations, contact force handling, data conversion, or any of the general-purpose numerical helper functions.

Code Reference

Source Location

Key Functions

// Tendon wrapping
mjtNum mju_wrap(mjtNum wpnt[6], const mjtNum x0[3], const mjtNum x1[3],
                const mjtNum xpos[3], const mjtNum xmat[9],
                mjtNum radius, int type, const mjtNum side[3]);

// Muscle dynamics
MJAPI mjtNum mju_muscleGain(mjtNum len, mjtNum vel, const mjtNum lengthrange[2],
                            mjtNum acc0, const mjtNum prm[9]);
MJAPI mjtNum mju_muscleDynamics(mjtNum ctrl, mjtNum act, const mjtNum prm[3]);

// Contact encoding
MJAPI void mju_encodePyramid(mjtNum* pyramid, const mjtNum* force, const mjtNum* mu, int dim);
MJAPI void mju_decodePyramid(mjtNum* force, const mjtNum* pyramid, const mjtNum* mu, int dim);

// History buffers
MJAPI void mju_historyInit(mjtNum* buf, int n, int dim, const mjtNum* times,
                           const mjtNum* values, mjtNum user);
MJAPI mjtNum* mju_historyInsert(mjtNum* buf, int n, int dim, mjtNum t);
MJAPI const mjtNum* mju_historyRead(const mjtNum* buf, int n, int dim,
                                    mjtNum* res, mjtNum t, int interp);

// Numerical utilities
MJAPI mjtNum mju_min(mjtNum a, mjtNum b);
MJAPI mjtNum mju_max(mjtNum a, mjtNum b);
MJAPI mjtNum mju_clip(mjtNum x, mjtNum min, mjtNum max);
MJAPI int mju_isBad(mjtNum x);

// Type conversion
MJAPI void mju_f2n(mjtNum* res, const float* vec, int n);
MJAPI void mju_n2f(float* res, const mjtNum* vec, int n);

// Gather/scatter
MJAPI void mju_gather(mjtNum* res, const mjtNum* vec, const int* ind, int n);
MJAPI void mju_scatter(mjtNum* res, const mjtNum* vec, const int* ind, int n);

Import

#include "engine/engine_util_misc.h"

I/O Contract

Inputs

Name Type Required Description
x0, x1, xpos mjtNum[3] Yes Wrapping endpoint positions and obstacle center
len, vel, ctrl, act mjtNum Yes Muscle state variables
prm mjtNum* Yes Model parameter arrays
buf mjtNum* Yes History buffer with layout [user, cursor, times, values]
type int Yes Object type for type2Str/str2Type conversion

Outputs

Name Type Description
return value mjtNum Computed wrap length, muscle force, clipped value, etc.
res mjtNum* Output array for conversions, gather, and interpolation
return value (type) const char* or int Type name string or type ID

Related Pages

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment