Skip to content

Commit

Permalink
v3.0
Browse files Browse the repository at this point in the history
* Documentation
  • Loading branch information
KalebKE committed Aug 25, 2024
1 parent c2c9173 commit 22a2072
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 2 deletions.
16 changes: 14 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# FSensor
Android Sensor Filter and Fusion

<img src="/documentation/images/fsensor.png" width="300">
<img src="/documentation/images/complementary.gif" width="300">

## Introduction
FSensor (FusionSensor) is an Android library that provides linear acceleration and rotation sensors via LowPass, Complementary and Kalman based sensor fusions. The behavior of stock
Expand All @@ -12,7 +12,7 @@ filters can be used to smooth sensor data. FSensor is designed to be easy to use
* Provides estimations of device rotation with LowPass, Complimentary and Kalman based sensor fusions
* Provides estimations of linear acceleration with Low-Pass, Complimentary and Kalman based sensor fusions
* Provides device/sensor agnostic averaging filters in the of mean, median and low-pass varieties
*


## Get FSensor

Expand Down Expand Up @@ -64,6 +64,7 @@ that you will find with Euclidean based rotation matrices.

### Complimentary Filter

<img src="/documentation/images/complementary.gif" width="300">

A complementary filter is a frequency domain filter. In its strictest sense, the definition of a complementary filter refers to the use of two or more transfer functions, which
are mathematical complements of one another. Thus, if the data from one sensor is operated on by G(s), then the data from the other sensor is operated on by I-G(s), and the sum of
Expand All @@ -76,11 +77,22 @@ filter should act on and dt is the sample period (1/frequency) of the sensor.

### Kalman Filter

<img src="/documentation/images/kalman.gif" width="300">

Kalman filtering, also known as linear quadratic estimation (LQE), is an algorithm that uses a series of measurements observed over time, containing noise (random variations)
and other inaccuracies, and produces estimates of unknown variables that tend to be more precise than those based on a single measurement alone. More formally, the Kalman filter
operates recursively on streams of noisy input data to produce a statistically optimal estimate of the underlying system state. Like complimentary filters, Kalman filters
require inputs from the gyroscope, accelerometer, and magnetometer sensors.

### Low-Pass Filter

<img src="/documentation/images/low_pass.gif" width="300">

A low-pass filter can isolate the gravity component of the acceleration sensor. The gravity component can be used to determine the tilt of the device. The tilt can be used to then
determine the rotation of the device. The advantage to a low-pass filter is that it is computationally efficient, requires only the acceleration sensor, and is easy to implement.
A low-pass filter is not capable of determining the heading of the device and is sensitive to orientation changes. A low-pass filter can be effective in scenarios where the device is
held in a fixed orientation and the azimuth is not required.

## Filters

FSensor implements three of the most common smoothing filters: low-pass, mean and median filters. All the filters are user configurable based on the time constant in units of seconds.
Expand Down
Binary file added documentation/images/complementary.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added documentation/images/kalman.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added documentation/images/low_pass.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 22a2072

Please sign in to comment.