Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

JaxSim

JaxSim is a differentiable physics engine and multibody dynamics library designed for applications in control and robot learning, implemented with JAX.

Its design facilitates research and accelerates prototyping in the intersection of robotics and artificial intelligence.

Features

  • Physics engine in reduced coordinates supporting fixed-base and floating-base robots.
  • Multibody dynamics library providing all the necessary components for developing model-based control algorithms.
  • Completely developed in Python with google/jax following a functional programming paradigm.
  • Transparent support for running on CPUs, GPUs, and TPUs.
  • Full support for JIT compilation for increased performance.
  • Full support for automatic vectorization for massive parallelization of open-loop and closed-loop architectures.
  • Support for SDF models and, upon conversion with sdformat, URDF models.
  • Visualization based on the passive viewer of Mujoco.

JaxSim as a simulator

  • Wide range of fixed-step explicit Runge-Kutta integrators.
  • Support for variable-step integrators implemented as embedded Runge-Kutta schemes.
  • Improved stability by optionally integrating the base orientation on the $\text{SO}(3)$ manifold.
  • Soft contacts model supporting full friction cone and sticking-slipping transition.
  • Collision detection between points rigidly attached to bodies and uneven ground surfaces.

JaxSim as a multibody dynamics library

  • Provides rigid body dynamics algorithms (RBDAs) like RNEA, ABA, CRBA, and Jacobians.
  • Provides all the quantities included in the Euler-Poincarè formulation of the equations of motion.
  • Supports body-fixed, inertial-fixed, and mixed velocity representations.
  • Exposes all the necessary quantities to develop controllers in centroidal coordinates.

JaxSim for robot learning

  • Being developed with JAX, all the RBDAs support automatic differentiation both in forward and reverse modes.
  • Support for automatically differentiating against kinematics and dynamics parameters.
  • All fixed-step integrators are forward and reverse differentiable.
  • All variable-step integrators are forward differentiable.
  • Ideal for sampling synthetic data for reinforcement learning (RL).
  • Ideal for designing physics-informed neural networks (PINNs) with loss functions requiring model-based quantities.
  • Ideal for combining model-based control with learning-based components.

Documentation

The JaxSim API documentation is available at jaxsim.readthedocs.io.

Installation

With conda

You can install the project using conda as follows:

conda install jaxsim -c conda-forge

You can enforce GPU support, if needed, by also specifying "jaxlib = * = *cuda*".

With pip

You can install the project using pypa/pip, preferably in a virtual environment, as follows:

pip install jaxsim

Check setup.cfg for the complete list of optional dependencies. You can obtain a full installation using jaxsim[all].

If you need GPU support, follow the official installation instructions of JAX.

Contributors installation

If you want to contribute to the project, we recommend creating the following jaxsim conda environment first:

conda env create -f environment.yml

Then, activate the environment and install the project in editable mode:

conda activate jaxsim
pip install --no-deps -e .

Credits

The RBDAs are based on the theory of the Rigid Body Dynamics Algorithms book by Roy Featherstone. The algorithms and some simulation features were inspired by its accompanying code.

The development of JaxSim started in late 2021, inspired by early versions of google/brax. At that time, Brax was implemented in maximal coordinates, and we wanted a physics engine in reduced coordinates. We are grateful to the Brax team for their work and showing the potential of JAX in this field.

Brax v2 was later implemented reduced coordinates, following an approach comparable to JaxSim. The development then shifted to MJX, which today provides a JAX-based implementation of the Mujoco APIs.

The main differences between MJX/Brax and JaxSim are as follows:

  • JaxSim supports out-of-the-box all SDF models with Pose Frame Semantics.
  • JaxSim only supports collisions between points rigidly attached to bodies and a compliant ground surface. Our contact model requires careful tuning of its spring-damper parameters, but being an instantaneous
    function of the state $(\mathbf{q}, \boldsymbol{\nu})$, it doesn't require running any optimization algorithm when stepping the simulation forward.
  • JaxSim mitigates the stiffness of the contact-aware system dynamics by providing variable-step integrators.

Contributing

We welcome contributions from the community. Please read the contributing guide to get started.

Citing

@software{ferigo_jaxsim_2022,
  author = {Diego Ferigo and Filippo Luca Ferretti and Silvio Traversaro and Daniele Pucci},
  title = {{JaxSim}: A Differentiable Physics Engine and Multibody Dynamics Library for Control and Robot Learning},
  url = {http://github.com/ami-iit/jaxsim},
  year = {2022},
}

People

Author Maintainers

License

BSD3

Metadata

Release files for jaxsim 0.2.1.dev123

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jaxsim 0.2.1.dev123
File Size Uploaded
jaxsim-0.2.1.dev123.tar.gz 261.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for jaxsim 0.2.1.dev123
File Interpreter ABI Platform
jaxsim-0.2.1.dev123-py3-none-any.whl Python 3 none any Details

Total release size: 389.9 kB

Release files / jaxsim-0.2.1.dev123.tar.gz

Download URL jaxsim-0.2.1.dev123.tar.gz
Size 261.2 kB
Tags Source
SHA-256 checksum
How to use checksums
bb935100db884a92224c9afe2e3a6c0b72928b7d4adf41d617696d6de5a906a8
BLAKE2b-256 checksum
How to use checksums
314c46b381712ec55ee3fdb814ffbd568522d47a2b57a9dd21c4e7b1d9081219
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.12.4

Release files / jaxsim-0.2.1.dev123-py3-none-any.whl

Download URL jaxsim-0.2.1.dev123-py3-none-any.whl
Size 128.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ce873793509ef8ee12e5cc070a13b6002d4770cb38e924dd2171137088cfb8c5
BLAKE2b-256 checksum
How to use checksums
d949ee77760796e65a4e46b80fb526fdb2c34aac0ecf3f4ac224816027601f3e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.12.4

Release history Release notifications | RSS feed

0.9.0

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

This release

0.2.1.dev123 This release

2 release files

0.2.0

2 release files

0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page