Installation¶
Holodeck is installed in two portions: a client python library (holodeck)
is installed first, which then downloads world packages. The python portion is
very small, while the world packages (“binaries”) can be several gigabytes.
Requirements¶
- >= Python 3.5
- Several gigabytes of storage
- pip3
- Linux: OpenGL 3+
Install Client via pip¶
The latest stable Holodeck package is available in a pip repository:
pip install holodeck
Note
On some Ubuntu systems a dependency of Holodeck (posix-ipc) can fail to
install if you do not have the python3-dev package installed.
$ apt install python3-dev
Install Client via git¶
To use the latest version of Holodeck, you can install and use Holodeck simply
by cloning the BYU-PCCL/holodeck repository, and ensuring it is on your
sys.path.
The master branch is kept in sync with the pip repository, the develop
branch is the bleeding edge of development.
If you want to download a specific release of Holodeck, each release is tagged in the Git repository.
Docker Installation¶
Holodeck’s docker image is only supported on Linux hosts.
You will need nvidia-docker installed.
The repository on DockerHub is pccl/holodeck.
Currently the following tags are availible:
base: base image without any worldsdefault-worlds: comes with the default worlds pre-installeddexterity: comes with the dexterity package pre-installed
This is an example command to start a holodeck container
nvidia-docker run --rm -it --name holodeck pccl/holodeck:default-worlds
Note
Holodeck cannot be run with root privileges, so the user holodeckuser with
no password is provided in the docker image.
Managing World Packages¶
The holodeck python package includes a Package Manager that is used
to download and install world packages. Below are some example usages, but see
Package Manager for complete documentation.
Install a Package Automatically¶
>>> from holodeck import packagemanager
>>> packagemanager.installed_packages()
[]
>>> packagemanager.available_packages()
{'DefaultWorlds': ['0.1.0', '0.1.1'], 'MoveBox': ['0.0.1']}
>>> packagemanager.install("DefaultWorlds")
Installing DefaultWorlds ver. 0.1.1 from http://localhost:8080/packages/0.2.0/DefaultWorlds/Linux/0.1.1.zip
File size: 1.55 GB
|████████████████████████| 100%
Unpacking worlds...
Finished.
>>> packagemanager.installed_packages()
['DefaultWorlds']
Installation Location¶
By default, Holodeck will install packages local to your user profile. See Package Installation Location for more information.
Manually Installing a Package¶
To manually install a package, you will be provided a .zip file.
Extract it into the worlds folder in your Holodeck installation location
(see Package Installation Location)
Note
Ensure that the file structure is as follows:
+ worlds
+-- YourManuallyInstalledPackage
| +-- config.json
| +-- etc...
+-- AnotherPackage
| +-- config.json
| +-- etc...
Not
+ worlds
+-- YourManuallyInstalledPackage
| +-- YourManuallyInstalledPackage
| +-- config.json
| +-- etc...
+-- AnotherPackage
| +-- config.json
| +-- etc...
Print Information¶
There are several convenience functions provided to allow packages, worlds, and scenarios to be easily inspected.
>>> packagemanager.package_info("DefaultWorlds")
Package: DefaultWorlds
Platform: Linux
Version: 1.04
Path: LinuxNoEditor/Holodeck/Binaries/Linux/Holodeck
Worlds:
UrbanCity
Scenarios:
UrbanCity-Follow:
Agents:
Name: ThisIsAScenario
Type: UavAgent
Sensors:
RGBCamera
OrientationSensor
LocationSensor
CyberPunkCity
Scenarios:
CyberPunkCity-Follow:
Agents:
Name: ThisIsAScenario
Type: UavAgent
Sensors:
RGBCamera
OrientationSensor
LocationSensor
You can also look for information for a specific world or scenario
packagemanager.world_info("UrbanCity")
packagemanager.scenario_info("UrbanCity-Follow")