Skip to content

Releases: duburcqa/jiminy

Hot fix

30 May 06:47
d5e76c5
Compare
Choose a tag to compare

This release fixes a bunch of bugs mainly introduced by the previous one and extend the serialization to geometry models to support convex shapes.

Improvements

  • [core] Add serialization of convex geometries.
  • [python/viewer] Enhance lighting for panda3d.

Patches and bug fixes

  • [core|python] Fix read/write of log files for HDF5 and CSV formats.
  • [python/log] Fix deserialization of pinocchio models in log files with HDF5 format.
  • [python/viewer] Fix flipped overlay for panda3d.
  • [python/viewer] Fix update color and improve except handling for legend.
  • [python/viewer] Fix loading of Convex geometries.
  • [python/viewer] Fix shadows on floor if available with EGL driver for panda3d.

Miscellaneous

  • [misc] Fix wheel deploy for gym jiminy.
  • [misc] Fix gym jiminy inter-dependencies.

Portable log files

27 May 20:46
18f91ea
Compare
Choose a tag to compare

It is now possible to dump the whole robot (including visual and collision meshes) in log files. These standalone log files can be replayed on any system without requiring any extra file. It is convenient for sharing simulation results and safe long-term backups.

New features

  • [core] Enable serialization of geometry models optionally.

Improvements

  • [core] Refactor telemetry to support binary object dump as constant.
  • [core] Simulation time unit is now fixed to 1e-10.
  • [core] Add option to force loading visual meshes.
  • [python/simulator] 'plot' is blocking by default if not interactive.
  • [python/log] Build robot from logged models.
  • [python/viewer] Fallback to loading geometry if path not available.
  • [python/viewer] Add option to render markers on background.

Patches and bug fixes

  • [core] Fix definition of time unit in log files.
  • [core] Fix reading of binary log files.
  • [core] Fix writing log with no data available.
  • [python/plot] Fig figure sometimes rendered blank.
  • [python/plot] Fix figure offscreen rendering.
  • [misc] Fix python importlib usage.
  • [misc] Fix crash if optional python deps are missing.

Miscellaneous

  • [core] Use dynamic and non-contiguous memory for telemetry.
  • [misc] Update easy install dependencies ahead of deployment.
  • [misc] Refactor CI to test building extension from pip install.

Maintenance release

10 May 12:13
5ee002d
Compare
Choose a tag to compare

This release brings some minor performance improvements. The dependency management in Python has been rationalized to allow users to select desired features and prevent version incompatibilities. Support of Python 3.10 have been prepared to be distributed as soon as wheels for all dependencies will be available. Finally, deprecated documentation has been updated.

Improvements

  • [core] Minor speed up of the constraint solver.
  • [core] Speed up computation of 'JMinvJt' required for constraint solving.
  • [core] Use same formula to compute tolerance for stepper and contact solver.
  • [misc] Meshcat and Matplotlib are now an optional requirements (meshcat,plot).

Patches and bug fixes

  • [core] Update gravity attribute of theoretical model to match options.
  • [core/python] HeightMapFunctor raises an exception if an output is unset.
  • [python/viewer] Fix replay of multiple trajectories.

Miscellaneous

  • [python/viewer] Do not enforce 'spawn' for meshcat.
  • [python] Class attributes that must be set at init are no longer considered Optional.
  • [misc] Fix support of avx2 instructions.
  • [misc] Fix jiminy cmake library path discovery after update.
  • [misc] Fix documentation and jupyter notebook tutorial.
  • [misc] Fix support of Python 3.10 while building from source.
  • [misc] Blacklist 'numpy>=1.21,<1.21.5' as it causes segfault of boost::python.
  • [misc] Easy install script for ubuntu is now container-friendly.

Hot fix

06 Apr 16:07
433e6d1
Compare
Choose a tag to compare

A few bugs that have been introduced in the previous release and earlier have been fixed. Exception handling has been improved to diagnose if something is going wrong with the physics.

Patches and bug fixes

  • [core] Fix joint constraint reverse flag.
  • [core] Fix computation of ref contact position.
  • [core] Better handling of integration failure.
  • [core/python] Fix bindings class names and missing attributes.
  • [misc] Fix documentation generation.

Faster constraint solver

06 Apr 06:04
Compare
Choose a tag to compare

A new custom constraint solver has been implemented. It is more reliable and convergences faster (less than 10 iterations most of the time). The speed is about the same as before the addition of friction cone and maximum energy dissipation. Hardware compatibility issues of Panda3d with some integrated Intel GPU have been addressed and off-screen parallel rendering is now supported. Finally, the recording speed has been greatly improved with Panda3d (x2).

New features

  • [core] Add random sensor jitter.
  • [python/viewer] Add synchronous panda3d backend for subprocess rendering.
  • [python/viewer] Support opening viewer without robot.

Improvements

  • [core] Faster and more reliable constraint solver.
  • [core] Avoid discontinuities at init by starting with contact enabled and adding transitionEps for joint bounds.
  • [core] Faster computation of extra terms (subtree inertias and com, centroidal dynamics)
  • [python/viewer] Dynamic update of available/default backend.
  • [python/viewer] Speed-up x2 replay video recording for panda3d backend.
  • [gym/common] Automatically render ground profile.

Patches and bug fixes

  • [core] Fix potential mismatch between collision pairs and constraints.
  • [core] Fix engine not reset at start if not done before.
  • [core] Initialize stepper with smallest timestep to avoid peaks at init.
  • [core] Enable config baumgarte freq for user-specified constraints.
  • [core] Remove dedicated tolerance for PGS solver.
  • [python/viewer] Fix support of Intel GPU for rendering and on-demand Nvidia with panda3d.
  • [python/viewer] Default to sync panda3d backend if onscreen impossible.
  • [python/viewer] Disable shader in headless mode with panda3d to avoid segfault.
  • [python/viewer] Use physics-based shader on Intel GPU with Panda3d.
  • [gym/common] Fix init sensor data proxy and send llc command.
  • [gym/common] Use fastest modern rng 'SFC64'.

Miscellaneous

  • [misc] Update ANYmal robot model.
  • [misc] Add support of Gym<0.24.0.
  • [misc] Fix support of ray==1.10.0

Maintenance release

02 Mar 10:20
a1e571b
Compare
Choose a tag to compare

The overall stability and reliability has been improved, with a strong focus on the viewer. The support of 'gepetto-gui' has been dropped as it was platform-specific and missing key features.

New features

  • [python/viewer] Drop support of 'gepetto-gui' backend. (#482)
  • [gym/common] Enable to provide custom robot to 'WalkerJiminyEnv'. (#477)

Improvements

  • [core] Always regenerate original flexible model at reset to allow manual overwrite of rigid original model. (#475)
  • [python/viewer] Fallback to generic direct connection through ipykernel for Meshcat (VSCode, Jupyterlab). (#479)
  • [python/viewer] More robust comm filtering for executing meshcat related requests out of order. (#479)
  • [python/viewer] Speed up frame capture and reduce CPU load in offscreen mode for panda3d backend. (#481)
  • [gym/rllib] PPO supports dict and box spaces for observation/action. (#474)

Patches and bug fixes

  • [core] Fix segfault when adding unspecified constraint. (#476)
  • [core] Fix 'buildReducedModel' for pinocchio < 2.6.0. (#477)
  • [core] Fix segfault when initializing engine with null robot. (#477)
  • [python/viewer] Fix connection to existing meshcat process. (#479)
  • [python/viewer] Fix random segfault at exit for synchronous panda3d backend. (#484)
  • [gym/rllib] PPO L2 reg only on train params. (#485)

Miscellaneous

  • [gym/rllib] Refactor PPO implementation to support 'ray>=1.10.0'. (#474) (#485)
  • [misc] Use Ctest for managing C++ unit tests. (#475)

Co-authored-by: Alexis Duburcq alexis.duburcq@gmail.com

More realistic contact model

10 Dec 07:16
e96beb9
Compare
Choose a tag to compare

The focus of the release was making the contact model more realistic in Jiminy. As a reminder, it is formulated at acceleration level instead of velocity-level with impulse contact forces. The contact solver has been revamped to improve convergence, to ensure isotropic coulomb friction cone, and to follow maximum energy dissipation principal (except during the short transient sliding/sticking, or for dominant non-linear acceleration effects such as Coriolis). Many long lasting bugs in C++ core and Python have been tracked down and fixed.

New features

  • [core] Enforce isotropic solution for PGS. (#467)
  • [core] Compensate PGS bias to ensure maximum energy dissipation for tangential friction. (#468)
  • [python/viewer] Add 'frame' markers. (#464)
  • [gym/common] Add 'evaluate' method to evaluate a callback policy over a whole episode. (#453)

Improvements

  • [core] Compute PGS error in residual space. (#462)
  • [core] PGS skip parameter update if irrelevant. (#464)
  • [core] Force sensors now measure total external force applied on a body.
  • [core] Split constraint and contact options. (#462)
  • [core] Move to next breakpoint if possible to avoid very small timesteps during integration. (#464)
  • [python/viewer] Add support of 'pin.SE3' object for marker pose. (#465)
  • [python/viewer] Support specifying marker orientation using rotation matrix. (#464)

Patches and bug fixes

  • [core] Fix non-linear PGS solving of friction cone. (#461)
  • [core] Fix 'removeContactPoints' if input vector is empty.
  • [core] Fix timestep adjustment for fixed timestep euler explicit stepper. (#464)
  • [core] Fix baumgarte stabilization of orientation for 'FixedFrameConstraint'. (#465)
  • [core] Fix json dump for empty dictionary. (#466)
  • [core] Remove random permutation from PGS since preserving order is important. (#467)
  • [core] Fix 'JointConstraint' position difference not properly computed. (#469)
  • [core] Fix telemetry header to null terminate leading to segfault. (#469)
  • [core] Fix inconsistency between flexible model and data. (#469)
  • [python/log] Fix segfault when loading robot from log. (#466)
  • [python/viewer] Exception handling and timeout if backend recorder for meshcat fails to open. (#452)
  • [python/viewer] Avoid crashing when replying simulations with 'nan'. (#458)
  • [python/viewer] Fix extraction of available sensor data for replay. (#463)
  • [python/viewer] Keep floor hidden even if updated if it was previously hidden for panda3d backend. (#463)
  • [python/viewer] Fix 'display' method if velocity is not provided. (#463)
  • [python/viewer] Fix body selection for panda3d. (#465)
  • [python/viewer] Do not overwrite color for 'frame' marker by default. (#464)
  • [gym/common] Improve exception handling during 'step'. (#458)
  • [gym/common] Do not try to register action to telemetry if empty.
  • [gym/envs] Reduce KD gain for AkY joints of Atlas to prevent numerical instability. (#464)

Miscellaneous

  • [core] Use 'impulse' contact model as default. (#462)
  • [core] Modify 'FixedFrameConstraint' to set ground normal instead of local rotation. (#464)
  • [core] Order 'FixedFrameConstraint' components by solving order. (#467)
  • [gym/common] Rename 'refresh_*' in 'initialize_' when appropriate. (#466)
  • [gym/common] Rename 'refresh_internal' in 'refresh_buffers' and add 'initialize_buffers' method. (#466)
  • [gym/envs] Automatically detect relevant contact points for Atlas. (#464)
  • [misc] Update python packages description and development status. (#458)
  • [misc] Run unit tests in debug mode on Ubuntu 20.04. (#469)

Co-authored-by: Alexis Duburcq alexis.duburcq@gmail.com

Stable native support of Mac OS X

21 Nov 10:18
da97422
Compare
Choose a tag to compare

This release is mainly intended to improve the support of Mac OS X >= 10.14 (Mojave). Now it is on a par with other platforms, with CI configured to run the unit tests on it. It also fixes a bunch of bugs concerning the viewer and the import of jiminy_py itself for developer users.

Improvements

  • [viewer] 'add_markers' now forward positional arguments.
  • [viewer] Interrupt replay without crashing the display window for all backends.
  • [misc] Significant wheels size reduction (~20Mo for each architecture now).
  • [misc] Enable python unit tests on OSX.

Patches and bug fixes

  • [core] Fix sphere constraint.
  • [viewer] Fix meshcat port detection on OS X.
  • [viewer] Disable physics-based shader is no discrete NVIDIA GPU to avoid graphic glitches. (#448)
  • [viewer] Force using 'spawn' multiprocessing context for meshcat to avoid crashes on OS X.
  • [viewer] Fix 'ipykernel' version detection on some setups.
  • [simulator] Fix wrong 'viewer.f_external' forces if render without simulation running.
  • [misc] Fix import of jiminy if boost is installed on the system but not pinocchio/hppfcl/eigenpy.

Miscellaneous

  • [misc] Fix warnings using 'clang' compilation toolchain.
  • [misc] Build shared libs for boost python dependencies on unix to fix binding issues on OS X.
  • [misc] Fix jiminy pywrap copied twice in OS X wheels.
  • [misc] Build only universal2 wheel on OSX whenever possible.
  • [misc] Fix desired chromium version used by pyppeteer being ignored.
  • [misc] Update chromium version used by pyppeteer for the latest one available of any platform.
  • [misc] Fix OS X wheels deployment on Pypi. (#446)
  • [misc] Upgrade python dependencies.

Maintenance release

12 Nov 09:15
79dfb00
Compare
Choose a tag to compare

Some limitations of Jiminy have been addressed. First, the friction pyramid has been replaced by an actual friction cone for the impulse contact model. Secondly, it is now possible to simulate a flexible model and impulse contact without numerical instability by introducing a new armature-like inertia parameter. Next, the viewer now uses a physics-based shader for Panda3D backend and a bunch of display issues have been fixed. Finally, it is the first release to officially support OS X, including arm Apple M1 CPU. Pre-compiled binaries are distributed on pypi.

New features

  • [core] Implement friction cone for impulse model. (#440)
  • [core] Fix numerical instability of flexibility model by adding armature-like inertia parameter. (#433)
  • [python/viewer] Add physic based rendering of materials to panda3d.
  • [misc] Initial support of Mac (#441)

Patches and improvements

  • [core] Full support of armature for all joints but mimic.
  • [python/viewer] Change direction of lighting in panda3d to fell natural for default camera pose.
  • [python/viewer] Enhanced rendering in panda3d for discrete gpu.
  • [python/viewer] Render meshes two-sided in panda3d to avoid seeing through them.
  • [gym/rllib] Add option to forward keyword arguments to 'ray.init'. (#436)

Bug fixes

  • [python/robot] Fix default hardware config file generator is both collision and visual meshes are defined.
  • [python/viewer] Fix shadow casting area smaller than floor in panda3d.
  • [python/viewer] Fix window name not set properly in panda3d.

Miscellaneous

  • [core] Rename 'pncCollisionData' to 'collisionData' and 'pncModelRigidOrig_' to 'pncModelOrig_'.
  • [core] Fix some implicit type conversions.
  • [misc] Update Python dependencies.
  • [misc] Update Boost from 1.7.1 to 1.7.6.
  • [misc] Build OSX wheels. (#442)

Simulation of procedurally generated robots

27 Oct 11:34
0369d72
Compare
Choose a tag to compare

The simulator and viewer is now compatible with robots created manually from scratch without relying on URDF. Additionally, PGS solver with default parameters is now much faster thinks to SIMD vectorization and lower accuracy. The provided Cassie and Atlas environment have been tuned to improve the real time factor, which is now close to 50 on a single core.

New features

  • [core] Enable to initialize 'jiminy::Robot' pinocchio models directly..
  • [python/robot] Enable to load hardware config on existing robot.
  • [gym/envs] Add atlas env with fixed upper body.

Improvements

  • [core] Faster PGS solver. (#423)
  • [core] Add dedicated contact solver options 'tolAbs', 'tolRel'. (#424)
  • [core] Add 'name' getter to 'jiminy::Model', which is a proxy for URDF name.
  • [core] Add visual model to 'jiminy::Model' to avoid relying on URDF for rendering
  • [core/python] Add helper method to build reduced model.
  • [python] Do not rely on 'Robot.urdf_path' anymore.
  • [python/robot] Check if motors and sensors defined in hardware file can be added successfully.
  • [gym/common] Make sure the provided neutral configuration is valid.

Patches and bug fixes

  • [core] Fix wrong computation of external forces.
  • [python/dynamics] Fix 'compute_freeflyer_state_from_fixed_body' method if fixed body is not provided.

Miscellaneous

  • [gym/envs] Tune Cassie and Atlas to improve numerical stability using impulse contact model.
  • [misc] Fix support of matplotlib >= 3.4.
  • [misc] Stricter gym_jiminy optional deps requirements. (#425)
  • [misc] Fix gym_jiminy wheels deployement on pypi (again!).
  • [misc] Fix documentation generation.