Skip to content

RPL-CS-UCL/litevloc_code

Repository files navigation

LiteVloc: Map-Lite Visual Localization for Image-Goal Navigation

Accepted by ICRA2025

Overview of LiteVloc

LiteVLoc is an independently runnable ROS/Python visual localization package. It is used by OpenNavMap (https://github.com/RPL-CS-UCL/OpenNavMap) as a git submodule, but can also be used as a standalone localization system.

LiteVLoc is a hierarchical visual localization framework designed to enable efficient and precise camera pose estimation using lightweight topometric maps. Our goal is for this package to serve as a foundational tool for scalable navigation, empowering researchers and developers to build advanced robotic systems with ease.


We use the AR glass to create a lightweight topometric map for camera pose estimation and path planning. We can show an image to the robot, and the robot can autonomously navigate to the goal. Please check our paper for the technical explanation and website for more demonstrations.

Requirements

Create the workspace

mkdir -p catkin_ws/src/
cd catkin_ws/src/

Create conda environment

conda create --name litevloc python=3.8
conda activate litevloc

Install image-matching-methods

git clone git@github.com:gogojjh/image-matching-models.git --recursive
cd image-matching-models && python -m pip install -e .

Install VPR-evaluation-methods

git clone git@github.com:gogojjh/VPR-methods-evaluation.git

Create conda environment (NVIDIA GeForce RTX 4090 and CUDA 11.8)

git clone https://github.com/RPL-CS-UCL/litevloc_code
conda install pytorch=2.0.1 torchvision=0.15.2 pytorch-cuda=11.8 numpy=1.24.3 -c pytorch -c nvidia # use the correct version of cuda for your system
pip install -r requirements.txt

Enter this code to check whether torch-related packages are installed

python test_torch_install.py

Build LiteVloc as the ROS package (optional)

catkin build litevloc -DPYTHON_EXECUTABLE=$(which python)

We provide several usage of LiteVloc

  1. Instruction in Performing Map-free Benchmarking
  2. Instruction in Running LiteVloc with Offline Data
  3. Instruction in Running LiteVloc with Simulated Matterport3d Environment
  4. Instruction in Processing Dataset

Issues

Issue: cannot import name 'cache' from 'functools'

Replace the original code with Link

from functools import lru_cache
@lru_cache(maxsize=None)
    def xxx

Issue: /lib/aarch64-linux-gnu/libp11-kit.so.0: undefined symbol: ffi_type_pointer, version LIBFFI_BASE_7.0 using cv_bridge

Change the .so. Complete tutorial is shown here

rm /Rocket_ssd/miniconda3/envs/litevloc/lib/libffi.so.7
ln -s /usr/lib/aarch64-linux-gnu/libffi.so.7 /Rocket_ssd/miniconda3/envs/litevloc/lib/libffi.so.7
rm /Rocket_ssd/miniconda3/envs/litevloc/lib/libtiff.so.5
ln -s /usr/lib/x86_64-linux-gnu/libtiff.so.5 /Rocket_ssd/miniconda3/envs/litevloc/lib/libtiff.so.5

Issue: ImportError: /lib/aarch64-linux-gnu/libgomp.so.1: cannot allocate memory in static TLS block

Set this in the bash file: export LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libgomp.so.1

About

LiteVLoc: Map-Lite Visual Localization for Image Goal Navigation

Resources

Stars

141 stars

Watchers

8 watching

Forks

Packages

 
 
 

Contributors