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.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β 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 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
# Python 3.10+
python --version
# Core dependencies (no GPU required for testing)
pip install numpy scipy matplotlib pytest
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 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
# 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}')
"
π Core Planning & Uncertainty (01β03)
π Safety & Robustness (04β05, 08, 18)
β‘ 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)
π§ Foundation Models (11, 19β20)
π² Probabilistic & Generative (12β13)
π Causal & Adversarial (14, 25)
ποΈ Neuromorphic & 3D Perception (15, 23β24)
π€ Distributed Learning & Consensus (16, 26)
π Reinforcement Learning (21β22)
πΊοΈ Semantic Mapping (17)
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%
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
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
Minimal (all tests pass, no GPU)
numpy >= 1.24
scipy >= 1.10
pytest >= 7.0
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 Humble (Ubuntu 22.04)
Nav2, slam_toolbox, TurtleBot3 packages
Platform
Status
TurtleBot3 Burger (real robot)
β
Tested
TurtleBot3 Waffle (simulation)
β
Tested
Gazebo (ROS2 Humble)
β
Tested
Ubuntu 22.04 (bare metal)
β
Supported
WSL2 (Windows)
β
Supported
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}
}
Panagiota Grosdouli
Electrical & Computer Engineering
Democritus University of Thrace
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!