In order to create a working environment for the implementation of state estimation algorithms, like a Kalman filter, the OASE (Online Asynchronous State Estimator) Toolbox is developed at Flanders Make.
This C++ toolbox provides a fast and easy interface for the user. It can be used in C++, Python and MATLAB, and can be integrated with ROS for online applications. This toolbox is considered a valuable asset for estimation algorithm research as its modularized design enables an easy way to test different algorithm designs.
The estimation technology implemented in this toolbox is a Kalman filter based (extended Kalman filter, unscented Kalman filter, null-space Kalman filter). The main features of the toolbox can be summarized as follows:
- Handle complex data scheme: In most practical cases, different sensors have different sample rate and their data will not be synchronized. Meanwhile, there might be a delay in the data due to data transmission or pre-processing (e.g. for camera images). The OASE toolbox handles the correct ordering of the data automatically. The users merely need to provide the measurements with the correct timestamp.
- Low calculation time: In this toolbox, the system model and observation functions, as well as the Jacobin matrix, are derived analytically using CasADi. Afterwards, C functions will be created to run the calculation. This ensures the main calculations of the filter are performed with very low calculation time, without the need for a user to manually (and error-prone) provide the Jacobian matrices. The measurement function of the system can be separated into multiple functions to modularize the implementation (normally one for each sensor), and the observation data for different observation functions can be fed to the filter separately.
- Easy to use: The toolbox is developed in C++. That way the best performance is guaranteed, and it can be integrated into embedded platforms. For fast prototyping, OASE also has Python and MATLAB interfaces.
Additional functionalities included in OASE are: Outlier detection, Kalman smoothing, dual-mode parameter estimation
The toolbox includes a ‘code generation’ capability. Using this functionality, C++ code is exported in which all the functions used for state estimation are implemented. This code can then be used with the ’embedded’ version of OASE, for which no CasADi-dependency exists anymore. Together with the python/MATLAB interface, this enables a user to develop the state estimator in a fast prototyping environment, and once satisfied with the implementation, generate the C++ code required for implementation on the embedded/real-time target. Binaries for the following platforms exist:
- Windows: C++ and MATLAB interface
- Linux x64: C++, MATLAB and python interface
- Linux arm 64: C++ and python interface
- Windows, Linux x64, Linux arm 64, Linux -armv5-musl Linux -armv5 Linux -armv6-musl Linux -armv6 Linux -armv7 Linux -armv7a Linux -armv7l-musl Linux -mips Linux -mipsel Linux -ppc64le Linux -s390x Linux -x86: Embedded C++ interface without CasADi dependency
The toolbox is of interest to developers of (Kalman-filter) based state estimators, especially for online implementations with lots of different sensor inputs with measurements coming in at various frequencies and with delays.
For more information, please contact: