Skip to content

Releases: duburcqa/jiminy

[python/viewer] Hot fix viewer issues.

12 Jun 06:55
7d62def
Compare
Choose a tag to compare

Minor patch to fix viewer issues introduced in previous release.

[gym] Enhanced interactive mode.

08 Jun 06:29
d125efd
Compare
Choose a tag to compare

The interactive mode of gym_jiminy, allowing to play with a robot during a simulation using mouse and keyword input, has been greatly improvement in terms of features, reliability, and computational efficiency. Besides, every minor framerate drops of the viewer using Panda3d has been addressed to make the experience more enjoyable. It is now possible to replay more than 10 log files using integrated graphics at solid 30fps.

New features

  • [python/viewer] Add option to not lock camera pose but only look-at point when travelling is enabled using Panda3d.

Improvements

  • [python/viewer] Display freeflyer external forces by default.
  • [python/viewer] Add getter for camera pose.
  • [python/viewer] Improve viewer refresh efficientcy by only forcing display update whenever necessary.
  • [python/viewer] Add support of frame index to define relative lookup and camera pose.
  • [python/viewer] Add repeat capability to 'jiminy_replay' entrypoint.
  • [gym/common/envs] More versatile interactive loop helper.
  • [gym/common/envs] Add support of gym.wrappers to 'play_interactive'.
  • [gym/common/envs] Add 'pause' key to play interactive mode.

Patches and bug fixes

  • [python/robot] Fix external forces not properly shared with viewer.
  • [python/viewer] Fix interactive loop CPU throttle by adding short sleep in deamon reading stdin.
  • [python/viewer] Mix busy loop and timer sleep in precise sleep to release the GIL.
  • [gym/common/envs] Fix simulation not stopped when playing ends in play interactive mode.

Miscellaneous

  • [gym/examples/rllib] Provide helper to wrap policy as callable[[observation, reward], action].

[misc] Various minor improvements.

03 Jun 22:05
f820f94
Compare
Choose a tag to compare

This release only consists of minor quality-of-life improvements. In addition, a few bugs in Jiminy viewer have been fixed, and a more robust initial guess is provided to the 'impulse' contact solver to improve continuity of contact forces.

Improvements

  • [core] Provide robust initial guess to 'impulse' contact solver.
  • [gym/common] 'sample' now supports providing both 'shape' and vector 'low'/'high'/'mean'/'scale' if broadcastable.

Patches and bug fixes

  • [python/viewer] Fix clicking on node for panda3d Qt widget.
  • [python/viewer] Fix seldom lock issues when displaying many robots simultaneously.

Miscellaneous

  • [gym/examples/rllib] Start ray backend in local mode in debug.
  • [gym/examples/rllib] More robust observation flattening.
  • [gym/examples/rllib] Interrupt learning gracefully in case of ray task exception.
  • [gym/examples/rllib] Do not replay if recording is disable during training.
  • [gym/examples/rllib] Add option to use custom logger.
  • [gym/examples/rllib] Add option to save checkpoint every given number of training iterations.

[core] 'Engine.start' no longer reset the engine automatically.

18 May 14:27
6391ad6
Compare
Choose a tag to compare

Very small release primarily intended to fix a bunch of bugs introduced in the previous ones. In addition, user-specified standard deviation for model parameters is now relative instead of absolute to be more consistent with the literature, and 'EngineMultiRobot.start' method no longer force reset of the simulation, giving more flexibility to the user, for example to run several simulations using the same model.

Improvements

  • [core] 'EngineMultiRobot.Start' no longer reset the engine automatically.
  • [core] Biases for random model generation are now relative instead of absolute.
  • [python/viewer] Log replay now support overwriting mesh package dir.
  • [gym/example] Add option to specify log subdirectory name interactively.

Patches and bug fixes

  • [core] Fix computation of center of mass positions and velocities.
  • [python/viewer] Fix log replay without velocity and external forces data available.

Miscellaneous

  • [misc] Fix CI numpy version issues.

[python/viewer] Display Capture Point and external forces.

17 May 09:54
f360ad0
Compare
Choose a tag to compare

Following the previous release, this one adds new markers to help analyze simulations, especially for locomotion tasks of bipedal robots. It is now possible to display the Capture Point (also called DCM) and external forces. Besides, Reinforcement Learning tools based on RLLib have been improved and a few bugs have been fixed.

New features

  • [python/processing] Add convex hull utilities.
  • [python/viewer] Add option to display DCM in viewer.
  • [python/viewer] Add option to display external linear forces at joint level in viewer.

Improvements

  • [core] Add option to register external forces to the telemetry.
  • [core] Compute velocity of the center of mass of each subtree systematically.
  • [python/processing] Improve efficiency and versatility of 'interpolate_zoh'.
  • [python/log] Extract external forces from log if recorded.
  • [python/viewer] Improve efficiency of markers update.
  • [python/viewer] 'jiminy_replay' entrypoint can now be used to record video.
  • [gym/examples] Add monitoring of episode duration.

Patches and bug fixes

  • [core] Fix internal update period computation when defined control and sensor update period of the engine without robot.
  • [python/robot] Add fallback if 'dynamics' fields 'damping'/'friction' are partially defined in URDF file.
  • [python/viewer] Fix default display marker value if backend is not Panda3d.
  • [gym/examples] Fix logging performance issues of RLlib.

Miscellaneous

  • [gym/examples] Improve documentation of RLlib tools.

[python/viewer] Add support of CoM and contact forces display.

03 May 09:55
c7f3b95
Compare
Choose a tag to compare

This release focuses on making the viewer more informative to ease analysis to control strategies by showing the center of mass and contact forces when replaying log data.

New features

  • [python/viewer] Add helper to emulate sensor update from log, and use it in 'play_log_data' method.
  • [python/viewer] Add top-level options to enable/disable display of com/contacts.

Improvements

  • [core|core/python] Add public setter 'AbstractSensorBase.set' for sensor data and expose it in Python.
  • [python/viewer] Add option to place cylinder anchor at bottom in Panda3d.
  • [python/viewer] Add option to always display node at foreground in Panda3d, and use it for markers.
  • [python/viewer] Add method to show/hide a single node in Panda3d.
  • [python/viewer] Custom 'update_hook' can be provided to 'display' and 'replay' methods.
  • [python/viewer] 'add_marker' now supports passing callables.
  • [python/viewer] Make objects clickable in Panda3d.

Patches and bug fixes

  • [python/viewer] Fix error when using exotic matplotlib backends.
  • [python/viewer] Fix 'Viewer.add_marker' and 'Panda3dApp.move_node' node placement.
  • [python/viewer] Fix 'append_group' when 'remove_if_exits=False'.
  • [python/viewer] Do not add legend if replay of the single log.
  • [python/viewer] Hide node if scale is too small.

Miscellaneous

  • [core] Make sensor setter 'AbstractSensorBase.setAll' private.
  • [core/python] 'result_converter' now supports Eigen::Ref.

[python] Add utility to replay simulation log files.

28 Apr 14:10
a7e3aa9
Compare
Choose a tag to compare

It is now possible to reconstruct the robot corresponding to a simulation log file. It is also possible to replay it in Jiminy Viewer, as long as the original meshes are still available, if any. In addition, a few issues related to widgets display have been fixed.

New features

  • [python/log] Add generic utility to reconstruct robot from log.
  • [python/viewer] Add 'jiminy_replay' CLI entrypoint to replay Jiminy log files.

Improvements

  • [python/simulator] 'simulate' now supports writing log in any available format.
  • [python/viewer] Add option to not remove widgets after replaying trajectories.

Bug fixes

  • [core/python] Fix 'buildGeomFromUrdf' module interoperability.
  • [python/viewer] Fix default legend when replaying multiple trajectories at once.
  • [python/viewer] Fix colors of Panda3d legend.
  • [python/viewer] Fix legend in panda3d when using identical labels.

Miscellaneous

  • [python/viewer] Reorder default colors cycle.
  • [python/viewer] Switch device notifications from 'error' to 'fatal' for Panda3d.
  • [misc] Remove dual ABI support for Python bindings since it is unstable and may cause segfault.
  • [misc] Provide cmake config version file in wheel.

[core/python] Custom return policy to avoid conflits with external modules.

26 Apr 21:14
c2af825
Compare
Choose a tag to compare

Small release fixing conflicts with external Boost.Python modules, along some other minor bugs.

Bug fixes

  • [core] Fix bug at Robot initialization when defining default flexible joints in the model.
  • [core/python] Fix wrong keyword arguments for 'EngineMultiRobot.reset' method.
  • [core/python] Add new Boost.Python return policy that can be used to by-pass converter registry if 'convertToPython' has been specified.

Miscellaneous

  • [python] Add some missing typing return types.

[core] Improve C++ core code quality.

24 Apr 21:00
8cc93c8
Compare
Choose a tag to compare

Minor release mainly intended to improve C++ core code quality to make it easier to read and maintain. It also fixes the last remaining issues to easily build Boost.Python extension modules when Jiminy is installed using pip.

Improvements

  • [core] Allow arbitrary large controller update period.
  • [core] Improve error reporting by printing fully qualified function name without arguments.
  • [core] Do not shuffle first iteration cycle of 'PGSolver', and initialize indices in reverse order to make convergence (hopefully) faster.
  • [gym/common/envs] Refresh action space before observation space since action could be part of observation but not conversely.
  • [gym/examples] Automatically monitor env step 'info' on Tensorboard's histograms when using RLlib backend.

Bug fixes

  • [core] Fix computation of visco-elastic coupling forces.

Miscellaneous

  • [core] Remove C-style cast, and avoid unnecessary cast.
  • [core] Remove irrelevant virtual keywords.
  • [core] Replace (u)int32_t by std::size_t/ptrdiff_t when appropriate for clarity and portability.
  • [core] Enable implicit conversion, deprecation, c-style cast, and unused variables warnings.
  • [core] Remove all dependencies to jsoncpp in core headers.
  • [core/python] Add fallback to complementary unsigned/signed type for integers for 'convertFromPython'.
  • [gym/common/wrappers] Relax argument type of 'FilteredFrameStack' for convenience.
  • [gym/common/wrappers] Rename 'FilterFrameStack' in 'FilteredFrameStack' for clarity.
  • [gym/examples] RLlib 'evaluate' helper method now returns aggregated info over episode.
  • [gym/examples] Only log data in Tensorboard format when RLlib is used, to dramatically reduce log folder size.
  • [misc] Minor update of easy install dependencies.
  • [misc] Do not install 'robotpkg-urdfdom' binaries since 'liburdom-dev' is already installed by other easy-install dependencies.
  • [misc] Relax Ubuntu version check for easy install script since it should work on any release in practice.
  • [misc] More robust Python library finding in provided CMake configuration file.
  • [misc] Check compatibility with required jiminy version if any in provided CMake configuration file.
  • [misc] Detect Numpy headers in provided CMake configuration file.
  • [misc] Add missing boost definitions in CMake configuration file.

[misc] Provide CMmake configuration file in wheels.

19 Apr 05:23
499f842
Compare
Choose a tag to compare

This release aims at making it as simple as possible to build executable and Boost.Python extension modules for Jiminy using CMake. Now it requires about 10 lines of CMake. Dynamic linking is automatically handled to ensure the generated binary works out-of-the-box.

Improvements

  • [misc] Bundle cmake configuration file in wheel.
  • [misc] Provide example of pip-based build of C++ executable using CMake.

Miscellaneous

  • [misc] Fix wheel deploy. Add project URLs to pypi project page.
  • [misc] Refactor legacy CMake Python finding to be consistent with CMake>=3.12.
  • [misc] Remove legacy compilation mode since no longer necessary.
  • [misc] Cleanup pinocchio include and move implementation include in cpp if possible.