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.19.post1-cp312-cp312-win_amd64.whl (21.9 MB view details)

Uploaded CPython 3.12Windows x86-64

jiminy_py-1.7.19.post1-cp312-cp312-manylinux_2_28_x86_64.whl (16.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

jiminy_py-1.7.19.post1-cp312-cp312-macosx_11_0_universal2.whl (35.3 MB view details)

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

jiminy_py-1.7.19.post1-cp311-cp311-win_amd64.whl (21.9 MB view details)

Uploaded CPython 3.11Windows x86-64

jiminy_py-1.7.19.post1-cp311-cp311-manylinux_2_28_x86_64.whl (16.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

jiminy_py-1.7.19.post1-cp311-cp311-macosx_11_0_universal2.whl (35.2 MB view details)

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

jiminy_py-1.7.19.post1-cp310-cp310-win_amd64.whl (21.9 MB view details)

Uploaded CPython 3.10Windows x86-64

jiminy_py-1.7.19.post1-cp310-cp310-manylinux_2_28_x86_64.whl (16.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

jiminy_py-1.7.19.post1-cp310-cp310-macosx_11_0_x86_64.macosx_11_0_universal2.whl (35.2 MB view details)

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

jiminy_py-1.7.19.post1-cp39-cp39-win_amd64.whl (21.9 MB view details)

Uploaded CPython 3.9Windows x86-64

jiminy_py-1.7.19.post1-cp39-cp39-manylinux_2_28_x86_64.whl (16.4 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

jiminy_py-1.7.19.post1-cp39-cp39-macosx_11_0_x86_64.macosx_11_0_universal2.whl (35.2 MB view details)

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

jiminy_py-1.7.19.post1-cp38-cp38-win_amd64.whl (21.9 MB view details)

Uploaded CPython 3.8Windows x86-64

jiminy_py-1.7.19.post1-cp38-cp38-manylinux_2_28_x86_64.whl (16.4 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.28+ x86-64

jiminy_py-1.7.19.post1-cp38-cp38-macosx_11_0_x86_64.macosx_11_0_universal2.whl (35.2 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.19.post1-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for jiminy_py-1.7.19.post1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 0e73cefaf70acf77c30b01de459e944643cac735436e75e4f114799dd8316b25
MD5 d28ad627022eecb593852b360a779052
BLAKE2b-256 43cd0ce8af44a198ef4f3062f332cc4d39fa601cdb2ebc17367c7ec1dbb1e4c8

See more details on using hashes here.

File details

Details for the file jiminy_py-1.7.19.post1-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for jiminy_py-1.7.19.post1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5b37880e570e6b095d3d0ba834a1bf00d5f37d3616b5aad020c72e7ceafdcee7
MD5 a503a31d749b29b9548ce3d601f23d4e
BLAKE2b-256 8e0565d9a9934ca25d867321045cb3838c8ba75553436dd9a355c04efd420e5d

See more details on using hashes here.

File details

Details for the file jiminy_py-1.7.19.post1-cp312-cp312-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for jiminy_py-1.7.19.post1-cp312-cp312-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 cf127f74072e5ff6fa19ad1453a342c0f16646ec906fefb8942330bc4d2d748c
MD5 049bfbe805dc5ab1b0cf62e5fc41c465
BLAKE2b-256 1e0c0334a414e049fcf36060b3fbfd4437d20556e34bb00eb7dfd98787f5558a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jiminy_py-1.7.19.post1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 3cec4b962ca0cac759be888b71d0bb94c179a93595271aeca10d4ae5b5338174
MD5 0eb5cadf15d6ebaaac4ef11bedacb880
BLAKE2b-256 6adb67a7eb9b793d8180e649d9a3298145ec129ff9a3121f1942cf98b53465ca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jiminy_py-1.7.19.post1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e5e1c0ff5973ad7823b4352228270a8dd75dacaaf9be39bbf6607820351f27b8
MD5 d97002378e84ba7542ab18213460d44a
BLAKE2b-256 c7a29cbb3cbe93ad0489af7633549b1abd220edd3772fce06a7510c3638e0c4a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jiminy_py-1.7.19.post1-cp311-cp311-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 7b90365f6ea686456fc6b4934b5293ce79534e5cf96cf46a955e291155493164
MD5 1a15badae804d1ac04cb161452902fa8
BLAKE2b-256 d9a36d4d2514ba8060fa9e564d2f77c9a14f002945a462356ec5acd1bd1f0bd3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jiminy_py-1.7.19.post1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 d9ed8180d878afc208060da89302e8d9051e49313eee28d1829c98f7cab5164f
MD5 c42a12e2ed49d85640ba43c3a01c0d62
BLAKE2b-256 8cb350edef81152120427b9281f0f32bf9898a946ceb8b0c85da0b66ebb690c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jiminy_py-1.7.19.post1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8890903d193955937690997b605231863add487009b1b740ae8a17593b775d81
MD5 a405793cea1392e5996ccf6ec8555a2b
BLAKE2b-256 d6a3bba6381653f57a7055addb760d4b53b5732b21136c13b7dc313b6ae72f73

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jiminy_py-1.7.19.post1-cp310-cp310-macosx_11_0_x86_64.macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 0240f3671a566f79022ced8e7878442337afe59defdd720ea70f07941aa2f9db
MD5 ef312a88df46b00dc9cb7f32207afb27
BLAKE2b-256 a076e5ad6a90743f4f623f52f36830c7df05dde7c66080ab4dc0b459444901a9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jiminy_py-1.7.19.post1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 709988338eec8e4305afbc9cd1e4fff5c866d364ccdb60d1a404bd808bd715c8
MD5 95151b00932a699e0bd46926a06278ad
BLAKE2b-256 c6ab6b3db5782ae46c118f2c4bbfdbb00e3129c308f8835eb20eaf933a4f73f7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jiminy_py-1.7.19.post1-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8bf4029864ec6eb8a99363c8a3c2c076a83fe891be2e4e45b413d4de6b272d4b
MD5 a02b1a51b1cf12b74f6d197f1e5dc87c
BLAKE2b-256 5857fdc5acc38b93d3b64a06acaf5126a9d677dfd3a7465fdc783ad1795740a6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jiminy_py-1.7.19.post1-cp39-cp39-macosx_11_0_x86_64.macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 939531816c11e549541c0cb2668fd1b7f997a95d523bdecd019ed5e82f458804
MD5 b5e12ef76f5c3f624cf57c36db59dd16
BLAKE2b-256 888fdd43b6332312a7f2f0d7eba27336c82456caf7c6ff703524554715bce154

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jiminy_py-1.7.19.post1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 768f630a3943b2ad43654b01aec49e856ce927b0e440b6b5660d1e8f315d08c7
MD5 e4022f02c3ab84d8866f49b20a35d362
BLAKE2b-256 ae3e77b9d337f39ac3088ebfe89c309f2906adcd1056bbf85446c09aaf6da766

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jiminy_py-1.7.19.post1-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 047be8bb4df2b0d964c79151d10baff2b2ee4e68a5382ecf37869d71836f74e7
MD5 4b27d8d48774c0bb18c7cbc9e940f08f
BLAKE2b-256 04d828616d21c637977c3b74be536094cdf05a336612ad86edfe766da6104662

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for jiminy_py-1.7.19.post1-cp38-cp38-macosx_11_0_x86_64.macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 bf5e0f0671bb15f4a4ac607619cd48c68e312fe11ad54b7fe860584b571692bb
MD5 593de56420ea5cc3f8a073e070d7f585
BLAKE2b-256 3709b8a9fbe7db72d64c4b288edb870ace1894c971db62844f8bcebdf2018aa5

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