You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This repository contains a collection of algorithms and benchmarks for optimization on the SE(3) manifold, focusing on \*\*Geometric Dual Quaternions (GeoDQ)\*\*, \*\*Principal Geodesic Analysis (PGA)\*\*, and other geometric fusion methods.
6
+
7
+
8
+
9
+
Designed for Computer Vision, Robotics, and Navigation tasks.
*Global Robustness Analysis averaged over all 35 RoNIN trajectories. The plot illustrates the degradation of RMSE (Log Scale) as the position update interval increases (simulating VO/GPS outages). The **GeoDQ observer** (Red/Dashed) maintains sub-meter accuracy and structural stability even when updates are decimated to 7 Hz (Interval ~30). In contrast, Kalman Filter variants (ESKF, UKF) exhibit exponential error growth much earlier, confirming the observer's superior handling of non-linear error dynamics.*
*Example of trajectory tracking on sequence `a000_11`. The 3D trajectory (top-left) and Top-Down projection (top-right) illustrate the tracking path of ESKF (Purple), UKF-M (Blue), and the proposed GeoDQ (Red/Green dashed) against Ground Truth (Black).*
49
50
50
51
## Repository Structure
51
52
52
-
This repository contains the implementation of three sensor fusion architectures (ESKF, UKF, GeoDQ) along with their JIT-optimized variants.
53
+
This project is part of the `SE3-Manifold-Lib` collection.
53
54
54
55
### 1. Benchmarking & Analysis
55
-
***`RoNIN_Batch_Analysis_GeoDQ_JIT.ipynb`**: **(Main Entry Point)** The primary notebook that runs the full benchmark. It loads the filters, processes trajectories, calculates metrics (RMSE, ATE), performs the robustness test, and generates the plots/tables used in the paper.
56
-
***`RoNIN_Dataset_Batch_Processing.ipynb`**: Data preparation utility. Converts the raw RoNIN dataset (HDF5) into the standardized CSV format required by the benchmark pipeline.
56
+
***[`benchmarks/ronin_geodq_analysis.ipynb`](../benchmarks/ronin_geodq_analysis.ipynb)**: **(Main Entry Point)** The primary notebook that runs the full benchmark. It loads the filters, processes trajectories, calculates metrics (RMSE, ATE), performs the robustness test, and generates the plots/tables used in the paper.
57
+
***[`tools/ronin_processor.ipynb`](../tools/ronin_processor.ipynb)**: Data preparation utility. Converts the raw RoNIN dataset (HDF5) into the standardized CSV format required by the benchmark pipeline.
57
58
58
59
### 2. Filter Implementations (Kernels)
59
-
The core logic is decoupled into standalone Python modules. Each method has a standard version (for reference/debugging) and a Numba-optimized version (for performance benchmarking).
60
+
The core logic is decoupled into standalone Python modules located in the `algorithms/` directory.
> **Key Finding:** The proposed **GeoDQ (JIT)** architecture achieves the lowest tracking error while maintaining the fastest execution time. Notably, the **standard deviation** for GeoDQ is significantly lower ($\pm 0.0081$) compared to ESKF ($\pm 0.0213$) and UKF-M ($\pm 0.0382$). This indicates that the Geometric Observer provides the most consistent and predictable performance across diverse motion patterns, minimizing outliers where filter-based methods tend to diverge.
*Global Robustness Analysis averaged over all 35 RoNIN trajectories. The plot illustrates the degradation of RMSE (Log Scale) as the position update interval increases (simulating VO/GPS outages). The **GeoDQ observer** (Red/Dashed) maintains sub-meter accuracy and structural stability even when updates are decimated to 7 Hz (Interval ~30). In contrast, Kalman Filter variants (ESKF, UKF) exhibit exponential error growth much earlier, confirming the observer's superior handling of non-linear error dynamics.*
*Example of trajectory tracking on sequence `a000_11`. The 3D trajectory (top-left) and Top-Down projection (top-right) illustrate the tracking path of ESKF (Purple), UKF-M (Blue), and the proposed GeoDQ (Red/Green dashed) against Ground Truth (Black).*
*Example of trajectory tracking on sequence `a025_2`. Comparison of estimated paths against ground truth, highlighting drift reduction by the Geometric Observer.*
*Example of trajectory tracking on sequence `a043_3`. The GeoDQ observer maintains tighter convergence to the ground truth path compared to filter-based approaches.*
54
+
46
55
## Repository Structure
47
56
48
-
This repository contains the implementation of three sensor fusion architectures (ESKF, UKF, GeoDQ) along with their JIT-optimized variants.
57
+
This project is hosted in the `SE3-Manifold-Lib` repository.
49
58
50
59
### 1. Benchmarking & Analysis
51
-
***`RoNIN_Batch_Analysis_GeoDQ_JIT.ipynb`**: **(Main Entry Point)** The primary notebook that runs the full benchmark. It loads the filters, processes trajectories, calculates metrics (RMSE, ATE), performs the robustness test, and generates the plots/tables used in the paper.
52
-
***`RoNIN_Dataset_Batch_Processing.ipynb`**: Data preparation utility. Converts the raw RoNIN dataset (HDF5) into the standardized CSV format required by the benchmark pipeline.
60
+
***[`benchmarks/ronin_geodq_analysis.ipynb`](https://github.com/afanasyspb/SE3-Manifold-Lib/blob/main/benchmarks/ronin_geodq_analysis.ipynb)**: **(Main Entry Point)** The primary notebook that runs the full benchmark. It loads the filters, processes trajectories, calculates metrics (RMSE, ATE), performs the robustness test, and generates the plots/tables used in the paper.
61
+
***[`tools/ronin_processor.ipynb`](https://github.com/afanasyspb/SE3-Manifold-Lib/blob/main/tools/ronin_processor.ipynb)**: Data preparation utility. Converts the raw RoNIN dataset (HDF5) into the standardized CSV format required by the benchmark pipeline.
53
62
54
63
### 2. Filter Implementations (Kernels)
55
-
The core logic is decoupled into standalone Python modules. Each method has a standard version (for reference/debugging) and a Numba-optimized version (for performance benchmarking).
64
+
The core logic is decoupled into standalone Python modules located in the `algorithms/` directory.
0 commit comments