{"id":18792491,"url":"https://github.com/prbonn/pole-localization","last_synced_at":"2026-03-05T05:32:12.824Z","repository":{"id":61848796,"uuid":"366037026","full_name":"PRBonn/pole-localization","owner":"PRBonn","description":"Online Range Image-based Pole Extractor for Long-term LiDAR Localization in Urban Environments","archived":false,"fork":false,"pushed_at":"2024-02-04T12:55:01.000Z","size":53964,"stargazers_count":195,"open_issues_count":0,"forks_count":24,"subscribers_count":14,"default_branch":"main","last_synced_at":"2025-10-05T16:45:06.922Z","etag":null,"topics":["lidar","lidar-point-cloud","localization","mcl","pole-detection","range-image"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PRBonn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-05-10T12:35:42.000Z","updated_at":"2025-09-29T11:27:56.000Z","dependencies_parsed_at":"2024-02-04T14:06:29.110Z","dependency_job_id":null,"html_url":"https://github.com/PRBonn/pole-localization","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/PRBonn/pole-localization","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PRBonn%2Fpole-localization","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PRBonn%2Fpole-localization/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PRBonn%2Fpole-localization/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PRBonn%2Fpole-localization/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PRBonn","download_url":"https://codeload.github.com/PRBonn/pole-localization/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PRBonn%2Fpole-localization/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30111743,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T03:40:26.266Z","status":"ssl_error","status_checked_at":"2026-03-05T03:39:15.902Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["lidar","lidar-point-cloud","localization","mcl","pole-detection","range-image"],"created_at":"2024-11-07T21:20:06.443Z","updated_at":"2026-03-05T05:32:12.800Z","avatar_url":"https://github.com/PRBonn.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Online Range Image-based Pole Extractor for Long-term LiDAR Localization in Urban Environments\n\nThis repo contains the code for our ECMR2021 paper \"Online Range Image-based Pole Extractor for Long-term LiDAR Localization in Urban Environments\" and RAS paper \"Online Pole Segmentation on Range Images for Long-term LiDAR Localization in Urban Environments\".\n\nDeveloped by [Hao Dong](https://sites.google.com/view/dong-hao/) and [Xieyuanli Chen](https://www.ipb.uni-bonn.de/people/xieyuanli-chen/). \n\n\n\u003cimg src=\"data/figs/system.jpg\" width=\"400\"\u003e\n\nOverview of our approach. A. we project the LiDAR point cloud into a range image and B. extract poles in the image. C. based on the extracted poles, we then build a global pole map of the environment. D. we finally propose a pole-based observation model for MCL to localize the robot in the map.\n\n\n## Publication\nIf you use our implementation in your academic work, please cite the corresponding [conference paper](https://www.ipb.uni-bonn.de/wp-content/papercite-data/pdf/dong2021ecmr.pdf) and [journal paper](https://arxiv.org/abs/2208.07364):\n```\n@InProceedings{dong2021ecmr,\nauthor = {H. Dong and X. Chen and C. Stachniss},\ntitle = {{Online Range Image-based Pole Extractor for Long-term LiDAR Localization in Urban Environments}},\nbooktitle = {Proceedings of the European Conference on Mobile Robots (ECMR)},\nyear = {2021}\n}\n```\n\n```\n@article{dong2023jras,\ntitle = {Online pole segmentation on range images for long-term LiDAR localization in urban environments},\njournal = {Robotics and Autonomous Systems},\nvolume ={159},\npages = {104283},\nyear = {2023},\nissn = {0921-8890},\ndoi = {https://doi.org/10.1016/j.robot.2022.104283},\nauthor = {H. Dong and X. Chen and S. S{\\\"a}rkk{\\\"a} and C. Stachniss}\n}\n```\n\n## Dependencies\n\nThe code was tested with Ubuntu **20.04** with its standard python version **3.8**.\n\n- Python dependencies\n\n  ```bash\n  pip install numpy matplotlib open3d-python progressbar2 pyquaternion transforms3d scipy scikit-image networkx numba arrow pykitti\n  ```\n\n\n## How to use\n\n#### NCLT Dataset\nDownload the [dataset](http://robots.engin.umich.edu/nclt/) and extract the data in the `/nclt/data` folder following the recommended [data structure](nclt/README.md), and then run:\n  ```bash\n  python src/ncltpoles.py\n  ```\n\n#### KITTI Dataset\nDownload the KITTI raw data `2011_09_26_drive_0009` by navigating to the `/kitti/raw_data` folder and run:\n  ```bash\n  ./kitti_downloader.sh\n  ```\nthen run:\n  ```bash\n  python src/kittipoles.py\n  ```\n\n#### MulRan Dataset\nDownload the `KAIST 01` and `KAIST 02` [dataset](https://sites.google.com/view/mulran-pr/download) and extract the data in the `/mulran/data` folder following the recommended [data structure](mulran/README.md), and then run:\n  ```bash\n  python src/mulranpoles.py\n  ```\n\n## Pole Dataset\nThe pole datasets are stored in the `/data/pole-dataset/KITTI` and `/data/pole-dataset/NCLT` folders. The data are stored in `.npz` format with the shape `N*2`. Each row represents the `x` and `y` position of one pole. You can evaluate the pole extraction with the groud-truth pole map by running:\n  ```bash\n  python src/test_match.py\n  ```\n\n## Pole Learning\n ```bash\n  python src/ncltpoles_learning.py\n  ```\n\n\n## License\n\nCopyright 2021, Hao Dong, Xieyuanli Chen, Cyrill Stachniss, Photogrammetry and Robotics Lab, University of Bonn.\n\nThis project is free software made available under the MIT License. For details see the LICENSE file.\n\n## Acknowledgement\n\nMany thanks to the excellent open-source projects [polex](https://github.com/acschaefer/polex) and [SalsaNext](https://github.com/TiagoCortinhal/SalsaNext).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprbonn%2Fpole-localization","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprbonn%2Fpole-localization","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprbonn%2Fpole-localization/lists"}