lardon3d/README.md

142 lines
4.3 KiB
Markdown

# Lardon3D
Moteur de reconstruction géométrique persistante et incrémentale, piloté par une TUI ncursesw.
## Vision
Lardon3D est un moteur de photogrammétrie Linux qui privilégie :
- **Stabilité** : aucune saturation du système hôte
- **Déterminisme** : résultats reproductibles et traçables
- **Faible consommation mémoire** : traitement par lots adaptatifs
- **Reprise après interruption** : résultats atomiques et persistants
- **Protection de la machine** : budgets bornés et respectueux
- **Traçabilité** : historique des opérations et métriques
- **Enrichissement progressif** : reconstruction incrémentale
Lardon3D ne vise pas simplement "dossier de photos → objet 3D", mais "ensemble progressif d'observations et de contraintes → reconstruction géométrique persistante, enrichissable et versionnable".
## État actuel
### Briques implémentées (IMPLEMENTED)
- **Project** : gestion persistante des projets
- **Import** : import asynchrone et annulable d'images
- **Import Task** : wrapper asynchrone avec états et progression
- **Image Catalog** : indexage des métadonnées d'images
- **Image View** : vues triées et filtrées pour la TUI
- **Task** : moteur de tâches avec pause/reprise, annulation et séquences
- **Task Checkpoint v1** : snapshot durable, fichier atomique et reprise sûre
- **Task Queue** : file FIFO avec sélection adaptative et backpressure
- **Hardware Profile** : détection des capacités matérielles
- **Resource Snapshot** : capture instantanée des ressources
- **Resource Governor** : arbitrage centralisé des budgets et réservations
### Briques en cours de consolidation
- Intégration scheduler ↔ governor avec séquences adaptatives
- Documentation architecture
### Briques prévues (PLANNED)
- Branchement des checkpoints aux pipelines et reprise globale
- DAG de dépendances
- Pools de workers multiples (CPU/GPU/IO)
- Publication live validée
- Viewer intégré
## Architecture
```text
TUI / Projet
Scheduler
Resource Governor
Workers
Résultats atomiques / persistants
Viewer (consommation passive de snapshots)
```
### Invariants fondamentaux
- Aucun callback de tâche sans réservation active validée
- Le scheduler ne décide jamais des ressources
- Le Resource Governor est l'unique propriétaire des budgets
- ncurses appartient exclusivement au thread principal
- Les estimations de ressources sont immuables
- Les buffers et files sont strictement bornés
## Pipeline cible
```text
Acquisitions
→ catalogue
→ features
→ index visuel
→ paires candidates
→ matching
→ vérification géométrique
→ tracks / SfM
→ dense
→ mesh
→ consolidation
→ export
```
## Documentation
### Architecture
- [Vue d'ensemble](docs/architecture/overview.md)
- [Runtime](docs/architecture/runtime.md)
- [Système de tâches](docs/architecture/task_system.md)
- [File de tâches](docs/architecture/task_queue.md)
- [Resource Governor](docs/architecture/resource_governor.md)
- [Intégration Scheduler ↔ Governor](docs/architecture/scheduler_resource_integration.md)
- [Pipeline de reconstruction](docs/architecture/reconstruction_pipeline.md)
- [Persistance](docs/architecture/persistence.md)
- [Base de données projet](docs/architecture/project_database.md)
- [Viewer](docs/architecture/viewer.md)
- [Revue des fondations](docs/architecture/foundation_review.md)
### Concepts
- [Scan Sets](docs/concepts/scan_sets.md)
- [Index visuel](docs/concepts/visual_index.md)
- [Matching et tracks](docs/concepts/matching_and_tracks.md)
- [Couches de reconstruction](docs/concepts/reconstruction_layers.md)
- [Contraintes géométriques](docs/concepts/geometric_constraints.md)
### Développement
- [Build](docs/development/build.md)
- [Tests](docs/development/testing.md)
- [Concurrence](docs/development/concurrency.md)
### Roadmap
- [Roadmap](docs/roadmap/roadmap.md)
## Build rapide
```sh
CC=clang meson setup build --wipe
meson compile -C build -j8
```
## Tests
```sh
meson test -C build --print-errorlogs
git diff --check
```
Pour les changements sensibles à la mémoire ou à la concurrence, ajouter ASan/UBSan et TSan.
## Statut
Lardon3D est en développement actif. La phase de fondation est terminée. Les prochains tickets porteront sur la persistance, le DAG, les pools de workers et la publication live.
## Licence
Projet privé - Tous droits réservés.