pcl 不同版本共存

pcl依赖库的安装:

sudo apt install libx11-dev libxext-dev libxtst-dev libxrender-dev libxmu-dev libxmuu-dev
sudo apt install libgl1-mesa-dev libglu1-mesa-dev
sudo apt install freeglut3-dev libboost-all-dev libeigen3-dev libflann-dev libglew-dev
sudo apt install libpcap-dev libusb-1.0-0-dev libopenni-dev libopenni2-dev clang-format libqhull-dev

安装metslib

wget https://www.coin-or.org/download/source/metslib/metslib-0.5.3.tgz
tar xzvf metslib-0.5.3.tgz
cd metslib-0.5.3
./configure
make -j`nproc`
sudo make install

注释掉VTK

从github上下载pcl1-13.0后,先修改CMakeLists.txt文件,不编译vtk相关的代码:vtk的问题比较难解决,但是一般我们安装pcl都是为了一些新特性的算法,而vtk就是可视化相关的,所以不要这部分也可以。,搜寻CMakeLists.txt中搜索vtk关键字,将有关vtk的都注释掉,再cmake,这样一来有关可视化的module就不会build了,也不需要依赖vtk

# Reset VTK_FOUND to off
# set(VTK_FOUND OFF)
# # Find VTK - VTK has to be found before Qt, otherwise it can overwrite Qt variables
# option(WITH_VTK "Build VTK-Visualizations" TRUE)
# if(WITH_VTK)
#   if(ANDROID)
#     message(WARNING "VTK is not supported on Android.")
#   else()
#     include("${PCL_SOURCE_DIR}/cmake/pcl_find_vtk.cmake")
#   endif()
# endif()

pcl 1.13编译与安装

cd ~/pcl-1.13.0
mkdir install
mkdir build && cd build       # 创建一个build文件夹并进入
cmake -DCMAKE_INSTALL_PREFIX=~/pcl-1.13.0/install ..
# 编译选项解释:
# CMAKE_BUILD_TYPE=None  别的教程上都有这一个
# CMAKE_INSTALL_PREFIX   编译后安装的地址,可自行修改
# 其他值得注意的编译选项:
# BUILD_CUDA             编译CUDA功能,需要NVIDIA显卡和驱动支持
# BUILD_GPU              编译GPU功能
# VTK_DIR                VTK的安装目录,如果是自行安装的VTK需要定位到“VTK安装目录/lib/cmake/vtk-7.1”
make
make install # 安装
make clean  # 删除编译产生的临时文件

新建安装路径:新建安装目录,~/pcl-1.13.0/install, 注意这里最好不要安装到系统根目录下,也就是默认的/usr/local/下,因为经过我测试发现在自己的电脑上,如果安装到了/usr/local/下,最后链接pcl的库的时候会默认链接到这个路径下的库,也就是自己新安装的pcl-1.13的库。但是绝大部分工程都是使用ROS自带的pcl-1.10的,这个时候虽然编译可以通过,但是运行的时候会出错。所以保险的方式就是不要安装到/usr/local/下,而是安装到自己的用户目录下,然后特殊的工程需要使用pcl-1.13的,那么就在CMakeLists.txt中手动指定PCL的路径;而其他的绝大多数工程使用PCL-1.10就不用动了,仍然会链接到ROS自带的pcl-1.10中。

在工程中使用新版本的PCL-1.13

一般来说使用ROS自带的pcl-1.18的时候都会使用如下命令:

find_package(catkin REQUIRED COMPONENTS
	pcl_conversions
	pcl_ros
)

这样就会找的默认安装的pcl-1.10。
使用新版本的pcl-1.13,则需要把上述的语句注释掉,然后手动寻找pcl的库。因此写成如下形式

find_package(catkin REQUIRED COMPONENTS
	# pcl_conversions
	# pcl_ros
)
set(PCL_DIR "/home/cc/MyLibInstall/pcl-1.13/share/pcl-1.13")   # 
find_package(PCL 1.13 REQUIRED PATHS ~/pcl-pcl-1.13.0/install NO_DEFAULT_PATH)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})

这样后面就可以全部链接到pcl-1.13了,而不会链接到pcl-1.8。

pcl-1.13误装到/usr/local/下如何卸载

如果新版本pcl-1.13误装到/usr/local/下,其他工程都会优先链接到这个版本的pcl。删除cmake源码编译安装的库,删除安装的新版本pcl-1.13,然后按照前面的方法重新安装即可。

找到sudo make install之后产生的这个文件install_manifest.txt,里面有安装的所有东西的路径,删除它们即可。
参考命令:cat install_manifest.txt | sudo xargs rm
或者 sudo xargs rm < install_manifest.txt

ConvexHull函数 错误解决:

如果使用ConvexHull函数会报下面错误

error: 'ConvexHull': is not a member of 'pcl'

这时会发现默认没有编译QHULL,修改源码中的pcl_config.h.in文件,注释掉下面这几行

// #ifdef DISABLE_QHULL
// #undef HAVE_QHULL
// #endif

重新编译与安装就可以了

参考:
https://blog.csdn.net/qq_42731705/article/details/129380907
https://blog.csdn.net/u014301278/article/details/102947451
https://blog.csdn.net/qq_36985944/article/details/115286199

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值