Foresight — Waypoint Grounding Policy

The spatial grounding policy used by Foresight, a navigation policy that iteratively discovers instruction-relevant visual clues and refines its motion plans for open-world navigation.

What this checkpoint does

The Foresight VLM proposes a trajectory in image space. This policy lifts that image-space plan into metric BEV waypoints for motion control: it consumes an RGB observation plus the rendered plan mask and predicts 10 waypoints of dimension 3.

This is the 48m distance variant, referred to as the 4.8m planning policy in the deployment configs.

Usage

Download into the location the deployment configs expect:

mkdir -p checkpoints/waypoint_policy
hf download ut-amrl/foresight-waypoint-policy \
  gtpassthrough_xformer_kp384_48m.ckpt --local-dir checkpoints/waypoint_policy

legged_deployment/config/waypoint_planner.yaml already points at this path and sets the matching architecture overrides:

grounding_policy.config_name: "model/waypoint/gtpassthrough_xformer"
grounding_policy.checkpoint_path: "checkpoints/waypoint_policy/gtpassthrough_xformer_kp384_48m.ckpt"
grounding_policy.action_head.num_kp: 384
grounding_policy.action_head.dim_feedforward: 384
grounding_policy.action_head.nhead: 8
grounding_policy.action_head.num_layers: 8

These action_head values must match the checkpoint or the weights will not load.

Architecture

Component Setting
Observation encoder Depth-Anything-V2 ViT-S, layers 2/5/8/11, out dim 384
Path encoder EfficientNet-B0, 1 input channel, out dim 64
Spatial encoder ConvNetSpatial over EfficientNet-B0, spatial softmax with 384 keypoints, learnable temperature
Action head TransformerActionHead, d_model 128, 8 heads, 8 layers, FFN 384
Output 10 waypoints x 3 dims

The observation encoder expects Depth-Anything-V2 ViT-S weights, which install_all.sh fetches separately.

Training

Trained for 50 epochs with AdamW (lr 3e-5, weight decay 0.01), cosine schedule with 10% warmup, batch size 32 across 3 GPUs (DDP), Huber loss on waypoint regression. Checkpoint selected on best val/loss.

training_config.yaml in this repo is the full Hydra config from the training run.

This is a complete PyTorch Lightning checkpoint, so it still carries optimizer state alongside state_dict. The deployment loader reads the state_dict key and ignores the rest.

Citation

@article{zhang2026foresight,
  title={Foresight: Iterative Reasoning About Clues that Matter for Navigation},
  author={Zhang, Arthur and Qi, Carl and Su, Donne and Meng, Xiangyun and Zhang, Amy and Biswas, Joydeep},
  journal={arXiv preprint arXiv:2606.12550},
  year={2026}
}
Downloads last month

-

Downloads are not tracked for this model. How to track
Video Preview
loading

Collection including ut-amrl/foresight-waypoint-policy

Paper for ut-amrl/foresight-waypoint-policy