Recurrent Inertial Graph-based Estimator (RING)
ℹ️ Tip:
Check out my new plug-and-play interface for inertial motion tracking (RING included) here.
Installation
Supports Python=3.10/3.11/3.12
(tested).
Install with pip
using
pip install imt-ring
Typically, this will install jax
as cpu-only version. Afterwards, gpu-enabled version can be installed with
pip install --upgrade "jax[cuda12_pip]" -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
Documentation
Available here.
Quickstart Example
import ring
import numpy as np
T : int = 30
Ts : float = 0.01
B : int = 1
lam: list[int] = [0, 1, 2]
N : int = len(lam)
T_i: int = int(T/Ts)
X = np.zeros((B, T_i, N, 9))
X[..., 0, :3] = acc_segment1
X[..., 2, :3] = acc_segment3
X[..., 0, 3:6] = gyr_segment1
X[..., 2, 3:6] = gyr_segment3
ringnet = ring.RING(lam, Ts)
yhat, _ = ringnet.apply(X)
Known fixes
Offscreen rendering with Mujoco
mujoco.FatalError: an OpenGL platform library has not been loaded into this process, this most likely means that a valid OpenGL context has not been created before mjr_makeContext was called
Solution:
import os
os.environ["MUJOCO_GL"] = "egl"
Windows-related: ImportError: DLL load failed while importing ...
ImportError: DLL load failed while importing _multiarray_umath: Das angegebene Modul wurde nicht gefunden.
Solution:
pip uninstall -y jax jaxlib
conda install -c conda-forge jax
Publications
The following publications utilize this software library, and refer to it as the Random Chain Motion Generator (RCMG) (more specifically the function ring.RCMG
):
Other useful ressources
Particularly useful is the following publication from Roy Featherstone
Contact
Simon Bachhuber (simon.bachhuber@fau.de)