Skip to content

dlaidig/vqf

Repository files navigation

VQF: A Versatile Quaternion-based Filter for IMU Orientation Estimation

tests build docs version python format license downloads

This is the implementation of the IMU orientation estimation filter described in the following publication:

D. Laidig and T. Seel. "VQF: Highly Accurate IMU Orientation Estimation with Bias Estimation and Magnetic Disturbance Rejection." Information Fusion 2023, 91, 187--204. doi:10.1016/j.inffus.2022.10.014. [Accepted manuscript available at arXiv:2203.17024.]

The filter can perform simultaneous 6D (magnetometer-free) and 9D (gyr+acc+mag) sensor fusion and can also be used without magnetometer data. Different sampling rates for gyroscopes, accelerometers, and magnetometers are supported as well. While in most cases, the defaults will be reasonable, the algorithm can be influenced via two tuning parameters.

Documentation

Detailed documentation can be found at https://vqf.readthedocs.io/.

Installation

The VQF Python package can easily be installed from PyPI via pip, e.g.:

pip install vqf

For more information, please refer to the documentation.

Implementations

This project contains several implementations of VQF in different programming languages:

  • The main implementation is written in C++.
  • Cython-based wrappers are provided that allow the fast C++ implementation to be used from Python.
  • Additionally, there is a (comparatively slow) implementation in pure Python.
  • A pure Matlab version is available as well.

Additionally, you may find the following "inofficial" port useful:

If you have ported VQF to a different language and published the code under a permissive license, feel free to let me know so I can mention your project here.

License

VQF is licensed under the terms of the MIT license.

Contact

Daniel Laidig <laidig at control.tu-berlin.de>