Jiminy: a fast and portable Python/C++ simulator of poly-articulated robots with OpenAI Gym interface for reinforcement learning
MIT License
Published by duburcqa over 3 years ago
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.
Published by duburcqa over 3 years ago
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.
Published by duburcqa over 3 years ago
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.
Published by duburcqa over 3 years ago
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.
Published by duburcqa over 3 years ago
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.
Published by duburcqa over 3 years ago
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.
Published by duburcqa over 3 years ago
Small release fixing conflicts with external Boost.Python modules, along some other minor bugs.
Published by duburcqa over 3 years ago
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.
Published by duburcqa over 3 years ago
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.
Published by duburcqa over 3 years ago
This release makes it possible to build C++ executable and Boost.Python extension modules for jiminy just by installing it via pip
, instead of having to clone it and build it from source. It also make sure jiminy_py
is compatible with Boost.Python modules compile with different versions of Boost and different C++ ABI. Additionally, a few bugs have been fixed.
Published by duburcqa over 3 years ago
This release mainly enables to register discrete force profiles. It is especially useful to reduce computational cost when implementation is done in Python. It is also necessary to apply filters or hysteresis. In addition, many convenience features have been added to the viewer, and stability and performance have been significantly improved (especially mesh loading time). Finally, a few annoying but not critical bugs have been fixed.
Published by duburcqa over 3 years ago
This release focuses on performance improvements of Jiminy Viewer for 'Panda3d' backend. Firstly, most of the redundant computations and unnecessary rendering refresh have been removed. Secondly, 'av' video writer library is used in place of 'cv2', which supports 'h264' codec, resulting in faster generation (~40s for 1min simulation duration), smaller file (~15MB for 1min instead of ~50MB), and web-compatibility. In addition, a new rendering backend 'panda3d-qt' is now available, enabling to embed Jiminy Viewer in custom Qt graph, allowing complex interactions.
Viewer.__init__
and 'play_trajectories'.Published by duburcqa over 3 years ago
A few not critical bugs have been addressed and the API has been slightly simplify to avoid common mistakes while being less restrictive when possible. In addition, a few guards has been added to explicitly forbid wrong practices.
Published by duburcqa over 3 years ago
Several random process generators have been added, namely PeriodicGaussianProcess
, PeriodicFourrierProcess
, PeriodicPerlinProcess
and RandomPerlinProcess
. They are designed to be used as basis to implement external force profiles. In this context, they have been optimized to computational efficiency rather than mathematical correctness. On a completely unrelated note, Python bindings are now more "pythonic", and registered external forces are now properly removed at reset.
Published by duburcqa over 3 years ago
Add new generic tabbed figure plotting tools supported by any Matplotlib backend, including offscreen 'agg' and Jupyter notebooks. It brings several additional features, such as synchronize time in every tabs and export of all tabs in pdf. Its overall performance has been significantly improved.
Published by duburcqa over 3 years ago
This release improves support of closed kinematic chains by adding analytical distance constraint between frames. It illustrates this new feature, Cassie robot learning environment is now provided. Apart from that, a few minor bug fixes mainly related to the viewer has been fixed, and overall performance has been slightly improved.
Published by duburcqa over 3 years ago
This release fixes the last remaining blocking issues with Panda3d in order to make it the default viewer backend. So, starting from this point, it will be the default backend, useless for interactive environment like Jupyter, for which Meshcat is still the only appropriate alternative. In addition URDF and meshes associated with Atlas have been updated to make it look better:
Published by duburcqa over 3 years ago
Panda3d rendering backend support has been greatly improved. It should now works out-of-the-box on any hardware and platform. Meshcat-exclusive features has been ported to Panda3D (watermark and legend), and new Panda3D-exclusive simulation time clock is now available! The recording speed is much faster than meshcat (faster than recording duration at 30FPS and 1000x1000 resolution for 'mp4' format) and supports offscreen rendering without X-server. In addition, Python3.9 pre-built wheels are now provided on any platform. Finally, internal time steps management issues have been fixed, most affecting fixed timestep steppers.
wait
doing nothing.Published by duburcqa over 3 years ago
This release introduces first Mujoco-like locomotion learning environment in Jiminy Ant. An example script successfully training it using TD3 algorithm in Rllib is provided. In addition, several bugs have been addressed, mainly affecting video recording.
Published by duburcqa over 3 years ago
This release introduces impulse-like contact model, which has became very popular since the last few years. In broad terms, it maximizes the energy dissipation resulting from contact with the ground, in such a way that the position of the contact points is critically damped with predefined natural frequency (corresponding to solving a LCP internally, see Mujoco documentation and paper for reference). Even though it is not a phenomenological model, it features many very interesting properties, among which allowing very large fixed integration timestep (up to 10ms suing Runge Kutta 4), and smoothing ground reaction forces. Those properties are not essential in robotics to design controllers using classical control theory, but it turns out to be very beneficial when it comes to reinforcement learning, presumably because it makes the state-action mapping much more regular, enabling to learn control policies for complex very dynamic locomotion tasks. Learning examples and tutorials are coming !
In addition, the spring-damper contact model has been greatly simplified to use standard coulomb friction model, and a few significant bugs have been addressed.