Fast and robust clustering of point clouds generated with a Velodyne sensor.

Overview

Depth Clustering

Build Status Coverage Status

This is a fast and robust algorithm to segment point clouds taken with Velodyne sensor into objects. It works with all available Velodyne sensors, i.e. 16, 32 and 64 beam ones.

Check out a video that shows all objects outlined in orange: Segmentation illustration

Prerequisites

I recommend using a virtual environment in your catkin workspace ( in this readme) and will assume that you have it set up throughout this readme. Please update your commands accordingly if needed. I will be using pipenv that you can install with pip.

Set up workspace and catkin

Regardless of your system you will need to do the following steps:

cd <catkin_ws>            # navigate to the workspace
pipenv shell --fancy      # start a virtual environment
pip install catkin-tools  # install catkin-tools for building
mkdir src                 # create src dir if you don't have it already
# Now you just need to clone the repo:
git clone https://github.com/PRBonn/depth_clustering src/depth_clustering

System requirements

You will need OpenCV, QGLViewer, FreeGLUT, QT4 or QT5 and optionally PCL and/or ROS. The following sections contain an installation command for various Ubuntu systems (click folds to expand):

Ubuntu 14.04

Install these packages:

sudo apt install libopencv-dev libqglviewer-dev freeglut3-dev libqt4-dev
Ubuntu 16.04

Install these packages:

sudo apt install libopencv-dev libqglviewer-dev freeglut3-dev libqt5-dev
Ubuntu 18.04

Install these packages:

sudo apt install libopencv-dev libqglviewer-dev-qt5 freeglut3-dev qtbase5-dev 

You might also need the latest GoogleTest binary installed on your systems. As Ubuntu is not shipped with these binaries by default, you would have to install them yourself or adapt the build script to build them from source.

Optional requirements

If you want to use PCL clouds and/or use ROS for data acquisition you can install the following:

  • (optional) PCL - needed for saving clouds to disk
  • (optional) ROS - needed for subscribing to topics

How to build?

This is a catkin package. So we assume that the code is in a catkin workspace and CMake knows about the existence of Catkin. It should be already taken care of if you followed the instructions here. Then you can build it from the project folder:

mkdir build
cd build
cmake ..
make -j4
ctest -VV  # run unit tests, optional

It can also be built with catkin_tools if the code is inside catkin workspace:

catkin build depth_clustering

P.S. in case you don't use catkin build you should reconsider your decision.

How to run?

See examples. There are ROS nodes as well as standalone binaries. Examples include showing axis oriented bounding boxes around found objects (these start with show_objects_ prefix) as well as a node to save all segments to disk. The examples should be easy to tweak for your needs.

Run on real world data

Go to folder with binaries:

cd 
   
    /build/devel/lib/depth_clustering

   

Frank Moosmann's "Velodyne SLAM" Dataset

Get the data:

mkdir data/; wget http://www.mrt.kit.edu/z/publ/download/velodyneslam/data/scenario1.zip -O data/moosmann.zip; unzip data/moosmann.zip -d data/; rm data/moosmann.zip

Run a binary to show detected objects:

./show_objects_moosmann --path data/scenario1/

Alternatively, you can run the data from Qt GUI (as in video):

./qt_gui_app

Once the GUI is shown, click on OpenFolder button and choose the folder where you have unpacked the png files, e.g. data/scenario1/. Navigate the viewer with arrows and controls seen on screen.

Other data

There are also examples on how to run the processing on KITTI data and on ROS input. Follow the --help output of each of the examples for more details.

Also you can load the data from the GUI. Make sure you are loading files with correct extension (*.txt and *.bin for KITTI, *.png for Moosmann's data).

Documentation

You should be able to get Doxygen documentation by running:

cd doc/
doxygen Doxyfile.conf

Related publications

Please cite related papers if you use this code:

@InProceedings{bogoslavskyi16iros,
title     = {Fast Range Image-Based Segmentation of Sparse 3D Laser Scans for Online Operation},
author    = {I. Bogoslavskyi and C. Stachniss},
booktitle = {Proc. of The International Conference on Intelligent Robots and Systems (IROS)},
year      = {2016},
url       = {http://www.ipb.uni-bonn.de/pdfs/bogoslavskyi16iros.pdf}
}
@Article{bogoslavskyi17pfg,
title   = {Efficient Online Segmentation for Sparse 3D Laser Scans},
author  = {I. Bogoslavskyi and C. Stachniss},
journal = {PFG -- Journal of Photogrammetry, Remote Sensing and Geoinformation Science},
year    = {2017},
pages   = {1--12},
url     = {https://link.springer.com/article/10.1007%2Fs41064-016-0003-y},
}
Comments
  • subscribing to clusters/bounding boxes

    subscribing to clusters/bounding boxes

    Thanks for creating this awesome tool!

    I noticed that it can subscribe to ros topics to obtain pointclouds to cluster, but was wondering if there are any ways to subscribe to the bounding boxes or clusters as well.

    If not, how would you recommend going about doing this?

    Thanks, Banti

    question 
    opened by bgheneti 14
  • how can this publish topics represent the bounding box?

    how can this publish topics represent the bounding box?

    Hi
    Thanks for your work on this package, how can the bounding box be published as a topic after the segmentation? after catkin build, it seems that they is no rosnode related to the following two file: ``

    1. save_clusters_node.cpp 2.show_objects_node.cpp `` Best Welson
    opened by weisongwen 12
  • Eigen fatal when runing

    Eigen fatal when runing

    Hi, @niosus , thank you for sharing your excellent work. I try to run the code and show objects using moosmann dataset, but failed.

    The running environment is ubuntu 16.04 with ros kinetic and eigen 3.3.4.

    I got some feedback as follow:

    INFO: Reading from: /home/lee/depth_clustering_ws/data/scenario1/
    INFO: running on Moosman data
    INFO: Getting file paths from folder: /home/lee/depth_clustering_ws/data/scenario1/
    INFO: There are 2513 '.png' files in the folder.
    INFO: Getting file paths from folder: /home/lee/depth_clustering_ws/data/scenario1/
    INFO: There are 1 'img.cfg' files in the folder.
    INFO: Set en_US.UTF-8 locale.
    INFO: Reading config.
    INFO: Skipping commentary:
    # imgHSize; imgVSize; horizStartAngle(grad); horizStopAngle(grad); vertAngle_1; vertAngle_2; ...; vertAngle_n
    start:180.000000, stop:-180.000000, span:360.000000, step:-0.413793
    INFO: Params sucessfully read. Rows: 64, Cols: 870
    
    ===================== Setting Connection =====================
    || Sender: DepthGroundRemover (id: 3)
    || Type: STREAMER
    || |
    || V
    || Client: ImageBasedClustere<(short)1, (short)1> > (id: 5)
    ==============================================================
    
    ===================== Setting Connection =====================
    || Sender: ImageBasedClustere<(short)1, (short)1> > (id: 5)
    || Type: STREAMER
    || |
    || V
    || Client: ObjectPtrStorer (id: 2)
    ==============================================================
    
    show_objects_moosmann: /usr/local/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 ‘(internal::UIntPtr(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。
    

    I checked the web and found it's the problem caused by Eigen. Is there anyone know how to fix it? Many thanks!

    opened by LiShuaixin 9
  • Unable to build

    Unable to build

    I am unable to build using ROS Kinetic (ubuntu 16.04). Showing following error: error: call of overloaded ‘make_shared(PclCloud&)’ is ambiguous return make_shared(pcl_cloud); ^ error

    opened by bymbhaskar 8
  • build error

    build error

    some error when I build

    Errors << depth_clustering:make /home/dgist/workspace/git-folder/clustering_ws/logs/depth_clustering/build.make.002.log CMakeFiles/depth_clustering_test.dir/test_pose.cpp.o: In function PoseDeathTest_TestLikelihood_Test::TestBody()': test_pose.cpp:(.text+0x585d): undefined reference totesting::internal::DeathTest::Create(char const*, testing::Matcher<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&>, char const*, int, testing::internal::DeathTest**)' test_pose.cpp:(.text+0x5928): undefined reference to `testing::internal::DeathTest::Create(char const*, testing::Matcher<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&>, char const*, int, testing::internal::DeathTest**)' collect2: error: ld returned 1 exit status make[2]: *** [/home/dgist/workspace/git-folder/clustering_ws/devel/.private/depth_clustering/lib/depth_clustering/depth_clustering_test] Error 1 make[1]: *** [test/CMakeFiles/depth_clustering_test.dir/all] Error 2 make[1]: *** Waiting for unfinished jobs.... make: *** [all] Error 2 cd /home/dgist/workspace/git-folder/clustering_ws/build/depth_clustering; catkin build --get-env depth_clustering | catkin env -si /usr/bin/make --jobserver-fds=6,7 -j; cd - ............................................................................... Failed << depth_clustering:make [ Exited with code 2 ]
    Failed <<< depth_clustering

    what is happen?

    my PC setting is

    1. Ubuntu 18.04
    2. ROS melodic
    3. install PCL

    my command is $ pip install catkin-tools $ catkin build depth_clustering

    opened by lejk8104 7
  • kernel problem

    kernel problem

    1 in GetSavitskyGolayKernel

          kernel = Mat::zeros(window_size, 1, CV_32F);
          kernel.at<float>(0, 0) = -3.0f;
          kernel.at<float>(0, 1) = 12.0f;
          kernel.at<float>(0, 2) = 17.0f;
          kernel.at<float>(0, 3) = 12.0f;
          kernel.at<float>(0, 4) = -3.0f;
    

    the kernel size first is window_size*1, why set value (0, 1) (0, 2)... does kernel size is 1*window_size?

    2 in GetUniformKernel

    Mat kernel = Mat::zeros(window_size, 1, type);
    kernel.at<float>(0, 0) = 1;
    kernel.at<float>(window_size - 1, 0) = 1;
    kernel /= 2;
    
    

    kernel /= 2 make kernel is like [[0.5, 0, 0.... 0, 0.5]] , but kernel value must be 1, why devidi by 2?

    opened by lonlonago 6
  • Implementation on velodyne lidar

    Implementation on velodyne lidar

    I am using Velodyne (VLP-32C) Lidar. Could you please let me know, if this Lidar gives range data (as 32 rows and many columns, used in your method) or I need to create this kind of format using the point cloud. Creating a cylindrical projection from a point cloud increases the run time to great extent..

    opened by bymbhaskar 5
  • clustering problems

    clustering problems

    Hello,

    First of all, very nice tool! I have been testing these nodes with our VLP16 and they worked very well. We drove around with our car and had similar results as in your movies. Now we have created a simulator that calculates the interference of the lidar rays and some objects. This simulator creates pointclouds as the VLP16 would do, but I don't get the nice results as on the tests with the real VLP16. I'm not sure what is going wrong, but maybe you have an idea.

    The simulated environment is a flat surface with some vertical walls and every wall should in fact be seen as one cluster. I don't see any clustering going on if I do not set the minimal cluster size to 10. But then I see that the calculated clusters are only like vertical small boxes. Is there a limitation towards how far the points can be apart form each other and is this direction dependent? I have put some screenshots below.

    I appreciate your help very much!

    image

    image

    image

    image

    opened by FlexiPro 5
  • wip: introduce an image with debug info published by labeler

    wip: introduce an image with debug info published by labeler

    I want to be able to easily visualize the angle image produced from the depth image. For this I want a nice interface for sending back an image to anyone who decides to ask for it as a client.

    opened by niosus 5
  • *** Error in `./show_objects_moosman': realloc(): invalid pointer: 0x00007fae44ebb820 ***

    *** Error in `./show_objects_moosman': realloc(): invalid pointer: 0x00007fae44ebb820 ***

    *** Error in `./show_objects_moosman': realloc(): invalid pointer: 0x00007fae44ebb820 ***
    ======= Backtrace: =========
    /lib/x86_64-linux-gnu/libc.so.6(+0x777e5)[0x7fae480ae7e5]
    /lib/x86_64-linux-gnu/libc.so.6(realloc+0x348)[0x7fae480bae58]
    /usr/lib/x86_64-linux-gnu/libQt5Core.so.5(_ZN9QListData7reallocEi+0x1f)[0x7fae433e09cf]
    /usr/lib/x86_64-linux-gnu/libQt5Core.so.5(_ZN9QListData6appendEi+0x81)[0x7fae433e0aa1]
    /usr/lib/x86_64-linux-gnu/libQt5Core.so.5(+0x1d6d78)[0x7fae434acd78]
    /usr/lib/x86_64-linux-gnu/libQt5Core.so.5(_Z21qRegisterResourceDataiPKhS0_S0_+0x2e6)[0x7fae434a8b16]
    /usr/lib/x86_64-linux-gnu/libQt5Core.so.5(+0x7bcc3)[0x7fae43351cc3]
    /lib64/ld-linux-x86-64.so.2(+0x104ea)[0x7fae4b44c4ea]
    /lib64/ld-linux-x86-64.so.2(+0x105fb)[0x7fae4b44c5fb]
    /lib64/ld-linux-x86-64.so.2(+0xcfa)[0x7fae4b43ccfa]
    ======= Memory map: ========
    00400000-0041f000 r-xp 00000000 08:01 5143141                            /home/suijingfeng/source/depth_clustering/build/devel/lib/depth_clustering/show_objects_moosman
    0061f000-00620000 r--p 0001f000 08:01 5143141                            /home/suijingfeng/source/depth_clustering/build/devel/lib/depth_clustering/show_objects_moosman
    00620000-00621000 rw-p 00020000 08:01 5143141                            /home/suijingfeng/source/depth_clustering/build/devel/lib/depth_clustering/show_objects_moosman
    020ff000-02120000 rw-p 00000000 00:00 0                                  [heap]
    7fae38000000-7fae38021000 rw-p 00000000 00:00 0 
    7fae38021000-7fae3c000000 ---p 00000000 00:00 0 
    7fae3c6b6000-7fae3c6bb000 r-xp 00000000 08:01 1056915                    /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
    7fae3c6bb000-7fae3c8ba000 ---p 00005000 08:01 1056915                    /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
    7fae3c8ba000-7fae3c8bb000 r--p 00004000 08:01 1056915                    /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
    7fae3c8bb000-7fae3c8bc000 rw-p 00005000 08:01 1056915                    /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
    7fae3c8bc000-7fae3c8df000 r-xp 00000000 08:01 1057462                    /usr/lib/x86_64-linux-gnu/libgraphite2.so.3.0.1
    7fae3c8df000-7fae3cade000 ---p 00023000 08:01 1057462                    /usr/lib/x86_64-linux-gnu/libgraphite2.so.3.0.1
    7fae3cade000-7fae3cae0000 r--p 00022000 08:01 1057462                    /usr/lib/x86_64-linux-gnu/libgraphite2.so.3.0.1
    7fae3cae0000-7fae3cae1000 rw-p 00024000 08:01 1057462                    /usr/lib/x86_64-linux-gnu/libgraphite2.so.3.0.1
    7fae3cae1000-7fae3caec000 r-xp 00000000 08:01 1057634                    /usr/lib/x86_64-linux-gnu/libjbig.so.0
    7fae3caec000-7fae3cceb000 ---p 0000b000 08:01 1057634                    /usr/lib/x86_64-linux-gnu/libjbig.so.0
    7fae3cceb000-7fae3ccec000 r--p 0000a000 08:01 1057634                    /usr/lib/x86_64-linux-gnu/libjbig.so.0
    7fae3ccec000-7fae3ccef000 rw-p 0000b000 08:01 1057634                    /usr/lib/x86_64-linux-gnu/libjbig.so.0
    7fae3ccef000-7fae3cd10000 r-xp 00000000 08:01 4330043                    /lib/x86_64-linux-gnu/liblzma.so.5.0.0
    7fae3cd10000-7fae3cf0f000 ---p 00021000 08:01 4330043                    /lib/x86_64-linux-gnu/liblzma.so.5.0.0
    7fae3cf0f000-7fae3cf10000 r--p 00020000 08:01 4330043                    /lib/x86_64-linux-gnu/liblzma.so.5.0.0
    7fae3cf10000-7fae3cf11000 rw-p 00021000 08:01 4330043                    /lib/x86_64-linux-gnu/liblzma.so.5.0.0
    7fae3cf11000-7fae3cf15000 r-xp 00000000 08:01 4330160                    /lib/x86_64-linux-gnu/libuuid.so.1.3.0
    7fae3cf15000-7fae3d114000 ---p 00004000 08:01 4330160                    /lib/x86_64-linux-gnu/libuuid.so.1.3.0
    7fae3d114000-7fae3d115000 r--p 00003000 08:01 4330160                    /lib/x86_64-linux-gnu/libuuid.so.1.3.0
    7fae3d115000-7fae3d116000 rw-p 00004000 08:01 4330160                    /lib/x86_64-linux-gnu/libuuid.so.1.3.0
    7fae3d116000-7fae3d118000 r-xp 00000000 08:01 1056904                    /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
    7fae3d118000-7fae3d318000 ---p 00002000 08:01 1056904                    /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
    7fae3d318000-7fae3d319000 r--p 00002000 08:01 1056904                    /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
    7fae3d319000-7fae3d31a000 rw-p 00003000 08:01 1056904                    /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
    7fae3d31a000-7fae3d37c000 r-xp 00000000 08:01 1056941                    /usr/lib/x86_64-linux-gnu/libXt.so.6.0.0
    7fae3d37c000-7fae3d57c000 ---p 00062000 08:01 1056941                    /usr/lib/x86_64-linux-gnu/libXt.so.6.0.0
    7fae3d57c000-7fae3d57d000 r--p 00062000 08:01 1056941                    /usr/lib/x86_64-linux-gnu/libXt.so.6.0.0
    7fae3d57d000-7fae3d582000 rw-p 00063000 08:01 1056941                    /usr/lib/x86_64-linux-gnu/libXt.so.6.0.0
    7fae3d582000-7fae3d583000 rw-p 00000000 00:00 0 
    7fae3d583000-7fae3d5a9000 r-xp 00000000 08:01 4330007                    /lib/x86_64-linux-gnu/libexpat.so.1.6.0
    7fae3d5a9000-7fae3d7a9000 ---p 00026000 08:01 4330007                    /lib/x86_64-linux-gnu/libexpat.so.1.6.0
    7fae3d7a9000-7fae3d7ab000 r--p 00026000 08:01 4330007                    /lib/x86_64-linux-gnu/libexpat.so.1.6.0
    7fae3d7ab000-7fae3d7ac000 rw-p 00028000 08:01 4330007                    /lib/x86_64-linux-gnu/libexpat.so.1.6.0
    7fae3d7ac000-7fae3f062000 r-xp 00000000 08:01 1057582                    /usr/lib/x86_64-linux-gnu/libicudata.so.55.1
    7fae3f062000-7fae3f261000 ---p 018b6000 08:01 1057582                    /usr/lib/x86_64-linux-gnu/libicudata.so.55.1
    7fae3f261000-7fae3f262000 r--p 018b5000 08:01 1057582                    /usr/lib/x86_64-linux-gnu/libicudata.so.55.1
    7fae3f262000-7fae3f263000 rw-p 018b6000 08:01 1057582                    /usr/lib/x86_64-linux-gnu/libicudata.so.55.1
    7fae3f263000-7fae3f284000 r-xp 00000000 08:01 1058282                    /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
    7fae3f284000-7fae3f483000 ---p 00021000 08:01 1058282                    /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
    7fae3f483000-7fae3f484000 r--p 00020000 08:01 1058282                    /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
    7fae3f484000-7fae3f485000 rw-p 00021000 08:01 1058282                    /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
    7fae3f485000-7fae3f4f3000 r-xp 00000000 08:01 4330105                    /lib/x86_64-linux-gnu/libpcre.so.3.13.2
    7fae3f4f3000-7fae3f6f3000 ---p 0006e000 08:01 4330105                    /lib/x86_64-linux-gnu/libpcre.so.3.13.2
    7fae3f6f3000-7fae3f6f4000 r--p 0006e000 08:01 4330105                    /lib/x86_64-linux-gnu/libpcre.so.3.13.2
    7fae3f6f4000-7fae3f6f5000 rw-p 0006f000 08:01 4330105                    /lib/x86_64-linux-gnu/libpcre.so.3.13.2
    7fae3f6f5000-7fae3f6fc000 r-xp 00000000 08:01 1057287                    /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4
    7fae3f6fc000-7fae3f8fb000 ---p 00007000 08:01 1057287                    /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4
    7fae3f8fb000-7fae3f8fc000 r--p 00006000 08:01 1057287                    /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4
    7fae3f8fc000-7fae3f8fd000 rw-p 00007000 08:01 1057287                    /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4
    7fae3f8fd000-7fae3f961000 r-xp 00000000 08:01 1057853                    /usr/lib/x86_64-linux-gnu/libpcre16.so.3.13.2
    7fae3f961000-7fae3fb61000 ---p 00064000 08:01 1057853                    /usr/lib/x86_64-linux-gnu/libpcre16.so.3.13.2
    7fae3fb61000-7fae3fb62000 r--p 00064000 08:01 1057853                    /usr/lib/x86_64-linux-gnu/libpcre16.so.3.13.2
    7fae3fb62000-7fae3fb63000 rw-p 00065000 08:01 1057853                    /usr/lib/x86_64-linux-gnu/libpcre16.so.3.13.2
    7fae3fb63000-7fae3fbbf000 r-xp 00000000 08:01 1053708                    /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0.10000.1
    7fae3fbbf000-7fae3fdbf000 ---p 0005c000 08:01 1053708                    /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0.10000.1
    7fae3fdbf000-7fae3fdc0000 r--p 0005c000 08:01 1053708                    /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0.10000.1
    7fae3fdc0000-7fae3fdc1000 rw-p 0005d000 08:01 1053708                    /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0.10000.1
    7fae3fdc1000-7fae3fe0d000 r-xp 00000000 08:01 1057631                    /usr/lib/x86_64-linux-gnu/libjasper.so.1.0.0
    7fae3fe0d000-7fae4000c000 ---p 0004c000 08:01 1057631                    /usr/lib/x86_64-linux-gnu/libjasper.so.1.0.0
    7fae4000c000-7fae4000d000 r--p 0004b000 08:01 1057631                    /usr/lib/x86_64-linux-gnu/libjasper.so.1.0.0
    7fae4000d000-7fae40011000 rw-p 0004c000 08:01 1057631                    /usr/lib/x86_64-linux-gnu/libjasper.so.1.0.0
    7fae40011000-7fae40018000 rw-p 00000000 00:00 0 
    7fae40018000-7fae40087000 r-xp 00000000 08:01 1058071                    /usr/lib/x86_64-linux-gnu/libtiff.so.5.2.4
    7fae40087000-7fae40287000 ---p 0006f000 08:01 1058071                    /usr/lib/x86_64-linux-gnu/libtiff.so.5.2.4
    7fae40287000-7fae40288000 r--p 0006f000 08:01 1058071                    /usr/lib/x86_64-linux-gnu/libtiff.so.5.2.4
    7fae40288000-7fae4028b000 rw-p 00070000 08:01 1058071                    /usr/lib/x86_64-linux-gnu/libtiff.so.5.2.4
    7fae4028b000-7fae402e4000 r-xp 00000000 08:01 1058186                    /usr/lib/x86_64-linux-gnu/libwebp.so.5.0.4
    7fae402e4000-7fae404e4000 ---p 00059000 08:01 1058186                    /usr/lib/x86_64-linux-gnu/libwebp.so.5.0.4
    7fae404e4000-7fae404e5000 r--p 00059000 08:01 1058186                    /usr/lib/x86_64-linux-gnu/libwebp.so.5.0.4
    7fae404e5000-7fae404e7000 rw-p 0005a000 08:01 1058186                    /usr/lib/x86_64-linux-gnu/libwebp.so.5.0.4
    7fae404e7000-7fae4053e000 r-xp 00000000 08:01 1057638                    /usr/lib/x86_64-linux-gnu/libjpeg.so.8.0.2
    7fae4053e000-7fae4073e000 ---p 00057000 08:01 1057638                    /usr/lib/x86_64-linux-gnu/libjpeg.so.8.0.2
    7fae4073e000-7fae4073f000 r--p 00057000 08:01 1057638                    /usr/lib/x86_64-linux-gnu/libjpeg.so.8.0.2
    7fae4073f000-7fae40740000 rw-p 00058000 08:01 1057638                    /usr/lib/x86_64-linux-gnu/libjpeg.so.8.0.2
    7fae40740000-7fae407fa000 r-xp 00000000 08:01 1056599                    /usr/lib/nvidia-367/libGLdispatch.so.0
    7fae407fa000-7fae409fa000 ---p 000ba000 08:01 1056599                    /usr/lib/nvidia-367/libGLdispatch.so.0
    7fae409fa000-7fae40a09000 rw-p 000ba000 08:01 1056599                    /usr/lib/nvidia-367/libGLdispatch.so.0
    7fae40a09000-7fae40a29000 rw-p 00000000 00:00 0 
    7fae40a29000-7fae40a39000 r-xp 00000000 08:01 1056616                    /usr/lib/nvidia-367/libGLX.so.0
    7fae40a39000-7fae40c39000 ---p 00010000 08:01 1056616                    /usr/lib/nvidia-367/libGLX.so.0
    7fae40c39000-7fae40c3a000 rw-p 00010000 08:01 1056616                    /usr/lib/nvidia-367/libGLX.so.0
    7fae40c3a000-7fae40c5a000 rw-p 00000000 00:00 0 
    7fae40c5a000-7fae40c6b000 r-xp 00000000 08:01 1056917                    /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
    7fae40c6b000-7fae40e6a000 ---p 00011000 08:01 1056917                    /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
    7fae40e6a000-7fae40e6b000 r--p 00010000 08:01 1056917                    /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
    7fae40e6b000-7fae40e6c000 rw-p 00011000 08:01 1056917                    /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
    7fae40e6c000-7fae40e7b000 r-xp 00000000 08:01 1056925                    /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0
    7fae40e7b000-7fae4107a000 ---p 0000f000 08:01 1056925                    /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0
    7fae4107a000-7fae4107b000 r--p 0000e000 08:01 1056925                    /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0
    7fae4107b000-7fae4107c000 rw-p 0000f000 08:01 1056925                    /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0
    7fae4107c000-7fae41092000 r-xp 00000000 08:01 1056770                    /usr/lib/x86_64-linux-gnu/libICE.so.6.3.0
    7fae41092000-7fae41291000 ---p 00016000 08:01 1056770                    /usr/lib/x86_64-linux-gnu/libICE.so.6.3.0
    7fae41291000-7fae41292000 r--p 00015000 08:01 1056770                    /usr/lib/x86_64-linux-gnu/libICE.so.6.3.0
    7fae41292000-7fae41293000 rw-p 00016000 08:01 1056770                    /usr/lib/x86_64-linux-gnu/libICE.so.6.3.0
    7fae41293000-7fae41296000 rw-p 00000000 00:00 0 
    7fae41296000-7fae4129d000 r-xp 00000000 08:01 1056890                    /usr/lib/x86_64-linux-gnu/libSM.so.6.0.1
    7fae4129d000-7fae4149c000 ---p 00007000 08:01 1056890                    /usr/lib/x86_64-linux-gnu/libSM.so.6.0.1
    7fae4149c000-7fae4149d000 r--p 00006000 08:01 1056890                    /usr/lib/x86_64-linux-gnu/libSM.so.6.0.1
    7fae4149d000-7fae4149e000 rw-p 00007000 08:01 1056890                    /usr/lib/x86_64-linux-gnu/libSM.so.6.0.1
    7fae4149e000-7fae414c2000 r-xp 00000000 08:01 4330117                    /lib/x86_64-linux-gnu/libpng12.so.0.54.0
    7fae414c2000-7fae416c1000 ---p 00024000 08:01 4330117                    /lib/x86_64-linux-gnu/libpng12.so.0.54.0
    7fae416c1000-7fae416c2000 r--p 00023000 08:01 4330117                    /lib/x86_64-linux-gnu/libpng12.so.0.54.0
    7fae416c2000-7fae416c3000 rw-p 00024000 08:01 4330117                    /lib/x86_64-linux-gnu/libpng12.so.0.54.0
    7fae416c3000-7fae416da000 r-xp 00000000 08:01 1057018                    /usr/lib/x86_64-linux-gnu/libaudio.so.2.4
    7fae416da000-7fae418da000 ---p 00017000 08:01 1057018                    /usr/lib/x86_64-linux-gnu/libaudio.so.2.4
    7fae418da000-7fae418db000 r--p 00017000 08:01 1057018                    /usr/lib/x86_64-linux-gnu/libaudio.so.2.4
    7fae418db000-7fae418dc000 rw-p 00018000 08:01 1057018                    /usr/lib/x86_64-linux-gnu/libaudio.so.2.4
    7fae418dc000-7fae41919000 r-xp 00000000 08:01 1048728                    /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.9.0
    7fae41919000-7fae41b18000 ---p 0003d000 08:01 1048728                    /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.9.0
    7fae41b18000-7fae41b1a000 r--p 0003c000 08:01 1048728                    /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.9.0
    7fae41b1a000-7fae41b1f000 rw-p 0003e000 08:01 1048728                    /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.9.0
    7fae41b1f000-7fae41b28000 r-xp 00000000 08:01 1056937                    /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0
    7fae41b28000-7fae41d27000 ---p 00009000 08:01 1056937                    /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0
    7fae41d27000-7fae41d28000 r--p 00008000 08:01 1056937                    /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0
    7fae41d28000-7fae41d29000 rw-p 00009000 08:01 1056937                    /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0
    7fae41d29000-7fae41dcd000 r-xp 00000000 08:01 1057335                    /usr/lib/x86_64-linux-gnu/libfreetype.so.6.12.1
    7fae41dcd000-7fae41fcc000 ---p 000a4000 08:01 1057335                    /usr/lib/x86_64-linux-gnu/libfreetype.so.6.12.1
    7fae41fcc000-7fae41fd2000 r--p 000a3000 08:01 1057335                    /usr/lib/x86_64-linux-gnu/libfreetype.so.6.12.1
    7fae41fd2000-7fae41fd3000 rw-p 000a9000 08:01 1057335                    /usr/lib/x86_64-linux-gnu/libfreetype.so.6.12.1
    7fae41fd3000-7fae42040000 r-xp 00000000 08:01 1056762                    /usr/lib/x86_64-linux-gnu/libGLU.so.1.3.1
    7fae42040000-7fae42240000 ---p 0006d000 08:01 1056762                    /usr/lib/x86_64-linux-gnu/libGLU.so.1.3.1
    7fae42240000-7fae42241000 r--p 0006d000 08:01 1056762                    /usr/lib/x86_64-linux-gnu/libGLU.so.1.3.1
    7fae42241000-7fae42242000 rw-p 0006e000 08:01 1056762                    /usr/lib/x86_64-linux-gnu/libGLU.so.1.3.1
    7fae42242000-7fae423c1000 r-xp 00000000 08:01 1057596                    /usr/lib/x86_64-linux-gnu/libicuuc.so.55.1
    7fae423c1000-7fae425c1000 ---p 0017f000 08:01 1057596                    /usr/lib/x86_64-linux-gnu/libicuuc.so.55.1
    7fae425c1000-7fae425d1000 r--p 0017f000 08:01 1057596                    /usr/lib/x86_64-linux-gnu/libicuuc.so.55.1
    7fae425d1000-7fae425d2000 rw-p 0018f000 08:01 1057596                    /usr/lib/x86_64-linux-gnu/libicuuc.so.55.1
    7fae425d2000-7fae425d6000 rw-p 00000000 00:00 0 
    7fae425d6000-7fae42828000 r-xp 00000000 08:01 1057584                    /usr/lib/x86_64-linux-gnu/libicui18n.so.55.1
    7fae42828000-7fae42a28000 ---p 00252000 08:01 1057584                    /usr/lib/x86_64-linux-gnu/libicui18n.so.55.1
    7fae42a28000-7fae42a37000 r--p 00252000 08:01 1057584                    /usr/lib/x86_64-linux-gnu/libicui18n.so.55.1
    7fae42a37000-7fae42a38000 rw-p 00261000 08:01 1057584                    /usr/lib/x86_64-linux-gnu/libicui18n.so.55.1
    7fae42a38000-7fae42b6d000 r-xp 00000000 08:01 1056900                    /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
    7fae42b6d000-7fae42d6d000 ---p 00135000 08:01 1056900                    /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
    7fae42d6d000-7fae42d6e000 r--p 00135000 08:01 1056900                    /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
    7fae42d6e000-7fae42d72000 rw-p 00136000 08:01 1056900                    /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
    7fae42d72000-7fae42e81000 r-xp 00000000 08:01 4330018                    /lib/x86_64-linux-gnu/libglib-2.0.so.0.4800.1
    7fae42e81000-7fae43080000 ---p 0010f000 08:01 4330018                    /lib/x86_64-linux-gnu/libglib-2.0.so.0.4800.1
    7fae43080000-7fae43081000 r--p 0010e000 08:01 4330018                    /lib/x86_64-linux-gnu/libglib-2.0.so.0.4800.1
    7fae43081000-7fae43082000 rw-p 0010f000 08:01 4330018                    /lib/x86_64-linux-gnu/libglib-2.0.so.0.4800.1
    7fae43082000-7fae43083000 rw-p 00000000 00:00 0 
    7fae43083000-7fae430d5000 r-xp 00000000 08:01 1057442                    /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4800.1
    7fae430d5000-7fae432d4000 ---p 00052000 08:01 1057442                    /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4800.1
    7fae432d4000-7fae432d5000 r--p 00051000 08:01 1057442                    /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4800.1
    7fae432d5000-7fae432d6000 rw-p 00052000 08:01 1057442                    /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4800.1
    7fae432d6000-7fae4379b000 r-xp 00000000 08:01 1049465                    /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.5.1
    7fae4379b000-7fae437a7000 r--p 004c4000 08:01 1049465                    /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.5.1
    7fae437a7000-7fae437a8000 rw-p 004d0000 08:01 1049465                    /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.5.1
    7fae437a8000-7fae437ac000 rw-p 00000000 00:00 0 
    7fae437ac000-7fae43cd3000 r-xp 00000000 08:01 1053684                    /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.5.1
    7fae43cd3000-7fae43cd4000 ---p 00527000 08:01 1053684                    /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.5.1
    7fae43cd4000-7fae43ce9000 r--p 00527000 08:01 1053684                    /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.5.1
    7fae43ce9000-7fae43cef000 rw-p 0053c000 08:01 1053684                    /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.5.1
    7fae43cef000-7fae43cf4000 rw-p 00000000 00:00 0 
    7fae43cf4000-7fae43cfb000 r-xp 00000000 08:01 4329741                    /lib/x86_64-linux-gnu/librt-2.23.so
    7fae43cfb000-7fae43efa000 ---p 00007000 08:01 4329741                    /lib/x86_64-linux-gnu/librt-2.23.so
    7fae43efa000-7fae43efb000 r--p 00006000 08:01 4329741                    /lib/x86_64-linux-gnu/librt-2.23.so
    7fae43efb000-7fae43efc000 rw-p 00007000 08:01 4329741                    /lib/x86_64-linux-gnu/librt-2.23.so
    7fae43efc000-7fae43eff000 r-xp 00000000 08:01 4329745                    /lib/x86_64-linux-gnu/libdl-2.23.so
    7fae43eff000-7fae440fe000 ---p 00003000 08:01 4329745                    /lib/x86_64-linux-gnu/libdl-2.23.so
    7fae440fe000-7fae440ff000 r--p 00002000 08:01 4329745                    /lib/x86_64-linux-gnu/libdl-2.23.so
    7fae440ff000-7fae44100000 rw-p 00003000 08:01 4329745                    /lib/x86_64-linux-gnu/libdl-2.23.so
    7fae44100000-7fae44119000 r-xp 00000000 08:01 4330167                    /lib/x86_64-linux-gnu/libz.so.1.2.8
    7fae44119000-7fae44318000 ---p 00019000 08:01 4330167                    /lib/x86_64-linux-gnu/libz.so.1.2.8
    7fae44318000-7fae44319000 r--p 00018000 08:01 4330167                    /lib/x86_64-linux-gnu/libz.so.1.2.8
    7fae44319000-7fae4431a000 rw-p 00019000 08:01 4330167                    /lib/x86_64-linux-gnu/libz.so.1.2.8
    7fae4431a000-7fae44533000 r-xp 00000000 08:01 5390682                    /opt/ros/kinetic/lib/libopencv_imgcodecs3.so.3.1.0
    7fae44533000-7fae44733000 ---p 00219000 08:01 5390682                    /opt/ros/kinetic/lib/libopencv_imgcodecs3.so.3.1.0
    7fae44733000-7fae44738000 r--p 00219000 08:01 5390682                    /opt/ros/kinetic/lib/libopencv_imgcodecs3.so.3.1.0
    7fae44738000-7fae4473b000 rw-p 0021e000 08:01 5390682                    /opt/ros/kinetic/lib/libopencv_imgcodecs3.so.3.1.0
    7fae4473b000-7fae447c8000 r-xp 00000000 08:01 1056583                    /usr/lib/nvidia-367/libGL.so.1.0.0
    7fae447c8000-7fae449c8000 ---p 0008d000 08:01 1056583                    /usr/lib/nvidia-367/libGL.so.1.0.0
    7fae449c8000-7fae449c9000 rw-p 0008d000 08:01 1056583                    /usr/lib/nvidia-367/libGL.so.1.0.0
    7fae449c9000-7fae449ca000 rw-p 00000000 00:00 0 
    7fae449ca000-7fae44cb1000 r-xp 00000000 08:01 1056864                    /usr/lib/x86_64-linux-gnu/libQtCore.so.4.8.7
    7fae44cb1000-7fae44eb1000 ---p 002e7000 08:01 1056864                    /usr/lib/x86_64-linux-gnu/libQtCore.so.4.8.7
    7fae44eb1000-7fae44ebb000 r--p 002e7000 08:01 1056864                    /usr/lib/x86_64-linux-gnu/libQtCore.so.4.8.7
    7fae44ebb000-7fae44ebc000 rw-p 002f1000 08:01 1056864                    /usr/lib/x86_64-linux-gnu/libQtCore.so.4.8.7
    7fae44ebc000-7fae44ebd000 rw-p 00000000 00:00 0 
    7fae44ebd000-7fae45969000 r-xp 00000000 08:01 1056873                    /usr/lib/x86_64-linux-gnu/libQtGui.so.4.8.7
    7fae45969000-7fae45b68000 ---p 00aac000 08:01 1056873                    /usr/lib/x86_64-linux-gnu/libQtGui.so.4.8.7
    7fae45b68000-7fae45ba6000 r--p 00aab000 08:01 1056873                    /usr/lib/x86_64-linux-gnu/libQtGui.so.4.8.7
    7fae45ba6000-7fae45bad000 rw-p 00ae9000 08:01 1056873                    /usr/lib/x86_64-linux-gnu/libQtGui.so.4.8.7
    7fae45bad000-7fae45bb1000 rw-p 00000000 00:00 0 
    7fae45bb1000-7fae45caa000 r-xp 00000000 08:01 1063474                    /usr/lib/x86_64-linux-gnu/libQtOpenGL.so.4.8.7
    7fae45caa000-7fae45eaa000 ---p 000f9000 08:01 1063474                    /usr/lib/x86_64-linux-gnu/libQtOpenGL.so.4.8.7
    7fae45eaa000-7fae45ead000 r--p 000f9000 08:01 1063474                    /usr/lib/x86_64-linux-gnu/libQtOpenGL.so.4.8.7
    7fae45ead000-7fae45eb2000 rw-p 000fc000 08:01 1063474                    /usr/lib/x86_64-linux-gnu/libQtOpenGL.so.4.8.7
    7fae45eb2000-7fae45eb3000 rw-p 00000000 00:00 0 
    7fae45eb3000-7fae45f53000 r-xp 00000000 08:01 1056396                    /usr/lib/x86_64-linux-gnu/libQGLViewer.so.2.6.3
    7fae45f53000-7fae46153000 ---p 000a0000 08:01 1056396                    /usr/lib/x86_64-linux-gnu/libQGLViewer.so.2.6.3
    7fae46153000-7fae46155000 r--p 000a0000 08:01 1056396                    /usr/lib/x86_64-linux-gnu/libQGLViewer.so.2.6.3
    7fae46155000-7fae46157000 rw-p 000a2000 08:01 1056396                    /usr/lib/x86_64-linux-gnu/libQGLViewer.so.2.6.3
    7fae46157000-7fae46158000 rw-p 00000000 00:00 0 
    7fae46158000-7fae4625b000 r-xp 00000000 08:01 1061344                    /usr/lib/x86_64-linux-gnu/libboost_regex.so.1.58.0
    7fae4625b000-7fae4645b000 ---p 00103000 08:01 1061344                    /usr/lib/x86_64-linux-gnu/libboost_regex.so.1.58.0
    7fae4645b000-7fae4645f000 r--p 00103000 08:01 1061344                    /usr/lib/x86_64-linux-gnu/libboost_regex.so.1.58.0
    7fae4645f000-7fae46460000 rw-p 00107000 08:01 1061344                    /usr/lib/x86_64-linux-gnu/libboost_regex.so.1.58.0
    7fae46460000-7fae46477000 r-xp 00000000 08:01 1057052                    /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.58.0
    7fae46477000-7fae46676000 ---p 00017000 08:01 1057052                    /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.58.0
    7fae46676000-7fae46677000 r--p 00016000 08:01 1057052                    /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.58.0
    7fae46677000-7fae46678000 rw-p 00017000 08:01 1057052                    /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.58.0
    7fae46678000-7fae47d77000 r-xp 00000000 08:01 5390698                    /opt/ros/kinetic/lib/libopencv_imgproc3.so.3.1.0
    7fae47d77000-7fae47f76000 ---p 016ff000 08:01 5390698                    /opt/ros/kinetic/lib/libopencv_imgproc3.so.3.1.0
    7fae47f76000-7fae47f7f000 r--p 016fe000 08:01 5390698                    /opt/ros/kinetic/lib/libopencv_imgproc3.so.3.1.0
    7fae47f7f000-7fae47fa1000 rw-p 01707000 08:01 5390698                    /opt/ros/kinetic/lib/libopencv_imgproc3.so.3.1.0
    7fae47fa1000-7fae48037000 rw-p 00000000 00:00 0 
    7fae48037000-7fae481f6000 r-xp 00000000 08:01 4329746                    /lib/x86_64-linux-gnu/libc-2.23.so
    7fae481f6000-7fae483f6000 ---p 001bf000 08:01 4329746                    /lib/x86_64-linux-gnu/libc-2.23.so
    7fae483f6000-7fae483fa000 r--p 001bf000 08:01 4329746                    /lib/x86_64-linux-gnu/libc-2.23.so
    7fae483fa000-7fae483fc000 rw-p 001c3000 08:01 4329746                    /lib/x86_64-linux-gnu/libc-2.23.so
    7fae483fc000-7fae48400000 rw-p 00000000 00:00 0 
    7fae48400000-7fae48416000 r-xp 00000000 08:01 4330014                    /lib/x86_64-linux-gnu/libgcc_s.so.1
    7fae48416000-7fae48615000 ---p 00016000 08:01 4330014                    /lib/x86_64-linux-gnu/libgcc_s.so.1
    7fae48615000-7fae48616000 rw-p 00015000 08:01 4330014                    /lib/x86_64-linux-gnu/libgcc_s.so.1
    7fae48616000-7fae48788000 r-xp 00000000 08:01 1050753                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
    7fae48788000-7fae48988000 ---p 00172000 08:01 1050753                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
    7fae48988000-7fae48992000 r--p 00172000 08:01 1050753                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
    7fae48992000-7fae48994000 rw-p 0017c000 08:01 1050753                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
    7fae48994000-7fae48998000 rw-p 00000000 00:00 0 
    7fae48998000-7fae48ff1000 r-xp 00000000 08:01 1053701                    /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.5.1Aborted (core dumped)
    
    opened by suijingfeng 5
  • Segfault happens while running show_object_node with KITTI rosbag. show_object_kitti works fine with .bin files of the same sequence.

    Segfault happens while running show_object_node with KITTI rosbag. show_object_kitti works fine with .bin files of the same sequence.

    Hi @niosus , When I tried to run show_object_node with a KITTI rosbag, I have a segfault. However, if I use show_object_kitti with the raw data of the same sequence, it works fine. Here is the link to the screen video. I downloaded the kitti rosbag 2011_09_30_drive_18.bag from here and same sequence from the KITTI official website. The full trace back by gdb is:

    Program received signal SIGSEGV, Segmentation fault.
    [Switching to Thread 0x7fffc097f700 (LWP 30258)]
    0x00007ffff7b485a4 in depth_clustering::BytesTo<unsigned short> (data=..., start_idx=2835384544)
        at /home/tuan/workshop_ws/src/depth_clustering/src/ros_bridge/cloud_odom_ros_subscriber.cpp:45
    45	    byte_array[i] = data[start_idx + i];
    (gdb) bt
    #0  0x00007ffff7b485a4 in depth_clustering::BytesTo<unsigned short> (data=..., start_idx=2835384544)
        at /home/tuan/workshop_ws/src/depth_clustering/src/ros_bridge/cloud_odom_ros_subscriber.cpp:45
    #1  0x00007ffff7b42e23 in depth_clustering::CloudOdomRosSubscriber::RosCloudToCloud (this=0x7fffffffa610, msg=...)
        at /home/tuan/workshop_ws/src/depth_clustering/src/ros_bridge/cloud_odom_ros_subscriber.cpp:150
    #2  0x00007ffff7b42a91 in depth_clustering::CloudOdomRosSubscriber::CallbackVelodyne (this=0x7fffffffa610, 
        msg_cloud=...) at /home/tuan/workshop_ws/src/depth_clustering/src/ros_bridge/cloud_odom_ros_subscriber.cpp:121
    #3  0x00007ffff7b64d00 in boost::_mfi::mf1<void, depth_clustering::CloudOdomRosSubscriber, boost::shared_ptr<sensor_msgs::PointCloud2_<std::allocator<void> > const> const&>::operator() (this=0xd4b078, p=0x7fffffffa610, a1=...)
        at /usr/include/boost/bind/mem_fn_template.hpp:165
    #4  0x00007ffff7b60624 in boost::_bi::list2<boost::_bi::value<depth_clustering::CloudOdomRosSubscriber*>, boost::arg<1> >::operator()<boost::_mfi::mf1<void, depth_clustering::CloudOdomRosSubscriber, boost::shared_ptr<sensor_msgs::PointCloud2_<std::allocator<void> > const> const&>, boost::_bi::list1<boost::shared_ptr<sensor_msgs::PointCloud2_<std::allocator<void> > const> const&> > (this=0xd4b088, f=..., a=...) at /usr/include/boost/bind/bind.hpp:313
    #5  0x00007ffff7b5b961 in boost::_bi::bind_t<void, boost::_mfi::mf1<void, depth_clustering::CloudOdomRosSubscriber, boost::shared_ptr<sensor_msgs::PointCloud2_<std::allocator<void> > const> const&>, boost::_bi::list2<boost::_bi::value<depth_clustering::CloudOdomRosSubscriber*>, boost::arg<1> > >::operator()<boost::shared_ptr<sensor_msgs::PointCloud2_<std::allocator<void> > const> const&> (this=0xd4b078, a1=...) at /usr/include/boost/bind/bind.hpp:905
    #6  0x00007ffff7b5737e in boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_t<void, boost::_mfi::mf1<void, depth_clustering::CloudOdomRosSubscriber, boost::shared_ptr<sensor_msgs::PointCloud2_<std::allocator<void> > const> const&>, boost::_bi::list2<boost::_bi::value<depth_clustering::CloudOdomRosSubscriber*>, boost::arg<1> > >, void, boost::shared_ptr<sensor_msgs::PointCloud2_<std::allocator<void> > const> const&>::invoke (
        function_obj_ptr=..., a0=...) at /usr/include/boost/function/function_template.hpp:159
    #7  0x00007ffff7b607b5 in boost::function1<void, boost::shared_ptr<sensor_msgs::PointCloud2_<std::allocator<void> > const> const&>::operator() (this=0xd4b070, a0=...) at /usr/include/boost/function/function_template.hpp:773
    #8  0x00007ffff7b5bad9 in boost::detail::function::void_function_obj_invoker1<boost::function<void (boost::shared_ptr<sensor_msgs::PointCloud2_<std::allocator<void> > const> const&)>, void, boost::shared_ptr<sensor_msgs::PointCloud2_<std::allocator<void> > const> >::invoke(boost::detail::function::function_buffer&, boost::shared_ptr<sensor_msgs::PointCloud2_<std::allocator<void> > const>) (function_obj_ptr=..., a0=...)
        at /usr/include/boost/function/function_template.hpp:159
    #9  0x00007ffff7b90a6e in boost::function1<void, boost::shared_ptr<sensor_msgs::PointCloud2_<std::allocator<void> > const> >::operator() (this=0xd4fe98, a0=...) at /usr/include/boost/function/function_template.hpp:773
    #10 0x00007ffff7b8f583 in message_filters::CallbackHelper1T<boost::shared_ptr<sensor_msgs::PointCloud2_<std::allocator<void> > const> const&, sensor_msgs::PointCloud2_<std::allocator<void> > >::call (this=0xd4fe90, event=..., 
        nonconst_force_copy=false) at /opt/ros/kinetic/include/message_filters/signal1.h:76
    #11 0x00007ffff7b54741 in message_filters::Signal1<sensor_msgs::PointCloud2_<std::allocator<void> > >::call (
        this=0xd4f838, event=...) at /opt/ros/kinetic/include/message_filters/signal1.h:119
    ---Type <return> to continue, or q <return> to quit---
    #12 0x00007ffff7b50a0b in message_filters::SimpleFilter<sensor_msgs::PointCloud2_<std::allocator<void> > >::signalMessage (this=0xd4f838, event=...) at /opt/ros/kinetic/include/message_filters/simple_filter.h:136
    #13 0x00007ffff7b4d507 in message_filters::Subscriber<sensor_msgs::PointCloud2_<std::allocator<void> > >::cb (
        this=0xd4f830, e=...) at /opt/ros/kinetic/include/message_filters/subscriber.h:206
    #14 0x00007ffff7b6589c in boost::_mfi::mf1<void, message_filters::Subscriber<sensor_msgs::PointCloud2_<std::allocator<void> > >, ros::MessageEvent<sensor_msgs::PointCloud2_<std::allocator<void> > const> const&>::operator() (
        this=0xd4f7f0, p=0xd4f830, a1=...) at /usr/include/boost/bind/mem_fn_template.hpp:165
    #15 0x00007ffff7b6126e in boost::_bi::list2<boost::_bi::value<message_filters::Subscriber<sensor_msgs::PointCloud2_<std::allocator<void> > >*>, boost::arg<1> >::operator()<boost::_mfi::mf1<void, message_filters::Subscriber<sensor_msgs::PointCloud2_<std::allocator<void> > >, ros::MessageEvent<sensor_msgs::PointCloud2_<std::allocator<void> > const> const&>, boost::_bi::list1<ros::MessageEvent<sensor_msgs::PointCloud2_<std::allocator<void> > const> const&> >
        (this=0xd4f800, f=..., a=...) at /usr/include/boost/bind/bind.hpp:313
    #16 0x00007ffff7b5cb19 in boost::_bi::bind_t<void, boost::_mfi::mf1<void, message_filters::Subscriber<sensor_msgs::PointCloud2_<std::allocator<void> > >, ros::MessageEvent<sensor_msgs::PointCloud2_<std::allocator<void> > const> const&>, boost::_bi::list2<boost::_bi::value<message_filters::Subscriber<sensor_msgs::PointCloud2_<std::allocator<void> > >*>, boost::arg<1> > >::operator()<ros::MessageEvent<sensor_msgs::PointCloud2_<std::allocator<void> > const> const&> (this=0xd4f7f0, a1=...) at /usr/include/boost/bind/bind.hpp:905
    #17 0x00007ffff7b5892f in boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_t<void, boost::_mfi::mf1<void, message_filters::Subscriber<sensor_msgs::PointCloud2_<std::allocator<void> > >, ros::MessageEvent<sensor_msgs::PointCloud2_<std::allocator<void> > const> const&>, boost::_bi::list2<boost::_bi::value<message_filters::Subscriber<sensor_msgs::PointCloud2_<std::allocator<void> > >*>, boost::arg<1> > >, void, ros::MessageEvent<sensor_msgs::PointCloud2_<std::allocator<void> > const> const&>::invoke (function_obj_ptr=..., a0=...)
        at /usr/include/boost/function/function_template.hpp:159
    #18 0x00007ffff7b8fc5b in boost::function1<void, ros::MessageEvent<sensor_msgs::PointCloud2_<std::allocator<void> > const> const&>::operator() (this=0xd4f7e8, a0=...) at /usr/include/boost/function/function_template.hpp:773
    #19 0x00007ffff7b8f461 in ros::SubscriptionCallbackHelperT<ros::MessageEvent<sensor_msgs::PointCloud2_<std::allocator<void> > const> const&, void>::call (this=0xd4f7e0, params=...)
        at /opt/ros/kinetic/include/ros/subscription_callback_helper.h:144
    #20 0x00007ffff6d64e2d in ros::SubscriptionQueue::call() () from /opt/ros/kinetic/lib/libroscpp.so
    #21 0x00007ffff6d0a6f8 in ros::CallbackQueue::callOneCB(ros::CallbackQueue::TLS*) ()
       from /opt/ros/kinetic/lib/libroscpp.so
    #22 0x00007ffff6d0c0fb in ros::CallbackQueue::callAvailable(ros::WallDuration) ()
       from /opt/ros/kinetic/lib/libroscpp.so
    #23 0x00007ffff6d68344 in ros::AsyncSpinnerImpl::threadFunc() () from /opt/ros/kinetic/lib/libroscpp.so
    #24 0x00007fffefa2f5d5 in ?? () from /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.58.0
    #25 0x00007ffff71c86ba in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
    
    

    Do you have any idea how to fix this? Thanks!

    opened by tuandle 4
  • kitti dataset test error

    kitti dataset test error

    Thanks for your great work! I get wrong result with use kitti dataset ,how can i fix it ? The screenshot is as follows, looking forward to your reply image

    opened by lqql2012 2
  • Opencv verison

    Opencv verison

    Thanks a lot!! could you please tell me the version of Opencv you are using in this project ,cause when I run the code with opencv4.5.4 ,it turns out like this:

    INFO: Ground removed in 64543 us INFO: Ground removed in 29 us60 INFO: image based labeling took: 3363 us INFO: labels image sent to clients in: 6 us INFO: prepared clusters in: 4033 us terminate called after throwing an instance of 'cv::Exception' what(): OpenCV(4.5.4) /home/zp/Downloads/opencv-4.5.4/modules/imgproc/src/convhull.cpp:143: error: (-215:Assertion failed) total >= 0 && (depth == CV_32F || depth == CV_32S) in function 'convexHull'

    opened by DavidZhaoP 0
  • compile err         error: ‘boost::filesystem’ has not been declared

    compile err error: ‘boost::filesystem’ has not been declared

    untill I add this line #include<boost/filesystem.hpp> in cloud_saver.cpp this problem has been solved! Just out of curiosity, how you guys make the code to work. Screenshot from 2022-02-13 14-23-21

    opened by DavidZhaoP 0
  •  subscribing to clusters

    subscribing to clusters

    I tried to make what has been mentioned here #19, but got the following:

    rosrun depth_clustering publish_clusters_node --num_beams 32

    ===================== Setting Connection ===================== || Sender: CloudOdomRosSubscriber (id: 1) || Type: STREAMER || | || V || Client: ImageBasedClustere<(short)1, (short)1> > (id: 3)

    ===================== Setting Connection ===================== || Sender: ImageBasedClustere<(short)1, (short)1> > (id: 3) || Type: STREAMER || | || V || Client: CloudOdomRosPublisher (id: 2)

    INFO: Running with angle tollerance: 10.000000 degrees

    any help please?

    opened by urbansound8K 0
  • Feature Request:  Support ROS pointclouds from Ouster 128-beam LIDAR

    Feature Request: Support ROS pointclouds from Ouster 128-beam LIDAR

    Ouster's OS0-128 outputs 128 lines of resolution in a standard pointcloud2 msg on the ROS topic, "/os_cloud_node/points". Per the link below, the ROS node assumes the standard Velodyne pointcloud topic and 16/32/64 projections. Feature request is to add support for 128-beam ROS pointclouds on arbitrary topics.

    https://github.com/PRBonn/depth_clustering/blob/fe9d6675b213926815bf2bbde593b28b55be4b98/examples/ros_nodes/save_clusters_node.cpp#L40-L68

    opened by Chambana 1
Releases(v2.0.0)
  • v2.0.0(May 13, 2020)

    This is a release that transfers most of the code to be under the MIT licence. The only parts left under GPL are the ones interfacing directly with libQGLViewer.

    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(May 13, 2020)

Owner
Photogrammetry & Robotics Bonn
Photogrammetry & Robotics Lab at the University of Bonn
Photogrammetry & Robotics Bonn
Code for "PV-RAFT: Point-Voxel Correlation Fields for Scene Flow Estimation of Point Clouds", CVPR 2021

PV-RAFT This repository contains the PyTorch implementation for paper "PV-RAFT: Point-Voxel Correlation Fields for Scene Flow Estimation of Point Clou

Yi Wei 43 Dec 5, 2022
Not All Points Are Equal: Learning Highly Efficient Point-based Detectors for 3D LiDAR Point Clouds (CVPR 2022, Oral)

Not All Points Are Equal: Learning Highly Efficient Point-based Detectors for 3D LiDAR Point Clouds (CVPR 2022, Oral) This is the official implementat

Yifan Zhang 259 Dec 25, 2022
Graph Regularized Residual Subspace Clustering Network for hyperspectral image clustering

Graph Regularized Residual Subspace Clustering Network for hyperspectral image clustering

Yaoming Cai 5 Jul 18, 2022
Awesome Deep Graph Clustering is a collection of SOTA, novel deep graph clustering methods

ADGC: Awesome Deep Graph Clustering ADGC is a collection of state-of-the-art (SOTA), novel deep graph clustering methods (papers, codes and datasets).

yueliu1999 297 Dec 27, 2022
source code the paper Fast and Robust Iterative Closet Point.

Fast-Robust-ICP This repository includes the source code the paper Fast and Robust Iterative Closet Point. Authors: Juyong Zhang, Yuxin Yao, Bailin De

yaoyuxin 320 Dec 28, 2022
GeoTransformer - Geometric Transformer for Fast and Robust Point Cloud Registration

Geometric Transformer for Fast and Robust Point Cloud Registration PyTorch imple

Zheng Qin 220 Jan 5, 2023
Official PyTorch implementation of CAPTRA: CAtegory-level Pose Tracking for Rigid and Articulated Objects from Point Clouds

CAPTRA: CAtegory-level Pose Tracking for Rigid and Articulated Objects from Point Clouds Introduction This is the official PyTorch implementation of o

Yijia Weng 96 Dec 7, 2022
This project is the official implementation of our accepted ICLR 2021 paper BiPointNet: Binary Neural Network for Point Clouds.

BiPointNet: Binary Neural Network for Point Clouds Created by Haotong Qin, Zhongang Cai, Mingyuan Zhang, Yifu Ding, Haiyu Zhao, Shuai Yi, Xianglong Li

Haotong Qin 59 Dec 17, 2022
(CVPR 2021) PAConv: Position Adaptive Convolution with Dynamic Kernel Assembling on Point Clouds

PAConv: Position Adaptive Convolution with Dynamic Kernel Assembling on Point Clouds by Mutian Xu*, Runyu Ding*, Hengshuang Zhao, and Xiaojuan Qi. Int

CVMI Lab 228 Dec 25, 2022
《A-CNN: Annularly Convolutional Neural Networks on Point Clouds》(2019)

A-CNN: Annularly Convolutional Neural Networks on Point Clouds Created by Artem Komarichev, Zichun Zhong, Jing Hua from Department of Computer Science

Artёm Komarichev 44 Feb 24, 2022
(CVPR 2021) Back-tracing Representative Points for Voting-based 3D Object Detection in Point Clouds

BRNet Introduction This is a release of the code of our paper Back-tracing Representative Points for Voting-based 3D Object Detection in Point Clouds,

null 86 Oct 5, 2022
Self-Supervised Learning for Domain Adaptation on Point-Clouds

Self-Supervised Learning for Domain Adaptation on Point-Clouds Introduction Self-supervised learning (SSL) allows to learn useful representations from

Idan Achituve 66 Dec 20, 2022
Rendering Point Clouds with Compute Shaders

Compute Shader Based Point Cloud Rendering This repository contains the source code to our techreport: Rendering Point Clouds with Compute Shaders and

Markus Schütz 460 Jan 5, 2023
This is a package for LiDARTag, described in paper: LiDARTag: A Real-Time Fiducial Tag System for Point Clouds

LiDARTag Overview This is a package for LiDARTag, described in paper: LiDARTag: A Real-Time Fiducial Tag System for Point Clouds (PDF)(arXiv). This wo

University of Michigan Dynamic Legged Locomotion Robotics Lab 159 Dec 21, 2022
Uncertainty-aware Semantic Segmentation of LiDAR Point Clouds for Autonomous Driving

SalsaNext: Fast, Uncertainty-aware Semantic Segmentation of LiDAR Point Clouds for Autonomous Driving Abstract In this paper, we introduce SalsaNext f

null 308 Jan 4, 2023
Code for "CloudAAE: Learning 6D Object Pose Regression with On-line Data Synthesis on Point Clouds" @ICRA2021

CloudAAE This is an tensorflow implementation of "CloudAAE: Learning 6D Object Pose Regression with On-line Data Synthesis on Point Clouds" Files log:

Gee 35 Nov 14, 2022
This repo is a PyTorch implementation for Paper "Unsupervised Learning for Cuboid Shape Abstraction via Joint Segmentation from Point Clouds"

Unsupervised Learning for Cuboid Shape Abstraction via Joint Segmentation from Point Clouds This repository is a PyTorch implementation for paper: Uns

Kaizhi Yang 42 Dec 9, 2022
Unsupervised 3D Human Mesh Recovery from Noisy Point Clouds

Unsupervised 3D Human Mesh Recovery from Noisy Point Clouds Xinxin Zuo, Sen Wang, Minglun Gong, Li Cheng Prerequisites We have tested the code on Ubun

null 41 Dec 12, 2022
Fog Simulation on Real LiDAR Point Clouds for 3D Object Detection in Adverse Weather

LiDAR fog simulation Created by Martin Hahner at the Computer Vision Lab of ETH Zurich. This is the official code release of the paper Fog Simulation

Martin Hahner 110 Dec 30, 2022