Coder Social home page Coder Social logo

prbonn / depth_clustering Goto Github PK

View Code? Open in Web Editor NEW
1.2K 29.0 378.0 9.91 MB

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

License: MIT License

CMake 3.50% C++ 53.06% Makefile 1.33% Jupyter Notebook 42.11%
catkin velodyne-sensor segmentation clustering velodyne real-time fast ros point-cloud depth-image

depth_clustering's Introduction

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 (<catkin_ws> 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 <path_to_project>/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},
}

depth_clustering's People

Contributors

niosus 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

depth_clustering's Issues

Stationary and Non Stationary objects

@niosus @stachnis @ovysotska @tano297 Hi team thanks for sharing the code base , just wanted to know if we can object segments of stationary objects like builidings lampost trees and non stationary objects from the current code base, if so can you let us knw the process and the type of data since i want to try it other dataset and custom dataset !!!!!

Unable to extract removal ground points

Hi @niosus ,
I would like to reproduce your result at Fig3 in your journal paper.
I tried a naive approach to get the removal ground points by changing this line from == to =!

if (dilated.at<uint16_t>(r, c) =! 0)

My understanding is that, with this change, depth_ground_remover should return a Cloud obj contains only ground points. However, when visualizing it, I got the original raw pointcloud.

I definitely miss something here and I greatly appreciate your advice.

"segment fault" and "[INFO]: Not correcting depth data"

Hi, I really thank you for your great work, now, when I compile itand run it, I alwayes get "[INFO]: Not correcting depth data". this is problem 1.
for problem 2: the original compile way is using cmake, however I alter it to bazel, and I succeed, but when I run "./show_objects_node --num_beams 16", I alwayes get "[1] 30971 segmentation fault (core dumped) ./show_objects_node --num_beams 16", sorry to bother you.
hope to get your help.

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

Segmentation fault (core dumped) occurred when running ROS node

Hi,
Thanks for sharing the source code of your paper. I downloaded and compiled successfully. The real world data "Frank Moosmann's "Velodyne SLAM" Dataset" works like a charm

However, when I run the ros node "show_objects_node" and playing my own bag file that is publishing velodyne point cloud, the node terminates with such error:

./show_objects_node --num_beams 16

 ===================== Setting Connection =====================
|| Sender: CloudOdomRosSubscriber (id: 1)
|| Type:   STREAMER
|| 				|
|| 				V
|| Client: DepthGroundRemover (id: 4)
 ==============================================================

 ===================== Setting Connection =====================
|| Sender: DepthGroundRemover (id: 4)
|| Type:   STREAMER
|| 				|
|| 				V
|| Client: ImageBasedClustere<(short)1, (short)1> > (id: 6)
 ==============================================================

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

 ===================== Setting Connection =====================
|| Sender: CloudOdomRosSubscriber (id: 1)
|| Type:   STREAMER
|| 				|
|| 				V
|| Client: Visualizer (id: 2)
 ==============================================================
INFO: Running with angle tollerance: 10.000000 degrees
INFO: Ground removed in 815 us
ERROR: DiffType is NONE. Please set it.
Segmentation fault (core dumped)

I don't see any settings for DiffType in the .cpp file. Any idea what's going on here?

Thanks!

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

Writing points depth to depth_image if it is further than current depth.

Hi,
First: Thank you a lot for providing your code.
Second: isnt it supposed to be otherwise ">"? As it is written in your comment, It is safe to take shorter distance than the longer, I think.

https://github.com/Photogrammetry-Robotics-Bonn/depth_clustering/blob/master/src/projections/spherical_projection.cpp

auto& current_written_depth = this->_depth_image.template at<float>(bin_rows, bin_cols);
if (current_written_depth < dist_to_sensor) {
      // write this point to the image only if it is closer
      current_written_depth = dist_to_sensor;
}

greetings,
Zolboo.

Losing Intensity

Hello,
first of all, thanks for your awesome algorithm. Helped me a lot with my project. But is there any reason you did ignore the intensity of the pointcloud or there any version with it?

segmentation fault when running show_objects_node

Thanks for the code and lovely video! I am trying to get things working on lidar data from a boat and am having some difficulty.

The node runs for a couple of seconds showing clusters then crashes with a segmentation fault. The amount of time take to crash varies a little 0.5-8 seconds, but never very long.

I am using a VLP16 lidar and am playing back a bag file with PointCloud2 data.

Here is the console I get before the crash

INFO: Running with angle tollerance: 10.000000 degrees 
[INFO]: Not correcting depth data.
INFO: Ground removed in 10392 us
INFO: image based labeling took: 6617 us
INFO: labels image sent to clients in: 18 us
INFO: prepared clusters in: 2624 us
INFO: clusters shared: 222 us
[INFO]: Not correcting depth data.
INFO: Ground removed in 911 us
INFO: image based labeling took: 2328 us
INFO: labels image sent to clients in: 8 us
INFO: prepared clusters in: 943 us
INFO: clusters shared: 83 us
[INFO]: Not correcting depth data.
INFO: Ground removed in 5766 us
INFO: image based labeling took: 12329 us
INFO: labels image sent to clients in: 27 us
INFO: prepared clusters in: 4558 us
INFO: clusters shared: 451 us
[INFO]: Not correcting depth data.
INFO: Ground removed in 1603 us
INFO: image based labeling took: 4190 us
INFO: labels image sent to clients in: 26 us
INFO: prepared clusters in: 2142 us
INFO: clusters shared: 401 us
[INFO]: Not correcting depth data.
INFO: Ground removed in 887 us
INFO: image based labeling took: 2235 us
INFO: labels image sent to clients in: 8 us
INFO: prepared clusters in: 858 us
INFO: clusters shared: 103 us
[INFO]: Not correcting depth data.
INFO: Ground removed in 5480 us
INFO: image based labeling took: 9984 us
INFO: labels image sent to clients in: 30 us
INFO: prepared clusters in: 3072 us
INFO: clusters shared: 186 us
Segmentation fault (core dumped)

Really bad visualization

I don't know why the author show the segmentation result like this. When I run examples in the codes like show_objects_kitti and qt_gui_app, I see the original point cloud of white color with very many yellow or blue 3d bounding boxes and even more grey 3d bounding boxes.

What I want to see is all those segmented object as well as the ground drawn with different colors and bounding boxes are dispensable. Then I get a visualized qualitative evaluation of the segmentation algorithm implemented in the depth-clustering
JD20191024141750

Depth Clustering for Merged Point Cloud

Hi @niosus , thank you for your great work. I run depth clustering for VLP16 lidars and it works very well. I have a small question. i have two VLP16 lidar. i transformed on the same coordinates them and merged only their point clouds with the help of pcl_ros. I run the show_objects_node with the merged cloud topic. However, depth clustering gives bad results on merged point cloud data and it seems ground remover does not work well because there are objects on the ground lines.
Should i change any parameter to get better results, such as projection params?

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

How can i create the range image?

Hi, I want to creat range image that like you using, but i can't find the code you using.which file in the project is the exact code to creating range image? Thanks!

the dataset about the kitti example.

Thank you for sharing your source code .in the code you also provide the examples of the kitti ,I wonder that if you can share the kitti dataset or share the link of the kitti dataset that you use.

Output depth image and labeled segmented image as ros topic

Hi @niosus,
Thanks for open-source this package.
Please correct me if I am wrong. Looking at show_object_ nodes, it seems to me that an object of type CloudOdomRosSubscriber is the only thing initialized and subscribed to velodyne_points topic.

However, it does not explicitly output any topic. I wonder if it is possible to extract depth images and labeled segmented images to cv:Mat type objects so that we can publish them as ros topics?

I appreciate your help!

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?

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!

Question about the implementation of the ground removal algorithm

Hello!

Thank you for sharing the great package with really awesome features including the parameter tweaking.
I realized there was a parameter which might be quite important but not mentioned in the ground labeling algorithm part.

Ref paper is {Efficient Online Segmentation for Sparse 3D Laser Scans}
On page 5: Algorithm 1 Ground Labelling

The first "pixel" enter into the LABELGROUNDBFS will always be labelled as ground. Line 10: {r, c} ←labelled as ground. (It's may or may not be true depends on the angle image and which colum the ground is at.)

I implemented the code myself and it seems that it will label most of the angle image as ground. So I checked the original implementation and found the parameter Radians start_thresh = 30_deg; in the ZeroOutGroundBFS function.

After adding this threshold, the result is much better. So I played with this parameter and realize it will affect the algorithm a lot. If I set it to 10, then the result with and without the check if |M(r, c) − M(rn, cn)| < 5◦ seems to be very similar. The data I'm using is HDL-64 S2.

Since you mentioned the radians start_thresh is optional in the code, I would like to double check with you and any further discussion would be great. my e-mail is: [email protected]

Mike

pointcloud convert to range image, is it always 64x870?

Hi, thank you first for sharing this excellent work!

If my input is pointcloud, such as the KITTI .BIN file, is this conversion using projection (sphere or ring), always conver to 64x870 size?

How/Where this 870 is calculated?
And can we change this size 870, I saw some other size such as 64x1030.

My concern is the original xyz of the poincloud from BIN is around ~120,000 points while the range image is only covering 55680 xyz points (55680=870*64). It seems more than 50% points are removed/overwrite in this "pc2range" conversion process. Can you comment on this?

Thank you very much!

Basic theory discussion

The difference in angle BETA between the two rays and the distance difference DELTA Depth are actually the same thing. So what is the difference between the two? In addition, calculating the angle difference is actually more complicated than calculating the distance difference. Why choose a more complicated way?

And why is your calculation method faster? Because the horizontal resolution is compressed to 870?

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

can not found pcl

Is the default installation path for Ros's own PCL library not acceptable?

Aplly the code on a bag file

Hello,
I want to apply the program on a .bag file recorded from velodyne 32HDL with /velodyne_points topic,
how can I manage to get it? which node should I use?
thanks very much.

*** 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)

visualisation of clusters

I am playing a bag file (Velodyne LiDAR 32 channel). Then I am running this command

rosrun depth_clustering show_objects_node

How to visualize the clusters using rviz?

thesis picture

Hi, really thank you for your great work, may I know that how your draw this picture in your paper <Fast Range Image-Based Segmentation of Sparse 3D Laser Scans for Online Operation> & <Efficient Online Segmentation for Sparse 3D Laser Scans>, now I just write some code to visulize it in rviz, but cannot have various colors. Would you like to help me
Hope to get help from you.

Why do we need to fix kitti depth

Hi, I am new to kitti and I am reading your code to compare it with using PCL to segment points cloud. I noticed that in your code, we need to fix every picture from "moosman" dataset, any special reason may I know?

Errors during compiling

Hello,
I tried to compile the package using the tool catkin_make in workspace path and I had these errors

error

any help will be appreciated

Segmentation fault running "show_objects_moosmann"

Data is at
~/catkin_cluster/devel/lib/depth_clustering/data

When doing
~/catkin_cluster/devel/lib/depth_clustering$ ./show_objects_moosmann --path data/scenario1/

I get
Segmentation fault (core dumped)

My build results:
~/catkin_cluster$ catkin build depth_clustering

Profile: default
Extending: [cached] /opt/ros/kinetic
Workspace: /home/mrt/catkin_cluster

Build Space: [exists] /home/mrt/catkin_cluster/build
Devel Space: [exists] /home/mrt/catkin_cluster/devel
Install Space: [unused] /home/mrt/catkin_cluster/install
Log Space: [exists] /home/mrt/catkin_cluster/logs
Source Space: [exists] /home/mrt/catkin_cluster/src
DESTDIR: [unused] None

Devel Space Layout: linked
Install Space Layout: None

Additional CMake Args: None
Additional Make Args: None
Additional catkin Make Args: None
Internal Make Job Server: True
Cache Job Environments: False

Whitelisted Packages: None
Blacklisted Packages: None

Workspace configuration appears valid.

[build] Found '1' packages in 0.0 seconds.
[build] Package table is up to date.
Starting >>> depth_clustering
Finished <<< depth_clustering [ 0.4 seconds ]
[build] Summary: All 1 packages succeeded!
[build] Ignored: None.
[build] Warnings: None.
[build] Abandoned: None.
[build] Failed: None.

Tuning

Hello!
Thank you for creating this awesome package! I wondered if there is a possibility of tuning the clustering parametres, and basicly influence what that qualifies as a bounding box and not, as I am mostly interested in small objects, and want to remove large objects, or objects that does not qualify to my terms.

Is this already a possibility? If not, could you point me in the right direction?

Thanks!

How can I manage with my image dataset created from velodyne 32?

Hi, I really thank you for your great work. now, I want to use my dataset generated from velodyne 32 HDL.
I could create depth .png images (32*1800 pixels) and i changed the img.cfg file to :

imgHSize; imgVSize; horizStartAngle(grad); horizStopAngle(grad); vertAngle_1; vertAngle_2; ...; vertAngle_n

1800; 32; -180; 180; -30.67; -29.33; -28.00; -26.67; -25.33; -24.00; -22.67; -21.33; -20.00; -18.67; -17.33; -16.00; -14.67; -13.33; -12.00; -10.67; -9.33; -8.00; -6.67; -5.33; -4.00; -2.67; -1.33; 0.00; 1.33; 2.67; 4.00; 5.33; 6.67; 8.00; 9.33; 10.67
now i couldn't see the the images playing (i see like a point in the middle of screen moving) as your data. I am wondering if there are any edits in your code in order to run it with my data. i will appreciate any suggestion from you, thanks

questions in the ground remove.cpp

hello ,thanks for you to make your code available .I have forked your code ,however in the depth_ground_remover.cpp ,there is a function named CreateAngleImage(),why do you turn a depth image into the image with angle ? and then use an ApplySavitskyGolaySmoothing() function to smooth the angle image .I am confusing about it so I wonder that may you give more information about it ?

Basic theory discussion

Thanks for your work, after I read the papers and code, I have some theoretical questions.

The difference in angle BETA between the two rays and the distance difference Delta Depth are actually the same thing. So what is the difference between the two? In addition, calculating the angle difference is actually more complicated than calculating the distance difference. Why choose a more complicated way?

And why is your calculation method faster? Because the horizontal resolution is compressed to 870?

Wait for your reply!

Compile issues

Hi niosus,
@niosus I follow the compiling steps from you using catkin_tools, while some errors occur as below:

/usr/bin/ld: cannot find Bonn/depth_clustering_ws/devel/.private/depth_clustering/lib: No such file or directory
collect2: error: ld returned 1 exit status
make[2]: *** [/home/hz/hz_projects/IPB-Photogrammetry& Robotics, Bonn/depth_clustering_ws/devel/.private/depth_clustering/lib/libimage_labeler.so] Error 1
make[1]: *** [src/image_labelers/CMakeFiles/image_labeler.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
/usr/bin/ld: cannot find Bonn/depth_clustering_ws/devel/.private/depth_clustering/lib: No such file or directory
collect2: error: ld returned 1 exit status
make[2]: *** [/home/hz/hz_projects/IPB-Photogrammetry& Robotics, Bonn/depth_clustering_ws/devel/.private/depth_clustering/lib/libvisualization.so] Error 1
make[1]: *** [src/visualization/CMakeFiles/visualization.dir/all] Error 2
/usr/bin/ld: cannot find Bonn/depth_clustering_ws/devel/.private/depth_clustering/lib: No such file or directory
collect2: error: ld returned 1 exit status
make[2]: *** [/home/hz/hz_projects/IPB-Photogrammetry& Robotics, Bonn/depth_clustering_ws/devel/.private/depth_clustering/lib/libviewer.so] Error 1
make[1]: *** [src/qt/viewer/CMakeFiles/viewer.dir/all] Error 2
/home/hz/hz_projects/IPB-Photogrammetry& Robotics, Bonn/depth_clustering_ws/src/depth_clustering/src/visualization/cloud_saver.cpp:23:66: warning: unused parameter ‘id’ [-Wunused-parameter]
const std::unordered_map<uint16_t, Cloud>& clouds, const int id) {
^
/home/hz/hz_projects/IPB-Photogrammetry& Robotics, Bonn/depth_clustering_ws/src/depth_clustering/src/visualization/cloud_saver.cpp:51:70: warning: unused parameter ‘id’ [-Wunused-parameter]
const std::unordered_map<uint16_t, cv::Mat>& clusters, const int id) {
^
/home/hz/hz_projects/IPB-Photogrammetry& Robotics, Bonn/depth_clustering_ws/src/depth_clustering/src/visualization/cloud_saver.cpp:77:68: warning: unused parameter ‘id’ [-Wunused-parameter]
void CloudSaver::OnNewObjectReceived(const Cloud& cloud, const int id) {
^
/usr/bin/ld: cannot find Bonn/depth_clustering_ws/devel/.private/depth_clustering/lib:/opt/ros/kinetic/lib:/usr/lib/x86_64-linux-gnu/hdf5/serial/lib:/usr/lib/x86_64-linux-gnu/hdf5/openmpi/lib:/usr/lib/openmpi/lib: No such file or directory
collect2: error: ld returned 1 exit status
make[2]: *** [/home/hz/hz_projects/IPB-Photogrammetry& Robotics, Bonn/depth_clustering_ws/devel/.private/depth_clustering/lib/libros_bridge.so] Error 1
make[1]: *** [src/ros_bridge/CMakeFiles/ros_bridge.dir/all] Error 2
make: *** [all] Error 2

How can I solve this problem?Wish for your reply and thanks very much!

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!

Error when using KITTI data

Hello,

I have an error when excute your code on KITTI data.

My command is:

./show_objects_kitti --path /media/viki/213667465595/KITTI/data/tracking/training/velodyne/0000/

The results:

INFO: Reading from: /media/viki/213667465595/KITTI/data/tracking/training/velodyne/0000/
INFO: running on kitti data
INFO: Getting file paths from folder: /media/viki/213667465595/KITTI/data/tracking/training/velodyne/0000/
terminate called after throwing an instance of 'std::out_of_range'
what(): stoi
Aborted (core dumped)


the folder "velodyne" contains the bin files ".bin" of all sequences
the folder "0000" contains "
.bin" of sequence 0000

Thank you for your help.

Best regards

how to get depth image

hi, @niosus, thanks for your code. i turn pointcloud into depth image , but the result is different from Frank Moosmann's "Velodyne SLAM" Dataset, and i see the image size is 64 X 870, i guss there maybe some fileter process in the code , and i want to know how to do this???? thanks again

‘CV_LOAD_IMAGE_ANYDEPTH’ was not declared in this scope

opencv: '3.4.3'
Ubuntu: 18.04
ROS: Melodic

src/utils/velodyne_utils.cpp:111:42: error: ‘CV_LOAD_IMAGE_ANYDEPTH’ was not declared in this scope
cv::Mat depth_image = cv::imread(path, CV_LOAD_IMAGE_ANYDEPTH);

Replacing it with the below works
cv::Mat depth_image = cv::imread(path, cv::IMREAD_ANYDEPTH);

vlp32c and column sincos

Hello,
I'm using a VLP-32C which has non-column data (each column actually has data at -4.2, -1.4, 1.4, and 4.2 degrees +/- the nominal column azimuth). Additionally, the data is not evenly spaced vertically either.

The vertical data is easy enough to fix (instead of evenly spacing sin/cos in the FillCosSin() based on some step, define the step per vertical row index). But for the column spacing, this is now dependent upon the row that it's in.

An example of where this is used is in the CreateAngleImage in DepthGroundRemover: the code uses the consines and sines vectors per row. I think it assumes even spacing on columns?

What do you think should be the approach for sensors like the VLP-32C, which does not have a column with an exactly same azimuth for every point? I think that #33 is incorrect, since it doesn't handle the uneven vertical spacing or the varying azimuths per column.

[fea] Simplify our beta judgement rule

Hi, I have scanned through the paper and already dive into the implementation part to observe data processing flow.

I found that our beta judgment rule

image

could be simplified into the following format with less numeric redundancies:

image

Because theta should not be large and positive, this method is much better looking for your paper.

catkin build error

hi, complie env: ubuntu 16.04 ros kinetic

/usr/src/gtest/src/gtest.cc:1897:10: error: type ‘const class testing::internal::scoped_ptr<testing::internal::GTestFlagSaver>’ argument given to ‘delete’, expected pointer
   delete gtest_flag_saver_;
          ^
/usr/src/gtest/src/gtest.cc: At global scope:
/usr/src/gtest/src/gtest.cc:2177:1: error: prototype for ‘testing::TestInfo::TestInfo(const string&, const string&, const char*, const char*, testing::internal::TypeId, testing::internal::TestFactoryBase*)’ does not match any in class ‘testing::TestInfo’
 TestInfo::TestInfo(const std::string& a_test_case_name,
 ^
In file included from /usr/local/include/gtest/internal/gtest-internal.h:40:0,
                 from /usr/local/include/gtest/gtest.h:58,
                 from /usr/src/gtest/src/gtest-all.cc:39:
/usr/local/include/gtest/gtest.h:772:3: error: candidates are: testing::TestInfo::TestInfo(const testing::TestInfo&)
   GTEST_DISALLOW_COPY_AND_ASSIGN_(TestInfo);
   ^
In file included from /usr/src/gtest/src/gtest-all.cc:39:0:
/usr/local/include/gtest/gtest.h:728:3: error:                 testing::TestInfo::TestInfo(const string&, const string&, const char*, const char*, testing::internal::CodeLocation, testing::internal::TypeId, testing::internal::TestFactoryBase*)
   TestInfo(const std::string& test_case_name,

it about gtest library, ???

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.