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.
Detailed documentation can be found at https://vqf.readthedocs.io/.
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.
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:
- C, by Hugo Chiang: https://github.com/DusKing1/vqf-c.
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.
VQF is licensed under the terms of the MIT license.
Daniel Laidig <laidig at control.tu-berlin.de>