Downloads · 30 days
0
Ethgar/skyfull-policy-chamonix-rescue-v1
skyfull-policy-chamonix-rescue-v1 is a machine learning model from Ethgar. Use it for the machine learning task on the model card, and read the license before you ship it in a product. It is set up for pytorch. The card lists the license as mit.
Rescue drone trajectory policy trained on real Chamonix terrain. Part of Skyfull — physical intelligence over geo-scale terrain.
Downloads · 30 days
0
Access
Public
Updated Jun 30, 2026
Repo size
696 KB
Likes
0
Public
Click a slice to open those files.
.pt696 KB · 99%
From the Hugging Face model README
Rescue drone trajectory policy trained on real Chamonix terrain. Part of Skyfull — physical intelligence over geo-scale terrain.
Tiny MLP policy. No vision encoder. No transformer. No diffusion. Just coordinate geometry learned end-to-end.
| Type | MLP (multi-layer perceptron) |
| Input | 3 floats: victim_dlon, victim_dlat, victim_elev |
| Output | 120 floats: trajectory (40 steps × lon, lat, alt_m) |
| Hidden | 256 units × 3 layers |
| Activation | SiLU |
| Parameters | 163,448 |
| Checkpoint size | 642 KB |
| Inference time | < 2 ms on CPU |
Also includes terrain_chamonix.pt — the TerrainNet implicit neural terrain
(4k params, 37 KB) encoding the Chamonix DEM as a queryable function.
| Dataset | Ethgar/skyfull-chamonix-rescue-v1 |
| Episodes | 10,000 |
| Train/val split | 90 / 10 |
| Epochs | 200 |
| Optimizer | Adam, lr=3e-3, cosine annealing |
| Batch size | 512 |
| Hardware | MacBook Air M2 (MPS) |
| Training time | < 60 seconds |
| Metric | Value |
|---|---|
| Endpoint error (mean) | 10 m (approx) |
| Terrain violations | 0 / 1,000 (val set) |
import torch, numpy as np
from huggingface_hub import hf_hub_download
ckpt = torch.load(hf_hub_download("Ethgar/skyfull-policy-chamonix-rescue-v1", "policy_chamonix.pt"), weights_only=False)
norm = ckpt['norm']
import torch.nn as nn
class SkyfullPolicy(nn.Module):
def __init__(self, hidden=256, depth=3, in_dim=3, out_dim=120):
super().__init__()
layers = [nn.Linear(in_dim, hidden), nn.SiLU()]
for _ in range(depth - 1):
layers += [nn.Linear(hidden, hidden), nn.SiLU()]
layers.append(nn.Linear(hidden, out_dim))
self.net = nn.Sequential(*layers)
def forward(self, x): return self.net(x)
model = SkyfullPolicy(hidden=ckpt['hidden'], depth=ckpt['depth'])
model.load_state_dict(ckpt['state_dict'])
model.eval()
city_base = np.array(norm['city_base'], dtype=np.float32) # [6.87, 45.924]
victim = np.array([6.9200, 45.9740, 2200.0], dtype=np.float32)
x_raw = np.array([victim[0]-city_base[0], victim[1]-city_base[1], victim[2]], dtype=np.float32)
x_norm = (x_raw - norm['x_mean']) / norm['x_std']
with torch.no_grad():
y_norm = model(torch.from_numpy(x_norm).unsqueeze(0)).numpy()[0]
traj = y_norm.reshape(40, 3) * norm['y_std'] + norm['y_mean']
print(traj.shape) # (40, 3) — lon, lat, alt_m per waypoint
Chamonix, Haute-Savoie, France. lat [45.86, 45.975] · lon [6.8, 6.99]
Specialist model for this tile only. Other regions: run pipeline.py <tile_id>.
| Tile | Region | Policy |
|---|---|---|
| Aosta Valley | Valle d'Aosta, Italy | Ethgar/skyfull-policy-aosta-valley-rescue-v1 |
| Chamonix | Haute-Savoie, France | Ethgar/skyfull-policy-chamonix-rescue-v1 |