Skip to main content

High fidelity simulated environments for reinforcement learning

Project description

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/).

Project details


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

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.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page