ORION · Navigation Layer

ATHENA.

Autonomous Terrain & Hazard Exploration Navigation Agent

A real-time 3D rover autonomy simulator with multi-algorithm pathfinding, infinite procedural terrain, and multi-planetary deployment.

The entire system runs in-browser. No backend required.

4
Algorithms
4
Planets
Terrain
0
Backend
Project Classification
Rover Navigation Sim
LIVE
RoleNavigation Layer
Deploymentbrowser-native
RenderingThree.js · WebGL
FrameworkReact 18 + Vite
Built By
Swan Yi Htet
+ David Young
FIG · 01 · Full Demonstration athena_demo.mp4

Multi-algorithm pathfinding, manual driving, terrain controls, and planetary environment switching.

§ 01

Mission Overview

A rover is placed on an infinite procedurally generated planetary surface. The operator clicks anywhere and the rover plans a path using one of four selectable algorithms, visualizing the search in real-time.

The terrain extends infinitely in every direction. Slopes, craters, and rocks are generated deterministically from seeded noise.

Switching between Mars, Venus, Europa, and Titan rebuilds the entire terrain, sky, lighting, fog, and surface colors to match real physical conditions.

Core Capabilities
→ Four pathfinding algorithms
→ Real-time search viz
→ Cost heat mapping
→ Multi-waypoint missions
→ Infinite procedural terrain
→ Four planetary environments
→ Live engineering viewport
§ 02

Pathfinding

Four search algorithms, same slope-based cost function, fundamentally different exploration patterns.

A*
A-Star Search
the default · focused

Explores by estimated total cost: actual cost (g) plus heuristic (h).

A focused beam expanding toward the target. Heuristic is Euclidean distance.

Cost: flat ×1 · slope ×15 · >35° ×200 (impassable)
Di
Dijkstra's Algorithm
uniform flood · optimal

A* without the heuristic. Explores by actual cost only, producing a uniform circular flood.

Guaranteed optimal but explores significantly more nodes. Concentric ring expansion.

RRT
Rapidly-exploring Random Trees
probabilistic · 15% goal bias

Randomly samples points, finds nearest tree node, extends a branch toward the sample.

15% goal bias ensures growth toward target. Branches rejected on slopes >35°.

D*L
D* Lite
backward search · replan

Searches backward from goal to rover. Designed for replanning when environment changes.

When the environment changes mid-traverse, only affected portions need recomputation.

§ 03

Terrain Generation

The terrain is infinite. There are no edges, no loading screens, no prebuilt maps. The rover can drive in any direction forever.

Chunk System

The world is divided into 80-unit chunks. A 7×7 grid (49 total) is maintained around the rover.

As the rover moves, chunks behind unload and new chunks ahead generate every 0.5s.

Height Function

3-layer fBm noise at different frequencies blended together, sampled from independent 256×256 seeded noise textures.

Plus ridge noise for sharp geological features. One continuous world-space function.

Crater Hashing

Deterministic craters via spatial cell hashing. The world divided into 50-unit cells, each cell's hash determines its craters.

Geometry: parabolic depression with raised rim.

Design Principle

Every height query (terrain mesh vertices, rover ground contact, pathfinding cost, engineering viewport) calls the same getWorldHeight() function. There is one source of truth.

§ 04

Planetary Environments

Four planetary bodies. Each switches the entire simulation: terrain heightmap scales, surface and rock colors, crater density, sky gradients, fog density, sun color, dust particle colors.

rocky

Mars

THE RED PLANET

Gravity3.72 m/s²
Atmosphere0.6 kPa CO₂
Surface−60°C
Terraincratered
Cratersdense
volcanic

Venus

THE HELLSCAPE

Gravity8.87 m/s²
Atmosphere9200 kPa CO₂
Surface462°C
Terrainflat volcanic
Cratersvery sparse
icy moon

Europa

JUPITER'S ICE WORLD

Gravity1.31 m/s²
Atmosphere~0 Pa
Surface−160°C
Terrainicy ridges
Cratersmoderate
dunes

Titan

SATURN'S GIANT MOON

Gravity1.35 m/s²
Atmosphere146.7 kPa N₂
Surface−179°C
Terrainsmooth dunes
Cratersalmost none
Planet Parameters, Not Planet Code

Each planet is a data object, not a separate code path. Mars and Europa run identical terrain generation logic with different parameter values. Adding a new planet is adding one object to a dictionary.

§ 05

Architecture

ATHENA v2.0
React + Three.js · Browser
Terrain Engine
  • fBm noise
  • Crater hash
  • Chunk mgmt
  • Slope calc
Pathfinding Engine
  • A*
  • Dijkstra
  • RRT
  • D* Lite
Planetary Environment
  • Mars
  • Venus
  • Europa
  • Titan
Unified World Model
getWorldHeight() · getWorldSlope() · chunks
Visualization Layer
Cost heat map · Frontier · Trail · Waypoints
Rover Simulation · Engineering Viewport