Accepted by ICRA2025
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.
Create the workspace
mkdir -p catkin_ws/src/
cd catkin_ws/src/Create conda environment
conda create --name litevloc python=3.8
conda activate litevlocInstall 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.gitCreate 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.txtEnter this code to check whether torch-related packages are installed
python test_torch_install.pyBuild LiteVloc as the ROS package (optional)
catkin build litevloc -DPYTHON_EXECUTABLE=$(which python)- Instruction in Performing Map-free Benchmarking
- Instruction in Running LiteVloc with Offline Data
- Instruction in Running LiteVloc with Simulated Matterport3d Environment
- Instruction in Processing Dataset
Issue: cannot import name 'cache' from 'functools'
Replace the original code with Link
from functools import lru_cache
@lru_cache(maxsize=None)
def xxxIssue: /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.7rm /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.5Issue: 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