Skip to main content

Drift-free IMU-based joint kinematics estimation (Weygers & Kok, 2020)

Project description

Drift-Free Joint Kinematics from Dual IMUs

High-performance Python/Cython implementation of the drift-free joint kinematics estimation method from Weygers & Kok (2020), "Drift-Free Inertial Sensor-Based Joint Kinematics for Long-Term Arbitrary Movements".

It includes:

  1. MAP-acc (optimization-based smoothing): Gauss-Newton optimizer for high-accuracy offline joint kinematics.
  2. MEKF-acc (Multiplicative Extended Kalman Filter): Online filtering.

Installation

pip install dfjimu

A C compiler is recommended for the fast Cython backend. If unavailable, the package falls back to pure Python automatically.

Development

# Install in editable mode
uv pip install -e .

# With Jupyter and matplotlib for running the example notebook
uv pip install -e ".[examples]"

# With dev tools (Cython, pytest)
uv pip install -e ".[dev]"

Usage Example

from dfjimu import mekf_acc, map_acc

# MEKF-acc (online filtering)
q1, q2 = mekf_acc(gyr1, gyr2, acc1, acc2, r1, r2, Fs, q_init)

# MAP-acc (optimization-based smoothing)
q1, q2 = map_acc(gyr1, gyr2, acc1, acc2, r1, r2, Fs, q_init,
                 cov_w, cov_i, cov_lnk)

See examples/demo.ipynb for a full walkthrough with plots.

Running Benchmarks

Evaluate accuracy and speed of the solvers on the dataset:

uv run tests/evaluate_package.py

Package Structure

  • dfjimu/: The Python package source.
    • map_acc() / MapAcc: MAP-acc optimizer (uses Cython).
    • mekf_acc() / MekfAcc: MEKF-acc filter (uses Cython).
    • _python/: Pure Python reference implementations for educational/debugging purposes.

Reference

Weygers, I., & Kok, M. (2020). Drift-Free Inertial Sensor-Based Joint Kinematics for Long-Term Arbitrary Movements. IEEE Sensors Journal, 20(14), 7969-7979.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dfjimu-0.1.0.tar.gz (280.5 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

dfjimu-0.1.0-cp312-cp312-win_amd64.whl (398.2 kB view details)

Uploaded CPython 3.12Windows x86-64

dfjimu-0.1.0-cp312-cp312-win32.whl (381.0 kB view details)

Uploaded CPython 3.12Windows x86

dfjimu-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (955.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

dfjimu-0.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (921.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

dfjimu-0.1.0-cp312-cp312-macosx_11_0_arm64.whl (404.6 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

dfjimu-0.1.0-cp311-cp311-win_amd64.whl (397.7 kB view details)

Uploaded CPython 3.11Windows x86-64

dfjimu-0.1.0-cp311-cp311-win32.whl (380.4 kB view details)

Uploaded CPython 3.11Windows x86

dfjimu-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (950.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

dfjimu-0.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (928.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

dfjimu-0.1.0-cp311-cp311-macosx_11_0_arm64.whl (404.3 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

dfjimu-0.1.0-cp310-cp310-win_amd64.whl (398.1 kB view details)

Uploaded CPython 3.10Windows x86-64

dfjimu-0.1.0-cp310-cp310-win32.whl (381.0 kB view details)

Uploaded CPython 3.10Windows x86

dfjimu-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (916.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

dfjimu-0.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (895.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

dfjimu-0.1.0-cp310-cp310-macosx_11_0_arm64.whl (405.1 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

dfjimu-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl (408.8 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

Details for the file dfjimu-0.1.0.tar.gz.

File metadata

  • Download URL: dfjimu-0.1.0.tar.gz
  • Upload date:
  • Size: 280.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dfjimu-0.1.0.tar.gz
Algorithm Hash digest
SHA256 4a83859d7af3fc98570505bff815006d278078924a09ca567be1db66536391d5
MD5 ec6d05216a8e068bc78b5ba1fdb16efc
BLAKE2b-256 21f86b9f0bf42561479783612d61ee4e1f121bbcbb17625efe9782d2899b504c

See more details on using hashes here.

Provenance

The following attestation bundles were made for dfjimu-0.1.0.tar.gz:

Publisher: publish.yml on daniel-om-weber/dfjimu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dfjimu-0.1.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: dfjimu-0.1.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 398.2 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dfjimu-0.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 f56fc2d72e36211b0fc40ec4644bd4bc3f5b991044086b0cac89e899decc77dc
MD5 58d083ab544b525564fc029d11fff27a
BLAKE2b-256 0640037a7bd2c14ae60bf0375699a2ff1c88482bc64d4ae7f6bbc2be40f35818

See more details on using hashes here.

Provenance

The following attestation bundles were made for dfjimu-0.1.0-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on daniel-om-weber/dfjimu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dfjimu-0.1.0-cp312-cp312-win32.whl.

File metadata

  • Download URL: dfjimu-0.1.0-cp312-cp312-win32.whl
  • Upload date:
  • Size: 381.0 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dfjimu-0.1.0-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 6dcede6a12f300ebaa478b329d836fc454c6afa869105152a9e633c1bce365be
MD5 1170bb99f7272154810ec502eaf34cf1
BLAKE2b-256 10059ff69aab24077a9f03f34aa4a4ada7b715201254810f1f899489ccabbbe7

See more details on using hashes here.

Provenance

The following attestation bundles were made for dfjimu-0.1.0-cp312-cp312-win32.whl:

Publisher: publish.yml on daniel-om-weber/dfjimu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dfjimu-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dfjimu-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bfbeec5c38ab28d12a40f4ccffce6a82494500da10d90ab05409f53502b98ce8
MD5 fecb20b84d872398c830f2a192dd9ee7
BLAKE2b-256 55cef964e6fad0bbf1d97a5ffe873607e6e1f8393e0a40ee90415fb47b872b05

See more details on using hashes here.

Provenance

The following attestation bundles were made for dfjimu-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on daniel-om-weber/dfjimu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dfjimu-0.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for dfjimu-0.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 21293d348a983afc550e67bbe68afcf3f7eeae35769e5c5c958e8ee53bc122c6
MD5 3963554f8a632995a09a0a45bf9baa38
BLAKE2b-256 6719453e9942eb93013387175772ab77a2e7dd07d5776c79b277e9b550ec4410

See more details on using hashes here.

Provenance

The following attestation bundles were made for dfjimu-0.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: publish.yml on daniel-om-weber/dfjimu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dfjimu-0.1.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dfjimu-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7fd4b09c0a5c70b75752a296eeefab30d864b8986635938ca9d41bc0bc36b376
MD5 926418f34c8bab1eca72a3887974acb8
BLAKE2b-256 3959b6f4210b3fed9909f5f29ac8c8f730926bf9d14275e8f5edd50a6a5e005e

See more details on using hashes here.

Provenance

The following attestation bundles were made for dfjimu-0.1.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on daniel-om-weber/dfjimu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dfjimu-0.1.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: dfjimu-0.1.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 397.7 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dfjimu-0.1.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a268e1ececf521c4db3f09774abd2bfcfd7f0bdae05e89261b997985c3916864
MD5 3b032d7fbb5ddbeb048e0817c7727880
BLAKE2b-256 946474eeca339458aba858a85f68c750ba4db98ca336ed54942f9009fd412594

See more details on using hashes here.

Provenance

The following attestation bundles were made for dfjimu-0.1.0-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on daniel-om-weber/dfjimu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dfjimu-0.1.0-cp311-cp311-win32.whl.

File metadata

  • Download URL: dfjimu-0.1.0-cp311-cp311-win32.whl
  • Upload date:
  • Size: 380.4 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dfjimu-0.1.0-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 7ff8e10e2770e8ea07f7ed98d16789ca4d194e8096ad34a45a00d01ee0c9999a
MD5 e6c73f48021657fc022f3b9201b16d4e
BLAKE2b-256 e0ae683750cf5996867f4642d5f88dbb8232ca8184b3a45ca6117037b51b1417

See more details on using hashes here.

Provenance

The following attestation bundles were made for dfjimu-0.1.0-cp311-cp311-win32.whl:

Publisher: publish.yml on daniel-om-weber/dfjimu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dfjimu-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dfjimu-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9947057b99f6a6f1d0b80366b48d6ed11544a01764fc15ffeffde7b5b5e71ff8
MD5 ba1a5b09d13919c064fefaab37445093
BLAKE2b-256 8cb07af1470bb3f0f4e0f3d023bfc1315fda77f00a33ad401e346dbc9a4ead11

See more details on using hashes here.

Provenance

The following attestation bundles were made for dfjimu-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on daniel-om-weber/dfjimu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dfjimu-0.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for dfjimu-0.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 65bb161d74627b4744bf5ee33b7f9b958c8a814390bb2e79b6b133572db5c3ca
MD5 720f0929da849d94375a95b6ca7dbd96
BLAKE2b-256 7fc8c6429d36418940c76ab7002b7b85fe8d4e14ca55cd345e0376cc0d2592bf

See more details on using hashes here.

Provenance

The following attestation bundles were made for dfjimu-0.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: publish.yml on daniel-om-weber/dfjimu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dfjimu-0.1.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dfjimu-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e504f7e29959b32eaed8e08a390667aed5230d88598275556943b02f894e854f
MD5 f171ac74b87f0202aa4b86f5732ce7cf
BLAKE2b-256 182ac0704811b336b0433e9df491f7947d4455595c4f25634e8d7026ae360a38

See more details on using hashes here.

Provenance

The following attestation bundles were made for dfjimu-0.1.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on daniel-om-weber/dfjimu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dfjimu-0.1.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: dfjimu-0.1.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 398.1 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dfjimu-0.1.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 493af66868e90412de6a165ca562bd43ab89d1c6684234dec17d69d54db74aa2
MD5 0a66ea89c1c4408428e4dfcaef0fb0e7
BLAKE2b-256 a6d07c305444abdabf3d6f2e02e17f53a6098445eebec5cff218b6220cb22e65

See more details on using hashes here.

Provenance

The following attestation bundles were made for dfjimu-0.1.0-cp310-cp310-win_amd64.whl:

Publisher: publish.yml on daniel-om-weber/dfjimu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dfjimu-0.1.0-cp310-cp310-win32.whl.

File metadata

  • Download URL: dfjimu-0.1.0-cp310-cp310-win32.whl
  • Upload date:
  • Size: 381.0 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dfjimu-0.1.0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 bc39adecae4fc0fe0361090e86a20cc9d98896016818221d9db203bd723ca533
MD5 f4bde7dad08d297b7b868b26f02f81e0
BLAKE2b-256 b6e237be7d425284ef93b66bcd08e7376aad8da543dd9e60f01bb1fbb7834579

See more details on using hashes here.

Provenance

The following attestation bundles were made for dfjimu-0.1.0-cp310-cp310-win32.whl:

Publisher: publish.yml on daniel-om-weber/dfjimu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dfjimu-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dfjimu-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0ea5366b0c095385a8b92e249339c4482199476464add3fd2f8f9ff624c5364c
MD5 3f9cce0a8a7ccf506eaca9d2ee751ede
BLAKE2b-256 09c68c215c42c2f0b6965590fb046c55a5d3512aaf9c6b1d0a415b4eae790d42

See more details on using hashes here.

Provenance

The following attestation bundles were made for dfjimu-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on daniel-om-weber/dfjimu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dfjimu-0.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for dfjimu-0.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 ff4d681775145c9521294ce8869edcd5cd518bb2c17e20ee18ab3a57cfc4ced5
MD5 d27f9291859e70f8b3d6a4b209a5519e
BLAKE2b-256 0fc72b1e7231940325d2b23581b05bb992e50858317e80fedc4051c431a0f951

See more details on using hashes here.

Provenance

The following attestation bundles were made for dfjimu-0.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: publish.yml on daniel-om-weber/dfjimu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dfjimu-0.1.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dfjimu-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 43eecb38a724e48f39a90a63be177f0a231367666aac4fa7c91f8d7b7228f713
MD5 0a334242572877e3ba1a40211e213a6f
BLAKE2b-256 185233c188c21677b69693ce5abf8fe0f5d0d4b6d962387bdf2bcbe7187d7ced

See more details on using hashes here.

Provenance

The following attestation bundles were made for dfjimu-0.1.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: publish.yml on daniel-om-weber/dfjimu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dfjimu-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for dfjimu-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 be2b1d245beeaaff9c20e7ccc82656237b4d5df4f177bb012a51684ec28cbc36
MD5 0c7d5e58e9e416444f4752e89d5497a0
BLAKE2b-256 f88f1dafddd93eea5ff2eb4d6537539bb3ce4c35f7d0593d1c32c6b08e03c88f

See more details on using hashes here.

Provenance

The following attestation bundles were made for dfjimu-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl:

Publisher: publish.yml on daniel-om-weber/dfjimu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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