Skip to main content
Use the fine-tuning recipe to teach a simulated drone to follow flight instructions. Each episode has an instruction and each seed a room layout. The model receives a 256×256 onboard image, its last action, and the instruction. The adapter resizes the image to a 512 × 512 model canvas. This page describes the reported Isaac Sim experiment and its model-side data adapter. The release does not include the scene assets, pilot, recordings, or evaluation runner. An exact reproduction needs those components, including the simulator version, physics settings, and success criteria.

”Fly under the coffee table and hover.” Tested on a room layout and instruction wording absent from the fine-tuning data.

Simulation

What changed in the recipe

The rotor dataset adapter reads an instruction per episode and prepends fly the drone: . Use the same prefix at inference. The recipe uses four action dimensions, a 512 × 512 canvas, and 3,000 updates. Start with the local game config, then create a drone-only config:
The remaining game settings, including caption_dropout=0.0, stay unchanged. The directory outputs/data/rotor needs an index such as:
Each NPZ contains uint8 RGB frames with shape (300, 256, 256, 3) and float32 action with shape (300, 4). The unprefixed task records the instruction followed by the pilot. The adapter prepends fly the drone: once. Two entries illustrate the format; supply enough episodes for the training batch topology. Use the fine-tuning guide’s data checks and short validation run with the new config, then train and export:
This launch uses the current eight-GPU configuration. It is not evidence of the original drone experiment’s hardware or wall time, which the notes do not specify. 800 episodes of 20 seconds at 15 Hz, recorded from the scripted pilot. Five scenarios: standard start, random start, already airborne, near an obstacle, and mid-flight disturbances.

Held-out layouts, unseen wording

Evaluation uses ten layouts excluded from fine-tuning and reworded instructions. For example, “take off, fly to the bookcase, and hover” becomes “go over to the bookshelf and wait there”. The simulator waits for each plan across 89 evaluation flights: The model completed 55 of 89 flights, with 2 crashes. Success was highest for the window, landing pad, and under-table tasks, and lowest for the sofa and above-table tasks. “Bookshelf” and “couch” were absent from the fine-tuning instructions.

”Fly to the window and hover in front of it.” Completed.

”Go over to the bookshelf and wait there.” Completed; “bookshelf” was absent from the fine-tuning instructions.

”Go to the couch.” Completed.

”Fly to the coffee table and hover above it.” One of two successful flights in ten attempts.

”Fly to the bookcase and hover in front of it.” Failed to reach the bookcase.

Run the model

Load the drone export and supply its instruction, image, and previous action:
images.game is the adapter’s camera key for all three example environments, including the drone. Image resizing occurs in the policy. To close the loop, execute your chosen number of actions, store the last command actually sent as state, capture a new onboard image, and predict again. Reset policy state and the previous-action vector at episode boundaries. Choose the execution horizon explicitly; the source notes do not establish which horizon produced the reported 55/89 result. The four channels are normalized movement commands. The source notes do not specify their physical speed limits, yaw units, or coordinate transforms. Your simulator adapter must apply the same conventions used by its demonstration pilot. Preserve the altitude/heading overlay and action dynamics at evaluation.

Evaluate

The reported simulator paused for inference. Record whether yours does too, along with layout seeds, instructions, execution horizon, and checkpoint. Define completion distances, hover duration, landing conditions, collisions, and time limits in your evaluator. The release does not supply these thresholds or a full breakdown of unsuccessful flights.