Challenge Participation
Official HA-VLN repository: https://github.com/JostarXiong/HA-VLN
This guide provides a quick overview of how to participate in the RoboWorld 2026 Track 2 (HA-VLN) Challenge. For full details, see the Challenge Overview and Submission Format.
Quick Start Checklist
1. Environment Setup
- [ ] Pull pre-built Docker image (
ghcr.io/jostarxiong/havln-challenge-2026@sha256:78a62cd176d2fd7d0e2825f4cb5be2488ebc5f1a354649b7b4f536a98f1054f4) or set up Native Conda (Py3.8 / CUDA 11.8) - [ ] Run verification tests (
python scripts/demo.py --scan 1LXtFkjw3qL --headless)
2. Data Preparation
- [ ] Download HA-R2R dataset & HAPS 2.0 human motion models via Hugging Face (
hf download fly1113/HA-VLN) - [ ] Download Matterport3D scenes (
download_mp.py+ unzip intoData/scene_datasets) - [ ] Verify dataset layout
3. Agent Integration & Action Recording
- [ ] Configure your agent for HA-VLN environment (
HAVLNCE_task.yaml) - [ ] Record discrete string actions during inference
- [ ] Test on
val_seen(778 episodes) andval_unseen(1,839 episodes)
4. Submission
- [ ] Export
val_seen.jsonandval_unseen.jsonwithformat_version: 1 - [ ] Create
submission.zipcontaining both JSON files - [ ] Validate locally via Docker container:
docker run --rm -v "$(pwd):/workspace" "$IMAGE" havln-validate /workspace/submission.zip - [ ] Submit to CodaBench
Action Vocabulary
The simulator environment evaluates six discrete string actions:
| Action | Description |
|---|---|
"STOP" |
End episode (must be the final action) |
"MOVE_FORWARD" |
Advance agent by 0.25m |
"TURN_LEFT" |
Rotate heading left by 15° |
"TURN_RIGHT" |
Rotate heading right by 15° |
"LOOK_UP" |
Pitch sensor upward by 30° |
"LOOK_DOWN" |
Pitch sensor downward by 30° |
Recording Actions during Inference
# During agent inference, record actions as strings from the vocabulary:
action_names = tuple(config.TASK_CONFIG.TASK.POSSIBLE_ACTIONS)
action_traces = {str(ep.episode_id): [] for ep in current_episodes}
# In your step loop:
for episode, action_id in zip(current_episodes, actions):
action_traces[str(episode.episode_id)].append(action_names[action_id])
Export each split to JSON (val_seen.json, val_unseen.json):
with open(f"{split}.json", "w", encoding="utf-8") as f:
json.dump({
"format_version": 1,
"split": split,
"episodes": [
{"episode_id": ep_id, "actions": action_traces[ep_id]}
for ep_id in sorted(action_traces)
]
}, f, indent=2)
Package the submission:
zip -j submission.zip val_seen.json val_unseen.json
# Validate via Docker container (or 'havln-validate submission.zip' inside container):
IMAGE=ghcr.io/jostarxiong/havln-challenge-2026@sha256:78a62cd176d2fd7d0e2825f4cb5be2488ebc5f1a354649b7b4f536a98f1054f4
docker run --rm -v "$(pwd):/workspace" "$IMAGE" havln-validate /workspace/submission.zip