Skip to main content

Fast and light weight simulator of rigid poly-articulated systems.

Project description


License Version Python Downloads Try it in Binder Try it in Colab Try in in Deepnote Linux CI MacOS CI Windows CI

Jiminy is a cross-platform open-source simulator for poly-articulated systems. It was built with two ideas in mind:

  • provide a fast yet physically accurate simulator for robotics research.

Jiminy is built around Pinocchio, an open-source fast and efficient kinematics and dynamics library. Jiminy thus uses minimal coordinates and Lagrangian dynamics to simulate an articulated system: this makes Jiminy as close as numerically possible to an analytical solution, without the risk of joint violation.

  • build an efficient and flexible platform for machine learning in robotics.

Beside a strong focus on performance to answer machine learning's need for running computationally demanding distributed simulations, Jiminy offers convenience tools for learning via a dedicated module Gym-Jiminy. It is fully compliant with gym standard API and provides a highly customizable wrapper to interface any robotics system with state-of-the-art learning frameworks.

Key features

General

  • Simulation of multi-body systems using minimal coordinates and Lagrangian dynamics.
  • Comprehensive API for computing dynamic quantities and their derivatives thanks to Pinocchio.
  • C++ core with full python bindings, providing user API parity between both languages.
  • Designed with machine learning in mind, with seamless wrapping of robots as OpenAI Gym environments using one-liners. Jiminy provides both the physical engine and the robot model (including sensors) required for learning.
  • Rich simulation log output, easily customizable for recording, introspection and debugging. The simulation log is made available in RAM directly for fast access, and can be exported in raw binary or HDF5 format.
  • Dedicated integration in Google Colab, Jupyter Lab, Mybinder and VSCode working out-of-the-box - including interactive 3D viewer based on Meshcat. This facilitates working on remote environments.
  • Synchronous and single-threaded offscreen rendering capability, GPU-accelerated without graphical server, based on Panda3d.
  • Easy to install: pip is all that is needed to get you started ! Support Linux, Mac and Windows platforms.

Physics

  • Provide both classical phenomenological force-level spring-damper contact model and constraint solver satisfying the maximum energy dissipation principle.
  • Support contact and collision with the ground from a fixed set of contact points (primitives and meshes yet to come).
  • Simulate multiple articulated systems simultaneously interacting with each other, to support use cases such as multi-agent learning or swarm robotics.
  • Compliant spherical joints with spring-damper dynamics to model mechanical deformation, a common phenomenon particularly in legged robotics.
  • Simulate both continuous or discrete-time controller, with possibly different controller and sensor update frequencies.

A more complete list of features is available on the wiki.

The documentation is available on Github.io, or locally in docs/html/index.html if built from source.

Gym Jiminy

Gym Jiminy is an interface between Jiminy simulator and reinforcement learning frameworks. It is fully compliant with now standard Open AI Gym API. Additionally, it offers a generic and easily configurable learning environment for learning locomotion tasks, with minimal intervention from the user, who usually only needs to provide the robot's URDF file. Furthermore, Gym Jiminy enables easy modification of many aspects of the simulation to provide richer exploration and ensure robust learning. This ranges from external perturbation forces to sensor noise and bias, including randomization of masses and inertias, ground friction model or even gravity itself. Note that learning can easily be done on any high-level dynamics features, or restricted to mock sensor data for end-to-end learning.

Gym is cross-platform and compatible with most Reinforcement Learning frameworks implementing standard algorithms. For instance, Stable Baselines 3, Tianshou, or Rllib. Stable Baselines 3 and Tianshou use its counterpart Pytorch, and Rllib supports both. A few learning examples relying on those packages are also provided.

Pre-configured environments for some well-known toys models and reference robotics platforms are provided: cartpole, acrobot, pendulum, Ant, ANYmal, and Cassie, and Atlas.

Demo

Getting started

Jiminy and Gym Jiminy support Linux, Mac and Windows, and is compatible with Python3.8+. Pre-compiled binaries are distributed on PyPi. They can be installed using pip>=20.3:

# For installing Jiminy
python -m pip install --prefer-binary jiminy_py[meshcat,plot]

# For installing Gym Jiminy
python -m pip install --prefer-binary gym_jiminy[all]

Detailed installation instructions, including building from source, are available here.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

jiminy_py-1.7.18.post1-cp311-cp311-win_amd64.whl (21.8 MB view details)

Uploaded CPython 3.11Windows x86-64

jiminy_py-1.7.18.post1-cp311-cp311-manylinux_2_28_x86_64.whl (16.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

jiminy_py-1.7.18.post1-cp311-cp311-macosx_11_0_universal2.whl (35.0 MB view details)

Uploaded CPython 3.11macOS 11.0+ universal2 (ARM64, x86-64)

jiminy_py-1.7.18.post1-cp310-cp310-win_amd64.whl (21.8 MB view details)

Uploaded CPython 3.10Windows x86-64

jiminy_py-1.7.18.post1-cp310-cp310-manylinux_2_28_x86_64.whl (16.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

jiminy_py-1.7.18.post1-cp310-cp310-macosx_11_0_x86_64.macosx_11_0_universal2.whl (35.1 MB view details)

Uploaded CPython 3.10macOS 11.0+ universal2 (ARM64, x86-64)macOS 11.0+ x86-64

jiminy_py-1.7.18.post1-cp39-cp39-win_amd64.whl (21.8 MB view details)

Uploaded CPython 3.9Windows x86-64

jiminy_py-1.7.18.post1-cp39-cp39-manylinux_2_28_x86_64.whl (16.3 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

jiminy_py-1.7.18.post1-cp39-cp39-macosx_11_0_x86_64.macosx_11_0_universal2.whl (35.1 MB view details)

Uploaded CPython 3.9macOS 11.0+ universal2 (ARM64, x86-64)macOS 11.0+ x86-64

jiminy_py-1.7.18.post1-cp38-cp38-win_amd64.whl (21.8 MB view details)

Uploaded CPython 3.8Windows x86-64

jiminy_py-1.7.18.post1-cp38-cp38-manylinux_2_28_x86_64.whl (16.3 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.28+ x86-64

jiminy_py-1.7.18.post1-cp38-cp38-macosx_11_0_x86_64.macosx_11_0_universal2.whl (35.0 MB view details)

Uploaded CPython 3.8macOS 11.0+ universal2 (ARM64, x86-64)macOS 11.0+ x86-64

File details

Details for the file jiminy_py-1.7.18.post1-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for jiminy_py-1.7.18.post1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 8e749f10bbf50190185d55eadfd3d310cd153b3055815cbe036b6cec511b12d9
MD5 704a0f9a6cceb4fe7039306110922f6c
BLAKE2b-256 7c17e50e579feb0d7d54f8de3bfed0d2d3207a7d9d7398d68014368c705e9fbc

See more details on using hashes here.

File details

Details for the file jiminy_py-1.7.18.post1-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for jiminy_py-1.7.18.post1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d9794d390233ede580c6fbc8f536a523a9fc8dd6c210e54285f2c74229392cc3
MD5 980b51f1e16ece58189103e2be3d2313
BLAKE2b-256 129013b26dc98c321cfcbc86649fab65b0b4a5b44fda4130d170091b6344f86a

See more details on using hashes here.

File details

Details for the file jiminy_py-1.7.18.post1-cp311-cp311-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for jiminy_py-1.7.18.post1-cp311-cp311-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 65aca412987d61a8c16b3468387d43d43391ad7c6786f0584b14e53ff24988ac
MD5 291a297b5fe4d18b3fad801fefbc14ef
BLAKE2b-256 d3435b297fa1de7bfb9743ae3118c6f8a21318cfb3b695c663670358034aaa41

See more details on using hashes here.

File details

Details for the file jiminy_py-1.7.18.post1-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for jiminy_py-1.7.18.post1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 17c87f7de600266f7dd78eb83f30f4d70d841aada30ba8a70d5b7105a80d6f51
MD5 51ac350a47625c30b5462a376a7d0a5d
BLAKE2b-256 fc1c5f31c13548f9cc0fb99adbca37077b90f479804661a222d61533adb834fd

See more details on using hashes here.

File details

Details for the file jiminy_py-1.7.18.post1-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for jiminy_py-1.7.18.post1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 09179659ba3429e3d6f7b81d82d2d2fb403a1ff22251ecf490b0829e2d79d1c6
MD5 40b266f81c20efcd5adbc24222d1192a
BLAKE2b-256 a4e782a8ca7d6b42b28e8c2a320de6feb7b05f6f06634db014c2197264d7e8ea

See more details on using hashes here.

File details

Details for the file jiminy_py-1.7.18.post1-cp310-cp310-macosx_11_0_x86_64.macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for jiminy_py-1.7.18.post1-cp310-cp310-macosx_11_0_x86_64.macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 478b7ec9d88eb3c91c1bd0fc38e456c35c116eae25f5c5f8d41d8ba8b9af9162
MD5 8f05e71638ea2b1e7b870ad850420c30
BLAKE2b-256 1a0aa8880bbbb31310cf71a5203e58331a2716bdf11946155e5b167113a7d4d9

See more details on using hashes here.

File details

Details for the file jiminy_py-1.7.18.post1-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for jiminy_py-1.7.18.post1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 db921aaeea7aa841d4d247df8f6bd12dfb06762f094bc0542b938081e9e93557
MD5 b0faa45846c9064562ee27b8d7daa309
BLAKE2b-256 cda768db7fcb91eb37293553a4e1917ac95062609e67bb5a41ea144b1f2587cc

See more details on using hashes here.

File details

Details for the file jiminy_py-1.7.18.post1-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for jiminy_py-1.7.18.post1-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 055d3515421dc35ece3c0bb4bab50ef720b5bda2023b798ed7926c63deaaa271
MD5 f169fc6c3e163d434a7a6006c004a727
BLAKE2b-256 bcd1e355b184cfea49227a862cc21c542dcf314030dbf89a1ac3f6151515f20f

See more details on using hashes here.

File details

Details for the file jiminy_py-1.7.18.post1-cp39-cp39-macosx_11_0_x86_64.macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for jiminy_py-1.7.18.post1-cp39-cp39-macosx_11_0_x86_64.macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 e3cf647fbc110201262aacae5e16be07af39fa2a3521111e76d0becda01bbc18
MD5 5ee883bbc7bd3614683938a66f1cf4c4
BLAKE2b-256 edad24495efe8d054d9554d7405fcd0a1654d97fd572294a944aa43031fb6dd3

See more details on using hashes here.

File details

Details for the file jiminy_py-1.7.18.post1-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for jiminy_py-1.7.18.post1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 ab329c566db1714cf31c908f918753d20e405b00086e91d866e19f480809dffb
MD5 e06399b00f3a78056f79200f27fedc77
BLAKE2b-256 96c696462c560f46aaa4ad7a4b50c1b6a274f4f6f8127fb954626951d8f80884

See more details on using hashes here.

File details

Details for the file jiminy_py-1.7.18.post1-cp38-cp38-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for jiminy_py-1.7.18.post1-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0a5e75735095835a51eea6ec0d185110aff1ac93c526078cc362d2c740a60621
MD5 bd11b5071a802bc82c5f9e8e5761c713
BLAKE2b-256 6ccc15f3f5043ac5b6f8c58ed2943680565e8bdc4b29db8391ab8c0f21adb800

See more details on using hashes here.

File details

Details for the file jiminy_py-1.7.18.post1-cp38-cp38-macosx_11_0_x86_64.macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for jiminy_py-1.7.18.post1-cp38-cp38-macosx_11_0_x86_64.macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 1d4b95631f3cb22f743727e1e373305fb3f1afdcec929874a171cd60a4ad9824
MD5 16943d9e8245f68782e656421c86c48d
BLAKE2b-256 b0ae0dfef394029418a93dd3505b5d47e1fc222f7f33760d966222abed4b63db

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page