Introducing Holodeck

Today, we are excited to release the first public version of Holodeck—a high-fidelity simulator built on top of Unreal Engine 4 (UE4). Holodeck is a python package which enables you to download pre-built worlds, and interact with them through a simple, high-level interface.

Holodeck currently contains a simple sphere robot, a UAV (quadcopter), an Android, and a navigation agent. It also comes with 6 diverse default worlds. It is primarily built for research in reinforcement learning and robotics, and is built around the principles of simplicity, fidelity, customizability, and performance.

Simplicity

Holodeck uses a simple gym-like interface for loading and interacting with environments. Not only is it simple to use, but we have created custom docker containers to make it easy for you to run in a containerized environment.

env = holodeck.make("EuropeanForest")
env.reset()
for i in range(3000):
    command = env.action_space.sample()
    state, reward, terminal, info = env.step(command)

Fidelity

An ultimate goal of reinforcement learning is to train agents that can perform complicated tasks in realistic environments. We have built Holodeck on top of the Unreal Engine so that we can leverage high-fidelity virtual environments. In a Holodeck environment, each agent can experience the world through a number of high-dimensional sensors.

Holodeck (64-bit, PCD3D_SM5)
Holodeck’s European Forest World

Customizability

We know that researchers want to experiment with agents in diverse environments, on a broad range of tasks. While we hope our handmade worlds will be useful to you, we also give you options to adapt those environments to your needs. From python, you can easily choose the time of day, the length of the day/night cycle, and even the weather. You can spawn in new agents, and Holodeck makes it easy to have control over multi-agent environments. If you don’t like our initial setup, you can also teleport the agents around. Soon, you will even be able to choose between a broad range of tasks programmatically.

If that’s not enough, you can design your own worlds and tasks directly in UE4, and import it into a Holodeck project. Then you simply drag in Holodeck content, build it, and install it and you’re ready to train in your own custom environments.

Performance

We use memory mapped files to reduce latency in communicating high-dimensional sensor data. This allows us to capture high quality images from games packaged in UE4 and manipulate them easily as numpy arrays in python. The worlds are fixed to run at 30fps, but some environments are capable at running up to 120fps on some systems, allowing the agents to experience up to 4 seconds in simulation for every second of real time. You can also run multiple environments in parallel on one system.

Where to get Started

To get started with Holodeck, visit the Holodeck github page. It contains installation instructions for both containerized Holodeck, as well as pip installation for Linux and Windows. It also contains some example scripts to see what using Holodeck looks like.

For more detailed documentation, read the docs.

For making your own environments, check out Holodeck Engine github page.