MAC 如何配置 PCL 库并在 VS Code 中使用
MAC 如何配置 PCL 库并在 VS Code 中使用
首先,让我们简单介绍一下。PCL(英语:Point Cloud Library)是一个开源的算法库,用于处理点云和计算机视觉中的三维几何过程。PCL包含点云滤波、特征估计、三维重建、点云配准、模型拟合、目标识别和分割等算法。每个模块都由一个更小的库实现(如:libpcl_filters
、libpcl_features
、libpcl_surface
等),可以单独编译。PCL有自己的存储点云的数据格式——PCD(英语:Point Cloud Data),但也可以加载和保存许多其他格式的数据。它是用C++ 编写的,并在BSD许可下发布。
接下来我将介绍我如何在 MAC OS 上配置 PCL 并编译运行一个示例程序。
Step1 安装 Homebrew
打开终端,输入:
ruby -e "$(curl --insecure -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Step2 使用 Home-brew 安装 PCL
brew install pcl
这样就会安装到 PCL 的相关依赖库。我这里下载到的路径是:(通过 ?command + ?shift + . 打开隐藏软件视图)/usr/local/Cellar
下(这在后面的配置中很重要)
Step3 编译并测试一个示例的 PCL 代码
首先,我们需要在工程目录,或者当前的目录下新建 CMakeLists.txt
例如 (~/Desktop/PCL_Test/CMakeLists.txt
),在该文件中写入:
我们可以先在终端中测试是否存在
cmake
,如果不存在可以使用brew install cmake
安装
cmake_minimum_required(VERSION 2.6 FATAL_ERROR) # 选择cmake版本
project(PCLtest) # 给工程命名
find_package(PCL 1.3 REQUIRED COMPONENTS common io) # 使用find_package寻找指定版本PCL的指定模块,如果想导入全部模块,也可以写为 find_package(PCL REQUIRED) include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
add_executable(PCLtest main.cpp)
target_link_libraries(PCLtest ${PCL_LIBRARIES})
这一段我目前也没有看懂。
其次,我们在当前工作目录创建一个 main.cpp
(~/Desktop/PCL_Test/main.cpp
),并写入:
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
int main (int argc, char** argv)
{
pcl::PointCloud<pcl::PointXYZ> cloud;
// Fill in the cloud data
cloud.width = 5;
cloud.height = 1;
cloud.is_dense = false;
cloud.points.resize (cloud.width * cloud.height);
for (size_t i = 0; i < cloud.points.size (); ++i)
{
cloud.points[i].x = 1024 * rand () / (RAND_MAX + 1.0f);
cloud.points[i].y = 1024 * rand () / (RAND_MAX + 1.0f);
cloud.points[i].z = 1024 * rand () / (RAND_MAX + 1.0f);
}
pcl::io::savePCDFileASCII ("test_pcd.pcd", cloud);
std::cerr << "Saved " << cloud.points.size () << " data points to test_pcd.pcd." << std::endl;
for (size_t i = 0; i < cloud.points.size (); ++i)
std::cerr << " " << cloud.points[i].x << " " << cloud.points[i].y << " " << cloud.points[i].z << std::endl;
return (0);
}
随后在,当前工作目录新建 build
文件夹,如(~/Desktop/PCL_Test/build
)
cd ~/Desktop/PCL_Test
mkdir build
最后打开终端,进行编译:
cd build
cmake ..
make
编译后运行工程文件(样例中,我们命名的是 PCLtest
:
>>>> ./PCLtest
>>>> Saved 5 data points to test_pcd.pcd.
0.0080142 0.694695 -0.26015
-0.342265 -0.446349 0.214207
0.173687 -0.84253 -0.400481
-0.874475 0.706127 -0.117635
0.908514 -0.598159 0.744714
Step4 解决在 VS Code 中的使用问题。
因为 PCL
是新下载的,如果我们不把路径告诉 VS Code 的话,就会在 include
的位置,出现特别折磨的红色波浪线。
我们通过以下几步即决:
?command + shift + p
呼叫出命令面板- 选择,
首选项,打开用户设置(JSON)
- 进去后,找到
"C_Cpp.default.includePath"
添加对应路径:(我们只需要添加最后两个即可,eigen
是用于解决 #include <pcl/io/pcd_io.h>
的路径问题。
"C_Cpp.default.includePath": [
"xxxxx",
"/usr/local/Cellar/pcl/1.12.1_2/include/pcl-1.12/",
"/usr/local/Cellar/eigen/3.4.0_1/include/eigen3"
],