Skip to main content

Holodeck

Holodeck Video

Read the docs badge Build Status

Holodeck is a high-fidelity simulator for reinforcement learning built on top of Unreal Engine 4.

Features

  • 7+ rich worlds for training agents in, and many scenarios for those worlds
  • Linux and Windows support
  • Easily extend and modify training scenarios
  • Train and control more than one agent at once
  • Simple, OpenAI Gym-like Python interface
  • High performance - simulation speeds of up to 2x real time are possible. Performance penalty only for what you need
  • Run headless or watch your agents learn

Questions? Join our Discord!

Installation

pip install holodeck

(requires >= Python 3.5)

See Installation for complete instructions (including Docker).

Documentation

Usage Overview

Holodeck's interface is similar to OpenAI's Gym.

We try and provide a batteries included approach to let you jump right into using Holodeck, with minimal fiddling required.

To demonstrate, here is a quick example using the DefaultWorlds package:

import holodeck

# Load the environment. This environment contains a UAV in a city.
env = holodeck.make("UrbanCity-MaxDistance")

# You must call `.reset()` on a newly created environment before ticking/stepping it
env.reset()                         

# The UAV takes 3 torques and a thrust as a command.
command = [0, 0, 0, 100]   

for i in range(30):
    state, reward, terminal, info = env.step(command)  
  • state: dict of sensor name to the sensor's value (nparray).
  • reward: the reward received from the previous action
  • terminal: indicates whether the current state is a terminal state.
  • info: contains additional environment specific information.

If you want to access the data of a specific sensor, import sensors and retrieving the correct value from the state dictionary:

print(state["LocationSensor"])

Multi Agent-Environments

Holodeck supports multi-agent environments.

Calls to step only provide an action for the main agent, and then tick the simulation.

act provides a persistent action for a specific agent, and does not tick the simulation. After an action has been provided, tick will advance the simulation forward. The action is persisted until another call to act provides a different action.

import holodeck
import numpy as np

env = holodeck.make("CyberPunkCity-Follow")
env.reset()

# Provide an action for each agent
env.act('uav0', np.array([0, 0, 0, 100]))
env.act('nav0', np.array([0, 0, 0]))

# Advance the simulation
for i in range(300):
  # The action provided above is repeated
  states = env.tick()

You can access the reward, terminal and location for a multi agent environment as follows:

task = states["uav0"]["FollowTask"]

reward = task[0]
terminal = task[1]
location = states["uav0"]["LocationSensor"]

(uav0 comes from the scenario configuration file)

Running Holodeck Headless

Holodeck can run headless with GPU accelerated rendering. See Using Holodeck Headless

Citation:

@misc{HolodeckPCCL,
  Author = {Joshua Greaves and Max Robinson and Nick Walton and Mitchell Mortensen and Robert Pottorff and Connor Christopherson and Derek Hancock and Jayden Milne and David Wingate},
  Title = {Holodeck: A High Fidelity Simulator},
  Year = {2018},
}

Holodeck is a project of BYU's Perception, Cognition and Control Lab (https://pcc.cs.byu.edu/).

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

holodeck-0.3.1.tar.gz (35.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

holodeck-0.3.1-py3-none-any.whl (39.7 kB view details)

Uploaded Python 3

File details

Details for the file holodeck-0.3.1.tar.gz.

File metadata

  • Download URL: holodeck-0.3.1.tar.gz
  • Upload date:
  • Size: 35.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.5

File hashes

Hashes for holodeck-0.3.1.tar.gz
Algorithm Hash digest
SHA256 46672327ffbb71b6ef559353ef239c5bffd26a9d36976211e841b744261ac551
MD5 edbb970c77e7b74ffd0920342ac78d1e
BLAKE2b-256 010f2b1559bf9f52e904b12a1fce19b29cc7d616fbbf1e9c79fa27df2a03ee2e

See more details on using hashes here.

File details

Details for the file holodeck-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: holodeck-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 39.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.5

File hashes

Hashes for holodeck-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 832345add30b4580999c766d685a579d577bcb9a540278e38f2795f617e81579
MD5 c50eefce8422df74d2882f861f2fbd48
BLAKE2b-256 d7a2ea53c39d1cfc1457686c9ef7e2f950d24f68a1a9dabe44779296708a4f39

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.3.1 This release

2 files

0.3.0

2 files

0.2.2

2 files

0.2.1

2 files

0.1.0

1 file

0.0.22

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page