Point Cloud Library 1.8.0 has been released

Point Cloud Library 1.8.0

PCL 1.8.0 has been released.

What is it?

Point Cloud Library (PCL) is open source library for the 3-dimensional point cloud processing.
PCL contains the various processing for 3-dimensional point cloud that retrieved from sensors or 3-dimensional data files.

Features

The features are contained in the PCL as follows.

  • filters
  • fuatures
  • keypoints
  • registration
  • kdtree
  • octree
  • segmentation
  • sample consensus
  • surface
  • range image
  • io
  • visualization

pointcloudlibrary_features

Development Environment

PCL supported OS is Linux, Windows, MacOS X, and other.
Supported development language is C++ and Python.
PCL use internally main dependent libraries (3rdParty) is as follows.*1

Required

  • Boost (C ++ Semi Standard Library)
  • Eigen (Matrix Library)
  • FLANN (Nearest Neighbor Search Library)
  • VTK (Visualization Library)

Optional

*1 In addition, depends on other 3rdParty by function. Qt (GUI Library), CUDA (GPU Development Environment), PCAP (Packet Capture), GLUT (OpenGL Utility Toolkit), GLEW (OpenGL Extension Library), etc.

Download Installer

I has been created “PCL All-in-one Installer” that includes pre-built libraries of PCL and 3rdParty.
You can download from the following link.
Please install PCL and 3rdParty by using the downloaded installer.

2016/06/17 Release Installer (PCL 1.8.0, Boost 1.61.0, Eigen 3.2.8, FLANN 1.8.4, VTK 7.0.0 (OpenGL backend), QHull 2015.2, OpenNI 2.2.0.33 Beta)

Visual Studio 2015

Visual Studio 2013

Set Environment Variables

Please set as following the environment variables of system and re-boot your system.

Variable Name Value
PCL_ROOT C:\Program Files\PCL 1.8.0 (or C:\Program Files (x86)\PCL 1.8.0)
Path ;%PCL_ROOT%\bin
;%OPENNI2_REDIST64% (or %OPENNI2_REDIST%)

Generate Your Own Project using CMake

I strongly recommend that to generate project using CMake.*2
Please refer to following documents about How to use CMake and CMakeLists.
In Addition, Please refer to basic CMakeLists for using PCL.

*2 I recommend that to use CMake 3.6.0 or later.

How to use CMake?

How to write CMakeLists?

Basic CMakeLists for PCL

  • Basic CMakeLists.txt for PCL
  • cmake_minimum_required( VERSION 2.8 )
    
    # Create Project
    project( solution )
    add_executable( project main.cpp )
    set_property( DIRECTORY PROPERTY VS_STARTUP_PROJECT "project" )
    
    # Find Packages
    find_package( PCL 1.8 REQUIRED )
    
    if( PCL_FOUND )
      # Additional Include Directories
      # [C/C++]>[General]>[Additional Include Directories]
      include_directories( ${PCL_INCLUDE_DIRS} )
    
      # Preprocessor Definitions
      # [C/C++]>[Preprocessor]>[Preprocessor Definitions]
      add_definitions( ${PCL_DEFINITIONS} )
      #add_definitions( -DPCL_NO_PRECOMPILE )
    
      # Additional Library Directories
      # [Linker]>[General]>[Additional Library Directories]
      link_directories( ${PCL_LIBRARY_DIRS} )
    
      # Additional Dependencies
      # [Linker]>[Input]>[Additional Dependencies]
      target_link_libraries( project ${PCL_LIBRARIES} )
    endif()
    

How to Build Libraries (PCL 1.8.0 and 3rdParty) from Source Code yourself

In many cases, You can use the All-in-one Installer for using PCL.
But, If you want to enable other options or use other compilers, You need to build PCL and 3rdParty yourself.

I will publish the notes of how to build PCL 1.8.0 and latest version 3rdParty.
Please refer to this Notes who want to build the libraries (PCL 1.8.0 and 3rdParty) yourself.

3rdParty Build Notes

PCL Build Note

How to Contribution (issue report, send pull request) and Question?

If you find a bug, you can reported to issues of GirHub.
If you can be fixed bug, you can send pull requests to GitHub repository.

And, If you have any questions, you can post to the PCL Users mailing list.
Please attach the following information in these reports. It will help to resolve your problem.
(You need to tell the appropriate information to resolve your problem.)

  • Error Code and Message
  • Reproduce Source Code (or Tutorial URL)
  • CMake Cache (<CMAKE_BINARY_DIR>CMakeCache.txt) *IMPORTANT
  • CMake Logs (<CMAKE_BINARY_DIR>CMakeFilesCMakeOutput.log)
  • PCL Version (or Commit Hash)
  • Target Compiler and Configure (e.g. “Visual C++ 2015, Release|x64”)
  • Operating System (e.g. “Windows 10 Pro (update 1511) 64bit”)

37 thoughts on “Point Cloud Library 1.8.0 has been released”

    1. Hi An Shuai,

      Are you accessing from China?
      Probably, Great Firewall of China is blocking access to Microsoft OneDrive.
      Many Chinese users seem to be accessing using VPN.

  1. Hi Tsukasa Sugiura,
    Thank you very much for your work and the installer is very convenient. I used your 1.7.2 all-in-one installer (VS2013) and it worked out well, except that the path to find VTK in PCL CMake file needs minor modification. The thing is now we need to use another library called CGAL and would require BOOST as well. The BOOST files in the all-in-one installer is not complete and we need to install a complete one for CGAL. Would there be any problem if I additionally install a complete BOOST library somewhere else in the computer? Would it conflict with the installed PCL? Thank you and look forward to your reply!

    1. Hi Xucong ZHAN,

      I’m not familiar about CGAL.
      I don’t know whether conflicts will occur when additionally Boost included in system.
      (BTW, That problem about VTK path has been solved in PCL 1.8.0 All-in-one Installer.)

  2. Does anyone have an example using PCL in QT 5.x?
    Im trying to render into a widget but I cant find any examples..

    I found something using QVTKWidget but I cant find this object in VTK or somewhere else…
    Thanks!

    1. Hi Serge,

      The VTK included in the PCL all-in-one installer has been disabled Qt option.
      (I have never tried it but…) Probably, I think you need to build VTK with enable Qt option. It is commonly called “QVTK”.
      Then, You need to build PCL libraries with QVTK.
      Please refer to this document about how to build QVTK.
      Please refer to this tutorial about how to use PCL in Qt GUI.

      If you want more information, I recommend that you post on the users forum.

  3. Hello Tsukasa Sugiura.
    First of all let me thank you for your VS2015 all-in-one-installer which saved me a lot of hassles I was having with cmake and the sources. I couldn’t find this anywhere else.
    First of all, I am building everything from VS, so this is why it might be wrong, but I don’t like the way Cmake organizes my VS projects, I want one and one only interface for building and thats VS…would you say it is impossible to get it right (with appropriate VS project properties)? In my not-so-computer-expert mind, it seems to me one should be able with these property pages to obtain the same result as CMake…?

    Second, I am having a problem with the ‘NO Override found for ‘vtkPolyDataMapper’, which I thought was fixed in your libraries…could you help me?

    The code I am trying to run is:

    #include <pcl/visualization/cloud_viewer.h>
    #include <iostream>
    #include <pcl/io/io.h>
    #include <pcl/io/pcd_io.h>
        
    int user_data;
        
    void 
    viewerOneOff (pcl::visualization::PCLVisualizer& viewer)
    {
        viewer.setBackgroundColor (1.0, 0.5, 1.0);
        pcl::PointXYZ o;
        o.x = 1.0;
        o.y = 0;
        o.z = 0;
        viewer.addSphere (o, 0.25, "sphere", 0);
        std::cout << "i only run once" << std::endl;
        
    }
        
    void 
    viewerPsycho (pcl::visualization::PCLVisualizer& viewer)
    {
        static unsigned count = 0;
        std::stringstream ss;
        ss << "Once per viewer loop: " << count++;
        viewer.removeShape ("text", 0);
        viewer.addText (ss.str(), 200, 300, "text", 0);
        
        //FIXME: possible race condition here:
        user_data++;
    }
        
    int 
    main ()
    {
        pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZRGBA>);
        pcl::io::loadPCDFile ("my_point_cloud.pcd", *cloud);
        
        pcl::visualization::CloudViewer viewer("Cloud Viewer");
        
        //blocks until the cloud is actually rendered
        viewer.showCloud(cloud);
        
        //use the following functions to get access to the underlying more advanced/powerful
        //PCLVisualizer
        
        //This will only get called once
        viewer.runOnVisualizationThreadOnce (viewerOneOff);
        
        //This will get called once per visualization iteration
        viewer.runOnVisualizationThread (viewerPsycho);
        while (!viewer.wasStopped ())
        {
        //you can also do cool processing here
        //FIXME: Note that this is running in a separate thread from viewerPsycho
        //and you should guard against race conditions yourself...
        user_data++;
        }
        return 0;
    }
    

    But I always get a vtkOutputWindow displaying Error: no override found for ‘vtkPolyDataMapper’ at the “mapper->SetInputConnection (data->GetOutputPort ()); ” line of pcl_vizualizer.hpp… I have seen a disucssion from you and SergioRAgostinho on github and it seems to have a connection to OpenGL2?

    Any help would be greatly appreciated…

    1. Hi kaipo,

      Do you want to generate and setting project without CMake?
      I will not strongly recommend it. CMake will help you generate and setting project according to development environment of each developer.

      If you still want to do it without CMake, Please copy settings to your project from project that generated with CMake.
      (I have never tried it but…) Probably, You need to copy following.
      But, I can’t guarantee this.

      • [C/C++]>[General]>[Additional Include Directory]
      • Include directory for headers of PCL and 3rd Party.

      • [C/C++]>[General]>[SDL Check]
      • No (/sdl-)

      • [C/C++]>[Preprocessor]>[Preprocessor Definitions]
      • This section depends by build configuration Debug or Release.
        Probably, I think you need to rewrite a bit.

      • [C/C++]>[Precompiled Headers]>[Precompiled Header]
      • Not Using Precompiled Headers

      • [Linker]>[General]>[Additional Library Directories]
      • Dependencies directory for librares of PCL and 3rd Party.

      • [Linker]>[Input]>[Additional Dependencies]
      • This section depends by build configuration Debug or Release.

      For the second question, I think that cause in preprocessor settings.
      This problem doesn’t occur in project that generated by CMake.

  4. Hi,
    I am trying to use PCL1.8.0 and running an example.
    The problem is that when I run it, the window shows this message:

    Generic Warning: In C:\VTK-7.0.0\Rendering\Core\vtkPolyDataMapper.cxx, line 28
    Error: no override found for 'vtkPolyDataMapper'
    

    I had done try to add this:

    #define vtkRenderingCore_AUTOINIT 4(vtkInteractionStyle,vtkRenderingFreeType,vtkRenderingFreeTypeOpenGL,vtkRenderingOpenGL)
    #define vtkRenderingVolume_AUTOINIT 1(vtkRenderingVolumeOpenGL)
    

    or this:

    #include <vtkAutoInit.h>
    VTK_MODULE_INIT(vtkRenderingOpenGL2);
    VTK_MODULE_INIT(vtkInteractionStyle);
    

    I used Cmake with VTK and VTK_RENDERING_BACKEND OpenGL.
    Can you help me?
    Thanks!

    1. Hi Mr. Tsukasa Sugiura
      thank you very much !!!
      Amazing tuto !

      sincerely

  5. Hi,

    I’ve been using the 1.8 all-in-one-installer for my windows 10 computer with no issues.

    I’m now trying to use it on a windows 7 computer and am unable to configure cmake because it gives VTK_DIR NOT FOUND no matter what I do. Do I need to install VTK separately?

    Just to make sure it wasn’t an issue with my Cmakelists.txt file, I tried this
    tutorial: http://www.pointclouds.org/documentation/tutorials/pcl_visualizer.php#pcl-visualizer
    and had the same issue:

    And here is the cmake cache:

    //Flags used by the linker.
    CMAKE_EXE_LINKER_FLAGS:STRING= /machine:X86
    
    //The directory containing a CMake configuration file for PCL.
    PCL_DIR:PATH=C:/Program Files/PCL 1.8.0/cmake
    
    //The directory containing a CMake configuration file for VTK.
    VTK_DIR:PATH=VTK_DIR-NOTFOUND
    

    Can you help?
    Thanks,
    Libby McCord

    1. Hi Libby McCord,

      Probably, You have installed PCL that target for “x64”.
      But, You had specified “x86” in CMake generator.
      (e.g. “Visual Studio 14 2015” is x86 target. “Visual Studio 14 2015 Win64” is x64 target.)

      If you want to build application that targeting “x86 (Win32)”, You need to install PCL using All-in-one Installerfor for x86, and Specify x86 project in CMake generator.
      If you want to build application that targeting “x64”, You need to install PCL using All-in-one Installerfor for x64, and Specify x64 project in CMake generator.

    2. I can’t believe. I didn’t notice. I had selected x86 when I wanted x64!
      Thank you so much,
      Libby

  6. Happy New Year :-)

    I use MSVC14 and x64 and (/SUBSYSTEM:CONSOLE) and compile the program without any error.
    If I start it, I get a error when I want to write pcl to ply or pcd.
    Whats wrong?

    #include <iostream>
    #include <pcl/io/ply_io.h>
    
    typedef pcl::PointXYZ PointType;
    
    std::string myTest("C:\Test\xx.ply");
    pcl::PLYWriter testwriter;
    
    int main(int argc, char *argv[])
    {
        pcl::PointCloud<PointType>::Ptr Testcloud(new pcl::PointCloud<PointType>);
    
        // Add 3 Points
        PointType myCorner;
    
        myCorner.x = 10;
        myCorner.y = 10;
        myCorner.z = 10;
        Testcloud->points.push_back(myCorner);
    
        myCorner.x = 1;
        myCorner.y = 1;
        myCorner.z = 1;
        Testcloud->points.push_back(myCorner);
    
        myCorner.x = 5;
        myCorner.y = 6;
        myCorner.z = 5;
        Testcloud->points.push_back(myCorner);
    
        // Write Points to PLY - File
        testwriter.write(myTest, *Testcloud);
    
        std::cin.get();
        return 1;
    }
    
    1. Hi Thilo,

      That source code is wrong.
      You need to specify PointType in template parameter of pcl::PLYWriter::write<PointType>().

      If you have this type questions, I recommend that you post on the users forum.

      #include <pcl/point_cloud.h>
      #include <pcl/point_types.h>
      #include <pcl/io/ply_io.h>
      
      typedef pcl::PointXYZ PointType;
      
      int main( int argc, char *argv[] )
      {
          pcl::PointCloud<PointType>::Ptr cloud( new pcl::PointCloud<PointType>() );
      
          PointType point;
          point.x = 10;
          point.y = 10;
          point.z = 10;
          cloud->push_back( point );
      
          pcl::PLYWriter writer;
          writer.write<PointType>( "test.ply", *cloud );
      
          return 0;
      }
      

      Happy New Year! :)

  7. Hello Tsukasa Sugiura,

    Now I have send the Question to the forum.
    I think then problem seems to be a problem with the properties of the IDE.
    In the former all in one installer you have also a props file for the MSVC.
    Is it possible to produce one for the 1.8 version?
    This would be very helpful.

    Thanks a lot.

    1. Hi Thilo,

      I read the question that you posted.
      I think that error occurs when folder doesn’t exist.
      (But, I don’t know cause of garbled characters. It was not reproduced in my development environment.)

      I have no plan that to create property sheets for PCL 1.8.0 and later, because CMake is available now.
      (The property sheets was temporary way for setting PCL when CMake was not available. That problem has already been solved in PCL 1.8.0.)

    2. Hello Tsukasa Sugiura,

      Thanks for the answer.
      Is it possible to get your reproduced Environment / Project?
      Simply send it to my email?
      Maybe I fined the difference Setting.
      This would be very helpful.

      Thank you very much.

    3. Hello Tsukasa Sugiura,

      The “section” information and to build the project start with CMake solves my problem.
      Thank you for the help.

  8. Excuse me,
    I have installed PCL 1.8.0 All-in-one Installer MSVC2013 Win32.
    I using qt_visualizer as a example to test in QT.
    I already done qmake before build.
    And It appear a fatal error C1060 compiler is out of heap space I don’t have any idea about this.
    Do you have any idea?

  9. Hi Tsukasa,

    Please i can build KinFu with VS 2015 64 bits and Windows 10 ?

    Do you have any idea?

    Thank you very much.

    1. Hi Tsukasa,
      thank you for the answer.

      I need Kinfu with point cloud library.
      I do not find how to install Kinfu sources
      In my doctoral project I need Kinfu.
      I’m really blocked.

    2. Hi HMD BA,

      Kinfu is dependent on the OpenNI 1.x and CUDA.
      But, OpenNI 1.x is not available in Visual Studio 2012 and later.
      You need to fix it and build PCL yourself (or use Visual Studio 2010). However, It will takes a lot of time to do that.
      Therefore, I advised to consider alternative such as Kinect Fusion.
      I can’t support it. If you want more information, I recommend that you post on the users forum.

  10. Hi Tsukasa,
    I follow your tutorial in Building QVTK(VTK6+Qt5) with Visual Studio.But I can’t find the QVTKWidgetPlugin if I uncheck the BUILD_SHARED_LIBS on cmake.
    If I check BUILD_SHARED_LIBS on cmake, there are a lot of error like LNK1181 can not open opengl.lib.How can I do?
    My environment is msvc2012 32bit, VTK 7.1.0, Qt 5.7.0.
    Thank you very much.
    Best regard.

    1. Hi Peter,

      QVTKWidgetPlugin is generated only when selected BUILD_SHARED_LIBS and VTK_BUILD_QT_DESIGNER_PLUGIN, VTK_Group_Qt.
      But, I don’t know about cause of build errors that occur in that case.
      For this type questions, I recommend that you post on the PCL users forum or VTK users forum.

  11. Hi Tsukasa,

    I build KinFu with VS 2010 64 bits and Windows 8.1 using cmake 3.1.1. But I don’t find the build chioce of KinFu in cmake3.1.1 .
    KinectFusion is not open source.

    Do you have any idea?

    Thank you very much.

  12. Hi Tsukasa,

    thank you for your great work in documenting the building process. I managed to build the PCL in Windows with Qt, but when creating an installer (via the PACKAGE in VS) i can only build an installer with debug or release configuration. How did you build an installer containing both, debug and release libraries?

    Regards
    Matthias

    1. Hi Matthias,

      It’s need to some manual operations when generating installer that include all libraries.
      Sorry, I don’t want to still publish it, because that way is not smart and elegant…
      (And, I haven’t enough English skills to do it.)

  13. Hi Tsukasa,

    I recently ported a code base from Linux to Windows.
    All of the code worked in Linux (eclipse make project, PCL 1.7).
    I used your VS2015 PCL 1.8 installer and almost everything seems to be working.
    The one issue I am running into is that when I try to display lines in a vtk viewer (ie for normals) it throws an error and a pop-up:

    A VTK windows pops say and say "No override found for vtkActor"
    I traced it back to line 822 of the pcl visualiser class,which calls
    vtkSmartPointer actor = vtkSmartPointer::New ();

    Do I need to rebuild the library with vtk support differently somehow or is this a bug in my code/vs project setup?

  14. Hi Sugiura,

    I have been using your “PCL all-in-one Installer” without having any problem yet. However I don’t understand why we need PDB files. I did not download it and don’t use it.

    Normal and other feature estimation methods take a considerable time according to point size of inputted cloud. So they can not be used in any real time implementation. So I want to check out GPU implementation of available methods. Do I need to build it from the scratch?

    Regards

    1. Hi ali,

      The symbol files (*.pdb) can be used for debugging libraries.
      Probably, You will not need it in many cases.

      If you want to use GPU acceleration modules, You need to build PCL yourself.
      Please refer to this section. It will be helpful for you.

Leave a Reply

Your email address will not be published. Required fields are marked *