This repository is a cleaned, public-facing refactor of the original code used for the IGLUNA and lunar lava tube analogue mission studies. The goal of the refactor is to make it understandable, reusable, and safe to extend.
The original project combined:
- hierarchical task planning with HDDL domains and problems
- SMACH-based mission execution in ROS
- waypoint-based navigation
- collaborative mission actions such as image capture, arTag reading, and health-state reporting
- early experiments around mapping and fault-handling
The historical implementation is preserved under legacy/ so the research provenance stays intact. The reusable, better-documented Python package lives under src/igluna_task_planning/.
The original repository was valuable but difficult to reuse because mission-specific scripts, prototypes, launch files, and helper utilities all lived side by side. This refactor reorganizes the codebase around a clearer story:
legacy/keeps the original ROS and HDDL artifacts.src/igluna_task_planning/extracts the core planning and navigation ideas into testable Python modules.docs/explains the algorithms, architecture, and MBSE/ConOps framing.examples/shows how to inspect planner output and reason about occupancy-grid connectivity without needing a full ROS deployment.
This codebase originates from the work behind:
- Application of a Hierarchical Task Planner to a Lunar Lava Tube Analogue Robotic Mission
- Autonomous Navigation Applied to the IGLUNA Lunar Analogue Mission on Collaborative Robotic Systems
.
├── docs/ Architecture, algorithms, and MBSE/ConOps notes
├── examples/ Small runnable examples
├── legacy/ Original PhD-era ROS nodes, HDDL assets, plans, and launch files
├── src/igluna_task_planning/ Reusable Python package extracted from the legacy code
└── tests/ Unit tests for the refactored modules
The extracted package focuses on the parts of the repository that are broadly reusable:
- parsing HDDL planner output into structured plan steps
- summarizing collaborative mission plans into navigation legs and task groups
- converting waypoint indices into map coordinates
- generating approach poses for objectives with configurable stand-off distance
- converting occupancy-grid data into a traversable waypoint graph and
(visible ...)facts for planning
These modules are intentionally ROS-light so they can be tested and reused outside a full robot stack.
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
python -m unittest discover -s tests
python -m igluna_task_planningThe default CLI run summarizes the bundled IGLUNA plan from legacy/plans/monday.txt.
This refactor makes the repository substantially easier to understand, but it is intentionally conservative:
- the original ROS nodes are preserved instead of being silently rewritten
- the extracted package focuses on reusable planning logic, not full ROS 1 runtime compatibility