Model-centric vision-language exploration and navigation pipeline implementation for the VL-explore paper (arXiv:2502.08791).
Important
This repository is not intended to run stand-alone for full robot navigation.
It is used as part of the OpenRover/ROS2-WorkSpace integration on branch zero-shot-nav, where it is included under the src/perception stack.
This package provides the model-centric perception and navigation logic centered around:
- CLIP-based visual embedding (
models/clip.py) - Prompt-based semantic scoring (
prompts/*.yaml,prompts/__init__.py) - Per-tile navigation correlation and familiarity memory (
ros2/threads/correlator.py) - Motion mixing and decision logic (
lib/motion_mixer.py,ros2/threads/navigation.py) - Look-around recovery behavior when trapped (
ros2/threads/navigation.py,ros2/utils/look_around.py)
The ROS2 execution path is split into cooperative components:
-
Perception (
ros2/threads/perception.py)- Subscribes to
image - Slices frames into tiles based on strategy (default
6T1P) - Encodes tiles with CLIP image encoder
- Publishes embeddings over local socket transport
- Subscribes to
-
Correlator (
ros2/threads/correlator.py)- Loads navigation and target prompts
- Correlates prompt embeddings with visual embeddings
- Maintains rolling familiarity database for known-space awareness
- Publishes correlation frames
-
Navigation (
ros2/threads/navigation.py)- Consumes correlation frames
- Produces velocity commands (
geometry_msgs/Twistonmotion) - Tracks trap conditions via
haltand odometry travel - Runs look-around + reorientation recovery
-
Recorder (
ros2/threads/recorder.py, optional)- Dumps perception/correlation/navigation streams and frames for analysis
This repository is designed as a reusable module in a larger ROS2 system. Full operation requires external workspace-level assets (robot bringup, topic sources, launch orchestration, and platform integration).
Use it through:
- Organization:
OpenRover - Workspace repo:
ROS2-WorkSpace - Branch:
zero-shot-nav - Role: integrated
perception/navigation stack (submodule-managed in workspace setup)
If you only clone this repo, you will have the algorithm code but not the complete runtime environment needed for end-to-end robot deployment.
- Python 3.10+
- ROS 2 (ament Python package environment)
- PyTorch-compatible runtime (CPU/GPU)
- OpenCV runtime dependencies
Python dependencies are listed in requirements.txt:
torch,torchvisionopen-clip-torchultralyticsopencv-pythonnumpy,Pillow,tqdm,termcolor,black
From this repository root:
make initThis creates .env, installs Python requirements, and marks the venv with COLCON_IGNORE for workspace compatibility.
Regenerate cached prompt embeddings after prompt changes:
make promptsRemove local environment:
make deinitsetup.py exposes these console scripts:
perception→ros2.threads.perception:maincorrelator→ros2.threads.correlator:mainnavigation→ros2.threads.navigation:mainrecorder→ros2.threads.recorder:mainnode→ros2.node:main
In integrated workspace usage, these are typically launched by workspace-level orchestration rather than manually.
Default strategy is parameterized in ros2/utils/ros.py via ROS param strategy:
6T1P(default): 6 image tiles, 1 prompt group- Additional strategy classes exist in
lib/strategies.py
Prompt families are defined under prompts/:
navigation.yamltarget.yaml- directional prompt sets and templates
This repository also includes standalone analysis utilities:
main.py: video-file navigation overlay prototype (data/<dataset>.mp4input)correlate.py: image-to-prompt correlation dump
These are useful for algorithm inspection, but they are not a substitute for full ROS2 workspace integration.
models/— CLIP/YOLO model wrappersprompts/— prompt templates and cached embeddingslib/— slicing, rendering, motion-mixing strategiesros2/threads/— ROS2 pipeline componentsros2/utils/— ROS helpers, look-around rendering/analysis toolsutil/— shared utilities (transport, queue, logging, math, geometry)
@misc{zhang2025vlexplore,
title={VL-Explore: Zero-shot Vision-Language Exploration and Target Discovery by Mobile Robots},
author={Yuxuan Zhang and Adnan Abdullah and Sanjeev J. Koppal and Md Jahidul Islam},
year={2025},
eprint={2502.08791},
archivePrefix={arXiv},
primaryClass={cs.RO},
url={https://arxiv.org/abs/2502.08791},
}MIT (see LICENSE).