Project Icon

libpointmatcher

快速点云配准的模块化C++库

libpointmatcher是一个开源的模块化C++库,实现了用于点云对齐的迭代最近点(ICP)算法。这个库主要应用于机器人和计算机视觉领域,支持csv、vtk、ply和pcd等多种文件格式,可在Ubuntu、MacOS和Windows上运行。libpointmatcher以C++编写以提高效率,同时提供Python绑定。该库提供了灵活的配置选项,允许用户自定义点云配准过程中的各个步骤。它还包含了多个示例和教程,方便用户快速上手。libpointmatcher采用BSD许可证,适用于学术研究和商业项目。

横幅

libpointmatcher 是一个模块化库,实现了用于对齐点云的迭代最近点(ICP)算法
它在机器人学和计算机视觉领域有应用。

该库用C++编写以提高效率,并提供Python绑定

GitHub 仓库星标数 GitHub 分叉数 GitHub 许可证 GitHub 发布版本(带筛选) Docker 镜像版本(最新语义化版本)

在Awesome LIDAR中提及       在Awesome Robotics Libraries中提及       在Awesome Robotics中提及
            激光雷达                             机器人学                 机器人库


支持的操作系统和架构

libpointmatcher 在我们的构建系统上经过以下架构和操作系统的测试:

  • Ubuntu bionic (18.04), focal (20.04) 和 jammy (22.04)
  • x86 和 arm64/v8

注意:

  • 据报告 libpointmatcher 可在 MacOS OsX (最新版) 和 Windows (最新版) 上运行

★ 版本 >= 1.4.0 发布说明

这个版本的 libpointmatcher 引入了 norlab-build-system (NBS) 作为 git 子模块,用于代码库开发和测试。

执行以下命令克隆带子模块的仓库:

git clone --recurse-submodules https://github.com/norlab-ulaval/libpointmatcher.git

如果之前已克隆 libpointmatcher,执行以下命令获取新的子模块

git submodule update --remote --recursive --init

★ 贡献指南

查看 contributing_instructions.md 获取有关错误报告、代码贡献的说明,以及在您的工作站上设置 libpointmatcher-build-system 以加速本地开发工作流程的说明。

文档和教程

**教程页面快速链接:教程

这些教程使用 Markdown 语法编写,存储在项目的 /doc 文件夹中。它们的范围从介绍性的点云配准材料,到为更有经验的开发人员提供如何扩展库代码库的说明。

Libpointmatcher 的源代码基于 doxygen 进行了全面的文档化,为开发人员提供了简单的 API。这个 API 的示例可以在这里找到,但建议使用为您的版本构建的 doc/html 中的 API。

libpointmatcher 最初由 François PomerleauStéphane Magnenat 开发,作为我们在 ASL-ETH 工作的一部分。 它现在由 François Pomerleau 领导的北方机器人实验室 (Norlab) 维护。

您可以在发布说明中阅读最新变更。

快速入门

虽然我们建议使用教程,但这里有一个快速版本:

该库的依赖项列表较短:

  • Eigen 3 版本,一个现代 C++ 矩阵和线性代数库,
  • boost 1.48 版本及以上,可移植的 C++ 源代码库,
  • libnabo 1.0.7 版本,一个用于低维空间的快速 K 近邻库,

并在以下平台上编译:

Docker 镜像

运行以下命令拉取并在 Docker 容器中运行 libpointmatcher

docker pull norlabulaval/libpointmatcher:latest-ubuntu-focal

docker run -it --rm norlabulaval/libpointmatcher:latest-ubuntu-focal

在 dockerhub 上查看可用的 libpointmatcher 镜像标签

要在 ubuntu 上安装 docker 相关依赖,执行以下命令

cd ./build_system/lpm_utility_script

# 执行 docker 工具安装脚本,即安装 docker 守护进程、docker compose、docker buildx
bash lpm_install_docker_tools.bash

编译和安装

对于不熟悉在 Linux 中编译和安装库的初学者用户,请点击这里获取从源代码编译 libpointmatcher 的详细说明。

为方便起见,您可以使用为 ubuntu 提供的安装程序脚本

bash libpointmatcher_dependencies_installer.bash

# 使用 --help 标志查看可选标志列表
bash libpointmatcher_installer.bash [<可选标志>]

如果您熟悉 Linux 和 CMake,并且已经安装了上述先决条件,以下命令应该可以在您的系统上安装 libpointmatcher。

mkdir build && cd build
cmake ..
make
sudo make install

测试

Libpointmatcher 附带了 Google 测试框架 GTest 的一个版本。单元测试位于 utest/ 目录中,并与 libpointmatcher 一起编译(在编译之前必须将 CMake 变量 BUILD_TESTS 设置为 TRUE)。要运行测试并确保您编译的版本正常工作,请在构建目录中运行测试可执行文件:

cd build
utest/utest --path ../examples/data/

链接到外部项目

我们主要为 cmake 项目 开发,并在 examples/demo_cmake/ 下提供示例文件,以帮助您在自己的项目中使用。我们还在 examples/demo_QT/ 中提供了一个 QT Creator 示例,该示例在 demo.pro 文件中手动列出了所有依赖项。您需要调整这些路径以指向您系统上的适当位置。有关更详细的过程,请查看将项目链接到 libpointmatcher 部分。

文件格式

该库支持不同的文件格式用于导入或导出数据:

  • csv (逗号分隔值)
  • vtk (可视化工具包文件)
  • ply (多边形文件格式)
  • pcd (点云库格式)

这些功能可以在不增加依赖项列表的情况下使用,但功能支持有限。有关更多详细信息,请参阅教程 导入和导出点云。使用这些文件格式从命令行的示例可执行文件可以在 /examples 目录中找到,并在这里有更详细的描述。


引用

如果您在学术环境中使用 libpointmatcher,请引用以下出版物: @article{Pomerleau12comp, 作者 = {Pomerleau, François 和 Colas, Francis 和 Siegwart, Roland 和 Magnenat, Stéphane}, 标题 = {{比较在真实世界数据集上的ICP变体}}, 期刊 = {自主机器人}, 年份 = {2013}, 卷 = {34}, 期 = {3}, 页码 = {133--148}, 月份 = 2月 }

和/或

@INPROCEEDINGS{pomerleau11tracking,
	作者 = {François Pomerleau 和 Stéphane Magnenat 和 Francis Colas 和 Ming Liu 和 Roland Siegwart},
	标题 = {跟踪深度相机:快速ICP的参数探索},
	会议名称 = {IEEE/RSJ国际智能机器人与系统会议论文集(IROS)},
	出版社 = {IEEE出版社},
	页码 = {3824--3829},
	年份 = {2011}
}

延伸阅读

如果你有兴趣了解更多关于不同配准算法的信息,我们最近整理了一篇文献综述,调查了多种解决方案。该综述的组织方式与库相同,并提供了许多基于实际部署的示例。

F. Pomerleau, F. Colas 和 R. Siegwart (2015), "移动机器人点云配准算法综述", 机器人学基础与趋势®:第4卷:第1期,第1-104页。https://doi.org/10.1561/2300000035

如果你无法访问该期刊,可以从这里下载。

更多点云

我们还制作了这些免费提供的数据集,用于测试不同的配准解决方案:

用于点云配准算法的具有挑战性的数据集

替代标签

你可以下载CSV或VTK格式的文件,这些格式直接由库的I/O模块支持。

项目和合作伙伴

如果你在项目中使用libpointmatcher并希望将其列在此处,请联系François Pomerleau

有关使用libpointmatcher完成的更多工作列表,请参阅应用和出版物页面。

许可证

libpointmatcher以宽松的BSD许可证发布。尽情使用吧!


替代标签

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号