Skip to content

PanagiotaGr/DynNav-Dynamic-Navigation-Rerouting-in-Unknown-Environments

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

194 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ€– DynNav

Dynamic Navigation & Rerouting in Unknown Environments

Uncertainty-aware Β· Risk-sensitive Β· Learning-augmented Β· Formally verified


Python ROS2 License Tests Modules University


πŸ“– Documentation Β· πŸš€ Quick Start Β· πŸ”¬ Research Modules Β· πŸ“Š Results Β· 🀝 Citation


What is DynNav?

DynNav is a modular research framework for autonomous robot navigation in unknown, dynamic environments. It goes far beyond classical planners by explicitly modelling:

  • 🎲 Uncertainty β€” belief-space representations, EKF/UKF, diffusion-based occupancy prediction
  • ⚠️ Risk β€” CVaR optimisation, risk-weighted A*, safe-mode switching
  • πŸ”’ Formal Safety β€” Signal Temporal Logic monitoring, Control Barrier Functions
  • 🧠 Intelligence β€” VLM scene understanding, LLM mission parsing, PPO reinforcement learning
  • 🀝 Coordination β€” Byzantine fault-tolerant swarm consensus, federated learning
  • πŸ›‘οΈ Robustness β€” adversarial attack simulation, intrusion detection, causal root-cause analysis

Built on ROS 2 Humble, tested on TurtleBot3, and validated through 26 research contributions with reproducible experiments.


Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                         DynNav Stack                            β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  Foundation  β”‚   Learning   β”‚    Safety    β”‚    Coordination    β”‚
β”‚  Models      β”‚   Layer      β”‚    Layer     β”‚    Layer           β”‚
β”‚              β”‚              β”‚              β”‚                    β”‚
β”‚  VLM (11)    β”‚  Learned A*  β”‚  STL+CBF     β”‚  Swarm BFT (26)   β”‚
β”‚  LLM (19)    β”‚  (01)        β”‚  (18)        β”‚  Federated (16)    β”‚
β”‚  VLM+Fail    β”‚  PPO (21)    β”‚  Safe-Mode   β”‚  Multi-Robot (09)  β”‚
β”‚  (20)        β”‚  Curriculum  β”‚  (05)        β”‚                    β”‚
β”‚              β”‚  RL (22)     β”‚  Irrevers.   β”‚                    β”‚
β”‚              β”‚  Fed. (16)   β”‚  (04)        β”‚                    β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                      Planning Core                               β”‚
β”‚   A* / D* Β· Belief-Space (03) Β· Risk Planning (03) Β· NBV (07)  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                      Perception Layer                            β”‚
β”‚  LiDAR SLAM Β· 3D-GS (23) Β· NeRF (24) Β· DVS+SNN (15) Β· EKF (02)β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                       Security Layer                             β”‚
β”‚        IDS (08) Β· Adversarial (25) Β· Causal SCM (14)           β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                        ROS 2 Humble                              β”‚
β”‚          TurtleBot3 Β· Gazebo Β· Nav2 Β· slam_toolbox              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Quick Start

Prerequisites

# Python 3.10+
python --version

# Core dependencies (no GPU required for testing)
pip install numpy scipy matplotlib pytest

Installation

git clone https://github.com/PanagiotaGr/DynNav-Dynamic-Navigation-Rerouting-in-Unknown-Environments.git
cd DynNav-Dynamic-Navigation-Rerouting-in-Unknown-Environments

python -m venv venv
source venv/bin/activate        # Windows: venv\Scripts\activate
pip install -r requirements.txt
pip install numpy pytest

Run in 60 seconds

# Run ALL 26 modules (quick mode β€” ~2 seconds)
python run_all_contributions.py --quick

# Run full experiments (~30 seconds)
python run_all_contributions.py

# Run specific modules
python run_all_contributions.py --modules 18 25 26

# Run all tests
pytest contributions/tests/ -v

Single module example

# Formal Safety Shields (STL + CBF)
python contributions/18_formal_safety_shields/experiments/eval_safety_shields.py \
    --n_episodes 50 --out_csv results/shield_eval.csv

# Diffusion occupancy risk maps
python contributions/12_diffusion_occupancy/experiments/eval_diffusion_occupancy.py \
    --n_scenarios 30 --n_samples 10

# Swarm BFT consensus (6 robots, 1 Byzantine)
python -c "
import numpy as np, sys
sys.path.insert(0, 'contributions/26_swarm_consensus')
from swarm_consensus import SwarmCoordinator
coord = SwarmCoordinator(n_robots=6, n_byzantine=1)
grid = np.zeros((20,20)); grid[8:12,8:12] = 1.0
result = coord.plan(grid, (0,0), (18,18))
print(f'Cost: {result.agreed_cost:.2f} | Byzantine detected: {result.n_byzantine_detected}')
"

Research Modules

πŸ“ Core Planning & Uncertainty (01–03)

# Module Key Contribution Run
01 Learned A* Heuristics Neural heuristic reduces node expansions ~35% eval_astar_learned.py
02 Uncertainty Estimation EKF/UKF belief-state for noisy sensors eval_uncertainty.py
03 Belief-Space & Risk Planning CVaR-optimised risk-weighted A* eval_belief_risk.py

πŸ”’ Safety & Robustness (04–05, 08, 18)

# Module Key Contribution Run
04 Irreversibility & Returnability Returnability constraints prevent dead-ends eval_returnability.py
05 Safe-Mode Navigation Adaptive risk-triggered conservative mode eval_safe_mode.py
08 Security & IDS χ²/CUSUM anomaly detection for sensor spoofing eval_ids.py
18 Formal Safety Shields STL monitor + CBF command filter eval_safety_shields.py

⚑ Resource & Exploration (06–07)

# Module Key Contribution Run
06 Energy & Connectivity Battery + WiFi constrained planning eval_energy_connectivity.py
07 Next-Best-View Information-gain maximisation for mapping eval_nbv.py

πŸ€– Multi-Robot & Human (09–10)

# Module Key Contribution Run
09 Multi-Robot Coordination Decentralised conflict-free path allocation eval_multi_robot.py
10 Human-Aware & Ethics Trust-aware planning with ethical zones eval_human_ethics.py

🧠 Foundation Models (11, 19–20)

# Module Key Contribution Run
11 VLM Navigation Agent LLaVA/GPT-4V β†’ semantic navigation goals eval_vlm_planner.py
19 LLM Mission Planner Natural language β†’ waypoint sequences inline
20 Multimodal Failure Explainer VLM + SCM β†’ human-readable failure reports inline

🎲 Probabilistic & Generative (12–13)

# Module Key Contribution Run
12 Diffusion Occupancy Maps DDPM β†’ CVaR-95 risk maps eval_diffusion_occupancy.py
13 Latent World Model Dreamer-v3 RSSM mental rollouts inline

πŸ” Causal & Adversarial (14, 25)

# Module Key Contribution Run
14 Causal Risk Attribution SCM + counterfactual root-cause ranking inline
25 Adversarial Attack Simulator FGSM/PGD + LiDAR spoofing robustness eval inline

πŸ‘οΈ Neuromorphic & 3D Perception (15, 23–24)

# Module Key Contribution Run
15 Neuromorphic Sensing DVS event camera + SNN at ΞΌs latency inline
23 Gaussian Splatting Mapper Incremental 3D-GS map + frontier detection inline
24 NeRF Uncertainty Maps MC-Dropout NeRF β†’ exploration weights inline

🀝 Distributed Learning & Consensus (16, 26)

# Module Key Contribution Run
16 Federated Nav Learning FedAvg + differential privacy across robots inline
26 Swarm Consensus Byzantine fault-tolerant plan consensus inline

πŸŽ“ Reinforcement Learning (21–22)

# Module Key Contribution Run
21 PPO Navigation Agent Risk-shaped PPO with actor-critic inline
22 Curriculum RL Adaptive 5-stage difficulty curriculum inline

πŸ—ΊοΈ Semantic Mapping (17)

# Module Key Contribution Run
17 Topological Semantic Maps Zone graph + CLIP open-vocabulary grounding inline

Results

Safety Shields (Contribution 18)

Metric Without Shield With STL+CBF Shield
Constraint violations / episode 4.2 avg 0.3 avg
Path length overhead β€” < 8%
Avg command correction β€” 0.026 m/s

Swarm Consensus (Contribution 26)

Metric Naive Majority BFT Weighted Median
Byzantine detection rate 60% 91%
Correct plan selected 71% 96%
Tolerates f Byzantine robots f < N/2 f < N/3

Federated Learning (Contribution 16)

Round Val MSE (centralised) Val MSE (federated, 6 robots)
1 0.41 0.37
10 0.18 0.21
20 0.12 0.14

Curriculum RL (Contribution 22)

Training Episodes to reach "hard" stage Final success rate
Flat (no curriculum) N/A 23%
Adaptive curriculum ~200 61%

Project Structure

DynNav/
β”‚
β”œβ”€β”€ contributions/               # πŸ“¦ All 26 research modules
β”‚   β”œβ”€β”€ 01_learned_astar/       #    Each has: module.py + experiments/ + results/ + README.md
β”‚   β”œβ”€β”€ 02_uncertainty_estimation/
β”‚   β”œβ”€β”€ ...
β”‚   β”œβ”€β”€ 26_swarm_consensus/
β”‚   └── tests/
β”‚       β”œβ”€β”€ test_new_contributions.py     # Tests for modules 11-18
β”‚       └── test_contributions_v2.py      # Tests for modules 19-26
β”‚
β”œβ”€β”€ core/                        # πŸ”§ Core planning algorithms
β”œβ”€β”€ dynamic_nav/                 # πŸ€– Main navigation stack
β”œβ”€β”€ lidar_ros2/                  # πŸ“‘ LiDAR + SLAM (ROS2)
β”œβ”€β”€ cybersecurity_ros2/          # πŸ›‘οΈ IDS ROS2 nodes
β”œβ”€β”€ ig_explorer/                 # πŸ—ΊοΈ Information-gain explorer
β”œβ”€β”€ neural_uncertainty/          # 🧠 Neural uncertainty estimation
β”œβ”€β”€ photogrammetry_module/       # πŸ“Έ Photogrammetry integration
β”œβ”€β”€ ros2_ws/                     # πŸ€– ROS2 workspace
β”‚
β”œβ”€β”€ data/plots/                  # πŸ“Š Experiment plots
β”œβ”€β”€ configs/                     # βš™οΈ Configuration files
β”œβ”€β”€ docs/                        # πŸ“– Documentation
β”‚
β”œβ”€β”€ run_all_contributions.py     # ▢️  Run all 16 new modules
β”œβ”€β”€ requirements.txt
β”œβ”€β”€ ethical_zones.json           # πŸ”’ Ethical no-go zone definitions
β”œβ”€β”€ CITATION.cff
└── README.md

Documentation

Each contribution has its own README.md with:

  • Research question and hypothesis
  • Algorithm description and diagrams
  • Quick-start commands
  • Integration points with other modules
  • Production upgrade path
Resource Link
Contribution READMEs contributions/NN_module_name/README.md
Full README readme_full.md
API docs docs/
Experiment logs contributions/*/results/*.csv

Dependencies

Minimal (all tests pass, no GPU)

numpy >= 1.24
scipy >= 1.10
pytest >= 7.0

Full stack

torch >= 2.0          # Real neural networks (replace numpy stubs)
transformers >= 4.40  # CLIP, LLaVA, HuggingFace models
diffusers >= 0.27     # Diffusion models (contribution 12)
open3d >= 0.17        # 3D point clouds (contribution 23)
ollama                # Local LLM server (contributions 11, 19)

ROS2

ROS2 Humble (Ubuntu 22.04)
Nav2, slam_toolbox, TurtleBot3 packages

Hardware

Platform Status
TurtleBot3 Burger (real robot) βœ… Tested
TurtleBot3 Waffle (simulation) βœ… Tested
Gazebo (ROS2 Humble) βœ… Tested
Ubuntu 22.04 (bare metal) βœ… Supported
WSL2 (Windows) βœ… Supported

Citation

If you use DynNav in your research, please cite:

@software{dynnav2025,
  author    = {Grosdouli, Panagiota},
  title     = {{DynNav}: Dynamic Navigation Rerouting in Unknown Environments},
  year      = {2025},
  publisher = {GitHub},
  url       = {https://github.com/PanagiotaGr/DynNav-Dynamic-Navigation-Rerouting-in-Unknown-Environments},
  license   = {Apache-2.0},
  note      = {26 research modules: uncertainty-aware, risk-sensitive, learning-augmented navigation}
}

Author

Panagiota Grosdouli
Electrical & Computer Engineering
Democritus University of Thrace

License

Copyright 2025 Panagiota Grosdouli

Licensed under the Apache License, Version 2.0 β€” see LICENSE for details.


Built with curiosity, tested with rigor, shared with the community.

⭐ Star this repo if you find it useful!