Skip to content
Merged
Show file tree
Hide file tree
Changes from 61 commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
b1b1e08
Rewrite Crazy Robotaxi for FlashDreams V2
aidanfnv Aug 25, 2026
30e3b1a
Fix Crazy Robotaxi rollout initialization
aidanfnv Aug 25, 2026
ad39633
Optimize Crazy Robotaxi traffic projection
aidanfnv Aug 25, 2026
7c72da4
Move Crazy Robotaxi HUD to V2 ImGui UI
aidanfnv Aug 25, 2026
6c6fbd9
Composite Crazy Robotaxi waypoints in world
aidanfnv Aug 25, 2026
f1b8d07
Adapt Crazy Robotaxi to merged V2 loop API
aidanfnv Aug 25, 2026
99c53c7
Composite Crazy Robotaxi BEV in SlangPy UI loop
aidanfnv Aug 25, 2026
23f7e13
Fix Crazy Robotaxi chunk pacing and CPU overhead
aidanfnv Aug 25, 2026
9e933cf
Optimize Crazy Robotaxi frame pacing
aidanfnv Aug 26, 2026
7019211
Prewarm Crazy Robotaxi before presentation
aidanfnv Aug 26, 2026
9feb31b
Fix Crazy Robotaxi input latency handling
aidanfnv Aug 26, 2026
088e57d
Add Crazy Robotaxi native window support
aidanfnv Aug 26, 2026
9501651
Add original Crazy Robotaxi perf preset
aidanfnv Aug 27, 2026
2a51853
Adapt Crazy Robotaxi input to V2 events
aidanfnv Aug 27, 2026
5525faf
Add Dear ImGui UI support
aidanfnv Aug 27, 2026
ee250e9
Render Crazy Robotaxi waypoints with ImGui
aidanfnv Aug 27, 2026
a160e73
Reduce Crazy Robotaxi BEV presentation overhead
aidanfnv Aug 27, 2026
2f9faa7
Optimize Crazy Robotaxi physics bridge
aidanfnv Aug 27, 2026
81d371a
Isolate Crazy Robotaxi presentation stream
aidanfnv Aug 27, 2026
37b231f
Add combined fast performance preset
aidanfnv Aug 27, 2026
2dc1fb9
Add configurable Crazy Robotaxi FPS counter
aidanfnv Aug 27, 2026
b0d7cc3
Keep Crazy Robotaxi BEV GPU-resident app-side
aidanfnv Aug 27, 2026
5dda7b3
Port complete Crazy Robotaxi gameplay to V2
aidanfnv Aug 27, 2026
4d3c79d
Restore Crazy Robotaxi navigation and restart
aidanfnv Aug 27, 2026
8fdd976
Remove Crazy Robotaxi BEV window chrome
aidanfnv Aug 27, 2026
f59e1ed
Fade Crazy Robotaxi BEV waypoints
aidanfnv Aug 27, 2026
7f12e28
Mask Crazy Robotaxi BEV background
aidanfnv Aug 27, 2026
69e7ec8
Remove Crazy Robotaxi compass outlines
aidanfnv Aug 27, 2026
8f49f92
Add Crazy Robotaxi startup menus
aidanfnv Aug 27, 2026
ee464e2
Add Crazy Robotaxi escape navigation
aidanfnv Aug 27, 2026
2e64fcd
Fix Crazy Robotaxi BEV transparency
aidanfnv Aug 27, 2026
5267156
Batch Crazy Robotaxi actor track updates
aidanfnv Aug 27, 2026
af8e3ec
Honor Crazy Robotaxi CLI game selections
aidanfnv Aug 28, 2026
ee53308
Reconcile Crazy Robotaxi with OmniDreams V2 layout
aidanfnv Aug 28, 2026
eb57c2d
Simplify Crazy Robotaxi model presets
aidanfnv Aug 28, 2026
9d5e2ae
Wire Crazy Robotaxi to realtime V2 input
aidanfnv Aug 28, 2026
9a04b5e
Align Crazy Robotaxi input with Interactive Drive
aidanfnv Aug 28, 2026
9312923
Fix V2 block presentation performance
aidanfnv Aug 28, 2026
5f61f65
Improve Crazy Robotaxi input responsiveness
aidanfnv Aug 28, 2026
3bc0c12
Fix Crazy Robotaxi live-edit presentation
aidanfnv Aug 28, 2026
8f38f6f
Fix native text input duplication
aidanfnv Aug 28, 2026
24bec20
Clean up maps
aidanfnv Aug 28, 2026
c6a71e9
add fast config + initial rebase + stuff runs
ArielG-NV Aug 28, 2026
ecad027
get lora to work + document controls
ArielG-NV Aug 28, 2026
f6d7308
R button to reverse + small car in HUD
ArielG-NV Aug 28, 2026
d55a543
Restore Crazy Robotaxi HUD
aidanfnv Aug 28, 2026
d679dca
Fix Taxi HUD placement
aidanfnv Aug 28, 2026
b5251ea
Fix cherry-pick of previous HUD commits
aidanfnv Aug 28, 2026
0f12a27
Use Droid Sans for gameplay HUD callouts
aidanfnv Aug 28, 2026
365371c
Trace Crazy Robotaxi input
aidanfnv Aug 28, 2026
e6224c9
Stabilize Crazy Robotaxi input
aidanfnv Aug 28, 2026
0667cad
Polish Crazy Robotaxi game over screen
aidanfnv Aug 28, 2026
622762b
Polish Crazy Robotaxi selection menus
aidanfnv Aug 28, 2026
fbecd08
Increase UI rate to 60Hz for lower latency
aidanfnv Aug 28, 2026
8acb146
Fix Crazy Robotaxi race checkpoint geometry
aidanfnv Aug 28, 2026
bb51c49
Double Crazy Robotaxi model warmup
aidanfnv Aug 28, 2026
7acd8a2
Restore Crazy Robotaxi arcade controls
aidanfnv Aug 28, 2026
7754a57
Polish Crazy Robotaxi for public release
aidanfnv Aug 29, 2026
26c3c8d
Update flashdreams/flashdreams/runtime_v2/README.md
aidanfnv Aug 29, 2026
6cf6af7
Update flashdreams/flashdreams/api_v2/README.md
aidanfnv Aug 29, 2026
bbd1aa2
Remove unrelated SlangPy conversion optimization
aidanfnv Aug 29, 2026
542329c
Prewarm Robotaxi before timed gameplay
aidanfnv Aug 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
148 changes: 148 additions & 0 deletions apps/crazy_robotaxi/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
# Crazy Robotaxi

Crazy Robotaxi is an interactive FlashDreams V2 application built on the
OmniDreams world model and `omnidreams-game-engine`. Drive a taxi through
authored maps, collect fares, or race against the clock using a keyboard,
gamepad, or steering wheel.

## Requirements

Crazy Robotaxi uses the same model assets and GPU runtime as the OmniDreams
integration. Set `HF_TOKEN` to a token with access to the NVIDIA OmniDreams
repositories. See the [OmniDreams integration guide](../../integrations_v2/omnidreams/README.md)
for the supported platform, model preparation, and controller setup.

## Quick start

From the repository root:

```bash
export HF_TOKEN=<YOUR-HF-TOKEN>

uv sync --package flashdreams-omnidreams --extra interactive-drive
uv run --package flashdreams-omnidreams python \
integrations_v2/omnidreams/impl/omnidreams_singleview/tools/sync_thirdparty.py sync

uv run --package flashdreams-omnidreams flashdreams-run-v2 \
crazy-robotaxi-omnidreams --mode native-window
```

Native-window mode requires a local display and SlangPy's Vulkan/CUDA interop.
To use a browser client instead:

```bash
uv run --package flashdreams-omnidreams flashdreams-run-v2 \
crazy-robotaxi-omnidreams --mode webrtc --host 0.0.0.0 --port 8089
```

Open `http://127.0.0.1:8089/`, or use the host printed by the runner when
connecting remotely. The first run downloads model assets and may take time to
compile and autotune kernels.

Three OmniDreams runner configurations are registered:

| Runner | Configuration |
| --- | --- |
| `crazy-robotaxi-omnidreams` | Standard |
| `crazy-robotaxi-omnidreams-perf` | Performance optimized |
| `crazy-robotaxi-omnidreams-fast-perf` | Fast performance optimized |

The performance configurations require the native DiT sources to be prepared
once:

```bash
uv run --package flashdreams-omnidreams omnidreams-prepare --perf
```

Application arguments follow `--`. For example:

```bash
uv run --package flashdreams-omnidreams flashdreams-run-v2 \
crazy-robotaxi-omnidreams-perf --mode webrtc -- \
--map apps/crazy_robotaxi/crazy_robotaxi/maps/boulevard_district.robotaxi.yaml \
--game-time-s 90
```

Run the application with `-- --help` to list all game options. Restarting a
game rebuilds its simulation and autoregressive cache without reloading the
model.

## Controls

### Keyboard

| Control | Action |
| --- | --- |
| `W` or Up Arrow | Drive forward |
| `S` or Down Arrow | Reverse |
| `A` or Left Arrow | Steer left |
| `D` or Right Arrow | Steer right |
| `Space` | Apply the handbrake and cancel throttle |
| `R` | Restart the current game |
| `Escape` | Return to the previous menu, then exit from the mode screen |
| `Enter` | Submit the focused leaderboard name |

Menu choices and leaderboard buttons can also be clicked with the mouse.

### Controller

| Control | Action |
| --- | --- |
| Left stick | Steer |
| Right trigger (`RT` / `R2` / `ZR`) | Throttle |
| Left trigger (`LT` / `L2` / `ZL`) | Brake |
| `R` / `RB` / `R1` (hold) | Select reverse gear |
| Start / Menu / Plus | Restart the current game |
| Steering wheel and pedals | Use normalized steering, throttle, and brake input |

A connected gamepad or wheel takes precedence over keyboard driving input.
Gamepads do not currently control menus, the handbrake, or live-edit actions.

## Race mode

Bundled maps can define ordered race courses. Start with the included raceway
and select the `grand-prix` course in the menu:

```bash
uv run --package flashdreams-omnidreams flashdreams-run-v2 \
crazy-robotaxi-omnidreams --mode native-window -- \
--map apps/crazy_robotaxi/crazy_robotaxi/maps/flashdreams_raceway.robotaxi.yaml \
--game-mode race
```

Race times are stored per map and course. Use `--race-times PATH` to choose a
different leaderboard file.

## Optional live-edit abilities

Live-edit features are disabled by default. Enable them with application
arguments:

```bash
uv run --package flashdreams-omnidreams flashdreams-run-v2 \
crazy-robotaxi-omnidreams --mode native-window -- \
--live-edit-coins \
--live-edit-items \
--live-edit-weather \
--live-edit-style
```

When enabled, `C` toggles coins, `K` cycles style skins, `V` cycles weather,
and `O` spawns a crossing obstacle. Style mode downloads its additional model
assets on first use and caches them under `artifacts/crazy_robotaxi/live_edit`.
Text-edit and obstacle guidance require a non-native DiT configuration; the
application rejects incompatible configurations before generation begins.

## Authored maps

Maps are strict semantic `.robotaxi.yaml` documents. Validate or preview them
without loading a model:

```bash
uv run --package crazy-robotaxi crazy-robotaxi-map validate path/to/city.robotaxi.yaml
uv run --package crazy-robotaxi crazy-robotaxi-map compile path/to/city.robotaxi.yaml
uv run --package crazy-robotaxi crazy-robotaxi-map preview \
path/to/city.robotaxi.yaml --output city.svg
uv run --package crazy-robotaxi crazy-robotaxi-map preview-spawn \
path/to/city.robotaxi.yaml --spawn taxi_start --output taxi_start.png
```
11 changes: 11 additions & 0 deletions apps/crazy_robotaxi/crazy_robotaxi/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0

"""Crazy Robotaxi FlashDreams V2 application."""

from crazy_robotaxi.application import (
CrazyRobotaxiApplication,
CrazyRobotaxiApplicationDefaults,
)

__all__ = ["CrazyRobotaxiApplication", "CrazyRobotaxiApplicationDefaults"]
Loading
Loading