An Adaptive Exploration Strategy for Zero-Shot Object Navigation with Target-centric Semantic Fusion
Mingjie Zhang1, Yuheng Du1, Chengkai Wu1, Jinni Zhou1, Zhenchao Qi1, Jun Ma1, Boyu Zhou2,†
1 The Hong Kong University of Science and Technology (Guangzhou).
2 Southern University of Science and Technology.
†Corresponding Authors
- [22/08/2025]: Release the main algorithm of ApexNav.
- [18/08/2025]: ApexNav is conditionally accepted to RA-L 2025.
[RA-L'25] This repository maintains the implementation of "ApexNav: An Adaptive Exploration Strategy for Zero-Shot Object Navigation with Target-centric Semantic Fusion".
The pipeline of ApexNav is detailed in the overview below.
Tested on Ubuntu 20.04 with ROS Noetic and Python 3.9
sudo apt update
sudo apt-get install libarmadillo-dev libompl-devA simple cross-platform C++ library for terminal based user interfaces.
git clone https://github.com/ArthurSonzogni/FTXUI
cd FTXUI
mkdir build && cd build
cmake ..
make -j
sudo make installYou can skip LLM configuration and directly use our pre-generated LLM output results in
llm/answers
ollama
curl -fsSL https://ollama.com/install.sh | sh
ollama pull qwen3:8bgit clone git@github.com:WongKinYiu/yolov7.git # yolov7
git clone https://github.com/IDEA-Research/GroundingDINO.git # GroundingDINODownload the following model weights and place them in the data/ directory:
mobile_sam.pt: https://github.com/ChaoningZhang/MobileSAM/tree/master/weights/mobile_sam.ptgroundingdino_swint_ogc.pth:wget -O data/groundingdino_swint_ogc.pth https://github.com/IDEA-Research/GroundingDINO/releases/download/v0.1.0-alpha/groundingdino_swint_ogc.pth
yolov7-e6e.pt:wget -O data/yolov7-e6e.pt https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7-e6e.pt
git clone git@github.com:Robotics-STAR-Lab/ApexNav.git
cd ApexNavconda env create -f apexnav_environment.yaml -y
conda activate apexnav# You can use 'nvcc --version' to check your CUDA version.
# CUDA 11.8
pip install torch==2.5.0 torchvision==0.20.0 torchaudio==2.5.0 --index-url https://download.pytorch.org/whl/cu118
# CUDA 12.1
pip install torch==2.5.0 torchvision==0.20.0 torchaudio==2.5.0 --index-url https://download.pytorch.org/whl/cu121
# CUDA 12.4
pip install torch==2.5.0 torchvision==0.20.0 torchaudio==2.5.0 --index-url https://download.pytorch.org/whl/cu124We recommend using habitat-lab v0.3.1
# habitat-lab v0.3.1
git clone https://github.com/facebookresearch/habitat-lab.git
cd habitat-lab; git checkout tags/v0.3.1;
pip install -e habitat-lab
# habitat-baselines v0.3.1
pip install -e habitat-baselinesNote: Any numpy-related errors will not affect subsequent operations, as long as numpy==1.23.5 and numba==0.60.0 are correctly installed.
pip install salesforce-lavis==1.0.2 # -i https://pypi.tuna.tsinghua.edu.cn/simple
cd .. # Return to ApexNav directory
pip install -e .Note: Any numpy-related errors will not affect subsequent operations, as long as numpy==1.23.5 and numba==0.60.0 are correctly installed.
Coming soon.
Coming soon.
All following commands should be run in the
apexnavconda environment
catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3Each command should be run in a separate terminal.
python -m vlm.detector.grounding_dino --port 12181
python -m vlm.itm.blip2itm --port 12182
python -m vlm.segmentor.sam --port 12183
python -m vlm.detector.yolov7 --port 12184source ./devel/setup.bash && roslaunch exploration_manager rviz.launch # RViz visualization
source ./devel/setup.bash && roslaunch exploration_manager exploration.launch # ApexNav main algorithmYou can evaluate on all episodes of a dataset.
# Need to source the workspace
source ./devel/setup.bash
# Choose one datasets to evaluate
python habitat_evaluation.py --dataset hm3dv1
python habitat_evaluation.py --dataset hm3dv2 # default
python habitat_evaluation.py --dataset mp3d
# You can also evaluate on one specific episode.
python habitat_evaluation.py --dataset hm3dv2 test_epi_num=10 # episode_id 10You can also choose to manually control the agent in the Habitat simulator:
# Need to source the workspace
source ./devel/setup.bash
python habitat_manual_control.py --dataset hm3dv1 # Default episode_id = 0
python habitat_manual_control.py --dataset hm3dv1 test_epi_num=10 # episode_id = 10- Release the main algorithm of ApexNav
- Complete Installation and Usage documentation
- Add datasets download documentation
- Add acknowledgment documentation
- Add utility tools documentation
- Release the code of real-world deployment
- Add ROS2 support
@article{zhang2025apexnav,
title={ApexNav: An Adaptive Exploration Strategy for Zero-Shot Object Navigation with Target-centric Semantic Fusion},
author={Zhang, Mingjie and Du, Yuheng and Wu, Chengkai and Zhou, Jinni and Qi, Zhenchao and Ma, Jun and Zhou, Boyu},
journal={arXiv preprint arXiv:2504.14478},
year={2025}
}