Aller au contenu

App iOS

Lidark — se repérer sous terre avec le LiDAR, sans réseau

App iOS qui construit en direct une minimap 2D et un modèle 3D des carrières et galeries avec le LiDAR, hors ligne, avec retour guidé vers l'entrée et reprise d'un relevé.

Nature
App iOS
Stack
App iOSSwiftUIARKitLiDARSwiftDataRealityKitClean Architecture

Lidark (anciennement QuarryMaster) est une application iOS pour se repérer sous terre, dans les carrières et les galeries, sans réseau ni GPS. Le LiDAR de l'iPhone ou de l'iPad Pro construit en direct une minimap 2D (position, cap, trajet parcouru) et un modèle 3D du lieu. Tout fonctionne hors ligne.

Ce que fait l'app

  • Minimap en direct : murs, sol coloré par altitude, fil d'Ariane et distance à l'entrée.
  • Plan 2D et vue 3D de chaque relevé enregistré, plafonds retirés.
  • Retour vers l'entrée : distance réelle le long du trajet, pas à vol d'oiseau, et flèche vers le prochain tronçon.
  • Repères posés pendant le scan (carrefour, puits, danger) et alertes de suivi avec vibration.
  • Reprise d'un relevé dans le même repère, export PLY et OBJ.
  • Interface « Lampe frontale » : fond noir, une seule couleur, cibles tactiles larges pour les gants, et un mode vision nocturne tout en rouge.

Stack et architecture

SwiftUI, ARKit (pose et maillage LiDAR), RealityKit pour la 3D, SwiftData pour la persistance, Core Motion. Clean Architecture en couches Domain, Data, Presentation, Infrastructure et Core, avec injection de dépendances. Le cœur cartographique (grille d'occupation, codec de maillage, fusion, recalage) est du Swift pur, testé sans appareil : environ 107 tests au dernier commit relevé. Les traitements lourds tournent hors du thread principal et la sauvegarde est périodique.

Ce qui a été difficile

Reprendre un relevé dans le même repère. ARKit se recale en comparant des images de la caméra, or les relevés sont faits à la torche : deux images du même mur ne se ressemblent jamais. Les essais sur appareil ont montré que la relocalisation d'ARKit n'aboutissait pas. J'ai donc écrit un recalage par la forme, indépendant de la lumière : un vote de Hough sur les parois pour trouver l'orientation et la translation, puis un affinage par ICP point-à-plan. Le point-à-point seul laissait un biais de 15 cm. Le résultat est refusé quand il est ambigu, par exemple dans un couloir droit, plutôt que de décaler toute la carte. Sur une géométrie réelle déplacée d'une transformation connue, l'erreur mesurée est de 0,1 degré et 3 cm, en 0,06 à 0,5 s par tentative.

Le plan 2D a aussi été retravaillé après un vrai scan : la classification par normales seule prenait les pieds de table pour des murs. Il est désormais tranché à hauteur de port du téléphone, comme une carte lidar 2D.

Publication

Application en développement, testée sur appareil. Aucune fiche App Store n'apparaît dans le dépôt.

Captures réalisées dans le simulateur sur un relevé de démonstration intégré à l'app.