-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
23 changed files
with
375 additions
and
226 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
name: Documentation | ||
|
||
on: | ||
push: | ||
branches: | ||
- main | ||
|
||
jobs: | ||
build-documentation: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
with: | ||
submodules: 'true' | ||
- name: Count Lines of Code | ||
uses: JHartzer/[email protected] | ||
with: | ||
options: --exclude-lang=CSS,CSV,HTML,JavaScript,make,SVG,TeX --md --report-file=cloc.md | ||
- name: Format and move cloc.md | ||
run: | | ||
echo -e 'Count Lines of Code {#cloc}\n============\n' > docs/software/cloc.md | ||
cat cloc.md | tail -n +4 >> docs/software/cloc.md | ||
sed -i 's/--------|--------|--------|--------|--------/| | | | | |/' docs/software/cloc.md | ||
rm cloc.md | ||
- name: Run Doxygen | ||
uses: mattnotmitt/[email protected] | ||
with: | ||
doxyfile-path: .doxyfile | ||
- name: Upload Artifact | ||
uses: actions/upload-pages-artifact@v1 | ||
with: | ||
path: docs/doxygen/html | ||
deploy-documentation: | ||
needs: build-documentation | ||
permissions: | ||
pages: write | ||
id-token: write | ||
environment: | ||
name: github-pages | ||
url: ${{ steps.deployment.outputs.page_url }} | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Deploy to GitHub Pages | ||
id: deployment | ||
uses: actions/deploy-pages@v2 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,5 +3,6 @@ | |
*/__pycache__/ | ||
|
||
# Generated Docs | ||
docs/doxygen/ | ||
docs/doxygen/html | ||
docs/doxygen/latex | ||
docs/software/cloc.md |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
[submodule "docs/doxygen/html/doxygen-awesome-css"] | ||
path = docs/doxygen/html/doxygen-awesome-css | ||
url = https://github.com/jothepro/doxygen-awesome-css.git | ||
[submodule "docs/doxygen/doxygen-awesome-css"] | ||
path = docs/doxygen/doxygen-awesome-css | ||
url = https://github.com/jothepro/doxygen-awesome-css.git |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,94 +1,19 @@ | ||
# EKF_CAL | ||
[![Documentation](https://github.com/unmannedlab/ekf-cal/actions/workflows/documentation.yaml/badge.svg)](https://github.com/unmannedlab/ekf-cal/actions/workflows/documentation.yaml) | ||
|
||
Extended Kalman Filter - Calibration and Localization | ||
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-IMU calibration filter to provide | ||
estimates of intrinsic and extrinsic sensor calibration parameters. | ||
|
||
## Dependencies | ||
The EKF_CAL package has the following hard dependencies that are required for all compilations: | ||
- [OpenCV](https://opencv.org/) | ||
- [Eigen 3](https://eigen.tuxfamily.org/index.php?title=Main_Page) | ||
|
||
The following dependencies are for building the ROS node and simulation, respectively | ||
- [ROS2](https://docs.ros.org/en/rolling/index.html) | ||
- [yaml-cpp](https://github.com/jbeder/yaml-cpp) | ||
|
||
The following soft dependencies useful for development and documentation | ||
- [Doxygen](https://www.doxygen.nl/index.html) | ||
- [Google Test](https://google.github.io/googletest/) | ||
|
||
These can be installed by running `rosdep` in the base directory of this repo | ||
``` | ||
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 | ||
``` | ||
|
||
For full CMake support, the following environment variables are expected: | ||
- PLANTUML_INSTALL_DIR | ||
- ROS_DISTRO | ||
|
||
## 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 ekf_cal \ | ||
--event-handlers console_cohesion+ \ | ||
--cmake-args -DCMAKE_C_FLAGS='--coverage' -DCMAKE_CXX_FLAGS='--coverage' | ||
colcon test --packages-select ekf_cal --pytest-with-coverage \ | ||
--pytest-args --cov-report=term --event-handlers console_direct+ | ||
colcon lcov-result --packages-select ekf_cal --filter '*_test.cpp' '*_main.cpp' | ||
``` | ||
|
||
## 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 | ||
``` | ||
|
||
## Launch | ||
For an example of a filter node launch file, see [example.launch.py](launch/example.launch.py) | ||
|
||
In particular, note the configuration file [example.yaml](config/example.yaml). | ||
|
||
The configuration file specifies which sensor topics should to use and the initialization values. | ||
|
||
## Simulations | ||
Simulations can be run using a YAML configuration file that extends the base configuration file | ||
with additional parameters. See the example [example.yaml](config/example.yaml). | ||
|
||
Multiple simulations can be run in parallel using the [run.py](eval/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 [plot.py](eval/plot.py) | ||
``` | ||
python3 eval/plot.py config/example.yaml | ||
``` | ||
|
||
To run and plot in sequence, utilize [evaluate.py](eval/evaluate.py) | ||
``` | ||
python3 eval/evaluate.py config/example.yaml | ||
``` | ||
For full documentation, please see below: | ||
- [Github Repository](https://github.com/unmannedlab/ekf-cal/) | ||
- [Documentation](https://unmannedlab.org/ekf-cal/) | ||
- [Getting Started](https://unmannedlab.org/ekf-cal/tutorial.html) | ||
|
||
## References | ||
1. J. Hartzer and S. Saripalli, " | ||
Online Multi Camera-IMU Calibration", | ||
IEEE International Symposium on Safety, Security, and Rescue Robotics (SSRR), 2022 | ||
IEEE International Symposium on Safety, Security, and Rescue Robotics (SSRR), 2022. | ||
[IEEE](https://doi.org/10.1109/SSRR56537.2022.10018692), | ||
[arXiv](https://arxiv.org/abs/2209.13821) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Submodule doxygen-awesome-css
added at
df83fb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,21 +1,18 @@ | ||
Multi-IMU Filtering {#multi-imu} | ||
============ | ||
|
||
|
||
\begin{equation} \label{eq:pred_measurement} | ||
\begin{split} | ||
&\boldsymbol{h}(\boldsymbol{x}_{b}) = \\ | ||
&\begin{bmatrix} | ||
\mathcal{C}(\prescript{B}{I_i}{q})^T | ||
\left( | ||
\mathcal{C}(\prescript{G}{B}{q})^T \boldsymbol{a} + | ||
\boldsymbol{\alpha} \times \prescript{B}{}{\boldsymbol{p}}_{I_i} + | ||
\boldsymbol{\omega} \times \boldsymbol{\omega} \times \prescript{B}{}{\boldsymbol{p}}_{I_i} | ||
\right) | ||
\\ | ||
\mathcal{C}(\prescript{B}{I_i}{q})^T | ||
\mathcal{C}(\prescript{G}{B}{q})^T | ||
\boldsymbol{\omega} | ||
\end{bmatrix} | ||
\end{split} | ||
\end{equation} | ||
\f{align}{ | ||
\boldsymbol{h}(\boldsymbol{x}_{b}) = | ||
\begin{bmatrix} | ||
\mathcal{C}(\prescript{B}{I_i}{q})^T | ||
\left( | ||
\mathcal{C}(\prescript{G}{B}{q})^T \boldsymbol{a} + | ||
\boldsymbol{\alpha} \times \prescript{B}{}{\boldsymbol{p}}_{I_i} + | ||
\boldsymbol{\omega} \times \boldsymbol{\omega} \times \prescript{B}{}{\boldsymbol{p}}_{I_i} | ||
\right) | ||
\\ | ||
\mathcal{C}(\prescript{B}{I_i}{q})^T | ||
\mathcal{C}(\prescript{G}{B}{q})^T | ||
\boldsymbol{\omega} | ||
\end{bmatrix} | ||
\f} |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Oops, something went wrong.