# mujoco_warp **Repository Path**: LuIrara/mujoco_warp ## Basic Information - **Project Name**: mujoco_warp - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: api_refactor - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-05-27 - **Last Updated**: 2025-05-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MuJoCo Warp (MJWarp) MJWarp is a GPU-optimized version of the [MuJoCo](https://github.com/google-deepmind/mujoco) physics simulator, designed for NVIDIA hardware. > [!WARNING] > MJWarp is in its Alpha stage, with many features still missing and limited testing so far. MJWarp uses [NVIDIA Warp](https://github.com/NVIDIA/warp) to circumvent many of the [sharp bits](https://mujoco.readthedocs.io/en/stable/mjx.html#mjx-the-sharp-bits) in [MuJoCo MJX](https://mujoco.readthedocs.io/en/stable/mjx.html#). Once MJWarp exits Alpha, it will be integrated into both MJX and [Newton](https://developer.nvidia.com/blog/announcing-newton-an-open-source-physics-engine-for-robotics-simulation). MJWarp is maintained by [Google DeepMind](https://deepmind.google/) and [NVIDIA](https://www.nvidia.com/). # Installing for development ```bash git clone https://github.com/google-deepmind/mujoco_warp.git cd mujoco_warp source miniconda3/bin/activate conda create -n mjwarp python=3.10 conda activate mjwarp pip install --upgrade pip ``` During early development, MJWarp is on the bleeding edge - you should install Warp nightly: ```bash pip install warp-lang --pre --upgrade -f https://pypi.nvidia.com/warp-lang/ ``` Then install MJWarp in editable mode for local development: ```bash pip install -e .[dev,cuda] pip install lark mediapy ml_collections markupsafe dm-control[mjx] playground conda install ffmpeg -c conda-forge ``` Now make sure everything is working: ```bash python -m pytest ``` Should print out something like `XX passed in XX.XXs` at the end! If you plan to write Warp kernels for MJWarp, please use the `kernel_analyzer` vscode plugin located in `contrib/kernel_analyzer`. Please see the `README.md` there for details on how to install it and use it. The same kernel analyzer will be run on any PR you open, so it's important to fix any issues it reports. # Compatibility The following features are implemented: | Category | Feature | | ----------------- | ---------------------------------------------------------------------------------------------------------| | Dynamics | Forward only | | Transmission | `JOINT`, `JOINTINPARENT`, `TENDON` | | Actuator Dynamics | `NONE`, `INTEGRATOR`, `FILTER`, `FILTEREXACT`, `MUSCLE` | | Actuator Gain | `FIXED`, `AFFINE`, `MUSCLE` | | Actuator Bias | `NONE`, `AFFINE`, `MUSCLE` | | Geom | `PLANE`, `SPHERE`, `CAPSULE`, `ELLIPSOID`, `CYLINDER`, `BOX`, `MESH` | | Constraint | `FRICTION JOINT`, `FRICTION TENDON`, `LIMIT_BALL`, `LIMIT_JOINT`, `LIMIT_TENDON`, | | | `CONTACT_PYRAMIDAL`, `CONTACT_ELLIPTIC` | | Equality | `CONNECT`, `WELD`, `JOINT`, `TENDON` | | Integrator | `EULER`, `IMPLICITFAST`, `RK4` | | Cone | `PYRAMIDAL`, `ELLIPTIC` | | Condim | 1, 3, 4, 6 | | Solver | `CG`, `NEWTON` | | Fluid Model | `BOX` | | Tendons | `FIXED`, `SITE` | | Sensors | `CAMPROJECTION`, `JOINTPOS`, `TENDONPOS`, `ACTUATORPOS`, `BALLQUAT`, `FRAMEPOS`, `FRAMEXAXIS`, | | | `FRAMEYAXIS`, `FRAMEZAXIS`, `FRAMEQUAT`, `SUBTREECOM`, `CLOCK`, `VELOCIMETER`, `GYRO`, `JOINTVEL`, | | | `TENDONVEL`, `ACTUATORVEL`, `BALLANGVEL`, `FRAMELINVEL`, `FRAMEANGVEL`, `SUBTREELINVEL`, `SUBTREEANGMOM`,| | | `TOUCH`, `ACCELEROMETER`, `FORCE`, `TORQUE`, `ACTUATORFRC`, `JOINTACTFRC`,`FRAMELINACC`, `FRAMEANGACC` | # Benchmarking Benchmark as follows: ```bash mjwarp-testspeed --function=step --mjcf=test_data/humanoid/humanoid.xml --batch_size=8192 ``` To get a full trace of the physics steps (e.g. timings of the subcomponents) run the following: ```bash mjwarp-testspeed --function=step --mjcf=test_data/humanoid/humanoid.xml --batch_size=8192 --event_trace=True ```