EKF_CAL

EKF_CAL: Extended Kalman Filter-based Calibration and Localization - Published in JOSS (2025)

https://github.com/unmannedlab/ekf_cal

Science Score: 98.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 3 DOI reference(s) in README and JOSS metadata
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Scientific Fields

Physics Physical Sciences - 40% confidence
Last synced: 4 months ago · JSON representation ·

Repository

Extended Kalman Filter-Based Calibration and Localization

Basic Info
  • Host: GitHub
  • Owner: unmannedlab
  • License: gpl-3.0
  • Language: C++
  • Default Branch: main
  • Homepage:
  • Size: 3.12 MB
Statistics
  • Stars: 47
  • Watchers: 2
  • Forks: 7
  • Open Issues: 0
  • Releases: 1
Created over 3 years ago · Last pushed 7 months ago
Metadata Files
Readme Contributing License Citation

README.md

ekf_cal

All Tests

Extended Kalman Filter Calibration and Localization: ekf_cal is a package focused on the simulation and development of a multi-sensor online calibration kalman filter. It combines the architecture of a Multi-State Constraint Kalman Filter (MSCKF) with a multi-sensor calibration filter to provide intrinsic and extrinsic estimates for the following sensors: - IMU - GPS - Cameras - Fiducials

The full project documentation is available online.

setup

Quick Start

Clone the Repository

This guide assumes you have the ekf_cal repository in a colcon workspace. mkdir ekf_cal_ws/ mkdir ekf_cal_ws/src/ cd ekf_cal_ws/src/ git clone git@github.com:unmannedlab/ekf_cal.git cd ../

Dependencies

The ekf_cal package has the following hard dependencies that are required for all compilations: - OpenCV - Eigen 3

The following dependencies are for building the ROS node and simulation, respectively - ROS2 - yaml-cpp

The following soft dependencies useful for development and documentation - Doxygen - Google Test

These can be installed by running rosdep in the base directory of the colcon workspace (e.g. ekf_cal_ws) rosdep install --from-paths src -y --ignore-src

Build

Building can be done simply with the following command:

colcon build --symlink-install --packages-select ekf_cal --event-handlers console_cohesion+ --cmake-args -DCMAKE_BUILD_TYPE=Release

Docker

Alternatively, a Dockerfile is provided, which can be used either inside a VS Code devcontainer, or a standalone container.

Input Files

This repository offers two main ways to utilize the Kalman filter framework: a simulation and ROS2 node. Both the simulation and ROS node are configurable and runnable using identically formatted YAML files. Further documentation on how to configure this YAML file for a particular setup can be found on the Parameters page.

Simulation

Simulations can be run using a YAML configuration file that extends the base configuration file with additional parameters. See the example example.yaml. Multiple simulations can be run in parallel using the run.py. An example using a single input is given below

python3 eval/run.py config/example.yaml

The results of a run can be plotted using report.py python3 eval/report.py config/example.yaml

To run and plot in sequence, utilize evaluate.py python3 eval/evaluate.py config/example.yaml

This will generate and run the requested number of simulation runs for the specified run time and produce plots of the Monte Carlo data. For example, the report generates plots of the body acceleration estimates and the true error in those acceleration estimates.

acceleration acceleration-error

Launch ROS2 Node

For an example of a filter node launch file, see example.launch.py

In particular, note the configuration file example.yaml.

The configuration file specifies which sensor topics should to use and the initialization values. Once built, the ROS node can be started by running the following command

ros2 launch example.launch

Evaluating the output of the ROS node is the same as with the simulations, where reports can be generated using the resultant log files.

Testing & Static Analysis

Once the package has been built, unit tests and static analysis can be run with the following commands colcon test --packages-select ekf_cal --event-handlers console_direct+

A test code coverage report can be generated using the following commands ``` colcon build --symlink-install --packages-select ekfcal \ --event-handlers consolecohesion+ \ --cmake-args -DCMAKECFLAGS='--coverage' -DCMAKECXXFLAGS='--coverage'

colcon test --packages-select ekfcal --pytest-with-coverage \ --pytest-args --cov-report=term --event-handlers consoledirect+

colcon lcov-result --packages-select ekfcal --filter '*test.cpp' '*_main.cpp' ```

The lines of code in the repository can be counted (cloc) using the following command

echo 'Count Lines of Code {#cloc}\n============' > docs/software/cloc.md && \ cloc src eval --md | tail -n +4 >> docs/software/cloc.md && \ sed -i 's/--------|--------|--------|--------|--------/| | | | | |/' docs/software/cloc.md

A performance flamegraph can be generated using the following command

cd docs/flamegraph/ && ./run_perf.sh

Documentation

Documentation can be generated using the following command: doxygen .doxyfile

A single pdf can be generated of the documentation using the following command doxygen .doxyfile && cd docs/doxygen/latex && make

References

bibtex @inproceedings{2023_Multi_IMU, title = {Online Multi-IMU Calibration Using Visual-Inertial Odometry}, booktitle = {2023 IEEE International Conference on Multisensor Fusion and Integration for Intelligent Systems (MFI)}, author = {Jacob Hartzer and Srikanth Saripalli}, year = {2023}, doi = {10.1109/SDF-MFI59545.2023.10361310}, arxiv = {2310.12411}, } bibtex @inproceedings{2022_Multi_Cam, title = {Online Multi Camera-IMU Calibration}, booktitle = {2022 IEEE International Symposium on Safety, Security, and Rescue Robotics (SSRR)}, author = {Hartzer, Jacob and Saripalli, Srikanth}, year = {2022}, pages = {360-365}, doi = {10.1109/SSRR56537.2022.10018692}, arxiv = {2209.13821}, }

Owner

  • Name: Unmanned Systems Lab
  • Login: unmannedlab
  • Kind: organization
  • Email: ssaripalli@tamu.edu
  • Location: College Station, TX

Unmanned Systems Lab at Texas A&M

JOSS Publication

EKF_CAL: Extended Kalman Filter-based Calibration and Localization
Published
May 29, 2025
Volume 10, Issue 109, Page 7793
Authors
Jacob Hartzer ORCID
Texas A&M University, USA
Srikanth Saripalli ORCID
Texas A&M University, USA
Editor
Arfon Smith ORCID
Tags
ROS Kalman Filtering Monte Carlo Simulation

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Hartzer"
  given-names: "Jacob"
  orcid: "https://orcid.org/0000-0002-3051-2213"
title: "ekf_cal"
version: 0.4.0
# doi:
# date-released:
url: "https://github.com/unmannedlab/ekf_cal"

GitHub Events

Total
  • Issues event: 20
  • Watch event: 24
  • Issue comment event: 3
  • Push event: 13
  • Pull request event: 2
  • Fork event: 4
  • Create event: 2
Last Year
  • Issues event: 20
  • Watch event: 24
  • Issue comment event: 3
  • Push event: 13
  • Pull request event: 2
  • Fork event: 4
  • Create event: 2

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 12
  • Total pull requests: 2
  • Average time to close issues: 16 days
  • Average time to close pull requests: about 8 hours
  • Total issue authors: 3
  • Total pull request authors: 1
  • Average comments per issue: 0.25
  • Average comments per pull request: 0.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 12
  • Pull requests: 2
  • Average time to close issues: 16 days
  • Average time to close pull requests: about 8 hours
  • Issue authors: 3
  • Pull request authors: 1
  • Average comments per issue: 0.25
  • Average comments per pull request: 0.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • JHartzer (9)
  • gareth-cross (2)
  • CRobot7 (1)
Pull Request Authors
  • arfon (2)
Top Labels
Issue Labels
Pull Request Labels

Dependencies

.github/workflows/documentation.yaml actions
  • JHartzer/cloc-action 5.1 composite
  • actions/checkout v4 composite
  • actions/deploy-pages v2 composite
  • actions/upload-pages-artifact v1 composite
  • mattnotmitt/doxygen-action 1.9.5 composite
.devcontainer/Dockerfile docker
  • osrf/ros humble-desktop build