这里写自定义目录标题
1:由源码安装PCL:
Ubuntu18.04安装PCL库(C++版)教程
https://blog.csdn.net/Boys_Wu/article/details/122000682
得到的pcl文件夹放在/home下就行
注意!!!cmake时不要用默认的
cmake -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_PREFIX=/usr \ -DBUILD_GPU=ON-DBUILD_apps=ON -DBUILD_examples=ON \ -DCMAKE_INSTALL_PREFIX=/usr …
这样是没有编译on_nurbs的,因为需要拟合曲面,所以必须编译这个,参考
https://blog.csdn.net/bianjingyang/article/details/116133046
中的如下操作步骤:
(1)下载PCL的源码:下载链接,然后解压到/home目录下,并更改解压后的文件夹名为pcl。进入该文件目录下,新建build文件夹。
(2)新建终端并切换到刚刚新建的build目录下面,执行命令 cmake-gui.
(3)where is the source code选择解压后的pcl的路径,where to build the binaries选择新建的build路径。然后点击configure选项。
(4)选中BUILD_sruface_on_nurbs选项,再次点击configure,选择USE_UMFPACK选项。选择CMAKE_INSTALL_PREFIX的路径为/usr/local/pcl。(选择路径前需要先在/usr/local/目录下新建pcl文件夹)。 最后点击generate选项.
(5)依然在build目录下新建终端,执行指令make -j2(j后面的数字可以指定,越大程序编译的越快,不过电脑也容易卡死,最大为CPU的核数)。完成之后,执行指令sudo make install将安装好
在第(5)步中,cmake时会报错找不到CHOLMOD,这是因为没有安装这个(这是一个求解稀疏矩阵的包,安装方法参见
https://blog.csdn.net/jixuxjixu3/article/details/5704635
即只要执行apt-get install libsuitesparse-dev 就算是把cholmod所在的稀疏矩阵套件安装完了
//
2.安装完后编译时出现
“没有规则制作……libpcl_.so”的解决方法:
(1)报错中说的libpcl_.so路径下,是不是真的有这些文件,没有就不管,有就全部删掉
(2)全局搜索libpcl_*.so的真正位置
(3)把真正位置链接到报错路径下 : sudo ln -s 真正路径 报错路径
e.g.:
ubuntu18(windows):
sudo ln -s /home/ruofan/pcl/build/lib/libpcl_surface.so /usr/lib/x86_64-linux-gnu/libpcl_surface.so
sudo ln -s /home/ruofan/pcl/build/lib/libpcl_keypoints.so /usr/lib/x86_64-linux-gnu/libpcl_keypoints.so
sudo ln -s /home/ruofan/pcl/build/lib/libpcl_tracking.so /usr/lib/x86_64-linux-gnu/libpcl_tracking.so
sudo ln -s /home/ruofan/pcl/build/lib/libpcl_recognition.so /usr/lib/x86_64-linux-gnu/libpcl_recognition.so
sudo ln -s /home/ruofan/pcl/build/lib/libpcl_stereo.so /usr/lib/x86_64-linux-gnu/libpcl_stereo.so
sudo ln -s /home/ruofan/pcl/build/lib/libpcl_outofcore.so /usr/lib/x86_64-linux-gnu/libpcl_outofcore.so
sudo ln -s /home/ruofan/pcl/build/lib/libpcl_people.so /usr/lib/x86_64-linux-gnu/libpcl_people.so
sudo ln -s /home/ruofan/pcl/build/lib/libpcl_registration.so /usr/lib/x86_64-linux-gnu/libpcl_registration.so
sudo ln -s /home/ruofan/pcl/build/lib/libpcl_segmentation.so /usr/lib/x86_64-linux-gnu/libpcl_segmentation.so
sudo ln -s /home/ruofan/pcl/build/lib/libpcl_features.so /usr/lib/x86_64-linux-gnu/libpcl_features.so
sudo ln -s /home/ruofan/pcl/build/lib/libpcl_filters.so /usr/lib/x86_64-linux-gnu/libpcl_filters.so
sudo ln -s /home/ruofan/pcl/build/lib/libpcl_sample_consensus.so /usr/lib/x86_64-linux-gnu/libpcl_sample_consensus.so
sudo ln -s /home/ruofan/pcl/build/lib/libpcl_ml.so /usr/lib/x86_64-linux-gnu/libpcl_ml.so
sudo ln -s /home/ruofan/pcl/build/lib/libpcl_visualization.so /usr/lib/x86_64-linux-gnu/libpcl_visualization.so
sudo ln -s /home/ruofan/pcl/build/lib/libpcl_search.so /usr/lib/x86_64-linux-gnu/libpcl_search.so
sudo ln -s /home/ruofan/pcl/build/lib/libpcl_kdtree.so /usr/lib/x86_64-linux-gnu/libpcl_kdtree.so
sudo ln -s /home/ruofan/pcl/build/lib/libpcl_io.so /usr/lib/x86_64-linux-gnu/libpcl_io.so
sudo ln -s /home/ruofan/pcl/build/lib/libpcl_octree.so /usr/lib/x86_64-linux-gnu/libpcl_octree.so
sudo ln -s /home/ruofan/pcl/build/lib/libpcl_common.so /usr/lib/x86_64-linux-gnu/libpcl_common.so
ubuntu18(NUC2):
sudo ln -s /usr/local/pcl/lib/libpcl_surface.so /usr/lib/libpcl_surface.so
sudo ln -s /usr/local/pcl/lib/libpcl_keypoints.so /usr/lib/libpcl_keypoints.so
sudo ln -s /usr/local/pcl/lib/libpcl_tracking.so /usr/lib/libpcl_tracking.so
sudo ln -s /usr/local/pcl/lib/libpcl_recognition.so /usr/lib/libpcl_recognition.so
sudo ln -s /usr/local/pcl/lib/libpcl_stereo.so /usr/lib/libpcl_stereo.so
sudo ln -s /usr/local/pcl/lib/libpcl_outofcore.so /usr/lib/libpcl_outofcore.so
sudo ln -s /usr/local/pcl/lib/libpcl_people.so /usr/lib/libpcl_people.so
sudo ln -s /usr/local/pcl/lib/libpcl_registration.so /usr/lib/libpcl_registration.so
sudo ln -s /usr/local/pcl/lib/libpcl_segmentation.so /usr/lib/libpcl_segmentation.so
sudo ln -s /usr/local/pcl/lib/libpcl_features.so /usr/lib/libpcl_features.so
sudo ln -s /usr/local/pcl/lib/libpcl_filters.so /usr/lib/libpcl_filters.so
sudo ln -s /usr/local/pcl/lib/libpcl_sample_consensus.so /usr/lib/libpcl_sample_consensus.so
sudo ln -s /usr/local/pcl/lib/libpcl_ml.so /usr/lib/libpcl_ml.so
sudo ln -s /usr/local/pcl/lib/libpcl_visualization.so /usr/lib/libpcl_visualization.so
sudo ln -s /usr/local/pcl/lib/libpcl_search.so /usr/lib/libpcl_search.so
sudo ln -s /usr/local/pcl/lib/libpcl_kdtree.so /usr/lib/libpcl_kdtree.so
sudo ln -s /usr/local/pcl/lib/libpcl_io.so /usr/lib/libpcl_io.so
sudo ln -s /usr/local/pcl/lib/libpcl_octree.so /usr/lib/libpcl_octree.so
sudo ln -s /usr/local/pcl/lib/libpcl_common.so /usr/lib/libpcl_common.so
3.官网的曲面拟合教程:
https://pcl.readthedocs.io/projects/tutorials/en/master/bspline_fitting.html#bspline-fitting
执行过程:在pcl/doc/tutorials/content/sources/bspline_fitting下建立build,在build里面编译:
cmake .
make
然后在build里面有了可执行程序bspline_fitting,执行它: ./bspline_fitting /home/aerial-manipulator/pcl/test/bunny.pcd /home/hhh.3dm,两个参数中,前一个是输入的点云文件,后一个是输出的网格文件