ekf_cal
0.4.0
A Kalman filter-based sensor calibration package
|
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:
The full project documentation is available online.
This guide assumes you have the ekf_cal repository in a colcon workspace.
The ekf_cal package has the following hard dependencies that are required for all compilations:
The following dependencies are for building the ROS node and simulation, respectively
These can be installed by running rosdep in the base directory of the colcon workspace (e.g. ekf_cal_ws
)
Building can be done simply with the following command:
Alternatively, a Dockerfile is provided, which can be used either inside a VS Code devcontainer, or a standalone container.
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 can be found on the Parameters page.
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
The results of a run can be plotted using report.py
To run and plot in sequence, utilize evaluate.py
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.
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
Once the package has been built, unit tests and static analysis can be run with the following commands
A test code coverage report can be generated using the following commands
The lines of code in the repository can be counted (cloc) using the following command
A performance flamegraph can be generated using the following command
Documentation can be generated using the following command:
A single pdf can be generated of the documentation using the following command