You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
RING provides a pluripotent, problem-unspecific plug-and-play IMT solution that, in contrast to conventional IMT solutions, eliminates the need for expert knowledge to identify, select, and parameterize the appropriate method. RING's pluripotency is enabled by a novel online-capable neural network architecture that uses a decentralized network of message-passing, parameter-sharing recurrent neural networks, which map local IMU measurements and nearest-neighbour messages to local orientations. This architecture enables RING to address a broad range of IMT problems that vary greatly in aspects such as the number of attached sensors, or the number of segments in the kinematic chain, and even generalize to previously unsolved IMT problems, including the challenging combination of magnetometer-free and sparse sensing with unknown sensor-to-segment parameters. Remarkably, RING is trained solely on simulated data, yet evaluated on experimental data, which indicates its exceptional ability to zero-shot generalize from simulation to experiment, while outperforming several state-of-the-art problem-specific solutions. For example, RING can, for the first time, accurately track a four-segment kinematic chain (which requires estimating four orientations) using only two magnetometer-free inertial measurement units.
10
+
8
11
> **ℹ️ Tip:**
9
12
>
10
13
> Check out my new plug-and-play interface for inertial motion tracking (RING included) [here](https://github.com/simon-bachhuber/imt.git).
@@ -17,10 +20,7 @@ Install with `pip` using
17
20
18
21
`pip install imt-ring`
19
22
20
-
Typically, this will install `jax` as cpu-only version. Afterwards, gpu-enabled version can be installed with
Typically, this will install `jax` as cpu-only version. For GPU install instructions for `jax` see https://github.com/jax-ml/jax?tab=readme-ov-file#instructions.
24
24
25
25
## Documentation
26
26
@@ -31,12 +31,12 @@ Available [here](https://simon-bachhuber.github.io/ring/).
31
31
import ring
32
32
import numpy as np
33
33
34
-
T : int=30# sequence length [s]
35
-
Ts : float=0.01# sampling interval [s]
36
-
B : int=1# batch size
37
-
lam: list[int] = [0, 1, 2] # parent array
38
-
N : int=len(lam) # number of bodies
39
-
T_i: int=int(T/Ts) # number of timesteps
34
+
T : int=30# sequence length [s]
35
+
Ts : float=0.01# sampling interval [s]
36
+
B : int=1# batch size
37
+
lam: list[int] = [-1, 0, 1] # parent array
38
+
N : int=len(lam) # number of bodies
39
+
T_i: int=int(T/Ts) # number of timesteps
40
40
41
41
X = np.zeros((B, T_i, N, 9))
42
42
# where X is structured as follows:
@@ -79,7 +79,11 @@ Solution:
79
79
80
80
## Publications
81
81
82
-
The following publications utilize this software library, and refer to it as the *Random Chain Motion Generator (RCMG)* (more specifically the function `ring.RCMG`):
82
+
The main publication is:
83
+
84
+
-[*Recurrent Inertial Graph-Based Estimator (RING): A Single Pluripotent Inertial Motion Tracking Solution*](https://openreview.net/pdf?id=h2C3rkn0zR)
85
+
86
+
The following publications also utilize this software library, and refer to it as the *Random Chain Motion Generator (RCMG)* (more specifically the function `ring.RCMG`):
83
87
84
88
-[*RNN-based Observability Analysis for Magnetometer-Free Sparse Inertial Motion Tracking*](https://ieeexplore.ieee.org/document/9841375)
85
89
-[*Plug-and-Play Sparse Inertial Motion Tracking With Sim-to-Real Transfer*](https://ieeexplore.ieee.org/document/10225275)
@@ -93,3 +97,8 @@ Particularly useful is the following publication from *Roy Featherstone*
93
97
## Contact
94
98
95
99
Simon Bachhuber (simon.bachhuber@fau.de)
100
+
101
+
### How to bump verion in this python package
102
+
103
+
1) commit and *push* your code changes. Make sure to also update the version in `pyproject.toml`
0 commit comments