Releases: duburcqa/jiminy
Jiminy 1.5
This release introduces a new (experimental!) high-performance and customizable viewer backend based on Panda3D, which supports both offscreen and onscreen rendering. Yet, some features of Viewer may not be working properly, and offscreen rendering requires X11 server on Linux for now. Notably, it is now possible to add flexibilities at fixed joint frames, and to add coupling forces between frames of the same robot.
Many important new features, breaking changes and critical bug fixes have been introduced since release 1.4.0, so it is time to bump up the minor version tag!
New features:
- [core] Log robot input args, robot urdf content, and all options as constants.
- [core] Enable to add flexible joints at any FIXED_JOINT frame.
- [core] Add composite centroidal rigid-body inertia computation to 'computeForwardKinematics'.
- [core] Enable to add coupling forces between frames of the same robot.
- [python/viewer] Add partial support of Panda3d visualizer.
Improvements:
- [core] Store constants in hdf5 datasets instead of attributes to get around 64K size limit.
- [core] TMLC telemetry format now supports both attributes and dataset field.
- [core] Do not enforce position/velocity limits at init if disable.
- [core] Fallback to not loading/using collision model if meshes are missing.
- [core|core/python] Expose 'computeForwardKinematics'.
- [core/python] Enable to get system from 'Engine'.
- [python/log] Fix print logged variables.
- [python/robot] Fixes some edge cases when automatically generating HDF file.
- [python/robot] Enable explicit robot initialization without hardware description file.
- [python/robot] Skip collision bounding box handling if meshes are not available.
- [python/simulator] Simulator's Viewer instance is no longer private attribute.
- [gym] Make viewer instance directly accessible in pipeline environments.
- [gym] Get access to simulator's attributes directly.
- [gym/common] Add new random sampling utility.
- [gym/common/env] Make sure robot shared memory is reset after calling '_setup'.
- [gym/common/env] Do not log error is observation is out-of-bounds, and only warning in debug.
- [gym/common/env] Make sure the low-level engine memory address does not change.
- [core/python] Avoid memory allocation by 'compute_systems_dynamics' for efficiency.
Bug fixes:
- [core] Fix body forces wrongly computed by 'aba'.
- [core] Fix 'getRigidConfigurationFromFlexible' method of Model class.
- [core] Fix computeSystemDynamics edge case and Python binding signature.
- [core/python] Fix bindings of some system_state object fields.
- [python/robot] Fix support of multiple collision boxes.
- [python/simulator] Fix callback not working since scalar references are now ndarray in Python.
- [python/simulator] Fix 'state' property for 'use_theoretical_state'=True.
- [python/viewer] Fix viewer exception when closing backend during replay.
- [gym/common/env] Fix 'replay' not working.
Miscellaneous:
- [core] Double space before inline comments.
- [core] Add constant for telemetry constant delimiter.
- [core] Clarity telemetry namespace.
- [core|core/python] Rename 'computeSystemDynamics' in 'computeSystemsDynamics' for consistency.
- [core/python] Simplify C++ to Python log converter.
- [python/viewer] Split viewer and replay tools in separated submodules to reduce file complexity.
- [python/viewer] Rename 'replay_speed' in 'speed_ratio' for clarity.
[gym] Add support of discrete action spaces.
This release adds support of discrete action spaces. It also fixes several non-critical issues related to core, gym, unit tests, and docs.
Improvements:
- [gym] Check if the action/observation are out-of-bounds in debug mode.
- [gym] Forward debug argument for classic control envs.
- [gym] Add back unit test for acrobot and test both continuous and discrete action space.
- [gym] Fix convergence issues of classic control learning unit tests.
Bug fixes:
- [core] Fix velocity bounds not taken into account for unbounded joints.
- [core] Fix successful iteration failure counter not properly reset.
- [gym] Fix support of Discrete space.
- [gym] Fix invalid debug write log format.
- [gym] Fix classic control envs observation space and discrete action space handling.
Miscellaneous:
- [misc] Silent external projects warning for compatibility with Cmake < 2.8.12.
- [misc] Fix Python bindings docstring substitution.
- [core] Display error messages in red instead of green.
- [core] Display warning messages if position/velocity bounds are enabled but not implemented.
- [core/python] Remove useless include.
[python/viewer] Improve stability and usability of replay.
This release fix several bugs that has been introduced in the previous ones. It also makes it easier to use the newly added color names, legend and watermark options for simulation replay.
Improvements:
- [python/viewer] Add support of 'jpeg', 'svg' formats and url path for watermark.
- [python/viewer] Set max width/height of watermark instead of exact ones to preserve aspect ratio.
Bug fixes:
- [core/python] Engine flag 'getIsSimulationRunning' is now returned by reference, fixing a bug with copy proxy.
- [python/simulator] Fix low-level reset/simulate methods wrongly called.
- [python/simulator] Fix generic time-series 'plot' method if data is missing.
- [python/viewer] Fix tuple urdf_rgba support.
- [python/viewer] Fix legend not showing up in some cases.
- [python/viewer] Fix legend font on Windows.
Miscellaneous:
- [core/python] Split bindings in multiple files to reduce compilation time.
- [python/viewer] Rename logo in watermark for clarity.
[python/viewer] Add dedicated widgets manager for Meshcat.
This release introduces a new dedicated widgets manager for Meshcat
that enables to display information on top of three.js
rendering. Those are captured when taking screenshot or recording videos. In addition, the default format when capturing frames is now .png
, which is about 30% faster.
New features:
- [python/viewer] Add new dedicated widgets manager. Only legend and watermark are available for now.
- [python/viewer] Enable to capture widgets on top of three.js rendering.
Bug fixes:
- [python/viewer] Force disabling legend if not all robots have colors when replaying trajectories.
- [python/viewer] Fix replay when at least one of the trajectories is empty.
Miscellaneous:
- [python/viewer] Always capture frames in '.png' format.
[viewer] New features for Meshcat
This release introduces new options for the viewer to display a customizable matplotlib-like legend (draggable!) and a log/watermark on top of Meshcat web-based visualizer.
New features:
- [python/viewer] Add 'legend' and 'logo_fullpath' optional argument to 'play_trajectories'.
Improvements:
- [core/python] Do not use Eigenpy to convert systemState.q/v/a to improve efficiency and preserve constness.
- [gym] Define shared memories/proxies at init when possible.
- [gym/envs] Improve performance of classic control environments (acrobot, cartpole).
Miscellaneous:
- [python|gym] Add Python native 'is_simulation_running' attribute to Simulator for fast access.
- [gym] Replace 'engine' proxy by 'simulator' for greater flexibility.
[gym] Overall performance improvement (3x).
Gym Jiminy, and especially the pipeline design tools, have been heavily refactored to improves performance. The keystone was to share references to avoid copies and memory allocations as such as possible. It also removes automatic clamping of actions/observations. It is up to the user to re-enable it, e.g. using gym wrappers. In addition, the efficiency of computationally demanding gym space helpers and provided PID controller block have been greatly enhanced. 3 times speed-up is to be expected.
Improvements:
- [core/python] Add extra parameter to convertToPython to return either reference or copy.
- [python|gym] Add unsafe set handle for controller to avoid of the cost of handling initialization separately.
- [gym] Refactor observation block chaining to use references for efficiency.
- [gym] Refactor GoalEnv to make it easier to use.
Bug fixes:
- [core] Fix segfault in some cases when 'start' method fails.
Miscellaneous:
- [core] Print error and warning messages on stderr instead of stdout.
- [core] Always remove robot lock when calling Engine.Stop.
- [core/python] Preserve constness of systemState Python bindings.
- [gym] Use np.core.umath.* directly in helper methods for efficiency.
- [gym] Reorder branches in helper methods to find most frequent case first.
- [gym] Add engine/stepper_state/system_state/sensors_state proxies to speed-up attribute lookup.
- [gym] Use 'dict/{}' instead of OrderedDict in 'step' method and calles for efficiency.
- [gym] Observe state as a dict instead of array to avoid memory allocation.
- [gym] Do not clip observation/action by default for efficiency.
- [gym] Pre-compiled PID law for efficiency.
- [gym] Rename _clamp in clip for consistency with numpy.
- [gym] No longer use 'encoder.fieldnames' to define state and pid target fields.
[python] Improve stability and reliability.
This release improves the general stability of jiminy_py, and especially the viewer. Additionally, it adds support of color names (e.g. 'orange') instead of RGBA color code for convenience.
Improvements:
- [python/viewer] Do not refresh camera pose automatically if no camera motion nor travelling.
- [python/viewer] Add support of string color to 'play_trajectories'.
Bug fixes:
- [core/python] Fix segfault when reading log without data.
- [python/simulation] Fix exception handling at reset.
- [python/viewer] Fix color handling for robot with reference material.
- [python/viewer] Fix exception if viewer arg is None for play_trajectories.
- [gym/examples] Fix tianshou rendering update period.
Miscellaneous:
- [misc] Fix telemetry format doc.
- [python/simulator] Throw error and replaying simulation without data.
- [python/simulator] Remove useless check for 'getattr'.
- [python/viewer] Ensure unique robot names during replay.
- [gym] More explicit error message for 'set_value' helper.
[HOTFIX] Hot fix Python 3.6 on Windows 10.
Jiminy_py viewer recorder is hanging on Windows 10 for Python 3.6 because the subprocess creation is silently failing.
[python] Improve viewer stability and reliability.
This release improves the stability of the viewer. In addition, it introduces a default color cycle when replying simulation for multiple robots at once (7 different colors).
Improvements:
- [python/viewer] Add default colors if multiple robot are replayed at the same time.
- [python/viewer] Redirect meshcat backend std_err to devnull to avoid flooding main thread.
Bug fixes:
- [core] Fix jiminy.Robot multiple initialize.
- [python/viewer] Fix edge case make the robot not appear in viewer if closed manually and reopen with same name.
- [python/viewer] Handle backend process kill timeout exceptions.
Miscellaneous:
- [misc] Disable automatic forward compatibility of numba to avoid potential install failure.
[python] Improve plotting and replaying capability.
This release adds camera motion planning capability, and significantly improves the stability of log plotting and replaying utilities.
New features:
- [python/viewer] Add new camera motion planning when replying trajectories.
Improvements:
- [python/viewer] Enable to change urdf color in already instantiated viewers.
- [python/viewer] Enable to set relative camera pose in Meshcat.
- [python/viewer] Rework travelling to be more flexible and more sure only is enable at a time.
Bug fixes:
- [python/simulator] Catch more exceptions.
- [python/simulator] Ensure proper argument forwarding for 'replay' method.
- [python/simulator] Fix bugs and glitches for 'plot' method. Disable inter-tab sync of x-axis (time).
- [python/viewer] Fix global attributes not reset if backend viewer is closed by user manually.
- [python/viewer] Fix color not taken into account in some cases.
Miscellaneous:
- [python/simulator] Forbid calling 'render' method if no simulation running.
- [python/viewer] Improve typing of 'play_trajectories'.
- [python|gym] Move 'replay' method from 'BaseJiminyEnv' to 'Simulator'.