MCPcopy Create free account
hub / github.com/URLab-Sim/UnrealRoboticsLab

github.com/URLab-Sim/UnrealRoboticsLab @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
2,549 symbols 4,856 edges 430 files 490 documented · 19% updated 6d ago★ 4802 open issues

Browse by type

Functions 1,985 Types & classes 564
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Documentation arXiv License MuJoCo Unreal Engine

URLab: MuJoCo Physics in Unreal Engine

URLab

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.

What you can do

  • Import MuJoCo models. Drag an MJCF .xml into 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.

Quick install

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 Windows

See the Installation guide for the full Windows and Linux walkthrough, then the Quickstart.

Documentation

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

Python integration

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.

Requirements

  • 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.

Contributing

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.

Citation

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}
}

License

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.

Core symbols most depended-on inside this repo

Shape

Method 1,157
Function 828
Class 539
Enum 25

Languages

C++78%
Python22%
C#1%

Modules by API surface

Scripts/codegen/generate_ue_components.py94 symbols
Source/URLab/Private/MuJoCo/Core/MjArticulation.cpp57 symbols
Source/URLab/Private/Bridge/RpcDispatcher.cpp56 symbols
Source/URLabEditor/Private/MjEditorOpHandlers.cpp53 symbols
Source/URLab/Private/MuJoCo/Core/MjPhysicsEngine.cpp45 symbols
Source/URLab/Public/MuJoCo/Core/Spec/SpecIterator.h36 symbols
Source/URLab/Public/MuJoCo/Utils/MjBind.h35 symbols
Source/URLabEditor/Private/MjLevelOps.cpp31 symbols
Source/URLab/Private/MuJoCo/Core/AMjManager.cpp31 symbols
Source/URLabEditor/Private/Tests/MjTestHelpers.h30 symbols
Source/URLab/Private/MuJoCo/Core/MjDebugVisualizer.cpp30 symbols
Source/URLab/Private/UI/MjSimulateWidget.cpp29 symbols

For agents

$ claude mcp add UnrealRoboticsLab \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page