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 Core Util

From Leeroopedia
Revision as of 12:45, 16 February 2026 by Admin (talk | contribs) (Auto-imported from implementations/Google_deepmind_Mujoco_Engine_Core_Util.md)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Knowledge Sources
Domains Physics Simulation, Kinematics, Linear Algebra
Last Updated 2026-02-15 04:00 GMT

Overview

Provides core utility functions for MuJoCo's engine, including Jacobian computation, DOF chain merging, sparsity detection, and various kinematic helper routines.

Description

This module contains foundational utility functions used throughout MuJoCo's engine. It provides sparsity and cone type determination (mj_isSparse, mj_isPyramidal), DOF chain merging for pairs of bodies (mj_mergeChain, mj_mergeChainSimple), body chain extraction (mj_bodyChain), Jacobian computation in both dense and sparse formats (mj_jac, mj_jacSparse, mj_jacSparseSimple), specialized Jacobian functions for bodies, sites, and geoms, velocity and acceleration queries (mj_objectVelocity, mj_objectAcceleration), local-to-global coordinate transforms (mj_local2Global), contact force extraction (mj_contactForce), and warning reporting (mj_warning).

Usage

These utility functions are called throughout the engine by kinematics, constraint, and derivative modules. mj_jac and its variants are critical for constraint Jacobian assembly, while mj_mergeChain is used to determine the sparsity pattern for constraint rows.

Code Reference

Source Location

Key Functions

// Sparsity and cone type
int mj_isSparse(const mjModel* m);
int mj_isPyramidal(const mjModel* m);

// DOF chain merging for constraint Jacobians
int mj_mergeChain(const mjModel* m, int* chain, int b1, int b2);
int mj_mergeChainSimple(const mjModel* m, int* chain, int b1, int b2);
int mj_bodyChain(const mjModel* m, int body, int* chain);

// Jacobian computation (dense and sparse)
void mj_jac(const mjModel* m, const mjData* d,
            mjtNum* jacp, mjtNum* jacr, const mjtNum point[3], int body);
void mj_jacBody(const mjModel* m, const mjData* d, mjtNum* jacp, mjtNum* jacr, int body);
void mj_jacBodyCom(const mjModel* m, const mjData* d, mjtNum* jacp, mjtNum* jacr, int body);
void mj_jacSubtreeCom(const mjModel* m, mjData* d, mjtNum* jacp, int body);
void mj_jacGeom(const mjModel* m, const mjData* d, mjtNum* jacp, mjtNum* jacr, int geom);
void mj_jacSite(const mjModel* m, const mjData* d, mjtNum* jacp, mjtNum* jacr, int site);
void mj_jacPointAxis(const mjModel* m, mjData* d, mjtNum* jacPoint, mjtNum* jacAxis,
                     const mjtNum point[3], const mjtNum axis[3], int body);
void mj_jacSparse(const mjModel* m, const mjData* d, mjtNum* jacp, mjtNum* jacr,
                  const mjtNum point[3], int body, int NV, const int* chain);

// Velocity and acceleration queries
void mj_objectVelocity(const mjModel* m, const mjData* d,
                       int objtype, int objid, mjtNum res[6], int flg_local);
void mj_objectAcceleration(const mjModel* m, const mjData* d,
                           int objtype, int objid, mjtNum res[6], int flg_local);

// Coordinate transforms and contact forces
void mj_local2Global(mjData* d, mjtNum xpos[3], mjtNum xmat[9], ...);
void mj_contactForce(const mjModel* m, const mjData* d, int id, mjtNum result[6]);

// Warning system
void mj_warning(mjData* d, int warning, int info);

Import

#include "engine/engine_core_util.h"

I/O Contract

Inputs

Name Type Required Description
m const mjModel* Yes Physics model with kinematic tree and DOF structure
d const mjData* / mjData* Yes Simulation state with computed positions and velocities
body int Varies Body index for Jacobian/chain computation
point const mjtNum[3] Varies 3D point for Jacobian evaluation

Outputs

Name Type Description
jacp mjtNum* Positional Jacobian (3 x nv)
jacr mjtNum* Rotational Jacobian (3 x nv)
chain int* Merged DOF chain indices
return value int Chain length or boolean flag depending on function

Related Pages

Page Connections

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