Skip to content
yalt8826.com
← projects/
projects/moon-planner/hackathondesktop apppaused at a milestone

Moon Planner

A desktop app for exploring the Moon's south pole from Chandrayaan-2 data, with a crater detector trained on orbiter imagery.

Built with one teammate · June 2026

01 / overview

We didn't make the first round. We kept building anyway.

Moon Planner started as our entry to ISRO's Bharatiya Antariksh Hackathon 2026. We weren't selected in the first round, where teams only pitched the idea, but we cared about the problem enough to keep going and build it.

The goal is a tool that takes raw Chandrayaan-2 data and turns it into a map you can plan a mission on: where the ground is steep or rough, where the craters are, and eventually where a rover could safely drive and a lander could safely touch down.

0.855crater detector mAP50
0.816precision
0.766recall
5terrain layers made from the elevation model
02 / the challenge

Ice under the south pole.

Our challenge asked teams to detect and characterise subsurface ice in the Moon's south polar regions using Chandrayaan-2 radar and imagery, then use it to plan landing sites and rover routes.

The hardest part was simply understanding the data. There were two very different kinds: high-resolution camera images and elevation models of the surface, and radar readings whose signature hints at ice beneath it. Each came in its own format and projection, at sizes far too big to open in one go.

terrainTMC-2 elevation + imagery

The Terrain Mapping Camera's elevation model and orthoimage, merged into one mosaic of the region.

detailOHRC images

The orbiter's highest-resolution camera. We used it to train the crater and boulder detector.

iceRadar signatures

Chandrayaan-2's dual-frequency radar is how possible subsurface ice gets detected. Bringing it into the app is still on the list.

Data: ISRO, Chandrayaan-2 mission.

03 / the app

Gigabytes of terrain, streamed as map tiles.

You point the app at the data and it builds a project: the elevation models are merged and turned into hillshade, slope, roughness, terrain ruggedness (TRI) and topographic position (TPI) layers. The map then asks the backend only for the 256-pixel tiles currently on screen, read straight out of the large GeoTIFFs, so panning across the pole stays smooth.

demoZooming into a crater and switching between the imagery and the five terrain layers
desktopTauri 2
React 19OpenLayers mapnative file picker
backendFastAPI
project builderlive logs over WebSocketXYZ tile endpoint
geoGDAL · Rasterio
merged mosaichillshadesloperoughnessTRITPI
01Hillshade: the elevation model lit from one side, so every rim and slope stands out
02The same crater in the TMC-2 orthoimage
03Slope: bright means steep, the first thing a rover cares about
04Roughness, with the app's colour style applied
05Zoomed out: the merged strips across the region
06Creating a project from the raw Chandrayaan-2 files

Black patches are places where the elevation model has no data, mostly deep inside craters.

04 / crater detector

A small model that finds craters.

Craters and boulders are the hazards that matter most for a landing or a rover. We trained YOLO11n, the smallest model in the family, on labelled OHRC images for 100 epochs at 416 px. It settled at a mAP50 of 0.855.

0.40.60.81.01265176100
mAP50 0.855precision 0.816recall 0.766
Validation scores per epoch (x axis: epoch). Most of the gain arrives in the first 20 epochs.
05 / where it stopped

A milestone, not the finish.

We stopped once the data pipeline and the map were working and the detector was trained. The menus for what comes next are already in the app, waiting: turning the terrain into a graph with a traversal cost on every step, scoring landing sites, planning rover routes with graph neural networks, and wiring the crater detector into the map.

I plan to come back to it.