支持的操作系统和架构
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 Pomerleau 和 Stéphane Magnenat 开发,作为我们在 ASL-ETH 工作的一部分。 它现在由 François Pomerleau 领导的北方机器人实验室 (Norlab) 维护。
您可以在发布说明中阅读最新变更。
快速入门
虽然我们建议使用教程,但这里有一个快速版本:
该库的依赖项列表较短:
并在以下平台上编译:
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。
- 欧洲项目NIFTi (FP7 ICT-247870):动态环境中的搜索和救援项目。结果:多层重建视频和铁路场重建视频。所有结果均为实时计算。
- NASA艾姆斯研究中心立体视觉管道:基于卫星观测的行星重建。结果:用于火星、月球和地球点云。
- Armasuisse S+T无人地面车辆研究计划ARTOR:开发技术,实现轮式机器人在崎岖户外地形中可靠的自主导航。结果:城市和动态3D重建视频和开放空间3D重建视频,均为实时计算。
- 瑞士国家科学基金会 - Limnobotics:湖泊中有毒藻类监测的机器人解决方案。结果:3D岸线重建视频,实时计算。
- CGAL在其配准流程中包含了我们的库。
- Norlab正在维护并使用该库进行恶劣环境自主导航的研究。
- ANYbotics AG正在使用该库研究自主导航算法。
- Point Laz Mining LiDAR Expert正在扫描矿井以确保基础设施安全。
有关使用libpointmatcher完成的更多工作列表,请参阅应用和出版物页面。
许可证
libpointmatcher以宽松的BSD许可证发布。尽情使用吧!