04/02/2020
More bug fixes, improvements, and even a few new features.
- Holodeck now requires Python 3.5 or greater
- Added :class:`~holodeck.sensors.AbuseSensor` and :class:`~holodeck.sensors.RangeFinderSensor`
- Added programmatic spawning of props, see :meth:`~holodeck.environments.HolodeckEnvironment.spawn_prop`
- Weather can be specified in scenarios, see :ref:`weather`.
Added optional start location and rotation randomization on :meth:`~holodeck.environments.HolodeckEnvironment.reset`. See :ref:`location-randomization`. (#295)
:meth:`~holodeck.environments.HolodeckEnvironment.spawn_prop` now allows basic objects (spheres, cubes, cylinders) to be spawned at arbitrary locations in the environment. (#397)
:ref:`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 :ref:`distance-task`. (#360)Added :class:`~holodeck.sensors.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 :ref:`scenarios` (#263). See :ref:`weather`.
:meth:`~holodeck.weather.WeatherController.set_weather` now has sunny weather available, which allows you to revert back to the default weather. (#376)
Added :class:`~holodeck.sensors.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.
Holodeck now requires Python >= 3.5 (#389)
Moved weather/time methods from :class:`~holodeck.environments.HolodeckEnvironment` to new :class:`~holodeck.weather.WeatherController` (#196, #263)
Calling :meth:`~holodeck.environments.HolodeckEnvironment.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 :class:`~holodeck.weather.WeatherController`.
Removed the ability to toggle sensors during runtime with the removal of :class:`~holodeck.environments.command.SetSensorEnabledCommand`, :meth:`~holodeck.environments.HolodeckEnvironment.set_sensor_enabled`, and :meth:`~holodeck.sensors.HolodeckSensor.set_sensor_enable`. To specify which sensors to include, use :ref:`custom-scenarios`. (#268)
Improved Docker images. See :ref:`docker`. (#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 :meth:`~holodeck.spaces.ActionSpace.get_high` and :meth:`~holodeck.spaces.ActionSpace.get_low` to read them.
Scenario Changes:
- EuropeanForest-MaxDistance, RedwoodForest-MaxDistance, UrbanCity-MaxDistance: Added :class:`~holodeck.sensors.AbuseSensor`
- InfiniteForest-MaxDistance: Added :class:`~holodeck.sensors.AbuseSensor` and :class:`~holodeck.sensors.RangeFinderSensor`.
- MazeWorld-FinishMazeSphere: Added :class:`~holodeck.sensors.RangeFinderSensor`
- 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)
11/02/2019
This is a content release focused on improving the :ref:`android-agent` 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.
- Added :ref:`dexterity-package` with new worlds and scenarios (see below for comprehensive listing)
- Added :ref:`clean-up-task` and :ref:`cup-game-task` tasks
- Added :ref:`hand-agent`
- Added the :ref:`dexterity-package` with new worlds and scenarios:
- Added the :ref:`hand-agent` - a simplified Android hand that can float
around
(#287)
- HandAgent can be used with the same Android-specific sensors ( :class:`~holodeck.sensors.JointRotationSensor`, :class:`~holodeck.sensors.PressureSensor`, :class:`~holodeck.sensors.RelativeSkeletalPositionSensor`)
- Added new tasks sensors for specific worlds
- Packages can be installed directly from a URL (see :class:`~holodeck.packagemanager.install`) (#129)
- Agent sensors can now be rotated at run time with :meth:`~holodeck.sensors.HolodeckSensor.rotate`. (#305)
- The config files can now specify whether an agent should be spawned (#303)
- Pressing
h
now shows the coordinates of the agent the viewport is following or the coordinates of the camera if it is detached (see :ref:`hotkeys`). (#253) - The viewport now follows the main agent as specified in the config file by default. (#238)
- You can now specify the number of ticks you want to occur in the :meth:`~holodeck.environments.HolodeckEnvironment.tick` and the :meth:`~holodeck.environments.HolodeckEnvironment.step` methods, (#313)
Increased the :ref:`android-agent`'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)
:ref:`turtle-agent` is now subject to gravity, has increased power, is black, and slightly smaller. (#217)
Removed the
set_state()
andteleport()
methods from the :class:`~holodeck.environments.HolodeckEnvironment` class.These methods were duplicates of the corresponding methods on the :class:`~holodeck.agents.HolodeckAgent` class. See the linked issue for migration suggestions 👉 (#311)
Removed the
get/set_ticks_per_capture
methods from the :class:`~holodeck.agents.HolodeckAgent` and :class:`~holodeck.environments.HolodeckEnvironment` classes, moved :meth:`~holodeck.sensors.RGBCamera.set_ticks_per_capture` method to the :class:`~holodeck.sensors.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 :class:`~holodeck.environments.HolodeckEnvironment`, Linux only) (#283)
- Fixed the :class:`~holodeck.sensors.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 :ref:`android-bones` and :ref:`hand-bones`.
- Previously on the first tick it would return uninitialized garbage on the first tick
- Fixed being unable to spawn the :ref:`turtle-agent`. (#308)
- Fixed the :meth:`~holodeck.agents.HolodeckAgent.set_physics_state` method. (#311)
- Fixed agent spawn rotations being in the incorrect order. Fixed the documentation that specified the incorrect order as well (:ref:`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 :class:`~holodeck.sensors.ViewportCapture` sensor. (#301)
- The TurtleAgent does not move consistently between Linux and Windows. (#336)
06/20/2019
This is mostly a maintenance release focused on cleaning up bugs that were
unresolved in 0.2.1
- When freecamming around, :ref:`pressing shift <hotkeys>` moves the camera faster. (#99)
- Agents can have a rotation specified in the scenario config files (#209)
- Custom scenarios can be made with dictionaries as well as
json
files. See :ref:`custom-scenarios` (#275) - Documented how to improve Holodeck performance. See :ref:`improving-performance` (#109)
- Fixed :meth:`~holodeck.environments.HolodeckEnvironment.info` method (#182)
- Fixed command buffer not being reset after calling :meth:`~holodeck.environments.HolodeckEnvironment.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 :ref:`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
05/20/2019
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 :ref:`Scenarios <scenarios>` to allow worlds to be more flexible and customizable
- Documentation has been greatly expanded
- Added expanded teleport functionality (#128)
- Add ticks per capture command for RGB Camera (#127)
- Add
__enter__
and__exit__
methods to :class:`~holodeck.environments.HolodeckEnvironment` (#125) - Add option to run headless on Linux (:meth:`~holodeck.environments.HolodeckEnvironment.set_render_quality` on :class:`~holodeck.environments.HolodeckEnvironment`) (#135)
- Add ability to adjust rendering options (:meth:`~holodeck.environments.HolodeckEnvironment.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)
- 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 :meth:`~holodeck.environments.HolodeckEnvironment.reset` called before :meth:`~holodeck.environments.HolodeckEnvironment.tick` and :meth:`~holodeck.environments.HolodeckEnvironment.act` (#156)
- And many smaller bugs!
Initial public release.