在Ubuntu 14.04 環境下配置PCL點雲庫
眾所周知,搞real-time圖像處理的,先期可以拿Matlab驗證一下演算法,最終還是要搬到Linux & C/C++上的。C/C++的效率可比Matlab和python,java等高上一個數量級。。。至於我是因何原因寫這篇文章,其實還是因為一段對話……
老闆說:你這效果不行,速度太慢了!我要real-time!
我說:Real-time 得把代碼從Matlab遷移到C++上。。。
老闆:你少給我整這些幺蛾子,就拿Matlab做!
我:。。。
一周之後,說服老闆,準備在ubuntu上用C++重寫代碼。
由於實驗室做的東西和三維點雲處理相關,大量用到 Multiple view of geometry in Computer Vision 的知識(什麼?不知道這本書?知乎上奉傳的教科書里程碑般的書籍啊!其實我也沒怎麼仔細看),所以無論怎麼繞,還是繞不過ubuntu+pcl庫+C++這一「三地鼠」的。其中,配置pcl尤為複雜。本篇文章將不討論在windows裝pcl的情況(什麼?搞CV的居然用windows?!)。
好的,正文開始——在Ubuntu 14.04 環境下配置PCL點雲庫。
如果你不是linux小白,已經成功自己安裝了Matlab,CUDA等「較為容易」安裝的軟體,那麼很好,你就有看懂這篇文章的基礎了。如果你是linux小白,連 「啥是sudo?哇sudo好神奇!卧槽咋幹啥都要sudo」 這種三段式的感嘆都能發出來的話,建議還是別先看我這篇文章。。。
我之所以使用ubuntu 14.04,是某個歷史原因,我必須使用linux kernel版本低於或等於3.13的LTS OS。所以迫不得已使用14.04 LTS。以下所有安裝都是基於14.04上。相信16.04 和12.04 應該也差不多吧。
第一步,打開PCL 官網linux 預安裝教程 Prebuilt binaries for Linux. 按照他的說法把第一步完成。
Ubuntu
We currently support all Ubuntu via PPA. The installation instructions are:
sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pclsudo apt-get updatesudo apt-get install libpcl-all
第二步,打開 PCL Ubuntu documentation:Documentation 從 Experimental 開始按照它的步驟往下做。
Experimental
If you are eager to try out a certain feature of PCL that is currently under development (or you plan on developing and contributing to PCL), we recommend you try checking out our source repository, as shown below. If you』re just interested in browsing our source code, you can do so by visiting GitHub - PointCloudLibrary/pcl: Point Cloud Library (PCL).
Clone the repository:
git clone https://github.com/PointCloudLibrary/pcl pcl-trunk
Please note that above steps (3-5) are almost identical for compiling the experimental PCL trunk code:
cd pcl-trunk && mkdir build && cd buildcmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..make -j2sudo make -j2 install
咦?!怎麼安裝失敗了???
原來少了一些dependencies。這也是我最討厭PCL的地方。。各種依賴庫。。關鍵是依賴庫還不好找。。基本上大家都會缺少Boost依賴庫和VTK依賴庫,這些Mandatory是必裝的,是運行PCL最基本的要求。
Mandatory
The following code libraries are required for the compilation and usage of the PCL libraries shown below:
pcl_* denotes all PCL libraries, meaning that the particular dependency is a strict requirement for the usage of anything in PCL.
LogoLibraryMinimum versionMandatoryBoost
1.40 (without OpenNI)1.47 (with OpenNI)pcl_*Eigen3.0pcl_*FLANN1.7.1pcl_*VTK5.6pcl_visualization
安裝Boost的時候比較easy的啦,根據我的仔細研究(StackOverFlow),發現原來安裝Boost居然這麼簡單!運行一行apt-get install 即可!
You can use apt-get command (requires sudo)
sudo apt-get install libboost-all-dev
安裝VTK就比較蛋疼了!VTK的文檔簡直難找……好在我這裡提供了一個我能用的不錯的文檔:VTK/Building/Linux
根據文檔,按順序把VTK和Qt5 安裝好(Qt4就不必安裝了)。記住,Qt5是必裝的!!!也就是PCL依賴於VTK,VTK依賴於Qt5!
而這個「算是不錯的」文檔里,還有一個錯誤!就是下文引用部分:
cd /path/to/VTK-Release-buildcmake -DVTK_QT_VERSION:STRING=5 -DQT_QMAKE_EXECUTABLE:PATH=/path/to/qt5.2.1-install/5.2.1/gcc_64/bin/qmake -DVTK_Group_Qt:BOOL=ON -DCMAKE_PREFIX_PATH:PATH=/path/to/qt.5.2.1-install/5.2.1/gcc_64/lib/cmake -DBUILD_SHARED_LIBS:BOOL=ON /path/to/VTK
倒數第二行,少了一個反斜杠「」!!!所以倒數第二行應該是:-DBUILD_SHARED_LIBS:BOOL=ON
不然就會報錯!尼瑪啊!鬼知道啊!怕是pcl用的人太少了,在網上查了一圈居然也沒有人po到stackoverflow上。。。。
好在我現在po到知乎上了。。。希望能夠拯救一下大家寶貴的時間。
當你成功裝完VTK及Qt5 之後,就證明你已經成功完成了PCL的所有蛋疼的mandatory dependencies的安裝了。如果還有其他的報錯,記得看一下log,可能是eigen或者flann沒裝,不過我都覺得這些比VTK好裝一點,幾行command就能搞定。最後成功裝完PCL後,我就能跑一些比較fancy的代碼了,比如下圖:
This picture is generated from KITTI dataset./*
老闆:看起來挺不錯,可是我們沒有必要用linux。我們的電腦足夠快了。
我:
*/
推薦閱讀:
※如何評價零零無限科技的產品 Hover Camera 及其前景?
※自動控制(包括但不限於機器人控制)如何才能避免「只是調參數」?
※螞蟻如何找到最短的回窩路徑?
※有哪些值得推薦的國產激光雷達?
※學習SLAM需要哪些預備知識?
TAG:点云库PCL | Ubuntu | 同时定位和地图构建SLAM |