Skip to content

kibotu/KalmanRx

Repository files navigation

Donation About Jan Rabe

KalmanRx Android Arsenal Javadoc Build Status API Gradle Version Kotlin Licence androidx

Introduction

Removes the noise from float streams using Kalman Filter. Useful to smoothen sensory data e.g.: gps location, or Accelerometer.

is an open-source library for Android that provides a set of classes and utilities for implementing Kalman filtering in reactive programming applications using the RxJava library.

Kalman filtering is a mathematical technique that is used to estimate the state of a dynamic system based on a series of noisy measurements. It is commonly used in signal processing, control systems, and navigation applications.

The KalmanRx library provides a set of reactive operators that can be used to implement Kalman filtering in RxJava applications. These operators allow you to easily filter noisy data streams, estimate the state of dynamic systems, and make predictions about future states.

Some of the key features of the KalmanRx library are:

Integration with RxJava: The library is designed to work seamlessly with the RxJava library, which allows you to easily combine Kalman filtering with other reactive programming techniques. Support for multiple Kalman filter models: The library provides a set of pre-defined Kalman filter models that can be used to filter different types of data streams, including scalar, vector, and matrix data. Configurable filter parameters: The library allows you to configure the filter parameters, such as the process noise, measurement noise, and initial state, to optimize the filter performance for your specific application. Real-time filtering: The library is optimized for real-time applications, and provides a set of utilities to measure the filter performance, detect anomalies, and adjust the filter parameters in real-time. Overall, the KalmanRx library can be a useful tool for implementing Kalman filtering in reactive programming applications on the Android platform, especially for developers who are working with dynamic systems and noisy data streams.

Screenshot Screenshot

Library is supporting up to 3 values smoothened from a stream.

(float) stream

KalmanRx.createFrom1D(floatObservable.map(e -> e.value))
    .subscribe(value->{}, Throwable::printStackTrace);

(float, float) stream

KalmanRx.createFrom2D(floatObservable.map(e -> e.values))
    .subscribe(values->{}, Throwable::printStackTrace);

(float, float, float) stream

KalmanRx.createFrom3D(floatObservable.map(e -> e.values))
    .subscribe(value->{}, Throwable::printStackTrace);

How to install

implementation 'com.github.kibotu:KalmanRx:-SNAPSHOT'

How to build

graldew clean build

CI

gradlew clean assembleRelease test javadoc

Build Requirements

  • JDK8
  • Android Build Tools 27.0.3
  • Android SDK 27

Notes

Follow me on Twitter: @wolkenschauer

Let me know what you think: jan.rabe@kibotu.net

Contributions welcome!

License

Copyright 2016 Jan Rabe

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.