尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗A layered, game-style Marswalk planner built on real NASA Mars data.
The SOL Explorers · NASA Space Apps Challenge 2026 · challenge: Interplanetary Survival Guide: Martian Map
Live demo: https://sol-atlas.netlify.app · Project log: PROJECT_LOG.md · Handoff for developers and AI assistants: AGENTS.md · AI use: AI_DISCLOSURE.md
In The Martian, Mark Watney survives by doing the maths himself: oxygen, distance, daylight, terrain. Sol Atlas does that maths for the first crews. It stacks data from five NASA missions and ESA's Mars Express on one 3D map, finds the safest route for a walk on foot to any point you pick, and checks whether the astronaut gets home with oxygen to spare. If the plan comes up short, the EVA simulation shows exactly where the suit runs dry. Then you can put on the helmet and walk the real terrain at eye height.
This is the phase-1 prototype made for the 240-second local-judging video. Jezero Crater is the only site unlocked; the other landing sites are marked "phase 2".
Sol Atlas has three levels. You move between them by scrolling, like zooming from a system map down to a planet surface in a space game.
A rotating Mars with real Viking colour, MOLA relief, a thin dusty atmosphere, Phobos and Deimos. Ten landing sites are marked. Scroll in and the camera locks onto Jezero; scroll again, or click, to descend. A live mission clock shows the Perseverance sol, local time at Jezero, the Martian season and the current Earth–Mars signal delay.
The whole crater (89 × 101 km) as a 3D block, built from the orbital imagery and elevation model NASA prepared for Perseverance. The terrain is lit by the real Sun position, with shadows that move as you drag the time-of-day slider.
| Crater | Elevation + contours |
|---|---|
The gold line is Perseverance's real drive path: 555 end-of-drive positions from NASA/JPL's mission waypoint feed, sol 0 to 2022 (October 2026, 45.25 km). It runs from the landing site, around Séítah, across the delta and up the crater rim. Layer 7 toggles it.
A 6 × 6 km zone around Perseverance's landing site, Séítah, the delta front and the Three Forks sample depot, built from a 25 cm per pixel HiRISE mosaic and a 1 m elevation model. This is where you plan the walk:
| Planned route | Point of no return |
|---|---|
| EVA flyover | Slope hazard |
|---|---|
| Drop a pin, route there | O₂ runs out: EV1 lost |
|---|---|
Press F, ◉ HELMET VIEW, or STAND HERE on a pin to stand on the terrain at 1.8 m eye height, with no vertical exaggeration.
| Slope hazard as a helmet overlay | O₂ exhausted, in the helmet |
|---|---|
| Feature | Why it matters |
|---|---|
| O₂-exhaustion point on the route, in the profile and in the simulation | You see where a bad plan kills the astronaut, not just that it's NO-GO |
| Mayday light-time at the moment O₂ runs out | Shows why Mars crews must plan for themselves: Earth hears the call ~14 min later |
| Drop a pin, route anywhere | Plan to any point in the zone, not only named places |
| Helmet view with the real skyline | The only first-person view we know of that's built on the actual DTM and horizon |
| Perseverance's real traverse | More real mission data: 555 drive fixes over 2,022 sols |
Synthesised sound (♪ / M) | Wind, lock-on, alarms, suit breathing. All generated in the browser, no audio files |
● REC (R) | Records the tab (HUD and sound included) to a video file for the pitch |
Sound and REC came from ideas in a teammate's early prototype. Its images and several coordinates weren't reusable (AI-generated pictures, approximate positions), so only the ideas were carried over.
Every layer is real mission data. Nothing is hand-painted. The exact files, with links, ready to paste into the Space Apps submission form, are in docs/SUBMISSION_DATA.md.
| Level | Layer | Mission / instrument | Product |
|---|---|---|---|
| Orbit | Visible colour | Viking Orbiters | MDIM 2.1 global mosaic, NASA Ames colour (232 m/px) |
| Orbit | Topography, relief | Mars Global Surveyor · MOLA | MOLA 128/64 ppd merged DEM (463 m/px) |
| Orbit | Night thermal IR | Mars Odyssey · THEMIS | USGS controlled night-IR mosaic (100 m/px) |
| Orbit, zoomed in on Jezero and Isidis | Relief, elevation colours | ESA Mars Express · HRSC, with MGS MOLA | HRSC and MOLA blended DEM v2, 200 m/px (USGS; HRSC data ESA/DLR/FU Berlin) |
| Crater | Visible | MRO · CTX | Mars 2020 Science Investigation CTX orthomosaic, 5 m/px (JPL) |
| Crater | Elevation, slope, contours | MRO · CTX stereo | Mars 2020 Science Investigation CTX DEM, 20 m/px (JPL) |
| Crater + zone | Ground firmness | Mars Odyssey · THEMIS | Night-IR mosaic as a thermal-inertia proxy, 100 m/px |
| Marswalk zone | Visible | MRO · HiRISE | Mars 2020 Terrain-Relative-Navigation orthomosaic, 25 cm/px (USGS) |
| Marswalk zone | Elevation, slope, route | MRO · HiRISE stereo | Mars 2020 TRN DTM, 1 m/px (USGS) |
| Crater + zone | Perseverance traverse | Mars 2020 · rover localisation | NASA/JPL MMGIS "Where is Perseverance?" end-of-drive waypoints, sol 0–2022, from the MMGIS feed |
| Marswalk zone | Stop photos | Mars 2020 · Navcam, Mastcam-Z | Raw images from the stops: landing site (sol 16), Three Forks (sol 690), Séítah (sol 249), delta front (sol 502) |
| Helmet view | Skyline | MRO · CTX stereo | Computed from the 20 m crater DEM: highest angle per bearing, Mars curvature included |
| Phase 2 | Minerals | MRO · CRISM | not yet: shown as locked |
| Phase 2 | Live weather | Perseverance · MEDA | not yet: the conditions panel shows typical values, labelled "not live" |
"Ground firmness" works like this: rock and coarse grains stay warm through the night, while dust and fine sand cool fast. So night-time infrared brightness tells firm ground from loose ground.
| Feature | How it's calculated | Checked against |
|---|---|---|
| Mars clock | NASA GISS Mars24 algorithm (Allison & McEwen 2000) | Mars24 reference date; Perseverance landing = sol 0 |
| Earth–Mars signal delay | JPL approximate planetary positions (Keplerian elements, 1800–2050) | 11 min 22 s on landing day, 18 Feb 2021, matching NASA's figure |
| Sun and shadows | Solar declination and hour angle for Jezero; shadows ray-marched through the elevation model on the GPU | Sunrise and sunset shown in the HUD |
| Safest route | A* search on a 512 × 512 grid from the HiRISE DTM. Step cost is metabolic energy, so the route minimises oxygen; cells steeper than the walking limit are avoided | Default loop solves in under 40 ms |
| Walking cost | Pandolf et al. (1977) load-carriage equation, scaled to Mars gravity (0.38 g) with a pressure-suit penalty; Tobler-style speed vs. grade; 1 L O₂ ≈ 20.1 kJ | Flat walking at 0.9 m/s ≈ 293 W ≈ 0.075 kg O₂ per hour, the same rate our 0.60 kg / 8 h suit assumption is sized on |
| Point of no return | First point on the way out where O₂ used so far + O₂ to walk straight back (plus a 25 % detour allowance) would eat into the reserve | Default loop: 0.30 kg suit → PNR at 3.92 km, 0.25 kg → 3.23 km (both on the leg to Three Forks) |
| O₂ runs out | The EVA's walk/stop timeline carries cumulative O₂; the first moment it reaches the tank size gives the time and place | 0.20 kg suit on the default loop: O₂ out at 6.38 km, 2 h 41 min in, 2.86 km from the airlock |
| Rover and walkback | Rover legs at 5 km/h with the crew seated (150 W). The walkback check is the point-of-no-return test applied to the whole drive, home leg included: O₂ used so far + O₂ to walk straight home (25 % detour allowance) must stay above the reserve | Default loop with a 0.30 kg suit: NO-GO on foot (PNR at 3.92 km), READY by rover (closest call 0.19 of 0.23 kg). With 0.20 kg: walkback limit at 3.90 km |
| Radiation dose | EVA time × the surface dose rate Curiosity's RAD measured, 0.64 mSv per day (Hassler et al. 2014). A suit adds little shielding against cosmic rays | Default loop: ≈ 0.11 mSv, against NASA's 600 mSv career limit |
| Storm shelter | Longest straight walk back to the airlock from any point on the route, at flat walking speed with the PNR's 25 % detour allowance: how long the crew is exposed if a solar-storm warning comes in |
Default EVA assumptions, all editable in the planner: 75 kg astronaut, 58 kg suit and backpack, no extra science kit (0–30 kg slider, added to the load in the walking model: 20 kg raises the default loop from 0.30 to 0.38 kg of O₂), 0.60 kg usable O₂ (about 8 h), 25 % reserve, 20° walking-slope limit, 20 min per science stop.
The default plan (LZ-A → Octavia E. Butler Landing → Three Forks → Séítah → LZ-A) comes out at 9.75 km, 4 h 02 min, 0.30 kg of O₂, 50 % margin: MARSWALK READY.
| Mission goal | Stops (from and back to LZ-A) | Route | O₂ | Call |
|---|---|---|---|---|
| Grand tour | Landing site, Three Forks, Séítah | 9.75 km | 0.30 kg | READY |
| Bring the samples home | Three Forks | 8.74 km | 0.24 kg | READY |
| Date the crater floor | Séítah | 5.46 km | 0.16 kg | READY |
| Look for signs of ancient life | Delta front | 9.30 km | 0.26 kg | CAUTION (steep sections up to 17° on the delta) |
| Place | Position | Notes |
|---|---|---|
| Octavia E. Butler Landing | 18.4447°N 77.4508°E | Perseverance touchdown, 18 Feb 2021 |
| Three Forks Sample Depot | 18.4528°N 77.4082°E | 10 sample tubes laid sols 653–690 (Dec 2022 – Jan 2023) at the foot of the delta. Mean of the rover positions at each tube drop, from NASA's PDS Three Forks Depot archive |
| Séítah | 18.4339°N 77.4430°E | Where Perseverance parked on Séítah's edge, sols 248–278, and cored Coulettes (sol 271). NASA/JPL MMGIS waypoints |
| Delta front | 18.4589°N 77.4061°E | Where Perseverance parked on the delta front, sols 477–502, and cored Skyland (sol 495). NASA/JPL MMGIS waypoints |
| LZ-A, crew landing zone | 18.4500°N 77.4850°E | Our proposal, not a NASA site: flat lava floor, over 4 km from the depot so engine blast can't reach it |
| Western Fan (delta), Belva crater, Neretva Vallis, Pliva Vallis, crater rim | approx. | Crater-view labels, placed by eye on the CTX mosaic |
| Acidalia Planitia "Ares III" | 31.2°N 28.5°W | Fiction: Mark Watney's base in The Martian (Andy Weir) |
| Orbit | Crater / Marswalk zone | |
|---|---|---|
| Drag | spin the planet | orbit the camera |
| Right-drag or Shift-drag | pan | |
| Scroll | zoom; locks onto Jezero when close | zoom toward the cursor. Keep scrolling out to go up a level |
| Click | Jezero, or the lock-on, to descend | the Marswalk zone to enter it. In the zone, click anywhere to drop a pin (ROUTE HERE / ADD STOP / STAND HERE), or click a named place to add it as a stop |
| Keys | 1–3 layers · G grid · Space rotation · Enter descend | 1–7 layers · WASD pan · Enter enter zone · Esc go up · Space run the EVA simulation · F helmet view |
| Anywhere | C autopilot · H hide HUD · K captions on/off · M sound · R record | |
| Touch | drag to spin · pinch to zoom · tap Jezero to descend | drag to orbit · pinch to zoom · two-finger drag to pan · tap to select |
Helmet view: drag to look · WASD / arrows to walk (Shift = faster) · Q/E turn · click or tap a spot to walk there · scroll or pinch to zoom · [ ] or the − / + buttons change the time warp · Esc or F to leave.
Helmet view on phones: turn the phone sideways (on Android it goes fullscreen and locks to landscape). The left stick walks: a light push is a slow walk, full push jogs. The right stick looks around. You can still tap a spot to walk there.
On desktop, each side panel has a small ‹ / › tab on its inner edge that tucks it away; the tab stays at the screen edge to bring it back, and the choice is remembered.
On phones and upright tablets, the side panels open as a sheet from the tabs at the bottom of the screen (JEZERO / CRATER / PLANNER and LAYERS). Tap the map to close the sheet.
Sol Atlas picks a quality level for each device when it loads. You can force one by adding it to the URL:
| Level | Chosen for | What changes | Force it with |
|---|---|---|---|
| High | desktops and laptops | 8k globe, full-resolution terrain, up to 2× sharpness | ?q=high |
| Medium | tablets, 4-core or low-memory laptops | 4k globe, full terrain, up to 1.5× sharpness | ?q=medium |
| Low | phones | half-resolution textures (about 11 MB download instead of 40 MB), terrain meshes with 4× fewer points, 30 fps cap, no screen overlays | ?q=low |
On every level:
Press C (or ▶ AUTOPILOT) for a scripted fly-through of about two minutes, with captions. It follows the WHAT and SO WHAT sections of our pitch script:
Tips:
K to hide the captions if you're recording your own voiceover, and H to hide the HUD for clean B-roll.Esc, or any click or scroll on the map hands control back to you. Stopping puts back whatever the autopilot changed (O₂ setting, layers, plan).R), choose this tab and allow audio, then press C. The controls hide during the autopilot, so the take is clean. Press R again (or the browser's Stop sharing) and a .webm downloads. Desktop Chrome or Edge works best.Win + Alt + R).You need Node.js 20 or newer and a desktop browser with a graphics card (Chrome, Edge or Firefox).
git clone https://github.com/saracen66/the-sol-explorers
cd the-sol-explorers
npm install
npm run dev # opens http://localhost:5173
The processed NASA data is already in the repo (public/data/, about 40 MB), so you don't need Python to run the app.
Quality is picked automatically; see Phones, tablets and performance to force a level.
Production build:
npm run build # static site in dist/
npm run preview # serve dist/ at http://localhost:4173
scripts/build_data.py downloads the source data from the public USGS Astrogeology archive (asc-pds-services on AWS S3) and bakes the textures and heightmaps in public/data/. It streams only the parts it needs. For example, the largest source is a 3.4 GB HiRISE mosaic, and the script reads just the 5 × 5 km zone.
pip install rasterio numpy pillow scipy
npm run data # everything (a few minutes)
python3 scripts/build_data.py crater # or one stage: global | region | crater | site | lite
Downloads are cached in .cache/, which is git-ignored. The lite stage writes the half-resolution phone textures to public/data/lite/ and a 4k globe map for medium-quality devices. Heightmaps are stored as PNG images: each 16-bit height is split across the red and green channels (height = R × 256 + G), so any static web host can serve them without loss.
The site is set up for Netlify with netlify.toml: it builds with npm run build and publishes dist/.
Netlify site: sol-atlas → https://sol-atlas.netlify.app
To publish from GitHub, with automatic redeploys on every push:
saracen66/the-sol-explorers.main once the work is merged). Build settings are read from netlify.toml.To deploy by hand from your own computer:
npm install -g netlify-cli
netlify login
netlify link --id 3cde891d-2654-4f7a-b31d-30e5ad235ca8
netlify deploy --build --prod
dist/ also works on GitHub Pages or any other static host, because all paths are relative.
index.html HUD skeleton (panels, loader, overlays)
netlify.toml Netlify build + cache headers
vite.config.js Vite config (relative base path)
src/
main.js app: level transitions (orbit ⇄ crater ⇄ zone), input, render loop
styles.css HUD styling
orbit/ Mars globe: planet shader (layers, zoom-in detail, relief, lock-on rings),
atmosphere, moons, stars
terrain/ TerrainView: 3D terrain, layer shader, GPU shadows, contours, holo mode, traverse, camera
Planner: stops, A* routes, EVA budget, point of no return, O₂-out point, EVA flyover
FirstPerson: helmet view (sky, real skyline, walking, suit HUD, ride-along)
Pin: drop a pin, route here / add stop / stand here
pathfinding.js (A*), eva.js (metabolic + O₂ model)
ui/ HUD panels and legends, elevation-profile chart, labels pinned to 3D points,
sound.js (Web Audio synth), recorder.js (tab → video)
lib/ marstime.js (Mars24, signal delay, sun position), geo.js
core/ asset loader, quality levels + adaptive resolution, scene crossfade, autopilot
data/places.js landing sites, points of interest, default Marswalk plan
scripts/build_data.py NASA/USGS → web data pipeline
public/data/ processed textures + heightmaps + manifest.json (lite/ = phone versions),
m20_traverse.json (Perseverance end-of-drive waypoints, sol 0–2022)
docs/screenshots/ images used in this README
PROJECT_LOG.md full record of how the project was built
AGENTS.md / CLAUDE.md handoff: architecture, conventions, testing, deploy, open items
scripts/smoke.cjs Playwright smoke test (desktop or DEVICE="iPhone 14")
Known limitations in phase 1
python3 scripts/build_data.py traverse refreshes it.Next
The code, data-processing scripts and documentation of Sol Atlas were written with an AI coding assistant, Claude Code (Anthropic), under the team's direction; the team set the goals, tested every version and asked for fixes. The pitch script and background research were also drafted with AI help. All map data is real NASA mission data. No image, video or sound in the app or this repository is AI-generated (the screenshots are captures of the running app), and the app makes no AI calls at runtime. The full statement, with a checklist for the pitch video, is in AI_DISCLOSURE.md.
Team: The SOL Explorers, NASA Space Apps Challenge 2026, Bangladesh.
| Member | Role |
|---|---|
| S.M. Riasijtur Rahman | Team owner |
| MD. Yemtias Jani Mishad | Team member |
| Md Rifat Hasan | Team member |
| Sayma Ferdousi Fariha | Team member |
Data:
Ideas: synthesised sound design and in-app recording were inspired by a teammate's early prototype.
NASA imagery is not copyrighted. No NASA logos are used.
Built with: three.js, Vite and Python (rasterio, NumPy, Pillow, SciPy). Fonts: Rajdhani, Orbitron, JetBrains Mono.
The code in this repository is open source under the Apache License 2.0, as NASA Space Apps requires for work built for the challenge. The NASA data in public/data/ is not copyrighted and is credited above. The fonts are under the SIL Open Font Licence; three.js and Vite are under the MIT licence.
| Default loop: ≤ 1 h 40 min, worst at Three Forks (4.61 km) |
| Mayday delay | One-way and round-trip light time from the same Earth–Mars model as the header clock | ~14 min one way on 25 Sep 2026 |
| Helmet skyline | For each of 360 bearings, march the CTX DEM from 2.6 to 46 km and keep the highest elevation angle, after subtracting the curvature drop d²/2R | Highest skyline 4.5° toward bearing 263° (the western rim and delta) |
| Elevations | Heights decoded from the DEMs | Three Forks: −2,545 m in the HiRISE DTM vs −2,545.3 m rover elevation at the tube drops in NASA's PDS depot archive |