Skip to content
Alexis DUBURCQ edited this page Dec 9, 2020 · 23 revisions

Features

  • Highly and easily configurable:

    • Mechanical flexibility and motor inertia modelling
    • Sensor noise, jitter and delay modelling
    • Support external forces on frames (both impulse or via time-continuous callback)
    • Support multi-robot simulation with interaction forces
    • Support contact point and collision geometries (both primitives and meshes)
    • Support user-defined internal dynamics
    • Support both finite time and time-continuous update period for each sensor and the controller independently
    • Model uncertainties regarding the kinematics and dynamics properties
    • User-defined ground profile using an implicit function: f(x,y) = [z, vect_normal]
  • Deterministic or non deterministic on demand but still PERFECTLY REPEATABLE

  • Designed for fast and efficient optimal control research:

    • Support step-by-step (optimized for performance) or one-shot simulation
    • Fully wrapped in Python. Designed for (almost) never have to recompile C++.
    • Add variables to the logger on-the-fly
      • Useful to debugging and dynamic plots updated over time (not implemented so far)
  • Fast Python Interface:

    • C++ / Python shared pointers to avoid copy back-and-forth
  • Very fast:

    • No real-time reading/writing on hard drive (only in CPU cache then RAM)
      • The log can be exported in CSV, HDF5 or binary on demand later on
    • No real-time display by default
      • Although Gym Jiminy offers this functionality
    • Cartpole: 30ms for 1000 integration steps, corresponding to at most 3s of simulation
  • Highly parallelizable:

    • Thread safe (single process - single core)
    • Synchronous by default
      • Gym Jiminy offers asynchronous controller update
    • No shared memory
  • Light weight:

    • It takes about 5 minutes to compile from sources
    • Pre-compiled binaries are about 10mo
  • Well-suited for Reinforcement Learning:

    • Fully compliant with OpenAI Gym API and therefore any machine learning framework built on top of it

Limitations

  • Collision with vertical surface is impossible
    • The simulation will fail if it happens
  • No modelling of internal collisions contrary to Gazebo, ie for rotary joints
  • No collision between links

Development status

  • Open-source Jiminy core: stable
  • Open-source Gym/Jiminy interface: stable
  • Mock of a High-Level Controllers: none
  • Modelling still to be improved:
    • Only "perfect" sensor data with noise/delay/jitter is available
      • No complementary filter for IMUs, no voltage to force converter for Force sensors...
    • Only "perfect" torque motor control:
      • No voltage-current to torque-velocity conversion. No response time.
  • Error handling could be improved
    • Old-fashioned message + return code
Clone this wiki locally