Skip to main content

ADR: Real-Time and Robust 3D Place Recognition with Adaptive Data Reorganization and Geodesic-Constrained Plane Suppression

Project description

ADR: Real-Time and Robust 3D Place Recognition with Adaptive Data Reorganization and Geodesic-Constrained Plane Suppression

Project Page arXiv GitHub License Latest Release

[NOTE]
This document may be out of date. See adr_code for the latest document.
This source code was based on STD: A Stable Triangle Descriptor for 3D place recognition.

💡 News

  • September 2025: Accepted at RA-L

🍝 Install with pip

  1. Install dependencies

    sudo apt update \
    && sudo apt install libgoogle-glog-dev \
        libgflags-dev \
        libatlas-base-dev \
        libeigen3-dev \
        libpcl-dev \
        libtbb-dev
    
  2. Install python package

    pip install relocal_adr
    

🎼 Usage

  1. Init place recognition object

    from relocal_adr import ADR, Feature
    from yaml import safe_load
    
    cfg = safe_load(open("config_kitti.yaml", "r"))
    adr = ADR(cfg)
    
  2. Extract Descriptor from points

    # It is recommended to use dense point clouds
    frame_num = 10
    
    # Select the data loading method independently according to the data set
    # Load points in world frame, !!! NOT LOCAL FRAME !!!
    points: np.ndarray = dataloader.get(start_id, frame_num, frame.WORLD)
    
    # Extract feature from raw points
    feature: Feature = adr.extract(points)
    
  3. Query matching results

    ress = adr.query(feature)
    
    # Print results
    if ress[0] >= 0:
        print(f"current frame match frame[{id}] in database, score is: {score}")
    
  4. Update the feature to the database

    adr.update(feature)
    
  5. For detailed usage, see demo.py

🐋 Develop in Docker

  1. Build docker image

    docker compose build --pull
    
  2. Attach the service with VSCode

    • Install ms-vscode-remote.remote-containers in vscode extension marketplace
    • Press F1, search "reopen in container"
    • Click it, and all settings are complete
  3. Install local package

    uv sync
    uv pip install ./relocal_adr
    

🔗 Datasets

The demo sample uses the kitti_odom_2012_dataloader to load data. Similar data loaders include

  • kaist-dataloader
  • nclt-dataloader
  • wild-dataloader

can be installed directly using pip

📝 Citation

@ARTICLE{wang2025adr,
  author={Wang, Chengmin and Zhuang, Yan and Yan, Fei and Zhang, Xuetao},
  journal={IEEE Robotics and Automation Letters}, 
  title={Real-Time and Robust 3D Place Recognition With Adaptive Data Reorganization and Geodesic-Constrained Plane Suppression}, 
  year={2025},
  volume={10},
  number={11},
  pages={11251-11258},
  doi={10.1109/LRA.2025.3609614}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

relocal_adr-0.1.0.tar.gz (48.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

relocal_adr-0.1.0-cp38-cp38-manylinux_2_31_x86_64.whl (14.9 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.31+ x86-64

File details

Details for the file relocal_adr-0.1.0.tar.gz.

File metadata

  • Download URL: relocal_adr-0.1.0.tar.gz
  • Upload date:
  • Size: 48.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.2

File hashes

Hashes for relocal_adr-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b1b65bc9d7fa26afebe957fe634838dfbad8b56a397367b30c65641aa5851871
MD5 ef0f658f50ee9b6ad59e8f64f198d19e
BLAKE2b-256 564d11992b44894a27af9086c0fbb00b950b94373a1a4df2a0bcb71758aef859

See more details on using hashes here.

File details

Details for the file relocal_adr-0.1.0-cp38-cp38-manylinux_2_31_x86_64.whl.

File metadata

File hashes

Hashes for relocal_adr-0.1.0-cp38-cp38-manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 022638b491f0af56ae912ace3fae9e835b7ac3739f43656a5261ee0de36b82fb
MD5 4d68878a43d5aaff7e13b76ea9a8c246
BLAKE2b-256 2cfa60193c679bb9da4bb905758908e335e6a15dd4a5210058469ef9e18f5852

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page