Giter VIP home page Giter VIP logo

kintinuous's Introduction

Kintinuous

Real-time dense visual SLAM system capable of producing high quality globally consistent point and mesh reconstructions over hundreds of metres in real-time with only a low-cost commodity RGB-D sensor.

Related Publications

Please cite the most appropriate of these works (in order of our preference) if you make use of our system in any of your own endeavors:

1. What do I need to build it?

  • Ubuntu 14.04, 15.04 or 16.04 (Though many other linux distros will work fine)
  • CMake
  • OpenGL
  • CUDA >= 7.0
  • OpenNI2
  • SuiteSparse
  • Eigen
  • Boost
  • zlib
  • libjpeg
  • OpenCV
  • DLib @ 330bdc10576f6bcb55e0bd85cd5296f39ba8811a
  • DBoW2 @ 4a6eed2b3ae35ed6837c8ba226b55b30faaf419d
  • DLoopDetector @ 84bfc56320371bed97cab8aad3aa9561ca931d3f
  • iSAM
  • PCL
  • Pangolin

Firstly, add nVidia's official CUDA repository to your apt sources, then run the following command to pull in most dependencies from the official repos:

sudo apt-get install -y cmake-qt-gui git build-essential libusb-1.0-0-dev libudev-dev openjdk-7-jdk freeglut3-dev python-vtk libvtk-java libglew-dev cuda-7-5 libsuitesparse-dev openexr

This is where things get really bad. Due to libraries constantly changing their APIs and includes, creating build processes that actually last for more than a few months between a couple of Ubuntu versions is extremely difficult. Below are separate instructions for Ubuntu 14.04, 15.04 and 16.04.

14.04

Install PCL 1.7 from this PPA:

sudo add-apt-repository -y ppa:v-launchpad-jochen-sprickerhof-de/pcl
sudo apt-get update
sudo apt-get install -y libpcl-all

Then install OpenCV, DLib, DBoW2, DLoopDetector, iSAM and Pangolin from source, in this order.

Why do you have to install OpenCV from source? Because the version in the Ubuntu repos doesn't have the nonfree module, required for SURF descriptors used in the DBoW2. Also, it is strongly recommended you build OpenCV with the following options (in particular, building it with Qt5 might introduce a lot of pain):

cmake -D BUILD_NEW_PYTHON_SUPPORT=OFF -D WITH_OPENCL=OFF -D WITH_OPENMP=ON -D INSTALL_C_EXAMPLES=OFF -D BUILD_DOCS=OFF -D BUILD_EXAMPLES=OFF -D WITH_QT=OFF -D WITH_OPENGL=OFF -D WITH_VTK=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_TESTS=OFF -D WITH_CUDA=OFF -D BUILD_opencv_gpu=OFF ..

If you have trouble building Pangolin, disable ffmpeg support using the following CMake command:

cmake .. -DAVFORMAT_INCLUDE_DIR=""

Once finished you'll have everything you need to build Kintinuous.

15.04

On 15.04 PCL is in the official repos:

sudo apt-get install -y libpcl-dev yasm libvtk5-qt4-dev

The version of PCL in the 15.04 repos does not contain OpenNI2. You should build the Occipital maintained version, available here.

As usual, ffmpeg screws things up for everyone in 15.04. You need to build ffmpeg yourself otherwise OpenCV will fail to build. Why do you have to install OpenCV from source? Because the version in the Ubuntu repos doesn't have the nonfree module, required for SURF descriptors used in the DBoW2. Why can't you use OpenCV3? Because DBoW will fail to build. Why can't you disable ffmpeg in OpenCV's build? Because DBoW will fail if the video module isn't built. Build and install ffmpeg as follows:

git clone git://source.ffmpeg.org/ffmpeg.git
cd ffmpeg/
git reset --hard cee7acfcfc1bc806044ff35ff7ec7b64528f99b1
./configure --enable-shared
make -j8
sudo make install
sudo ldconfig

Then build OpenCV with the following options:

cmake -D BUILD_NEW_PYTHON_SUPPORT=OFF -D WITH_OPENCL=OFF -D WITH_OPENMP=ON -D INSTALL_C_EXAMPLES=OFF -D BUILD_DOCS=OFF -D BUILD_EXAMPLES=OFF -D WITH_QT=OFF -D WITH_OPENGL=OFF -D WITH_VTK=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_TESTS=OFF -D WITH_CUDA=OFF -D BUILD_opencv_gpu=OFF ..

Finally, build DLib, DBoW2, DLoopDetector, iSAM and Pangolin from source, in this order. If you have trouble building Pangolin, disable ffmpeg support using the following CMake command:

cmake .. -DAVFORMAT_INCLUDE_DIR=""

Afterwards, you will be able to build Kintinuous.

16.04

The instructions for 15.04 will work fine except you can't use the apt version of PCL because someone screwed up vtk. So ensure you purge/remove it completely if you have it installed from apt, then build it manually;

sudo apt-get install g++ cmake cmake-gui doxygen mpi-default-dev openmpi-bin openmpi-common libflann-dev libeigen3-dev libboost-all-dev libvtk5-qt4-dev libvtk6.2 libvtk5-dev libqhull* libusb-dev libgtest-dev git-core freeglut3-dev pkg-config build-essential libxmu-dev libxi-dev libusb-1.0-0-dev graphviz mono-complete qt-sdk openjdk-7-jdk openjdk-7-jre
git clone https://github.com/PointCloudLibrary/pcl.git
cd pcl
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_GPU=OFF -DBUILD_apps=OFF -DBUILD_examples=OFF ..
make -j8
sudo make install
sudo ldconfig

Afterwards, Kintinuous should link without any problems.

2. Is there an easier way to build it?

Understandably, building all of the dependencies seems quite complicated. If you run the build.sh script on a fresh clean install of Ubuntu 14.04 or 15.04, enter your password for sudo a few times and wait a few minutes all dependencies will get downloaded and installed and it should build everything correctly. This has not been tested on anything but fresh installs, so I would advise using it with caution if you already have some of the dependencies installed.

3. How do I use it?

There are four build targets:

  • libutil.a is a small set of utility classes.
  • libfrontend.a is the main tracking and fusion component.
  • libbackend.a contains the triangulation, loop closure and deformation components.
  • Kintinuous is an executable GUI used to run the system.

The GUI (Kintinuous) can take a bunch of parameters when launching it from the command line. They are as follows:

  • -c : Loads a camera calibration file specified by either:
  • A depth_intrinsics matrix in OpenCV format (ending .yml, .xml), or
  • A text file containing [fx fy cx cy] or [fx fy cx cy w h]
  • -l : Processes the specified .klg log file.
  • -v : Loads DBoW vocabulary file.
  • -p : Loads ground truth poses to use instead of estimated pose.
  • -gpu : Sets which GPU should be used by CUDA.
  • -n : Number of frames to process.
  • -t : Voxel threshold for volume shifting (default 14).
  • -cw : Removes voxels below this threshold when extracting slices (default 8).
  • -lt : Disallow loop closures within this time period of the last (default 30s).
  • -s : Size of the fusion volume (default 6m).
  • -dg : Rate of pose sampling for deformation (default 0.8m).
  • -il : Inlier threshold for RANSAC (default 0.35).
  • -it : Residual threshold for pose graph optimisation (default 10).
  • -sm : Static mode (disable volume shifting).
  • -f : Flip RGB/BGR.
  • -od : Perform online deformation (required for loop closure).
  • -m : Enable mesh generation.
  • -no : Disable overlap of extracted slices.
  • -nos : Remove overlap when saving map.
  • -r : Use RGB tracking only.
  • -ri : Use combined ICP+RGB tracking.
  • -d : Enable dynamic cube positioning.
  • -dc : Disable color weighting by angle.
  • -fl : Subsample pose graph for faster loop closure.
  • -fod : Enable fast odometry.

Essentially by default ./Kintinuous will try run off an attached ASUS sensor live. You can provide a .klg log file instead with the -l parameter. You can capture .klg format logs using either Logger1 or Logger2.

4. Datasets

We have provided a sample dataset which you can run easily with Kintinuous for download here. Launch it as follows:

./Kintinuous -s 7 -v ../vocab.yml.gz -l loop.klg -ri -fl -od

5. License and Copyright

The use of the code within this repository and all code within files that make up the software that is Kintinuous is permitted for non-commercial purposes only. The full terms and conditions that apply to the code within this repository are detailed within the LICENSE.txt file and at http://www.cs.nuim.ie/research/vision/data/kintinuous/code.php unless explicitly stated. By accessing this repository you agree to comply with these terms.

If you wish to use any of this code for commercial purposes then please email [email protected].

Copyright (C) 2015 The National University of Ireland Maynooth and Massachusetts Institute of Technology.

6. FAQ

What are the hardware requirements?

A fast nVidia GPU (1TFLOPS+), and a fast CPU (something like an i5). If you want to use a non-nVidia GPU you're out of luck.

The frontend is running fast but the map seems to be lagging behind

This is because you have a slow CPU. The backend runs completely on the CPU and must process every point extracted from the frontend. This means if your map is very large, or if you're moving very fast, the backend may not be able to keep up. Additionally, turning on meshing when loop closure is enabled is very CPU intensive, but a fast modern processor will cope with this in real-time.

I saved a map, how can I view it?

Download Meshlab, which can read .ply files. If you only saved the point cloud you'll need to use PCL's viewer for .pcd files.

The map keeps getting corrupted - tracking is failing - loop closures are incorrect/not working

Firstly, if you're running live and not processing a log file, ensure you're hitting 30Hz, this is important. Secondly, you cannot move the sensor extremely fast because this violates the assumption behind projective data association. In addition to this, you're probably using a primesense, which means you're suffering from motion blur, unsynchronised cameras and rolling shutter. All of these are aggravated by fast motion and hinder tracking performance.

If you're not getting loop closures and expecting some, or getting false ones, you're at the mercy of DBoW. You can tweak some of the parameters related to it, but over all you're limited by the typical limitations of appearance-based place recognition. Feel free to splice in a different place recognition method. As an aside, ElasticFusion is much better for very loopy comprehensive scanning, which may suit your application better.

If you notice some weird slicing effect during loop closures, either turn down the volume size or increase the rate at which poses are sampled in the deformation by decreasing the -dg parameter.

Is there a ROS bridge/node?

No. In fact, if you have ROS installed you're likely to run into some truly horrible build issues.

This doesn't seem to work like it did in the videos/papers

A substantial amount of refactoring was carried out in order to open source this system, including rewriting a lot of functionality to avoid certain licenses. Although great care was taken during this process, it is possible that performance regressions were introduced and have not yet been discovered.

kintinuous's People

Contributors

ivancaminal72 avatar martinruenz avatar mp3guy avatar zry656565 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kintinuous's Issues

undefined reference to `DBoW2::FSurf64::toMat32F(std::vector<std::vector<float, std::allocator<float> >, std::allocator<std::vector<float, std::allocator<float> > > > const&, cv::Mat&)'

When I make the Kintinuous, I was confronted with the following linking errors:

undefined reference to DBoW2::FSurf64::toMat32F(std::vector<std::vector<float, std::allocator<float> >, std::allocator<std::vector<float, std::allocator<float> > > > const&, cv::Mat&)' undefined reference to DBoW2::FSurf64::distance(std::vector<float, std::allocator > const&, std::vector<float, std::allocator > const&)'
undefined reference to DBoW2::FSurf64::meanValue(std::vector<std::vector<float, std::allocator<float> > const*, std::allocator<std::vector<float, std::allocator<float> > const*> > const&, std::vector<float, std::allocator<float> >&)' undefined reference to DBoW2::FSurf64::toString[abi:cxx11](std::vector<float, std::allocator > const&)'

I have install the DLib, DBoW2, DLoopDetector,again. and I don‘t know why? I think the directory is right for linker.
the directory are as follows:
DBoW2_DIR */usr/local/lib/cmake/DBoW2
DBoW2_INCLUDE_DIR */usr/local/include/DBoW2
DBoW2_LIBRARY */usr/local/lib/libDBoW2.so
DLib_DIR */usr/local/lib/cmake/DLib
DLib_INCLUDE_DIR */usr/local/include/DLib
DLib_LIBRARY */usr/local/lib/libDLib.so
DLoopDetector_DIR */usr/local/lib/cmake/DLoopDetector
DLoopDetector_INCLUDE_DIR */usr/local/include/DLoopDetector
DLoopDetector_LIBRARY *DLoopDetector_LIBRARY-NOTFOUND
my os is ubuntu16.04, the version for opencv is 2.4.13.
So could someone know reason for these errors?

Update Build.sh to support Ubuntu 16.04

I've followed the Ubuntu 16.04 steps from the documentation and I've attempted to build Kintinuous, but the build.sh file fails with: "Don't use this on anything except 14.04 or 15.04"

Are there additional steps required (or steps omitted) to get this working in 16.04? If so, I'm happy to create a new version of the build.sh file that performs those steps and verify on a fresh 16.04 instance.

Out of memory issue

Hi, I am an undergraduate student trying to run Kintinuous on my system. I am working with Ubuntu 14.04 and have installed the required dependencies. But on running the command, I get this output:

./Kintinuous -s 7 -v ../vocab.yml.gz -l loop.klg -ri -fl -od
Point resolution: 13.6 millimetres
Error: out of memory /home/capstone/Kintinuous/src/frontend/cuda/containers/device_memory.cpp:223

Could you please help me out with this? Thanks!

No Nvidia GPU Found

I was watching the Kintinous/ElasticFusion videos and had seen the performance on CPU only builds. I do not see any options to run these programs on only the CPU however. Both crash instantly and complain about not having found any Nvidia GPUs. help plz.

When will the code be available?

Hey, I saw the paper and the youtube video, I find them really cool!
I'm quite eager to try it and maybe help a bit with documenting any other needs of the project, so I was wondering when would the code be available?

Thanks

how to save a mesh on remote serverwithout GUI

Thanks a lot for providing kintinuous!
I am runing it on lab server shared with other lab members,remotely through my own computer.so there is no GUI I can use,so I annotate all codes about displaying,then it works well.
now I want to save a mesh,what should I do?

Slicing

On loop closure I am experiencing the weird slicing effect. The camera poses still appear fine!

Reducing the volume or decreasing the -dg parameter doesn't work, in fact smaller volume seems to add more slices as more loops are found.

I can only get away without this effect if the -s is so huge it encompasses the whole cloud, but of course the drawback is the cloud is really sparse then.

Any ways around this slicing problem?

Kintinuous: /usr/include/eigen3/Eigen/src/Core/DenseStorage.h:128:

I have done as the tutorial said. It is ok along the process. But when I run the dataset, It has happened that llike that "Kintinuous: /usr/include/eigen3/Eigen/src/Core/DenseStorage.h:128: Eigen::internal::plain_array<T, Size, MatrixOrArrayOptions, 32>::plain_array() [with T = float; int Size = 16; int MatrixOrArrayOptions = 0]: Assertion `(reinterpret_cast<size_t>(eigen_unaligned_array_assert_workaround_gcc47(array)) & (31)) == 0 && "this assertion is explained here: " "http://eigen.tuxfamily.org/dox-devel/group__TopicUnalignedArrayAssert.html" " **** READ THIS WEB PAGE !!! ****"' failed.
Aborted (core dumped)" . I think may be it does with the eigen.
My system is ubuntu16.04 and eigen is libeigen3.

the full issue like this:
./Kintinuous -s 7 -v ../vocab.yml.gz -l ../loop.klg -ri -fl -od
Point resolution: 13.6 millimetres
Using ICP+RGB-D odometry
Loading vocabularly for loop detection... vocabularly loaded
Initialising loop detector... loop detector initialised
Kintinuous: /usr/include/eigen3/Eigen/src/Core/DenseStorage.h:128: Eigen::internal::plain_array<T, Size, MatrixOrArrayOptions, 32>::plain_array() [with T = float; int Size = 16; int MatrixOrArrayOptions = 0]: Assertion `(reinterpret_cast<size_t>(eigen_unaligned_array_assert_workaround_gcc47(array)) & (31)) == 0 && "this assertion is explained here: " "http://eigen.tuxfamily.org/dox-devel/group__TopicUnalignedArrayAssert.html" " **** READ THIS WEB PAGE !!! ****"' failed.
Aborted (core dumped)

And how to solve it @mp3guy @martinruenz @zry656565 @johnbmcd

Not compatible with newest Pangolin master

Current I did a temporary fix by
git reset -hard 66df6eab2b456592884a53e7fc2805e8c2491fea
reset to the commit 28 days ago, which let me install Kintinuous successfully.

cannot find -lvtkproj4

This is my error in make

[ 92%] Linking CXX executable Kintinuous
/usr/bin/ld: cannot find -lvtkproj4
collect2: error: ld returned 1 exit status
CMakeFiles/Kintinuous.dir/build.make:481: recipe for target 'Kintinuous' failed
make[2]: *** [Kintinuous] Error 1
CMakeFiles/Makefile2:180: recipe for target 'CMakeFiles/Kintinuous.dir/all' failed
make[1]: *** [CMakeFiles/Kintinuous.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

I tried using
sudo ln -s /usr/lib/libvtkproj4.so.5.10 /usr/lib/libvtkproj4.so
and
sudo ln -s /usr/lib/libvtkproj4.so.5.10.1 /usr/lib/libvtkproj4.so

but I get flooded with this error either way

[ 92%] Linking CXX executable Kintinuous
CMakeFiles/Kintinuous.dir/PangoVis.cpp.o: In function ConfigArgs::ConfigArgs(int, char**)': PangoVis.cpp:(.text._ZN10ConfigArgsC2EiPPc[_ZN10ConfigArgsC5EiPPc]+0x107): undefined reference to pcl::console::parse_argument(int, char**, char const*, std::string&)'
PangoVis.cpp:(.text._ZN10ConfigArgsC2EiPPc[_ZN10ConfigArgsC5EiPPc]+0x120): undefined reference to pcl::console::parse_argument(int, char**, char const*, std::string&)' PangoVis.cpp:(.text._ZN10ConfigArgsC2EiPPc[_ZN10ConfigArgsC5EiPPc]+0x136): undefined reference to pcl::console::parse_argument(int, char**, char const*, std::string&)'
PangoVis.cpp:(.text._ZN10ConfigArgsC2EiPPc[_ZN10ConfigArgsC5EiPPc]+0x14c): undefined reference to pcl::console::parse_argument(int, char**, char const*, std::string&)' libbackend.a(Deformation.cpp.o): In function pcl::PCDWriter::write(std::string const&, pcl::PCLPointCloud2 const&, Eigen::Matrix<float, 4, 1, 0, 4, 1> const&, Eigen::Quaternion<float, 0> const&, bool)':
Deformation.cpp:(.text._ZN3pcl9PCDWriter5writeERKSsRKNS_14PCLPointCloud2ERKN5Eigen6MatrixIfLi4ELi1ELi0ELi4ELi1EEERKNS6_10QuaternionIfLi0EEEb[_ZN3pcl9PCDWriter5writeERKSsRKNS_14PCLPointCloud2ERKN5Eigen6MatrixIfLi4ELi1ELi0ELi4ELi1EEERKNS6_10QuaternionIfLi0EEEb]+0xc): undefined reference to pcl::PCDWriter::writeASCII(std::string const&, pcl::PCLPointCloud2 const&, Eigen::Matrix<float, 4, 1, 0, 4, 1> const&, Eigen::Quaternion<float, 0> const&, int)' Deformation.cpp:(.text._ZN3pcl9PCDWriter5writeERKSsRKNS_14PCLPointCloud2ERKN5Eigen6MatrixIfLi4ELi1ELi0ELi4ELi1EEERKNS6_10QuaternionIfLi0EEEb[_ZN3pcl9PCDWriter5writeERKSsRKNS_14PCLPointCloud2ERKN5Eigen6MatrixIfLi4ELi1ELi0ELi4ELi1EEERKNS6_10QuaternionIfLi0EEEb]+0x11): undefined reference to pcl::PCDWriter::writeBinary(std::string const&, pcl::PCLPointCloud2 const&, Eigen::Matrix<float, 4, 1, 0, 4, 1> const&, Eigen::Quaternion<float, 0> const&)'
libbackend.a(Deformation.cpp.o): In function int pcl::PCDWriter::writeBinary<pcl::PointXYZRGBNormal>(std::string const&, pcl::PointCloud<pcl::PointXYZRGBNormal> const&)': Deformation.cpp:(.text._ZN3pcl9PCDWriter11writeBinaryINS_17PointXYZRGBNormalEEEiRKSsRKNS_10PointCloudIT_EE[_ZN3pcl9PCDWriter11writeBinaryINS_17PointXYZRGBNormalEEEiRKSsRKNS_10PointCloudIT_EE]+0xe9): undefined reference to pcl::PCDWriter::setLockingPermissions(std::string const&, boost::interprocess::file_lock&)'
Deformation.cpp:(.text._ZN3pcl9PCDWriter11writeBinaryINS_17PointXYZRGBNormalEEEiRKSsRKNS_10PointCloudIT_EE[_ZN3pcl9PCDWriter11writeBinaryINS_17PointXYZRGBNormalEEEiRKSsRKNS_10PointCloudIT_EE]+0x509): undefined reference to pcl::PCDWriter::resetLockingPermissions(std::string const&, boost::interprocess::file_lock&)' Deformation.cpp:(.text._ZN3pcl9PCDWriter11writeBinaryINS_17PointXYZRGBNormalEEEiRKSsRKNS_10PointCloudIT_EE[_ZN3pcl9PCDWriter11writeBinaryINS_17PointXYZRGBNormalEEEiRKSsRKNS_10PointCloudIT_EE]+0x7fe): undefined reference to pcl::PCDWriter::resetLockingPermissions(std::string const&, boost::interprocess::file_lock&)'
Deformation.cpp:(.text._ZN3pcl9PCDWriter11writeBinaryINS_17PointXYZRGBNormalEEEiRKSsRKNS_10PointCloudIT_EE[_ZN3pcl9PCDWriter11writeBinaryINS_17PointXYZRGBNormalEEEiRKSsRKNS_10PointCloudIT_EE]+0x8f4): undefined reference to pcl::PCDWriter::resetLockingPermissions(std::string const&, boost::interprocess::file_lock&)' Deformation.cpp:(.text._ZN3pcl9PCDWriter11writeBinaryINS_17PointXYZRGBNormalEEEiRKSsRKNS_10PointCloudIT_EE[_ZN3pcl9PCDWriter11writeBinaryINS_17PointXYZRGBNormalEEEiRKSsRKNS_10PointCloudIT_EE]+0x9f4): undefined reference to pcl::PCDWriter::resetLockingPermissions(std::string const&, boost::interprocess::file_lock&)'
Deformation.cpp:(.text._ZN3pcl9PCDWriter11writeBinaryINS_17PointXYZRGBNormalEEEiRKSsRKNS_10PointCloudIT_EE[_ZN3pcl9PCDWriter11writeBinaryINS_17PointXYZRGBNormalEEEiRKSsRKNS_10PointCloudIT_EE]+0xb8b): undefined reference to pcl::PCDWriter::resetLockingPermissions(std::string const&, boost::interprocess::file_lock&)' libbackend.a(Deformation.cpp.o): In function int pcl::PCDWriter::writeASCIIpcl::PointXYZRGBNormal(std::string const&, pcl::PointCloudpcl::PointXYZRGBNormal const&, int)':
Deformation.cpp:(.text._ZN3pcl9PCDWriter10writeASCIIINS_17PointXYZRGBNormalEEEiRKSsRKNS_10PointCloudIT_EEi[_ZN3pcl9PCDWriter10writeASCIIINS_17PointXYZRGBNormalEEEiRKSsRKNS_10PointCloudIT_EEi]+0xce): undefined reference to pcl::PCDWriter::setLockingPermissions(std::string const&, boost::interprocess::file_lock&)' Deformation.cpp:(.text._ZN3pcl9PCDWriter10writeASCIIINS_17PointXYZRGBNormalEEEiRKSsRKNS_10PointCloudIT_EEi[_ZN3pcl9PCDWriter10writeASCIIINS_17PointXYZRGBNormalEEEiRKSsRKNS_10PointCloudIT_EEi]+0x773): undefined reference to pcl::PCDWriter::resetLockingPermissions(std::string const&, boost::interprocess::file_lock&)'
libbackend.a(CloudSliceProcessor.cpp.o): In function pcl::Feature<pcl::PointXYZRGB, pcl::Normal>::initCompute()': CloudSliceProcessor.cpp:(.text._ZN3pcl7FeatureINS_11PointXYZRGBENS_6NormalEE11initComputeEv[_ZN3pcl7FeatureINS_11PointXYZRGBENS_6NormalEE11initComputeEv]+0x326): undefined reference to pcl::search::Searchpcl::PointXYZRGB::Search(std::string const&, bool)'
libbackend.a(MeshGenerator.cpp.o): In function MeshGenerator::save()': MeshGenerator.cpp:(.text+0x174c): undefined reference to pcl::io::savePLYFile(std::string const&, pcl::PolygonMesh const&, unsigned int)'
libbackend.a(MeshGenerator.cpp.o): In function pcl::search::OrganizedNeighbor<pcl::PointXYZRGBNormal>::OrganizedNeighbor(bool, float, unsigned int)': MeshGenerator.cpp:(.text._ZN3pcl6search17OrganizedNeighborINS_17PointXYZRGBNormalEEC2Ebfj[_ZN3pcl6search17OrganizedNeighborINS_17PointXYZRGBNormalEEC5Ebfj]+0x37): undefined reference to pcl::search::Searchpcl::PointXYZRGBNormal::Search(std::string const&, bool)'
libbackend.a(IncrementalMesh.cpp.o): In function IncrementalMesh::saveMesh(std::string)': IncrementalMesh.cpp:(.text+0x10a): undefined reference to pcl::io::savePLYFile(std::string const&, pcl::PolygonMesh const&, unsigned int)'
collect2: error: ld returned 1 exit status
CMakeFiles/Kintinuous.dir/build.make:481: recipe for target 'Kintinuous' failed
make[2]: *** [Kintinuous] Error 1
CMakeFiles/Makefile2:180: recipe for target 'CMakeFiles/Kintinuous.dir/all' failed
make[1]: *** [CMakeFiles/Kintinuous.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

I'm on Ubuntu 16.04 using pcl from the 16.04 apt repo and the current pangolin master branch

It looks related to this issue: https://bugs.launchpad.net/ubuntu/+source/vtk6/+bug/1573234 but following the advice i have appended list(REMOVE_ITEM PCL_LIBRARIES "vtkproj4") to the end of CMakeLists.txt but i get the same issue

I've also tried cloning boost and pcl from git and compiling from there but I'm having issues compiling pcl because of this :

../lib/libpcl_visualization.so.1.8.1.99: undefined reference to `boost::filesystem::path_traits::dispatch(boost::filesystem::directory_entry const&, std::string&)' even though I can see the file and function

Any advice would be appreciated

Error on saving

Initial build was working well however have all of a sudden have started getting the following error on attempting to save scan:

Saving 6430 points... terminate called after throwing an instance of 'pcl::IOException'
what(): : [pcl::PCDWriter::writeBinary] Error during open!
Aborted (core dumped)

Any ideas what would be causing this and how to fix without an entire rebuild?

EDIT:
Exception appears to be thrown by this line of code in pcd_io.hpp from the PCL library:

#else
int fd = pcl_open (file_name.c_str (), O_RDWR | O_CREAT | O_TRUNC, static_cast<mode_t> (0600));
if (fd < 0)
{
throw pcl::IOException ("[pcl::PCDWriter::writeBinary] Error during open!");
return (-1);
}

changing threshold for volume shifting causes error

Providing a non-default threshold for shifting the volume when running the program (option -t) may cause the configuration arguments to clearVolumeInX<<<grid, block>>> in tsdf_volume.cu to become invalid.

namely grid.x can sometimes be negative.

try
./Kintinuous -s 8 -v ../vocab.yml.gz -l ../loop.klg -ri -od -t 60

and wait about a minute into the sequence.

Issue during compilation

Hi Thomas,

Sorry to disturb you with this, and I just spent hours to try to compile Continuous, unfortunately, I just got an error that I don't know how to fix / bypass :

Linking CXX executable Kintinuous
/usr/bin/ld: libbackend.a(DBowInterfaceSurf.cpp.o): undefined reference to symbol '_ZN2cv4SURFC1Ediibb'
/usr/local/lib/libopencv_nonfree.so.2.4: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [Kintinuous] Error 1
make[1]: *** [CMakeFiles/Kintinuous.dir/all] Error 2
make: *** [all] Error 2

I am using an Ubuntu 14.04, and I launched the script given. If you have any idea it would be great !

Thanks for your help,

Stephane

Problem to run demo dataset

I had successfully run the sample dataset on my old computer.
However, when I tried to run it on my new PC, it always prompt me this error message:

~/code/Kintinuous/build$ ./Kintinuous -s 7 -v ../vocab.yml.gz  -l ../loop.klg -ri -fl -od
Point resolution: 13.6 millimetres
Error: invalid device function  /home/(myusername)/code/Kintinuous/src/frontend/cuda/tsdf_volume.cu:477

My hardware spec:

  • Mother board: ASUS Z170ar
  • CPU: Intel I7 6700K
  • RAM: 16GB
  • GPU: NVidia GTX 1060

Environment

  • OS Ubuntu 14.04
  • CUDA 8.0 (had tried 7.5 but cannot login after installation, so I changed to 8.0)

Installation all followed the "build.sh" file except "cuda".

Did you have any idea on this issue?


I tried a lot of combinations of Ubuntu version(14.04, 16.04) and Kitinuous install step, but all combination failed on my new PC.

Problem to run Kintinuous

Hi, I have install kintinuous on ubuntu 16.04,
but when I run the command ./Kintinuous -s 7 -v ../../vocab.yml.gz -l ../dataset/loop.klg -ri -fl -od; I get the results :
Point resolution: 13.6 millimetres
Using ICP+RGB-D odometry
Loading vocabularly for loop detection... vocabularly loaded
Initialising loop detector... loop detector initialised
TrackerInterfaceThread started
CloudSliceProcessorThread started
DeformationThread started
VisualisationThread started
PlaceRecognitionThread started
then error occured: **Error in `./Kintinuous': double free or corruption (fasttop): 0x00007f18f8002140 *****
Also there are the back trace and memory map!
please help me on how to fixed this error!

Error: invalid device function ../src/frontend/cuda/tsdf_volume.cu:477

I am getting this error while running ./Kintinuous on a sample kgl file.
The line 477 of tsdf_volume.cu is: cudaSafeCall ( cudaGetLastError () );

Here are my system details:
Ubuntu 16.04
Graphics: GeForce 820M/PCIe/SSE2
nvidia-390 installed and updated to latest version
cuda version installed: 8.0

Any help would be appreciated.

USB 3.0 Ports

Hi i want to run this on my mac book pro – ubuntu-14.04.4
I want to use a Kinect but have no USB 2.0 ports, will it still work?
Thanks Jack

Error when running the bin file

I built this project on 14.04, and completed all the steps with build.sh, but when I ran the bin file, I got this:
Error: unknown error *******/Kintinuous/src/MainController.cpp:74

and 74 line of the MainController.cpp is as fellow:
cudaSafeCall(cudaSetDevice(ConfigArgs::get().gpu));

What should I do?

Error: ‘ManagedImage’ in namespace ‘pangolin’ does not name a type pangolin::ManagedImage<uchar3> rgbImg

##Hello Thomas, thank you for share Kintinuous.

I have the following issue when building Kintinuous:

In file included from /home/trinidad/Kintinuous/src/MainController.h:57:0,
from /home/trinidad/Kintinuous/src/MainController.cpp:19:
/home/trinidad/Kintinuous/src/PangoVis.h:105:9: error: ‘ManagedImage’ in namespace ‘pangolin’ does not name a type pangolin::ManagedImage rgbImg;

Currently, Pangolin has 3 releases. I have installed the 3 versions and all remain the same problem.
I'm in Ubuntu 14.04.

Thanks, in advance

error: #include <boost/algorithm/algorithm.hpp> no such file

I am using ubuntu 14.04
if I built it as the build.sh ,erro will conme out: in MainController.cpp ,
#include <boost/algorithm/algorithm.hpp> ,but it cannot find the file :boost/algorithm/algorithm.hpp.
I checked it on boost official website ,only when boost version >=1.58 , there we can find boost/algorithm/algorithm.hpp.
However ,if I do it as the build.sh ,when install pcl1.7, libboost1.54 will be auto installed,and under boost/algorithm,there is no algrithm.hpp.
so I download boost 1.63 ,and install it. then after 'make -j8',error comes that:undefined reference to `boost::this_thread::hidden::sleep_until(timespec const&)' , just as the brother before issued.
so which version of boost and which version of PCL are you using? # #

q vzc2i tsf q ktlvw4

build.sh error

in the build script,
mkdir build is missing after line 114

nvcc fatal : Unsupported gpu architecture 'compute_20'

  When I make the Kintinuous program, I was confronted with the error:

nvcc fatal : Unsupported gpu architecture 'compute_20'.
the environment for Kintinuous are as follows:
OS: ubuntu 16.04;
GPU: Nvidia GeForce gtx1070;
Kinect2.0
the driver for GPU is 384.111;
CUDA is cuda_9.0.176_384.81_linux;
At the same time, I succeeded in compiling the elasticfusion and it can works with my kinect2.
I was confused, and I guess maybe my drvier for GPU and CUDA are too new. I want to change some files, and make Kintinuous works under the environment.
Could someone give me some suggestions?
Thank you very much!

Robust Real-Time Visual Odometry for Dense RGB-D Mapping

Dear Thomas Whelan,

First of all I would like to thank you for guiding us with your code and the published papers.

I want to reconstruct a 3D Model of a Non-Rigid Body.

I have used the following parameters:
./Kintinuous -gpu -nos -m -ri -fod

But still, the above parameters are not able to follow RGBD+ICP Tracking.

Still unable to get result like:
https://www.youtube.com/watch?v=MEugh12dcYA

How to go ahead with Color TSDF in order to get the above output.

  • Madhu

Small reconstruction model

Hello,
I record a dataset by realsense and then run it in Kintinuous, I can get the output, but the problem is that the output model is very smalll, not like the provided sample dataset whose ouput model is normal size, what's the problem?

extract.cu:413

an illegal memory access was encountered C:/Workspace/Kintinuous/src/frontend/cuda/extract.cu:413

ROS causing problems with build

The reason this happens is that ROS has a separate set of opencv libs that reside on a temp filesystem while its running everything to do with opencv is directed to this set of files. So to build other cuda applications with ROS installed you need replace the installed files with those that are compiled with cuda enabled. Basically you create a new ros-kinetic-opencv3 package as a deb uninstall ros-kinetic-opencv3 modify the ros-latest.list to point to your deb and install that. The point it back at the default location and reinstall ros-kinetic-desktop or desktop-full. You can alter some of the env variables but that doesn't work in all cases this does.

Found some errors when building [Ubuntu 15.10]

  • Platform: Ubuntu 15.10
  • gcc / g++: 4.9.3

Result of cmake ../src

jerry@jworktu:~/lab/Kintinuous/build$ cmake ../src
-- The C compiler identification is GNU 4.9.3
-- The CXX compiler identification is GNU 4.9.3
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.28") 
-- Found OpenNI2: /usr/lib/libOpenNI2.so  
-- checking for module 'eigen3'
--   found eigen3, version 3.2.5
-- Found eigen: /usr/include/eigen3  
-- checking for module 'libopenni'
--   found libopenni, version 1.5.4.0
-- Found openni: /usr/lib/libOpenNI.so  
-- checking for module 'libopenni2'
--   found libopenni2, version 2.2.0.3
-- Found libusb-1.0: /usr/include  
-- checking for module 'flann'
--   found flann, version 1.8.4
-- Found Flann: /usr/lib/x86_64-linux-gnu/libflann_cpp_s.a  
-- Found qhull: /usr/lib/x86_64-linux-gnu/libqhull.so  
-- Found PCL_COMMON: /usr/lib/x86_64-linux-gnu/libpcl_common.so  
-- Found PCL_OCTREE: /usr/lib/x86_64-linux-gnu/libpcl_octree.so  
-- Found PCL_IO: /usr/lib/x86_64-linux-gnu/libpcl_io.so  
-- Found PCL_KDTREE: /usr/lib/x86_64-linux-gnu/libpcl_kdtree.so  
-- Found PCL_SEARCH: /usr/lib/x86_64-linux-gnu/libpcl_search.so  
-- Found PCL_SAMPLE_CONSENSUS: /usr/lib/x86_64-linux-gnu/libpcl_sample_consensus.so  
-- Found PCL_FILTERS: /usr/lib/x86_64-linux-gnu/libpcl_filters.so  
-- Found PCL_FEATURES: /usr/lib/x86_64-linux-gnu/libpcl_features.so  
-- Found PCL_KEYPOINTS: /usr/lib/x86_64-linux-gnu/libpcl_keypoints.so  
-- Found PCL_GEOMETRY: /usr/include/pcl-1.7  
-- Found PCL_SEGMENTATION: /usr/lib/x86_64-linux-gnu/libpcl_segmentation.so  
-- Found PCL_VISUALIZATION: /usr/lib/x86_64-linux-gnu/libpcl_visualization.so  
-- Found PCL_OUTOFCORE: /usr/lib/x86_64-linux-gnu/libpcl_outofcore.so  
-- Found PCL_REGISTRATION: /usr/lib/x86_64-linux-gnu/libpcl_registration.so  
-- Found PCL_RECOGNITION: /usr/lib/x86_64-linux-gnu/libpcl_recognition.so  
-- Found PCL_SURFACE: /usr/lib/x86_64-linux-gnu/libpcl_surface.so  
-- Found PCL_PEOPLE: /usr/lib/x86_64-linux-gnu/libpcl_people.so  
-- Found PCL_TRACKING: /usr/lib/x86_64-linux-gnu/libpcl_tracking.so  
-- Could NOT find PCL_APPS (missing:  PCL_APPS_LIBRARY) 
-- Found PCL_IN_HAND_SCANNER: /usr/include/pcl-1.7  
-- Found PCL_POINT_CLOUD_EDITOR: /usr/include/pcl-1.7  
-- Found PCL_MODELER: /usr/include/pcl-1.7  
-- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.2.8") 
-- Found CUDA: /usr/local/cuda-7.5 (found suitable version "7.5", minimum required is "7.0") 
-- Found SuiteSparse
-- Found iSAM: /usr/local/lib/libisam.a  
-- Boost version: 1.58.0
-- Found the following Boost libraries:
--   thread
--   serialization
-- CUDA NVCC target flags: -gencode;arch=compute_20,code=sm_20;-gencode;arch=compute_30,code=sm_30;-gencode;arch=compute_35,code=sm_35;-gencode;arch=compute_50,code=sm_50;-gencode;arch=compute_52,code=sm_52
-- Configuring done
-- Generating done
-- Build files have been written to: /home/jerry/lab/Kintinuous/build

Problem 1

jerry@jworktu:~/lab/Kintinuous/build$ make -j8
...
...
Scanning dependencies of target Kintinuous
[ 94%] [ 97%] [100%] make[2]: *** No rule to make target '/home/jerry/lab/OpenNI2/Bin/x64-Release/libOpenNI2.so', needed by 'Kintinuous'.  Stop.
make[2]: *** Waiting for unfinished jobs....
Building CXX object CMakeFiles/Kintinuous.dir/PangoVis.cpp.o
Building CXX object CMakeFiles/Kintinuous.dir/MainController.cpp.o
Building CXX object CMakeFiles/Kintinuous.dir/Kintinuous.cpp.o
CMakeFiles/Makefile2:62: recipe for target 'CMakeFiles/Kintinuous.dir/all' failed
make[1]: *** [CMakeFiles/Kintinuous.dir/all] Error 2
Makefile:75: recipe for target 'all' failed
make: *** [all] Error 2

In this time, the location of my OpenNI2 was ~/lab/Kintinuous/deps/OpenNI2.

So I moved this folder to ~/lab/OpenNI2, and I tried to re-make, then next problem came to me.

Problem 2

jerry@jworktu:~/lab/Kintinuous/build$ make
-- Could NOT find PCL_APPS (missing:  PCL_APPS_LIBRARY) 
-- Found SuiteSparse
-- Boost version: 1.58.0
-- Found the following Boost libraries:
--   thread
--   serialization
-- CUDA NVCC target flags: -gencode;arch=compute_20,code=sm_20;-gencode;arch=compute_30,code=sm_30;-gencode;arch=compute_35,code=sm_35;-gencode;arch=compute_50,code=sm_50;-gencode;arch=compute_52,code=sm_52
-- Configuring done
CMake Warning at CMakeLists.txt:64 (add_executable):
  Cannot generate a safe linker search path for target Kintinuous because
  files in some directories may conflict with libraries in implicit
  directories:

    link library [libOpenNI2.so] in /usr/lib may be hidden by files in:
      /home/jerry/lab/OpenNI2/Bin/x64-Release

  Some of these libraries may not be found correctly.


-- Generating done
-- Build files have been written to: /home/jerry/lab/Kintinuous/build
Linking CXX static library libfrontend.a
[ 44%] Built target frontend
[ 52%] Built target util
[ 91%] Built target backend
Linking CXX executable Kintinuous
CMakeFiles/Kintinuous.dir/PangoVis.cpp.o: In function `ConfigArgs::ConfigArgs(int, char**)':
PangoVis.cpp:(.text._ZN10ConfigArgsC2EiPPc[_ZN10ConfigArgsC5EiPPc]+0x10b): undefined reference to `pcl::console::parse_argument(int, char**, char const*, std::string&)'
PangoVis.cpp:(.text._ZN10ConfigArgsC2EiPPc[_ZN10ConfigArgsC5EiPPc]+0x122): undefined reference to `pcl::console::parse_argument(int, char**, char const*, std::string&)'
PangoVis.cpp:(.text._ZN10ConfigArgsC2EiPPc[_ZN10ConfigArgsC5EiPPc]+0x136): undefined reference to `pcl::console::parse_argument(int, char**, char const*, std::string&)'
PangoVis.cpp:(.text._ZN10ConfigArgsC2EiPPc[_ZN10ConfigArgsC5EiPPc]+0x14a): undefined reference to `pcl::console::parse_argument(int, char**, char const*, std::string&)'
CMakeFiles/Kintinuous.dir/MainController.cpp.o: In function `MainController::loadCalibration()':
MainController.cpp:(.text+0x1066): undefined reference to `cv::FileStorage::FileStorage(std::string const&, int, std::string const&)'
libfrontend.a(RGBDOdometry.cpp.o): In function `OdometryProvider::computeProjectiveMatrix(cv::Mat const&, cv::Mat&)':
RGBDOdometry.cpp:(.text._ZN16OdometryProvider23computeProjectiveMatrixERKN2cv3MatERS1_[_ZN16OdometryProvider23computeProjectiveMatrixERKN2cv3MatERS1_]+0x9b): undefined reference to `cv::Exception::Exception(int, std::string const&, std::string const&, std::string const&, int)'
libbackend.a(Deformation.cpp.o): In function `pcl::PCDWriter::write(std::string const&, pcl::PCLPointCloud2 const&, Eigen::Matrix<float, 4, 1, 0, 4, 1> const&, Eigen::Quaternion<float, 0> const&, bool)':
Deformation.cpp:(.text._ZN3pcl9PCDWriter5writeERKSsRKNS_14PCLPointCloud2ERKN5Eigen6MatrixIfLi4ELi1ELi0ELi4ELi1EEERKNS6_10QuaternionIfLi0EEEb[_ZN3pcl9PCDWriter5writeERKSsRKNS_14PCLPointCloud2ERKN5Eigen6MatrixIfLi4ELi1ELi0ELi4ELi1EEERKNS6_10QuaternionIfLi0EEEb]+0xc): undefined reference to `pcl::PCDWriter::writeASCII(std::string const&, pcl::PCLPointCloud2 const&, Eigen::Matrix<float, 4, 1, 0, 4, 1> const&, Eigen::Quaternion<float, 0> const&, int)'
Deformation.cpp:(.text._ZN3pcl9PCDWriter5writeERKSsRKNS_14PCLPointCloud2ERKN5Eigen6MatrixIfLi4ELi1ELi0ELi4ELi1EEERKNS6_10QuaternionIfLi0EEEb[_ZN3pcl9PCDWriter5writeERKSsRKNS_14PCLPointCloud2ERKN5Eigen6MatrixIfLi4ELi1ELi0ELi4ELi1EEERKNS6_10QuaternionIfLi0EEEb]+0x11): undefined reference to `pcl::PCDWriter::writeBinary(std::string const&, pcl::PCLPointCloud2 const&, Eigen::Matrix<float, 4, 1, 0, 4, 1> const&, Eigen::Quaternion<float, 0> const&)'
libbackend.a(Deformation.cpp.o): In function `int pcl::PCDWriter::writeBinary<pcl::PointXYZRGBNormal>(std::string const&, pcl::PointCloud<pcl::PointXYZRGBNormal> const&)':
Deformation.cpp:(.text._ZN3pcl9PCDWriter11writeBinaryINS_17PointXYZRGBNormalEEEiRKSsRKNS_10PointCloudIT_EE[_ZN3pcl9PCDWriter11writeBinaryINS_17PointXYZRGBNormalEEEiRKSsRKNS_10PointCloudIT_EE]+0xf8): undefined reference to `pcl::PCDWriter::setLockingPermissions(std::string const&, boost::interprocess::file_lock&)'
Deformation.cpp:(.text._ZN3pcl9PCDWriter11writeBinaryINS_17PointXYZRGBNormalEEEiRKSsRKNS_10PointCloudIT_EE[_ZN3pcl9PCDWriter11writeBinaryINS_17PointXYZRGBNormalEEEiRKSsRKNS_10PointCloudIT_EE]+0x4c2): undefined reference to `pcl::PCDWriter::resetLockingPermissions(std::string const&, boost::interprocess::file_lock&)'
Deformation.cpp:(.text._ZN3pcl9PCDWriter11writeBinaryINS_17PointXYZRGBNormalEEEiRKSsRKNS_10PointCloudIT_EE[_ZN3pcl9PCDWriter11writeBinaryINS_17PointXYZRGBNormalEEEiRKSsRKNS_10PointCloudIT_EE]+0x956): undefined reference to `pcl::PCDWriter::resetLockingPermissions(std::string const&, boost::interprocess::file_lock&)'
Deformation.cpp:(.text._ZN3pcl9PCDWriter11writeBinaryINS_17PointXYZRGBNormalEEEiRKSsRKNS_10PointCloudIT_EE[_ZN3pcl9PCDWriter11writeBinaryINS_17PointXYZRGBNormalEEEiRKSsRKNS_10PointCloudIT_EE]+0xb15): undefined reference to `pcl::PCDWriter::resetLockingPermissions(std::string const&, boost::interprocess::file_lock&)'
Deformation.cpp:(.text._ZN3pcl9PCDWriter11writeBinaryINS_17PointXYZRGBNormalEEEiRKSsRKNS_10PointCloudIT_EE[_ZN3pcl9PCDWriter11writeBinaryINS_17PointXYZRGBNormalEEEiRKSsRKNS_10PointCloudIT_EE]+0xc8a): undefined reference to `pcl::PCDWriter::resetLockingPermissions(std::string const&, boost::interprocess::file_lock&)'
Deformation.cpp:(.text._ZN3pcl9PCDWriter11writeBinaryINS_17PointXYZRGBNormalEEEiRKSsRKNS_10PointCloudIT_EE[_ZN3pcl9PCDWriter11writeBinaryINS_17PointXYZRGBNormalEEEiRKSsRKNS_10PointCloudIT_EE]+0xdf4): undefined reference to `pcl::PCDWriter::resetLockingPermissions(std::string const&, boost::interprocess::file_lock&)'
libbackend.a(Deformation.cpp.o): In function `int pcl::PCDWriter::writeASCII<pcl::PointXYZRGBNormal>(std::string const&, pcl::PointCloud<pcl::PointXYZRGBNormal> const&, int)':
Deformation.cpp:(.text._ZN3pcl9PCDWriter10writeASCIIINS_17PointXYZRGBNormalEEEiRKSsRKNS_10PointCloudIT_EEi[_ZN3pcl9PCDWriter10writeASCIIINS_17PointXYZRGBNormalEEEiRKSsRKNS_10PointCloudIT_EEi]+0xce): undefined reference to `pcl::PCDWriter::setLockingPermissions(std::string const&, boost::interprocess::file_lock&)'
Deformation.cpp:(.text._ZN3pcl9PCDWriter10writeASCIIINS_17PointXYZRGBNormalEEEiRKSsRKNS_10PointCloudIT_EEi[_ZN3pcl9PCDWriter10writeASCIIINS_17PointXYZRGBNormalEEEiRKSsRKNS_10PointCloudIT_EEi]+0x70b): undefined reference to `pcl::PCDWriter::resetLockingPermissions(std::string const&, boost::interprocess::file_lock&)'
libbackend.a(CloudSliceProcessor.cpp.o): In function `pcl::Feature<pcl::PointXYZRGB, pcl::Normal>::initCompute()':
CloudSliceProcessor.cpp:(.text._ZN3pcl7FeatureINS_11PointXYZRGBENS_6NormalEE11initComputeEv[_ZN3pcl7FeatureINS_11PointXYZRGBENS_6NormalEE11initComputeEv]+0x355): undefined reference to `pcl::search::Search<pcl::PointXYZRGB>::Search(std::string const&, bool)'
libbackend.a(IncrementalMesh.cpp.o): In function `IncrementalMesh::saveMesh(std::string)':
IncrementalMesh.cpp:(.text+0x17a): undefined reference to `pcl::io::savePLYFile(std::string const&, pcl::PolygonMesh const&, unsigned int)'
libbackend.a(IncrementalMesh.cpp.o): In function `pcl::search::OrganizedNeighbor<pcl::PointXYZRGBNormal>::OrganizedNeighbor(bool, float, unsigned int)':
IncrementalMesh.cpp:(.text._ZN3pcl6search17OrganizedNeighborINS_17PointXYZRGBNormalEEC2Ebfj[_ZN3pcl6search17OrganizedNeighborINS_17PointXYZRGBNormalEEC5Ebfj]+0x47): undefined reference to `pcl::search::Search<pcl::PointXYZRGBNormal>::Search(std::string const&, bool)'
libbackend.a(DBowInterfaceSurf.cpp.o): In function `cv::operator<<(cv::FileStorage&, char const*)':
DBowInterfaceSurf.cpp:(.text+0x500): undefined reference to `cv::operator<<(cv::FileStorage&, std::string const&)'
libbackend.a(DBowInterfaceSurf.cpp.o): In function `cv::FileStorage& cv::operator<< <int>(cv::FileStorage&, int const&)':
DBowInterfaceSurf.cpp:(.text+0x1c1a): undefined reference to `cv::write(cv::FileStorage&, std::string const&, int)'
DBowInterfaceSurf.cpp:(.text+0x1cac): undefined reference to `cv::Exception::Exception(int, std::string const&, std::string const&, std::string const&, int)'
libbackend.a(DBowInterfaceSurf.cpp.o): In function `DBowInterfaceSurf::DBowInterfaceSurf(int, int, int, std::string const&)':
DBowInterfaceSurf.cpp:(.text+0x2018): undefined reference to `cv::FileStorage::FileStorage(std::string const&, int, std::string const&)'
libbackend.a(DBowInterfaceSurf.cpp.o): In function `DBoW2::TemplatedVocabulary<std::vector<float, std::allocator<float> >, DBoW2::FSurf64>::load(cv::FileStorage const&, std::string const&)':
DBowInterfaceSurf.cpp:(.text._ZN5DBoW219TemplatedVocabularyISt6vectorIfSaIfEENS_7FSurf64EE4loadERKN2cv11FileStorageERKSs[_ZN5DBoW219TemplatedVocabularyISt6vectorIfSaIfEENS_7FSurf64EE4loadERKN2cv11FileStorageERKSs]+0x7d): undefined reference to `cv::FileStorage::operator[](std::string const&) const'
DBowInterfaceSurf.cpp:(.text._ZN5DBoW219TemplatedVocabularyISt6vectorIfSaIfEENS_7FSurf64EE4loadERKN2cv11FileStorageERKSs[_ZN5DBoW219TemplatedVocabularyISt6vectorIfSaIfEENS_7FSurf64EE4loadERKN2cv11FileStorageERKSs]+0x2d1): undefined reference to `DBoW2::FSurf64::fromString(std::vector<float, std::allocator<float> >&, std::string const&)'
libbackend.a(DBowInterfaceSurf.cpp.o): In function `DBoW2::TemplatedDatabase<std::vector<float, std::allocator<float> >, DBoW2::FSurf64>::load(cv::FileStorage const&, std::string const&)':
DBowInterfaceSurf.cpp:(.text._ZN5DBoW217TemplatedDatabaseISt6vectorIfSaIfEENS_7FSurf64EE4loadERKN2cv11FileStorageERKSs[_ZN5DBoW217TemplatedDatabaseISt6vectorIfSaIfEENS_7FSurf64EE4loadERKN2cv11FileStorageERKSs]+0x96): undefined reference to `cv::FileStorage::operator[](std::string const&) const'
libbackend.a(DBowInterfaceSurf.cpp.o): In function `DBoW2::TemplatedDatabase<std::vector<float, std::allocator<float> >, DBoW2::FSurf64>::save(cv::FileStorage&, std::string const&) const':
DBowInterfaceSurf.cpp:(.text._ZNK5DBoW217TemplatedDatabaseISt6vectorIfSaIfEENS_7FSurf64EE4saveERN2cv11FileStorageERKSs[_ZNK5DBoW217TemplatedDatabaseISt6vectorIfSaIfEENS_7FSurf64EE4saveERN2cv11FileStorageERKSs]+0x7d): undefined reference to `cv::operator<<(cv::FileStorage&, std::string const&)'
DBowInterfaceSurf.cpp:(.text._ZNK5DBoW217TemplatedDatabaseISt6vectorIfSaIfEENS_7FSurf64EE4saveERN2cv11FileStorageERKSs[_ZNK5DBoW217TemplatedDatabaseISt6vectorIfSaIfEENS_7FSurf64EE4saveERN2cv11FileStorageERKSs]+0x13f): undefined reference to `cv::write(cv::FileStorage&, std::string const&, double)'
DBowInterfaceSurf.cpp:(.text._ZNK5DBoW217TemplatedDatabaseISt6vectorIfSaIfEENS_7FSurf64EE4saveERN2cv11FileStorageERKSs[_ZNK5DBoW217TemplatedDatabaseISt6vectorIfSaIfEENS_7FSurf64EE4saveERN2cv11FileStorageERKSs]+0x21d): undefined reference to `cv::Exception::Exception(int, std::string const&, std::string const&, std::string const&, int)'
DBowInterfaceSurf.cpp:(.text._ZNK5DBoW217TemplatedDatabaseISt6vectorIfSaIfEENS_7FSurf64EE4saveERN2cv11FileStorageERKSs[_ZNK5DBoW217TemplatedDatabaseISt6vectorIfSaIfEENS_7FSurf64EE4saveERN2cv11FileStorageERKSs]+0x346): undefined reference to `cv::WriteStructContext::WriteStructContext(cv::FileStorage&, std::string const&, int, std::string const&)'
DBowInterfaceSurf.cpp:(.text._ZNK5DBoW217TemplatedDatabaseISt6vectorIfSaIfEENS_7FSurf64EE4saveERN2cv11FileStorageERKSs[_ZNK5DBoW217TemplatedDatabaseISt6vectorIfSaIfEENS_7FSurf64EE4saveERN2cv11FileStorageERKSs]+0x3c0): undefined reference to `cv::FileStorage::writeRaw(std::string const&, unsigned char const*, unsigned long)'
DBowInterfaceSurf.cpp:(.text._ZNK5DBoW217TemplatedDatabaseISt6vectorIfSaIfEENS_7FSurf64EE4saveERN2cv11FileStorageERKSs[_ZNK5DBoW217TemplatedDatabaseISt6vectorIfSaIfEENS_7FSurf64EE4saveERN2cv11FileStorageERKSs]+0x4e2): undefined reference to `cv::Exception::Exception(int, std::string const&, std::string const&, std::string const&, int)'
libbackend.a(DBowInterfaceSurf.cpp.o): In function `DBoW2::TemplatedVocabulary<std::vector<float, std::allocator<float> >, DBoW2::FSurf64>::save(cv::FileStorage&, std::string const&) const':
DBowInterfaceSurf.cpp:(.text._ZNK5DBoW219TemplatedVocabularyISt6vectorIfSaIfEENS_7FSurf64EE4saveERN2cv11FileStorageERKSs[_ZNK5DBoW219TemplatedVocabularyISt6vectorIfSaIfEENS_7FSurf64EE4saveERN2cv11FileStorageERKSs]+0x31): undefined reference to `cv::operator<<(cv::FileStorage&, std::string const&)'
DBowInterfaceSurf.cpp:(.text._ZNK5DBoW219TemplatedVocabularyISt6vectorIfSaIfEENS_7FSurf64EE4saveERN2cv11FileStorageERKSs[_ZNK5DBoW219TemplatedVocabularyISt6vectorIfSaIfEENS_7FSurf64EE4saveERN2cv11FileStorageERKSs]+0xaf): undefined reference to `cv::write(cv::FileStorage&, std::string const&, int)'
DBowInterfaceSurf.cpp:(.text._ZNK5DBoW219TemplatedVocabularyISt6vectorIfSaIfEENS_7FSurf64EE4saveERN2cv11FileStorageERKSs[_ZNK5DBoW219TemplatedVocabularyISt6vectorIfSaIfEENS_7FSurf64EE4saveERN2cv11FileStorageERKSs]+0xfb): undefined reference to `cv::write(cv::FileStorage&, std::string const&, int)'
DBowInterfaceSurf.cpp:(.text._ZNK5DBoW219TemplatedVocabularyISt6vectorIfSaIfEENS_7FSurf64EE4saveERN2cv11FileStorageERKSs[_ZNK5DBoW219TemplatedVocabularyISt6vectorIfSaIfEENS_7FSurf64EE4saveERN2cv11FileStorageERKSs]+0x1fe): undefined reference to `cv::write(cv::FileStorage&, std::string const&, double)'
DBowInterfaceSurf.cpp:(.text._ZNK5DBoW219TemplatedVocabularyISt6vectorIfSaIfEENS_7FSurf64EE4saveERN2cv11FileStorageERKSs[_ZNK5DBoW219TemplatedVocabularyISt6vectorIfSaIfEENS_7FSurf64EE4saveERN2cv11FileStorageERKSs]+0x21d): undefined reference to `DBoW2::FSurf64::toString(std::vector<float, std::allocator<float> > const&)'
DBowInterfaceSurf.cpp:(.text._ZNK5DBoW219TemplatedVocabularyISt6vectorIfSaIfEENS_7FSurf64EE4saveERN2cv11FileStorageERKSs[_ZNK5DBoW219TemplatedVocabularyISt6vectorIfSaIfEENS_7FSurf64EE4saveERN2cv11FileStorageERKSs]+0x244): undefined reference to `cv::operator<<(cv::FileStorage&, std::string const&)'
DBowInterfaceSurf.cpp:(.text._ZNK5DBoW219TemplatedVocabularyISt6vectorIfSaIfEENS_7FSurf64EE4saveERN2cv11FileStorageERKSs[_ZNK5DBoW219TemplatedVocabularyISt6vectorIfSaIfEENS_7FSurf64EE4saveERN2cv11FileStorageERKSs]+0x26a): undefined reference to `cv::operator<<(cv::FileStorage&, std::string const&)'
DBowInterfaceSurf.cpp:(.text._ZNK5DBoW219TemplatedVocabularyISt6vectorIfSaIfEENS_7FSurf64EE4saveERN2cv11FileStorageERKSs[_ZNK5DBoW219TemplatedVocabularyISt6vectorIfSaIfEENS_7FSurf64EE4saveERN2cv11FileStorageERKSs]+0x340): undefined reference to `cv::operator<<(cv::FileStorage&, std::string const&)'
DBowInterfaceSurf.cpp:(.text._ZNK5DBoW219TemplatedVocabularyISt6vectorIfSaIfEENS_7FSurf64EE4saveERN2cv11FileStorageERKSs[_ZNK5DBoW219TemplatedVocabularyISt6vectorIfSaIfEENS_7FSurf64EE4saveERN2cv11FileStorageERKSs]+0x409): undefined reference to `cv::Exception::Exception(int, std::string const&, std::string const&, std::string const&, int)'
DBowInterfaceSurf.cpp:(.text._ZNK5DBoW219TemplatedVocabularyISt6vectorIfSaIfEENS_7FSurf64EE4saveERN2cv11FileStorageERKSs[_ZNK5DBoW219TemplatedVocabularyISt6vectorIfSaIfEENS_7FSurf64EE4saveERN2cv11FileStorageERKSs]+0x7d8): undefined reference to `cv::Exception::Exception(int, std::string const&, std::string const&, std::string const&, int)'
DBowInterfaceSurf.cpp:(.text._ZNK5DBoW219TemplatedVocabularyISt6vectorIfSaIfEENS_7FSurf64EE4saveERN2cv11FileStorageERKSs[_ZNK5DBoW219TemplatedVocabularyISt6vectorIfSaIfEENS_7FSurf64EE4saveERN2cv11FileStorageERKSs]+0x8c3): undefined reference to `cv::Exception::Exception(int, std::string const&, std::string const&, std::string const&, int)'
libbackend.a(DBowInterfaceSurf.cpp.o): In function `DBoW2::TemplatedVocabulary<std::vector<float, std::allocator<float> >, DBoW2::FSurf64>::save(std::string const&) const':
DBowInterfaceSurf.cpp:(.text._ZNK5DBoW219TemplatedVocabularyISt6vectorIfSaIfEENS_7FSurf64EE4saveERKSs[_ZNK5DBoW219TemplatedVocabularyISt6vectorIfSaIfEENS_7FSurf64EE4saveERKSs]+0x4e): undefined reference to `cv::FileStorage::FileStorage(std::string const&, int, std::string const&)'
libbackend.a(MeshGenerator.cpp.o): In function `MeshGenerator::save()':
MeshGenerator.cpp:(.text+0x1a1d): undefined reference to `pcl::io::savePLYFile(std::string const&, pcl::PolygonMesh const&, unsigned int)'
collect2: error: ld returned 1 exit status
CMakeFiles/Kintinuous.dir/build.make:263: recipe for target 'Kintinuous' failed
make[2]: *** [Kintinuous] Error 1
CMakeFiles/Makefile2:62: recipe for target 'CMakeFiles/Kintinuous.dir/all' failed
make[1]: *** [CMakeFiles/Kintinuous.dir/all] Error 2
Makefile:75: recipe for target 'all' failed
make: *** [all] Error 2

Do you have any ideas about this? Thanks a lot.

iSAM is not available

When I try to do the installation it fails on the installation of iSAM. It seems this site is offline. Is it possible to fix this some other way?

void Deformation::addCameraLoop(): Assertion `deformationGraph' failed.

Amazing work!
The code is compiled successfully. But the program unexpectedly finished with the error 'Kintinuous: /.../src/backend/Deformation.cpp:264: void Deformation::addCameraLoop(): Assertion `deformationGraph' failed. The program has unexpectedly finished.'
I wonder if the deformationGraph is not initialized before using. Looking forward to your reply.

Future of this repo

Are there any modern re-implementations of this code? It's getting harder to compile as Ubuntu and the dependencies move forward, are there any plans to take this to another platform or release binaries?

Parameter Setting for Kintinuous

Thanks a lot for providing kintinuous!

I tested the code you provided, but couldn't get the same results as the article.
For example, I ran the code with ”-s 7 -v ./vocab.yml.gz -l ./*.klg -ri -fl -od -m -f -dg 0.1” and got 0.128m of RMSE for fr2/desk dataset. But it is 0.034m in the article “Real-time large scale dense RGB-D SLAM with volumetric fusion”.

How should I adjust the parameters to get the same results in the article?

Does not work with cuda 8.0?

....
Waiting for first frame.. got it!
Error: invalid device function ~/Kintinuous/src/frontend/cuda/tsdf_volume.cu:477

Ubuntu 16.04, cuda 8.0, GeForce GTX 1060, i7-6700HQ

crash on dyson_lab.klg

Seems there is an issue when the trajectory is short relative to the size of the volume (just a guess). Running Kintinuous on the smaller-scale dataset of dyson_lab.klg (compared to loop) causes the following error:

Kintinuous: ~/Kintinuous/src/backend/Deformation.cpp:264: void Deformation::addCameraLoop(): Assertion `deformationGraph' failed.
Aborted (core dumped)

Unknown Error on MainController.cpp line 74.

I've fully built and installed Kintinuous on Ubuntu 14.04.5, but as soon as I try to run ./Kintinuous I get:

"Error: unknwon error ....../Kintinuous/src/MainController.cpp:74"

I have an Nvidia GPU (specifically, a GTX 680 installed). @mp3guy or anyone else, any idea what I should try to fix this?

Skip a certain number of frames from start

Like ElasticFusion does Kintinuous has the option of skipping a certain number of frames at the start?Or any option to set the reconstruction preference from frame n1 to frame n2 ?

realsense D435

Hello,
My lab bought a new Realsense D435, I want to run it with Kintinuous, I have tried but failed.Can it run with Realsense D435?
Thank you very much

Strange error thrown when loading vocabulary for loop detection: Undefined Symbol

I got:
Loading vocabularly for loop detection... ./Kintinuous: symbol lookup error: ./Kintinuous: undefined symbol: _ZN2cv11FileStorageC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiS8_
when running the example. I'm on Ubuntu 16.04 and I've followed the instructions to install it.

Has anyone encountered this problem before or does anyone know how to solve this?

Undefined References to Boost/Thread and Boost/Date_Time

When building Kintinuous on a new installation of Ubuntu 14.04, I'm getting the error at the very end, when build.sh runs "make -j8".

I can't say I understand it at all, but I was under the impression that the issue was that during the creation of Deformation.cpp.o, TrackerInterface.cpp.o, MeshGenerator.cpp.o, and PlaceRecognition.cpp.o, CMake is unable to find "boost/thread" and "boost/date_time". Is that correct?

It seems to have no trouble in finding things like boost/algorithm/algorithm.hpp though.

Here's a screenshot.
screenshot from 2017-01-14 01 23 29

I assume it's a problem with my installation of Boost, so this is a list of what I did:
I downloaded boost_1_63_0.tar.bz2 off of Sourceforge, extracted it, and ran

sudo ./bootstrap.sh --prefix=/usr/local
sudo ./b2 install
gedit ~/.profile

and added the line
export PATH=$PATH:/usr/local/include/:/usr/local/lib/
to the end of .profile, and saved it.

Any help in heading into the right direction would be greatly appreciated. For the time being, I'll just roll back my version of Kintinuous to 8 Sept 2016 when it was last working.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.