再寫這篇博客時,本文方法已經在筆記本Ubuntu和VM虛擬機成功安裝PCL1.8.1,並且通過測試。 下文方法同樣適用於ubuntu18.04。
通過以下命令可以快速安裝pcl1.7.1,但是不推薦,據說因為在ubuntu16.04中,由於vtk版本原因造成一些bug,這里不想深究,所以,打算自己編譯。至於ubuntu 14.04沒用過(可以試試下面指令)。
sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl
sudo apt-get update # for ubuntu 16.04 sudo apt-get install libpcl-dev # for ubuntu 14.04 #sudo apt-get install libpcl-all 以上方法可能出現的問題:
1、error: 有幾個軟件無法下載, 要不sudo apt-get update 或-- fix-missing 試一試? 解決: sudo apt-get install libpcl-dev --fix-missing(至此,一般能夠順利安裝) 2、error: vtkproj4.so丟失 解決:對於編譯好的點雲庫(PCL-1.7),附帶安裝了VTK-6.2.0,以及各種雜七雜八的依賴庫。安裝后的編譯過程中出現了庫文件vtkproj4.so丟失的問題。
這個問題與我另一篇尋找缺失庫文件的文章不同,這是VTK-6.2.0 (build10)中的BUG,而原作者已經在build11中修正了該問題。 這個問題有一個非常簡單的解決方法:在/usr/lib文件夾下,我發現了vtk5.10的相關庫文件,考慮到5.10與6.2版本間的差距應該不大,我直接進行了軟鏈接…… sudo ln -s /usr/lib/libvtkproj4.so.5.10 /usr/lib/libvtkproj4.so
1、卸載有問題的PCL1.7(vtk bug等等,例如:不能顯示深度圖)
sudo rm -r build
sudo rm -r /usr/include/pcl-1.7 /usr/share/pcl /usr/bin/pcl* /usr/lib/libpcl*
執行上述命令, 上述四個目錄中,可能會找不到某些目錄。可以自己去 usr 目錄下搜索 關鍵字 pcl 或者 libpcl。本人在目錄 /usr/libx86_64-linux-gnu 下找到 相關libpcl*文件,刪除即可,刪除命令同上。
2、編譯&&安裝PCL1.8.1
pcl的可視化庫版本關系【你要是不知道其他版本的對應的vtk版本,推薦可以去下載pcl源碼,去 3rdparty文件夾路徑下查詢vtk版本】:
1. pcl-1.7.2 vtk-5.10.1 / vtk-6.2.0
2. pcl-1.8.1 vtk-7.1.1
3. pcl-1.9.1 vtk-8.2.0(建議8.1)
這讓人想起非線性優化庫 G2O 安裝時,不同版本的G2O也需要不同版本的 libqglviewer類似。本文安裝PCL1.8.1,所以選擇VTK-7.1.1。在此之前先執行以下命令安裝 PCL底層依賴(逐行執行)。
PCL依賴的庫很多,例如:QHull(查找凸包算法)、VTK(可視化)、Flann(最近鄰搜索算法)、Eigen、Boost、OpenNI2(這個庫可以提供當年一些供應商提供的設備的驅動,例如:Kinect2.0...為什么是當年? 首先OpenNI2 在N年前已經停止維護,PCL提供接口的一些設備如:深度相機也已經停產,所以...雞肋);PCL本身提供的三維視覺算法不算很多,順便:PCL這個庫體驗跟opencv等開源庫比起來...,或許以后會去學習CloudCompare開源算法。
sudo apt-get update
sudo apt-get install git build-essential linux-libc-dev sudo apt-get install cmake cmake-gui sudo apt-get install libusb-1.0-0-dev libusb-dev libudev-dev sudo apt-get install mpi-default-dev openmpi-bin openmpi-common sudo apt-get install libflann1.8 libflann-dev sudo apt-get install libeigen3-dev libboost-all-dev sudo apt-get install libqhull* libgtest-dev sudo apt-get install freeglut3-dev pkg-config sudo apt-get install libxmu-dev libxi-dev sudo apt-get install mono-complete sudo apt-get install libopenni-dev libopenni2-dev sudo apt-get install libx11-dev libxext-dev libxtst-dev libxrender-dev sudo apt-get install libxmu-dev libxmuu-dev sudo apt-get install build-essential libgl1-mesa-dev libglu1-mesa-dev
注意:這里 libopenni2-dev 也許會顯示無法安裝,換一個軟件源就行了,我是換到aliyun了。
VTK7.1.1下載鏈接:https://www.jianshu.com/go-wild?ac=2&url=https%3A%2F%2Fwww.vtk.org%2Ffiles%2Frelease%2F7.1%2FVTK-7.1.1.zip
PCL1.8.1下載鏈接:https://codeload.github.com/PointCloudLibrary/pcl/zip/pcl-1.8.1
note: in the ubuntu18.04,we can not find the libflann1.8!!! , but i have found the "libflann1.9"by using the conmad"apt-cache search libflann", and just install it, ojbk!!!
解壓,安裝VTK
cd VTK-7.1.1
mkdir build && cd build cmake .. cmake-gui ###操作見下面文字### make sudo make install
勾選“VTK_GROUP_QT”,改“VTK_QT_VERSION” = 5,將CMAKE_BUILD_TYPE 改為Release(圖中還沒改,懶得換圖,圖也是盜的,見文末鏈接),點擊Configure,generate【最后一次config應該是所有紅色部分消失】
很不幸,在虛擬機中用cmake-gui配置Qt版本時候報錯(這跟虛擬機沒什么關系,可能原因是Qt版本),如下圖:
這里起初的想法是,更換一個Qt版本?太麻煩。既然缺少某個Qt庫,可以使用如下指令搜索:
# 這條指令價值500塊
apt-cache search Qt5X11Extras # 顯示結果如下 libqt5x11extras5 - Qt 5 X11 extras libqt5x11extras5-dev - Qt 5 X11 extras development files # 這里安裝其中一個庫 sudo apt-get install libqt5x11extras5-dev
接着對於VTK,我們關閉並重新打開cmake-gui,重新生成,順利生成, 別忘記sudo make install 。
還可能在cmake-gui的時候,遇到無法找到 Qt5_DIR-NOTFOUND 。由於沒有安裝,所以這里要提前安裝好Qt5。我這里選擇Qt5.9.9,裝完以后,還是不能自動檢測到Qt路徑,手動添加吧,如下圖:
點擊configure,直到紅色消失。
接着解壓、編譯、安裝PCL
cd pcl-1.8.1
mkdir build && cd build cmake .. cmake-gui ###操作見下面文字### make -j4 ###編譯要好久,別開太多東西,小心卡機### sudo make install
檢查Qt5的路徑,檢查vtk版本,選擇openni2,點擊Configure,generate
3、注意
在安裝PCL的時候,看清楚...,不要直接用命令行 cmake... 這樣會直接默認生成releasse,我們這在cmake-gui中手動設置,如圖,
debug和release版本各有自己的優勢和缺陷。 debug版本為了追求更全面的調試信息而放棄了速度; release版本為了追求性能優化而拋棄了調試信息。如果用戶既需要調試代碼,又無奈於debug版本的速度,那么你便可以開始考慮RelWithDebInfo這個版本了。顧名思義,從這個模式的名稱來看,它是一種含有調試信息的Release版本。那么它相當於是結合了Debug和Release版本的優點的一個版本。以下是Stackoverflow上面的關於比較Debug和RelWithDebInfo版本區別的描述:
http://stackoverflow.com/questions/1239845/build-mode-relwithdebinfo
本人在ubuntu下用的IDE為Clion,我們這里重新編譯並安裝好PCL之后,在clion->File->Setting->ToolChains 中首先將調試器改為 GDB(這個很關鍵,這樣讓本來就很卡的Clion在調試的時候,速度變換了許多,)繼續再將CMake的build type改為RelWithDebInfo,編譯速度也加快了。
以上..., 否則使用CLion調試PCL中的的 pcl::PointXYZ 類型變量,很痛苦。
小結:
1、上面安裝VTK可視化庫,記得改為Release,
2、安裝PCL的時候,如果不知道命令行怎么設置為:按RelWithDebInfo方式編譯,可以用cmake-gui設置為這種方式,
3、CLion將工具鏈的調試器設置為GDB,將CMake的生成類型設置為RelWithDebInfo(緩解卡B帶來的痛苦...)
4、由於從PCL1.7.1更換PCL1.8.1版本,之前基於CLion構建的工程全部作廢,新建工程再寫吧(理論上將 相對目錄下的生成的中間文件手動rm 掉是可以的,懶得折騰,索性重建工程)
參考鏈接:https://www.jianshu.com/p/548234bb88fc
https://www.cnblogs.com/zhuxuekui/p/9663335.html
In the QtCreator5.9.9, when i complier the pcl demo by qmake, "error while loading shared libraries: libpcl_common.so.1.8", i do not why, maybe... i have deleted the source directory of "PCL1.8.1" and "VTK"; the falowing is the .pro file of Qt
1 INCLUDEPATH += /usr/local/include/pcl-1.8 2 LIBS += /usr/local/lib/libpcl_*.so
nice, i fuck the problem by do"sudo ldconfig ", please remember it!!!
// opencv 待具體
pkg-config opencv --modversion
pkg-config opencv --libs
// 庫的卸載參考: https://www.cnblogs.com/kinwing/p/11829546.html
// error: ... If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvShowImage'
// solution: https://stackoverflow.com/questions/28776053/opencv-gtk2-x-error
// <1> install libgtk2.0-dev
// <2> rebuild opencv4.1.2 with VPN, you have to know how to set cmake options like these:
cmake
-D CMAKE_BUILD_TYPE=RELEASE
-D CMAKE_INSTALL_PREFIX=/usr/local
-D WITH_TBB=ON
-D BUILD_NEW_PYTHON_SUPPORT=ON ## no occur
-D WITH_V4L=ON
-D INSTALL_C_EXAMPLES=ON
-D INSTALL_PYTHON_EXAMPLES=ON
-D BUILD_EXAMPLES=ON
-D WITH_QT=ON
-D WITH_GTK=ON
-D WITH_OPENGL=ON ..