relocal-adr


Namerelocal-adr JSON
Version 0.1.1 PyPI version JSON
download
home_pageNone
SummaryADR: Real-Time and Robust 3D Place Recognition with Adaptive Data Reorganization and Geodesic-Constrained Plane Suppression
upload_time2025-10-12 12:15:48
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseMIT License Copyright (c) 2025 DUT Smart Robot Lab Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
keywords pointcloud lidar autonomous driving place recognition 3d vision loop closure detection
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # ADR: Real-Time and Robust 3D Place Recognition with Adaptive Data Reorganization and Geodesic-Constrained Plane Suppression

[![Project Page](https://img.shields.io/badge/Project%20Page-6cc644&cacheSeconds=60)](https://utn-air.github.io/flownav.github.io/)
[![arXiv](https://img.shields.io/badge/DOI-10.1109%2FLRA.2025.3609614-b31b1b.svg)](https://ieeexplore.ieee.org/document/11162696)
![GitHub License](https://img.shields.io/badge/LICENSE-MIT-pink)
[![Latest Release](https://img.shields.io/github/v/release/HopeCollector/adr_code
)](https://github.com/utn-air/flownav/releases)

> [**NOTE**]  
> This document may be out of date. See [adr_code](https://github.com/HopeCollector/adr_code) for the latest document.  
> This source code was based on [STD: A Stable Triangle Descriptor for 3D place recognition](https://github.com/hku-mars/STD).  

## 💡 News

- **September 2025**: Accepted at [RA-L](https://ieeexplore.ieee.org/document/11162696)

## 🍝 Install with pip

1. Install dependencies

    ```bash
    sudo apt update \
    && sudo apt install libgoogle-glog-dev \
        libgflags-dev \
        libatlas-base-dev \
        libeigen3-dev \
        libpcl-dev \
        libtbb-dev
    ```

2. Install python package

    ```bash
    pip install relocal_adr
    ```

## 🎼 Usage

1. Init place recognition object

    ```python
    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

    ```python
    # 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

    ```python
    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

    ```python
    adr.update(feature)
    ```

5. For detailed usage, see [demo.py](./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

    ```bash
    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}
}

```
            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "relocal-adr",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "pointcloud, lidar, autonomous driving, place recognition, 3d vision, loop closure detection",
    "author": null,
    "author_email": "HopeCollector <cmw0249@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/1c/6b/043149c6dc4f2f6a6ca07d069cf26ae9d35353293e3c89ebdeb1ab521538/relocal_adr-0.1.1.tar.gz",
    "platform": null,
    "description": "# ADR: Real-Time and Robust 3D Place Recognition with Adaptive Data Reorganization and Geodesic-Constrained Plane Suppression\n\n[![Project Page](https://img.shields.io/badge/Project%20Page-6cc644&cacheSeconds=60)](https://utn-air.github.io/flownav.github.io/)\n[![arXiv](https://img.shields.io/badge/DOI-10.1109%2FLRA.2025.3609614-b31b1b.svg)](https://ieeexplore.ieee.org/document/11162696)\n![GitHub License](https://img.shields.io/badge/LICENSE-MIT-pink)\n[![Latest Release](https://img.shields.io/github/v/release/HopeCollector/adr_code\n)](https://github.com/utn-air/flownav/releases)\n\n> [**NOTE**]  \n> This document may be out of date. See [adr_code](https://github.com/HopeCollector/adr_code) for the latest document.  \n> This source code was based on [STD: A Stable Triangle Descriptor for 3D place recognition](https://github.com/hku-mars/STD).  \n\n## \ud83d\udca1 News\n\n- **September 2025**: Accepted at [RA-L](https://ieeexplore.ieee.org/document/11162696)\n\n## \ud83c\udf5d Install with pip\n\n1. Install dependencies\n\n    ```bash\n    sudo apt update \\\n    && sudo apt install libgoogle-glog-dev \\\n        libgflags-dev \\\n        libatlas-base-dev \\\n        libeigen3-dev \\\n        libpcl-dev \\\n        libtbb-dev\n    ```\n\n2. Install python package\n\n    ```bash\n    pip install relocal_adr\n    ```\n\n## \ud83c\udfbc Usage\n\n1. Init place recognition object\n\n    ```python\n    from relocal_adr import ADR, Feature\n    from yaml import safe_load\n\n    cfg = safe_load(open(\"config_kitti.yaml\", \"r\"))\n    adr = ADR(cfg)\n    ```\n\n2. Extract Descriptor from points\n\n    ```python\n    # It is recommended to use dense point clouds\n    frame_num = 10\n\n    # Select the data loading method independently according to the data set\n    # Load points in world frame, !!! NOT LOCAL FRAME !!!\n    points: np.ndarray = dataloader.get(start_id, frame_num, frame.WORLD)\n\n    # Extract feature from raw points\n    feature: Feature = adr.extract(points)\n    ```\n\n3. Query matching results\n\n    ```python\n    ress = adr.query(feature)\n\n    # Print results\n    if ress[0] >= 0:\n        print(f\"current frame match frame[{id}] in database, score is: {score}\")\n    ```\n\n4. Update the feature to the database\n\n    ```python\n    adr.update(feature)\n    ```\n\n5. For detailed usage, see [demo.py](./demo.py)\n\n## \ud83d\udc0b Develop in Docker\n\n1. Build docker image\n    \n    ```\n    docker compose build --pull\n    ```\n\n2. Attach the service with VSCode\n\n    - Install `ms-vscode-remote.remote-containers` in vscode extension marketplace\n    - Press `F1`, search \"reopen in container\"\n    - Click it, and all settings are complete\n\n3. Install local package\n\n    ```bash\n    uv sync\n    uv pip install ./relocal_adr\n    ```\n\n## \ud83d\udd17 Datasets\n\nThe demo sample uses the `kitti_odom_2012_dataloader` to load data. Similar data loaders include\n\n- kaist-dataloader\n- nclt-dataloader\n- wild-dataloader\n\ncan be installed directly using pip\n\n## \ud83d\udcdd Citation\n\n```\n@ARTICLE{wang2025adr,\n  author={Wang, Chengmin and Zhuang, Yan and Yan, Fei and Zhang, Xuetao},\n  journal={IEEE Robotics and Automation Letters}, \n  title={Real-Time and Robust 3D Place Recognition With Adaptive Data Reorganization and Geodesic-Constrained Plane Suppression}, \n  year={2025},\n  volume={10},\n  number={11},\n  pages={11251-11258},\n  doi={10.1109/LRA.2025.3609614}\n}\n\n```",
    "bugtrack_url": null,
    "license": "MIT License  Copyright (c) 2025 DUT Smart Robot Lab  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.",
    "summary": "ADR: Real-Time and Robust 3D Place Recognition with Adaptive Data Reorganization and Geodesic-Constrained Plane Suppression",
    "version": "0.1.1",
    "project_urls": {
        "Documentation": "https://github.com/HopeCollector/adr_code#readme",
        "Homepage": "https://github.com/HopeCollector/adr_code",
        "Source": "https://github.com/HopeCollector/adr_code"
    },
    "split_keywords": [
        "pointcloud",
        " lidar",
        " autonomous driving",
        " place recognition",
        " 3d vision",
        " loop closure detection"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "84f6ade9a94442d309831222cce281806784231d08a8fa4060a8690e68d1e3dc",
                "md5": "f45c1154db3a2f83e4ad8691aec6dfd7",
                "sha256": "e2ad45dce29ac4d50d50754b971de88c7b5964e1ffab7da716593039e61fda60"
            },
            "downloads": -1,
            "filename": "relocal_adr-0.1.1-cp38-cp38-manylinux_2_31_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f45c1154db3a2f83e4ad8691aec6dfd7",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 14902978,
            "upload_time": "2025-10-12T12:15:46",
            "upload_time_iso_8601": "2025-10-12T12:15:46.480142Z",
            "url": "https://files.pythonhosted.org/packages/84/f6/ade9a94442d309831222cce281806784231d08a8fa4060a8690e68d1e3dc/relocal_adr-0.1.1-cp38-cp38-manylinux_2_31_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1c6b043149c6dc4f2f6a6ca07d069cf26ae9d35353293e3c89ebdeb1ab521538",
                "md5": "6e7d65f190a1d4c2e8e51bc3994c5e57",
                "sha256": "4b296829cd40ed69718c2c64db5cca94496b75ef1dbcb1674d1ff15f69d6b2f7"
            },
            "downloads": -1,
            "filename": "relocal_adr-0.1.1.tar.gz",
            "has_sig": false,
            "md5_digest": "6e7d65f190a1d4c2e8e51bc3994c5e57",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 52591,
            "upload_time": "2025-10-12T12:15:48",
            "upload_time_iso_8601": "2025-10-12T12:15:48.819267Z",
            "url": "https://files.pythonhosted.org/packages/1c/6b/043149c6dc4f2f6a6ca07d069cf26ae9d35353293e3c89ebdeb1ab521538/relocal_adr-0.1.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-12 12:15:48",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "HopeCollector",
    "github_project": "adr_code#readme",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "relocal-adr"
}
        
Elapsed time: 1.20471s