Skip to content

Repository files navigation

Rule-Guided Observation Credibility-Adaptive Multi-Source Robust Fusion Positioning for GNSS-Degraded Construction Sites

Target: Automation in Construction (Elsevier, EI-indexed)

Paper repository for a multi-source robust fusion positioning framework designed for construction sites under weak GNSS conditions.

Overview

This project addresses reliable personnel tracking in complex construction environments where GNSS signals are degraded by building obstructions, steel-structure reflections, and multipath effects. A 5-D EKF framework fuses GNSS, IMU, PDR/ZUPT, and CAD-map constraints with a Rule-guided GRU-Rscale module for adaptive observation credibility estimation.

Repository Structure

├── 论文/                              # Paper directory
│   ├── main_rule_guided_gru.tex       # English paper (elsarticle template)
│   ├── main_rule_guided_gru_cn.tex    # Chinese paper (elsarticle + ctex template)
│   ├── scripts/
│   │   ├── generate_paper_figures.py  # Figure generation (TikZ + PNG plots)
│   │   └── run_robustness_stress_tests.py
│   ├── 脚本/
│   │   ├── run_paper_ablation.py
│   │   └── run_no_rfid_ablation.py
│   ├── 图/                            # Figures (PNG outputs)
│   └── 论文内容总结_简历用.md         # Paper summary for CV use
│
├── 算法代码/                          # Algorithm implementation
│   ├── robust_gnss_imu_pdr_map_fusion.py  # Main EKF fusion script
│   │                                       # (ai-mode: rule/gru/rule_gru/lstm/mlp/tcn)
│   │                                       # (ekf-mode: standard/huber/mcc)
│   ├── run27_robust_fusion.py         # EKF with RTS smoother
│   ├── run_gru_ablation.py            # Ablation runner: 7 modes x 7 runs
│   ├── imu_gnss_3d_ekf_map_constrained.py  # 15-D error-state EKF
│   ├── imu_gnss_3d_ekf_optimized.py   # GNSS-dominant 6-D KF
│   ├── imu_pdr_trajectory.py          # Standalone PDR trajectory
│   ├── NN/
│   │   ├── GRU/
│   │   │   ├── gru_rscale.py          # GRU/LSTM/MLP Rscale models
│   │   │   ├── train_local_gru.py     # GRU training (RTS labels)
│   │   │   └── train_baselines.py     # LSTM/MLP training
│   │   └── TCN_EMSA/
│   │       ├── tcn_emsa_rscale.py     # TCN-EMSA Rscale model
│   │       └── train_local_rscale.py  # TCN-EMSA training
│   └── outputs/                       # Experiment outputs
│       ├── gru_ablation/              # Ablation results (per-run)
│       ├── gru_ablation_comparison.csv
│       ├── gru_rscale_best.pth        # GRU model weights
│       ├── rule_gru_rscale_best.pth   # Rule-guided GRU weights
│       ├── lstm_rscale_best.pth       # LSTM model weights
│       └── mlp_rscale_best.pth        # MLP model weights
│
└── data/                              # Raw data
    ├── imu_db/                        # IMU CSV files
    ├── gnss_db/                       # GNSS CSV files
    └── image/                         # CAD/DWG/DXF files

Key Contributions

  1. 5-D heading-coupled EKF framework: Joint estimation of heading angle with covariance-gated safety lock for PDR
  2. GNSS accept--downweight--reject mechanism: Mahalanobis gating + local outlier detection
  3. CAD inequality constraints: Passable-region guardrails with auto-degradation based on registration error
  4. Rule-guided GRU-Rscale: Bounded residual correction with mathematical safety wall (tanh activation)
  5. RTS knowledge distillation: Smoother → Filter label generation via EM-consistent formula
  6. Comprehensive baselines: Huber-EKF, MCC-EKF, RTS-distilled GRU/LSTM/MLP, TCN-EMSA

Rscale Strategies Compared

Strategy Type Training
Rule-based Rscale Hand-crafted heuristic None
Huber-EKF Classical robust M-estimator None
MCC-EKF Maximum Correntropy Criterion None
GRU-Rscale Temporal deep learning RTS-distilled labels
LSTM-Rscale Temporal deep learning RTS-distilled labels
MLP-Rscale Static deep learning RTS-distilled labels
Rule-guided GRU-Rscale Bounded residual learning RTS-distilled labels
TCN-EMSA-Rscale Complex temporal + attention Weak heuristic labels

Quick Start

Run a single EKF fusion

cd 算法代码

# Rule-based Rscale with map constraint
python robust_gnss_imu_pdr_map_fusion.py --run-id 30 \
    --use-map-constraint --ai-mode rule

# MCC-EKF robust filter
python robust_gnss_imu_pdr_map_fusion.py --run-id 30 \
    --use-map-constraint --ekf-mode mcc --mcc-kernel-sigma 5.0

# Pure GRU with trained model
python robust_gnss_imu_pdr_map_fusion.py --run-id 30 \
    --use-map-constraint --ai-mode gru \
    --ai-model outputs/gru_rscale_best.pth --ai-device cpu

Run ablation comparison

cd 算法代码
python run_gru_ablation.py

Train models

cd 算法代码

# Train GRU + Rule-guided GRU
python NN/GRU/train_local_gru.py \
    --features-root outputs/rts_run24 outputs/rts_run25 \
    --epochs 100 --patience 15 --batch-size 32

# Train LSTM + MLP baselines
python NN/GRU/train_baselines.py \
    --features-root outputs/rts_run24 outputs/rts_run25 \
    --epochs 100 --patience 15 --batch-size 32

Generate paper figures

python 论文/scripts/generate_paper_figures.py

Compile paper

cd 论文
xelatex main_rule_guided_gru.tex
xelatex main_rule_guided_gru.tex   # second pass for cross-references

Ablation Results Summary

Mean across 7 runs (run24-28, run30-31), PDR+Map enabled

Rscale Strategy Mean OBD/m P95 OBD/m In-Corr. Rate
Rule-based 2.32 5.79 0.514
Huber-EKF 2.35 5.89 0.510
MCC-EKF 2.36 5.92 0.505
GRU-Rscale (RTS) 2.97 7.32 0.348
LSTM-Rscale (RTS) 2.97 7.32 0.348
Rule-guided GRU (RTS) 2.97 7.32 0.348

Key finding: At the current data scale (~1000 labeled epochs), hand-crafted rules and classical robust filters outperform all deep learning variants. The knowledge-distillation paradigm is architecturally correct; data scale is the primary bottleneck.

Technical Details

EKF State Vector (5-D): [E, N, vE, vN, ψ] — position, velocity, heading angle

RTS Smoother: Rauch-Tung-Striebel backward pass computes globally optimal posterior trajectories; EM-consistent formula derives per-epoch optimal noise scaling labels s_k^opt.

Rule-guided GRU Formula:

s_k = clip(s_k^rule · exp(α · tanh(Δs_k^GRU)), 1, 200)

where α = ln 2 bounds the multiplicative correction to [0.5, 2.0].

Dependencies

  • Python 3.10+ with NumPy, Pandas, Matplotlib, PyTorch
  • LaTeX (TeX Live 2025+) with elsarticle, ctex, tikz, algorithm2e, booktabs
  • XeLaTeX for Chinese character support

Citation

@article{paper-gnss,
  title   = {Rule-Guided Observation Credibility-Adaptive Multi-Source Robust
             Fusion Positioning for GNSS-Degraded Construction Sites},
  journal = {Automation in Construction (under review)},
  year    = {2026}
}

License

MIT

About

This project is using for the Beidou project on my computer.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages