Holodeck 0.3.2


More bug fixes, improvements, and even a few new features.


New Features

  • Added a ‘max tick’ functionality that will exit out of the environment after a designated number of ticks has occurred. (#325)


Bug Fixes

  • Fixed Command.add_number_parameters silently failing if given numpy array (#427)

Holodeck 0.3.1


More bug fixes, improvements, and even a few new features.


New Features

  • Added optional start location and rotation randomization on reset(). See Location Randomization. (#295)

  • spawn_prop() now allows basic objects (spheres, cubes, cylinders) to be spawned at arbitrary locations in the environment. (#397)

  • Distance Task by default now calculates the distance to the objective along the XY plane, to discourage flying straight up. (#360)

    If the full 3D distance is desired, set the 3dDistance flag in the configuration block of the Distance Task. (#360)

  • Added AbuseSensor, which senses if an agent has been abused. Agents experience abuse when they fall from a high distance or other agent-specific situations. (#262)

  • Environment weather/time can be optionally configured with Scenarios (#263). See Configuring Weather and Time.

  • set_weather() now has sunny weather available, which allows you to revert back to the default weather. (#376)

  • Added RangeFinderSensor which calculates the distance from the sensor to the first collision in the environment. The sensor can send out multiple rays in a circle if desired.

  • Added a ‘max tick’ function that will exit out of the environment after a designated number of ticks has occurred. (#325)


  • Holodeck now requires Python >= 3.5 (#389)

  • Moved weather/time methods from HolodeckEnvironment to new WeatherController (#196, #263)

  • Calling send_world_command() for an environment without the given command will now cause the environment to exit rather than fail silently. This includes all relevant methods in the WeatherController.

  • Removed the ability to toggle sensors during runtime with the removal of SetSensorEnabledCommand, set_sensor_enabled(), and set_sensor_enable(). To specify which sensors to include, use Custom Scenario Configurations. (#268)

  • Improved Docker images. See Docker Installation. (#347)

    • Tests can now be run inside of Docker containers

    • All images are based on Ubuntu 18.04 now

    • Added image for Dexterity package, and an image with every package

  • Every control scheme now has limits on inputs (ie maximum or minimum thrust) (#369)

    See get_high() and get_low() to read them.

  • Scenario Changes:

Bug Fixes

  • Fixed UAV blades rotating incorrectly (thanks @sethmnielsen!) (#331)

  • Fixed some posix_ipc.BusyError: Semaphore is busy errors on Linux systems when creating a scenario (#285)

  • Fixed a bug where the UE4 editor crashes when an agent is manually added to a level (#361)

  • Fixed crash when manually disabling viewport when it would’ve been disabled anyway. (#378)

  • Fixed SphereAgent having the incorrect default control scheme (#350)

Holodeck 0.3.0


This is a content release focused on improving the AndroidAgent and adding more scenarios and tasks for it. We also added a new floating hand agent to provide a simpler agent that can do many of the dexterity tasks.


New Features


  • Increased the AndroidAgent’s strength in the ANDROID_MAX_SCALED_TORQUES control scheme.

    • Previously the AndroidAgent didn’t have enough strength to even move its legs.

    • Strength was approximately doubled (See JointMaxTorqueControlScheme.h )

  • Location sensor now returns the location of the sensor, not just the agent (#306)

  • Updated to Unreal Engine 4.22 (#241)

  • TurtleAgent is now subject to gravity, has increased power, is black, and slightly smaller. (#217)

  • Removed the set_state() and teleport() methods from the HolodeckEnvironment class.

    These methods were duplicates of the corresponding methods on the HolodeckAgent class. See the linked issue for migration suggestions 👉 (#311)

  • Removed the get/set_ticks_per_capture methods from the HolodeckAgent and HolodeckEnvironment classes, moved set_ticks_per_capture() method to the RGBCamera class. (#197)

  • Viewport will now follow the main agent by default. (#238)

  • Viewport will not be rendered when it is hidden (show_viewport param in HolodeckEnvironment, Linux only) (#283)

Bug Fixes

  • Fixed the RelativeSkeletalPositionSensor.

    • This sensor returns the location of bones, not sensors. Since there are more bones than joints, previously it returned them in a completely different order than expected.

    • Now the order for this sensor is explicitly specified in AndroidAgent Bones and HandAgent Bones.

    • Previously on the first tick it would return uninitialized garbage on the first tick

  • Fixed being unable to spawn the TurtleAgent. (#308)

  • Fixed the set_physics_state() method. (#311)

  • Fixed agent spawn rotations being in the incorrect order. Fixed the documentation that specified the incorrect order as well (Rotations) (#309)

  • Fixed being unable to set the ticks per capture of a camera if it was not named RGBCamera. (#197)

  • Fixed being unable to make a Holodeck window larger than the current screen resolution (#301)

  • Fixed being unable to configure ViewportCapture sensor. (#301)

Known Issues

  • The TurtleAgent does not move consistently between Linux and Windows. (#336)

Holodeck 0.2.2


This is mostly a maintenance release focused on cleaning up bugs that were unresolved in 0.2.1

New Features

Bug Fixes

  • Fixed info() method (#182)

  • Fixed command buffer not being reset after calling reset(). (#254)

  • Fixed rain not being very visible on Linux (#235)

  • Fixed teleport command not working on the Android (#209)

  • Fixed RGBCamera intermittently returning a matrix of zeros after resetting (#271)

  • Fixed EXCEPTION_ACCESS_VIOLATION on Windows after creating an environment (#270)

  • Fixed MazeWorld-FinishMazeSphere task not going terminal when task was finished.

    • Added a post with a golden ball on top to the end of the maze, this is now the tasks’s target

Holodeck 0.2.1


This release of Holodeck is focused on polishing existing features and allowing worlds to be customized more.

This summer we are planning on adding much more content (worlds, agents, etc).


  • Added Scenarios to allow worlds to be more flexible and customizable

  • Documentation has been greatly expanded

New Features

  • Added expanded teleport functionality (#128)

  • Add ticks per capture command for RGB Camera (#127)

  • Add __enter__ and __exit__ methods to HolodeckEnvironment (#125)

  • Add option to run headless on Linux (set_render_quality() on HolodeckEnvironment) (#135)

  • Add ability to adjust rendering options (set_render_quality()) (#136)

  • Add environment flag that allows state to be returned as copied object instead of reference (#151)

  • Packages are not hard-coded on server, binaries are saved in version-specific folder to prevent crosstalk (#188)

  • Sensors can be disabled to improve performance (#152)

  • Add the ability to draw points, lines, arrows and boxes in the worlds (#144)

  • Added new tasks for use with scenarios

  • Added new scaled torque control scheme to the Android (#150)

Bug Fixes

  • Fixed mmap length is greater than filesize error on startup (#115)

  • Make all unit conversions on holodeck-engine side (#162)

  • Fix multi-agent example (thanks bradyz!) (#118)

  • Make sure reset() called before tick() and act() (#156)

  • And many smaller bugs!

Holodeck 0.1.0

Initial public release.