UnrealRoboticsLab (URLab) is an Unreal Engine 5 plugin that embeds the MuJoCo physics engine directly into the editor and runtime. You simulate robots with MuJoCo's accurate contact dynamics and render them with Unreal's lighting, materials, and cameras.
Full documentation lives at urlab-sim.github.io/UnrealRoboticsLab. Start there for installation, guides, the Python API, and everything else. This README is only a summary.
- Import MuJoCo models. Drag an MJCF
.xmlinto the Content Browser and URLab builds a ready-to-simulate Articulation Blueprint, with support for joints, actuators, tendons, muscles, and flexcomp. Or turn any static mesh into a physics body with a single component. - Simulate with MuJoCo, render with Unreal. Physics runs on its own thread while Unreal renders, so you get accurate contacts and photorealistic output together.
- Control robots however you like. Drive actuators from Blueprints, the in-editor dashboard, or Python and ROS 2 over the network, with PD controllers and live gain tuning.
- Capture sensor data. Render RGB, depth, and segmentation from robot cameras with real camera intrinsics, alongside MuJoCo's full sensor suite.
- Record and replay. Capture entire simulation episodes and play them back deterministically.
- Debug visually. Body-island and segmentation overlays, tendon and muscle rendering, collision overlays, and mouse-driven body perturbation.
URLab is a C++ plugin, so your project must be a C++ project. Clone it into your
project's Plugins/ folder with submodules, build the native dependencies once,
then build your project:
cd"YourProject/Plugins"
git clone --recurse-submodules https://github.com/URLab-Sim/UnrealRoboticsLab.git
cd UnrealRoboticsLab/third_party
./build_all.sh # or .\build_all.ps1 on WindowsSee the Installation guide for the full Windows and Linux walkthrough, then the Quickstart.
Full documentation is at urlab-sim.github.io/UnrealRoboticsLab.
| Page | Covers |
|---|---|
| Installation | Windows and Linux setup |
| Quickstart | Import a robot and run a simulation |
| Guides | Importing, articulations, sensors, cameras, controllers, debug |
| Python & External Control | Drive URLab from Python, run and evaluate policies |
| Architecture | How the pieces fit together |
| Roadmap | Where URLab is headed |
URLab talks to external systems over ZMQ. The companion urlab_bridge package (separate repository) provides Python middleware for remote control, policy deployment, and ROS 2 bridging.
- Unreal Engine 5.7 (only tested/supported version; avoid 5.8 — Vulkan driver regressions on Linux), Windows (Win64) with Visual Studio 2022/2025, or Linux (x86_64) with UE's bundled clang.
- CMake 3.24+ to build the dependencies.
- MuJoCo, CoACD, and libzmq are bundled as submodules and built from source.
- Python 3.11+ (optional), for
urlab_bridge.
Contributions are welcome. See CONTRIBUTING.md, and the Contributing docs for building from source, the codegen, and bumping MuJoCo. Since Unreal projects cannot use standard CI, each PR should include proof of a local build and passing tests.
If you use URLab in your research, please cite the ICRA 2026 paper:
@inproceedings{embleyriches2026urlab,
title = {Unreal Robotics Lab: A High-Fidelity Robotics Simulator with Advanced Physics and Rendering},
author = {Embley-Riches, Jonathan and Liu, Jianwei and Julier, Simon and Kanoulas, Dimitrios},
booktitle = {IEEE International Conference on Robotics and Automation (ICRA)},
year = {2026},
url = {https://arxiv.org/abs/2504.14135}
}Copyright 2026 Jonathan Embley-Riches. Licensed under the Apache License, Version 2.0. See LICENSE.
Disclaimer: UnrealRoboticsLab is an independent software plugin. It is NOT affiliated with, endorsed by, or sponsored by Epic Games, Inc. "Unreal" and "Unreal Engine" are trademarks or registered trademarks of Epic Games, Inc. in the US and elsewhere. This plugin incorporates third-party software: MuJoCo (Apache 2.0), CoACD (MIT), and libzmq (MPL 2.0). See ThirdPartyNotices.txt for details.
