Holodeck
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 actionterminal: 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/).
Metadata
Release files for holodeck 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| holodeck-0.3.1.tar.gz | 35.7 kB | Without provenance | Details for holodeck-0.3.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| holodeck-0.3.1-py3-none-any.whl | Python 3 | none | any | Details for holodeck-0.3.1-py3-none-any.whl |
Total release size: 75.4 kB
Release files / holodeck-0.3.1.tar.gz
| Download URL | holodeck-0.3.1.tar.gz |
|---|---|
| Size | 35.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
46672327ffbb71b6ef559353ef239c5bffd26a9d36976211e841b744261ac551
|
|
BLAKE2b-256 checksum How to use checksums |
010f2b1559bf9f52e904b12a1fce19b29cc7d616fbbf1e9c79fa27df2a03ee2e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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
|
Release files / holodeck-0.3.1-py3-none-any.whl
| Download URL | holodeck-0.3.1-py3-none-any.whl |
|---|---|
| Size | 39.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
832345add30b4580999c766d685a579d577bcb9a540278e38f2795f617e81579
|
|
BLAKE2b-256 checksum How to use checksums |
d7a2ea53c39d1cfc1457686c9ef7e2f950d24f68a1a9dabe44779296708a4f39
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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
|
Security for holodeck 0.3.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.