Views
No views yet
controller/lif4.py for the exact architecture and decode).
Two sensing regimes were evolved: oracle sensing, where fitness is scored
against the simulator's exact state, and dream-pixel sensing, where a
fitted linear probe reads virtual left/right proximity values directly off
the world model's own rendered frames, and fitness is scored from that
probe-reconstructed signal.denoiser.onnx each). Fetch them
separately:Karajan42/doom-engine-arena:
deathmatch-trained checkpoint (deathmatch/denoiser.onnx). The
dream-eyes probe fitted against this checkpoint reaches r_L = 0.903,
r_R = 0.922 (n = 400 pairs), with a missed-hot-state rate of 0.09 (left)
and 0.03 (right).Karajan42/doom-dungeon-55:
the "v55" checkpoint (denoiser.onnx). The probe fitted against this
checkpoint reaches r_L = 0.785, r_R = 0.869 (n = 320 pairs), with a
missed-hot-state rate of 0.0 on both channels.| Folder | Contents |
|---|---|
champions/ | 17 evolved genomes. champion_doom_oracle.json (fitness 1.642, oracle exact-state sensing) and champion_dream_eyes.json (fitness 2.357, dream-pixel sensing, world dream-eyes-margin), plus 15 oracle_genomes_*.json files, one per world/sensing-regime variant tried (doom-final, doom-balanced, doom-h25, dream-eyes-latch-native at fitness 2.377, the highest reached across the whole sweep, and others). Each file stores the CMA-ES genome vector and its fitness score (labeled doom_F/dream_F in the champion_*.json pair and phi in the oracle_genomes_*.json files; both names carry the same Floreano-lineage metric, used at different pipeline stages); the oracle_genomes_*.json files additionally record a target world name and a champion flag. |
probes/ | probe_W.npy and probe_W_v55.npy: the fitted linear probe weight matrices (one per world-model checkpoint above) that convert dream-rendered pixels into virtual left/right proximity readings. Paired training data for these fits is in the sibling dataset repo's probes/ folder. |
controller/ | lif4.py: the LIF controller math, including the no-stop decode and the turn-commitment latch that fixed a stalling bug (see below). s5_train.py: the training driver these controllers were evolved with. |
env/ | Six-file doom-gym Python environment (doom_env.py, doom_env_v55.py, evolve_doom.py, evolve_dream_eyes.py, probe_collect.py, validate_extractor.py) wrapping the world-model checkpoints above in a gym-style step/reset interface for both CMA-ES evolution and probe fitting. |
webots/ | Three .wbt world files (gate3_arena, gate3_slalom, gate3_field) plus gate3_lif.py, the Webots controller wrapper that runs the same LIF math from controller/lif4.py against real rigid-body physics; this is the independent substrate the champions above are verified against. |
media/ | Driving clips from both substrates (dream_drive.gif, dream_drive_v55.gif, dream_eyes_drive.gif, webots_dream_eyes_final.mp4), a contact sheet (v55_contact_sheet.png), and five report-quality figures (fig_alignment_ladder.png, fig_champion_scorecard.png, fig_probe_scatter.png, fig_jitter_beforeafter.png, fig_hero_grid.png) built from measurements.json. These five supersede the earlier alignment_ladder.png and webots_trajectories.png (kept for reference); the fig_* versions carry the corrected titles and captions and are what the technical report and blog post cite. |
champion_doom_oracle.json); dream-pixel sensing at 1.907 (balanced), 2.344
(v1), 2.357 (margin, champion_dream_eyes.json), and 2.377 (latch-native,
oracle_genomes_de2.json, the highest fitness reached in the sweep). This
fitness is the CMA-ES evolution objective (Φ, Floreano-lineage), not the
Webots physics-verification pass/fail described next; the two are separate
measurements and are not interchangeable.oracle_runs/), 20 episodes in an open arena plus 20
in a slalom course per genome. None cleared the full joint gate (zero
contacts, minimum clearance above 2cm, at least 95% of steps at or above 5cm
clearance, and at least 2m path traveled, required jointly in both worlds).oracle_genomes_final.json
(Φ = 2.169, world doom-final), oracle_genomes_h25.json (Φ = 1.642, world
doom-h25, evaluated at its default control rate and again at 350ms), and
oracle_genomes_h8.json (Φ = 1.838, world doom-h8, evaluated at 250ms and
350ms) hold position near their start: mean path traveled is 0.06m–0.22m
across arena and slalom for all five of these runs.oracle_genomes_de2.json
(Φ = 2.377, world dream-eyes-latch-native) drives with mean paths of 2.02m
(arena) and 2.36m (slalom); champion_dream_eyes.json (Φ = 2.357, world
dream-eyes-margin) drives with mean paths of 1.63m (arena) and 2.31m
(slalom). Neither driver's gate miss is immobility. The margin-final
champion's arena path bar is missed on the mean (1.63m against the 2.0m
bar), dragged down by a worst-episode path low of 6.4cm, not by typically
parking; the latch-native champion's worst-episode path low is 1.29m in the
arena and 1.93m in the slalom, both still substantial fractions of the 2.0m
bar. Both drivers, like all seven zero-contact genomes, miss the 2cm
minimum-clearance floor in the slalom course (clearances of 0.89cm–1.3cm
across all seven); two of the seven (the latch-native champion and the
350ms evaluation of oracle_genomes_h25.json) also miss that floor in the
arena (1.55cm and 1.94cm respectively).controller/lif4.py removed a stalling
failure mode. Before the fix, 64% and 53% of a 180-tick episode were spent in
frozen/non-committal turn ticks across two traces; after the fix, 0 frozen
ticks in both post-fix traces (dataset repo's logs/jitter*.jsonl).controller/lif4.py to reproduce the evolved
controller's behavior, either in the doom-gym environment (env/, requires
one of the world-model checkpoint dependencies above) or in Webots (webots/
.wbt worlds plus gate3_lif.py; no world-model dependency needed, since
Webots is the independent verification substrate).1@misc{hernandez2026dreamrobotpolicies,
2 title = {Dream Robot Gauntlet: Policies},
3 author = {Hern\'andez, Hugo and Alakazam},
4 year = {2026},
5 note = {Private pre-publication model release}
6}Karajan42/dream-robot-gauntlet-dataKarajan42/doom-engine-arena,
Karajan42/doom-dungeon-55