Giter Site home page Giter Site logo

point_labeler's Introduction

Point Cloud Labeling Tool

Tool for labeling of a single point clouds or a stream of point clouds.

Given the poses of a KITTI point cloud dataset, we load tiles of overlapping point clouds. Thus, multiple point clouds are labeled at once in a certain area.

Features

  • Support for KITTI Vision Benchmark Point Clouds.
  • Human-readable label description files in xml allow to define label names, ids, and colors.
  • Modern OpenGL shaders for rendering of even millions of points.
  • Tools for labeling of individual points and polygons.
  • Filtering of labels makes it easy to label even complicated structures with ease.

Dependencies

  • Eigen >= 3.2
  • boost >= 1.54
  • QT >= 5.2
  • OpenGL Core Profile >= 4.0

Build

On Ubuntu 22.04/20.04, the dependencies can be installed from the package manager:

sudo apt install git libeigen3-dev libboost-all-dev qtbase5-dev libglew-dev

Additionally, make sure you have catkin-tools and the fetch verb installed:

sudo apt install python-pip
sudo pip install catkin_tools catkin_tools_fetch empy

Then, build the project, change to the cloned directory and use the following commands:

cmake -S . -B build
cmake --build build

Alternatively, you can also use the "classical" cmake build procedure:

mkdir build && cd build
cmake ..
make -j5

Now the project root directory (e.g. ~/catkin_ws/src/point_labeler) should contain a bin directory containing the labeler.

Usage

In the bin directory, just run ./labeler to start the labeling tool.

The labeling tool allows to label a sequence of point clouds in a tile-based fashion, i.e., the tool loads all scans overlapping with the current tile location. Thus, you will always label the part of the scans that overlaps with the current tile.

In the settings.cfg files you can change the followings options:

tile size: 100.0   # size of a tile (the smaller the less scans get loaded.)
max scans: 500    # number of scans to load for a tile. (should be maybe 1000), but this currently very memory consuming.
min range: 0.0    # minimum distance of points to consider.
max range: 50.0   # maximum distance of points in the point cloud.
add car points: true # add points at the origin of the sensor possibly caused by the car itself. Default: false.

Folder structure

When loading a dataset, the data must be organized as follows:

point cloud folder
├── velodyne/             -- directory containing ".bin" files with Velodyne point clouds.   
├── labels/   [optional]  -- label directory, will be generated if not present.  
├── image_2/  [optional]  -- directory containing ".png" files from the color   camera.  
├── calib.txt             -- calibration of velodyne vs. camera. needed for projection of point cloud into camera.  
└── poses.txt             -- file containing the poses of every scan.

Documentation

See the wiki for more information on the usage and other details.

Citation

If you're using the tool in your research, it would be nice if you cite our paper:

@inproceedings{behley2019iccv,
    author = {J. Behley and M. Garbade and A. Milioto and J. Quenzel and S. Behnke and C. Stachniss and J. Gall},
     title = {{SemanticKITTI: A Dataset for Semantic Scene Understanding of LiDAR Sequences}},
 booktitle = {Proc. of the IEEE/CVF International Conf.~on Computer Vision (ICCV)},
      year = {2019}
}

We used the tool to label SemanticKITTI, which contains overall over 40.000 scans organized in 20 sequences.

point_labeler's People

Contributors

jbehley 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

point_labeler's Issues

Portability on Windows OS

Hi everyone,

First of all, congratulations on the great work and many thanks for sharing it!

The question is in the topic: could anyone elaborate on the portability on Windows?

Folder example

Hi everyone,

First of all, i really appreciate your great work.
This isn't really an issue, but I was just wondering if someone can give me an example of the dataset cause I can't figure out the structure of every data in the sequence folder, especially the calib.txt and the poses.txt

Thank you for answering :)

What does each column mean which in poses.txt file

@jbehley @ben300694
Hello
I want to make my custom dataset through your annotation tools. Now, I have know how to generate the .bin files, but I don’t understand the file format of pose.txt.

What does each column mean which in poses.txt file

Can you give me a description such as "Each .bin scan is a list of float32 points in [x,y,z,remission] format"
Thank you very much!

Extract point cloud data corresponding to a certain label

Hi,thanks for your amazing tool~

I just wonder how to extract all point cloud data corresponding to a certain label.

For example, I do the segmentation on point cloud for two classes: "road" and "the others", all the data are saved in each scan as .bin (0000.bin, 0001.bin...) and .label (0000.label, 0001.label... ) .
If I want to extract all the point cloud which are labeled as "road" and only save the "road" point cloud in the original corresponding scan , for example .bin (0000.bin, 0001.bin...), how could I realize this.

Thank you in advance!

Problem to run ./labeler

Forgive me if my question is very naive, I am a complete beginner.

When a try to start the labeling tool with ./labeler, appears the following problem:

olaya@olaya:~/catkin_ws/src/point_labeler/bin$ ./labeler
OpenGL Context Version 4.6 core profile
GLEW initialized.
OpenGL context version: 4.6
OpenGL vendor string : AMD
OpenGL renderer string: AMD RENOIR (DRM 3.41.0, 5.13.0-35-generic, LLVM 12.0.0)
temp mem size: 3.6 MB
Segmentation fault (core dumped)

Any help is welcome,
Thanks in advance

Labeling Instances

Hi,

First of all: Thanks for the nice tool!

I wanted to label some date of the KITTI-Dataset of the section Person. Now i ran into the Problem: How can i label instances of personen/objects? Is there some kind of tutorial?

Thanks!

qt error

After I run the ./labeler I face this message. my Ubuntu is 20.04.
please help me

QFactoryLoader::QFactoryLoader() checking directory path "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms" ...
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqeglfs.so"
Found metadata in lib /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqeglfs.so, metadata=
{
"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
"MetaData": {
"Keys": [
"eglfs"
]
},
"archreq": 0,
"className": "QEglFSIntegrationPlugin",
"debug": false,
"version": 330752
}

Got keys from plugin meta data ("eglfs")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqlinuxfb.so"
Found metadata in lib /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqlinuxfb.so, metadata=
{
"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
"MetaData": {
"Keys": [
"linuxfb"
]
},
"archreq": 0,
"className": "QLinuxFbIntegrationPlugin",
"debug": false,
"version": 330752
}

Got keys from plugin meta data ("linuxfb")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqminimal.so"
Found metadata in lib /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqminimal.so, metadata=
{
"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
"MetaData": {
"Keys": [
"minimal"
]
},
"archreq": 0,
"className": "QMinimalIntegrationPlugin",
"debug": false,
"version": 330752
}

Got keys from plugin meta data ("minimal")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqminimalegl.so"
Found metadata in lib /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqminimalegl.so, metadata=
{
"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
"MetaData": {
"Keys": [
"minimalegl"
]
},
"archreq": 0,
"className": "QMinimalEglIntegrationPlugin",
"debug": false,
"version": 330752
}

Got keys from plugin meta data ("minimalegl")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqoffscreen.so"
Found metadata in lib /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqoffscreen.so, metadata=
{
"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
"MetaData": {
"Keys": [
"offscreen"
]
},
"archreq": 0,
"className": "QOffscreenIntegrationPlugin",
"debug": false,
"version": 330752
}

Got keys from plugin meta data ("offscreen")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqvnc.so"
Found metadata in lib /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqvnc.so, metadata=
{
"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
"MetaData": {
"Keys": [
"vnc"
]
},
"archreq": 0,
"className": "QVncIntegrationPlugin",
"debug": false,
"version": 330752
}

Got keys from plugin meta data ("vnc")
QFactoryLoader::QFactoryLoader() looking at "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so"
Found metadata in lib /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so, metadata=
{
"IID": "org.qt-project.Qt.QPA.QPlatformIntegrationFactoryInterface.5.3",
"MetaData": {
"Keys": [
"xcb"
]
},
"archreq": 0,
"className": "QXcbIntegrationPlugin",
"debug": false,
"version": 330752
}

Got keys from plugin meta data ("xcb")
QFactoryLoader::QFactoryLoader() checking directory path "/home/catkin_ws/src/point_labeler/bin/platforms" ...
loaded library "/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so"
qt.qpa.xcb: could not connect to display
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.

Aborted (core dumped)

Label Filtering

When I press ctrl+label, I find that not all points I labeled will be filtered. There are still some points left there, which are not filtered.

  • before filtering
    image
  • after filtering
    image

There are three kinds of object are red, but I am sure that I only labeled one of them, which is person(red).
image

Unable to open few blocks using the tool

Thank you for this amazing point cloud labeling tool. I am trying to use the tool to label roads in kitti raw sequences. I have converted the raw sequences to odometry like sequences using your conversion code. However, for few raw sequences, I am unable to open particular blocks. The tool closes automatically showing a segmentation fault. Can you please help me with this?

GUI of labeling disappeared

Thanks for your great work!
After building point_labeler, my gui like the following pictures, then I don't know how to label my personal dataset. What is the problem?
image
Thanks again!

Toggling between annotated classes and remission values

Hi,

I'm currently planning to annotate additional datasets. Is there a possibility to switch view between the remission values and annotated classed.

Example:
I already annotated a couple of point clouds. Some days later, I'd like to review the annotation quality. For this it is sometimes helpful to switch between the remission values and annotations classes. Currently it seems to be blended.

Furthermore, it would be nice to visualize the point cloud in the image view. Is, there a way to realize it?

Thanks!

Label structure

Hi, thanks for the great work.
what is the label structure that is used? is it XYZRGBL format?

upload test data

Hi,
Thanks for your amazing works.
Do you mind upload some test data.There was a network problem for me to download kitti odometry.
best wishes.

Messy points appear when reopen labeled data

Thank you very much for your open-source tools.
I'm currently annotating my own datasets, but find some strange issues. In some sequence, the labeled data will be a mess when reopen (like the figure below, some labeled road/car points are shown in other place).
github_issue
We annotate data on Ubuntu 16.04, with 4G memory and HD630 Integrated Graphics. OpenGL version 3.0 Mesa 18.0.5 and core profile version string is 4.5.
I don't know if there is something missing in my environment or there is another mistake somewhere that I cannot find.

Thank you in advance for your help!

How to run kitti_raw2odometry.py

When I run the script it just displays the "print" command : Convert KITTI's raw format into odometry format consumable by point_labeler. ./kitti_raw2odometry.py []

I created folders with the name input_folder, which contains the .bin file and outpot_folder. But there is no file in the output folder after I run the conversion script.

Weird mainframe window size issue [followed installation instruction and no code change]

Hi, thank you for your excellent work, this project is amazing.
I recently install the point_labeler and found the UI setting looks weird, I only have the half height of view window. (the issue is shown as following)
Screenshot from 2021-04-12 17-26-58

I almost strictly follow the instruction you provided in README, and I never change any cfg. Do anyone have this similar issue? And could you please help me to find some clue to fix this issue, thank you.

Segmentation fault when loading semanticKITTI dataset

I installed Point Labeler in Ubuntu 20.04 VMware. Because I got an openGL error invalid enumerant(1280), I had to comment lines with glow::_CheckGlError(__FILE__, __LINE__); in viewport.cpp. Now when I load folder 00 from the semanticKITTI dataset I get the following error:

OpenGL Context Version 4.1 core profile
GLEW initialized.
OpenGL context version: 4.1
OpenGL vendor string  : VMware, Inc.
OpenGL renderer string: SVGA3D; build: RELEASE;  LLVM;
temp mem size: 3.6 MB
Found 20 instanceable labels.
-- Setting 'tile size' to 100
mem size: 2400 MB
-- Setting 'max scans' to 500
-- Setting 'min range' to 2.5
-- Setting 'max range' to 50
/home/fred/catkin_ws/src/point_labeler/bin
#tiles  = 40
Reading instances.txt...finished.
615 point clouds read.
0, 0, 100
Setting points...Segmentation fault (core dumped)

I think it has to do with the folder structure. So this is what I did: I installed the poses files form this link: http://www.cvlibs.net/download.php?file=data_odometry_poses.zip and renamed 00.txt to poses.txt and moved it to the folder 00. I downloaded the labels and velodyne folders from http://www.semantic-kitti.org/dataset.html. And the calib.txt files http://www.cvlibs.net/download.php?file=data_odometry_calib.zip.

How to distinguish between the ground and vehicle tires points

Hallo,

thanks for your outstanding work! I have used the tool, and find that it is difficult to distinguish between the ground and vehicle tires points. Removing ground by threshold is an option but not direct and accurate, and rotating the view to distinguish is hard.

Could you share with us your experience about how to distinguish between the ground and vehicle tires points? Thank you!

Besides, I found calib.txt plays a role even when I not need image but labling multiple frames the same time. Theoretically in this case only pose.txt matters, but using hand-made or wrong calib.txt will make the points look weird.

Label original point cloud file such like pcd or ply file?

Hi,
Will it support for annotating orinal pointcloud file such like pcd or ply file? I have some data which format is pcd, so how to use this tool to label the object? I have no idea about it. Please help me.

Thanks,
Mikoy Chinese

Show additional ground truth Scan in Viewport

Hello Mr. Behley,

I really appreciate your point labler, and the brush function is very cool and the camera really smooth!

My goal was to adapt the point labeler, to read in an additional folder with .bin files that serve as ground truth or reference points while labeling the points in the velodyne folder. The points should be displayed in the background with a light color additional to the normal scans that I want to label.

All went well, I adaped the KittiReader function and can port it to the ui.mViewportXYZ->setPoints function in Mainframe.cpp

Mainframe.cpp:

reader_.retrieve(i, j, indexes, points, gtpoints, labels, gtlabels, images);

  indexes_ = indexes;
  points_ = points;
  gtpoints_ = gtpoints;
  labels_ = labels;
  gtlabels_ = gtlabels;

...

  ui.mViewportXYZ->setPoints(gtpoints_, gtlabels_);
  ui.mViewportXYZ->setPoints(points_, labels_);

But then in Viewport.cpp, I don't know how to adapt the void Viewport::setPoints function, so the additional points (that I dont want to label, just to display in backround as a reference) can be displayed.

I guess I have to fill another POINTS array so I can use the glDrawArrays(GL_POINTS, 0, 1) function.

Do you have a recommendation how make this happen?

Best Regards,
Fabian

not show the point cloud.

Is the data of annotated point cloud KITTI? I configure it, the software can be opened, but the point cloud can not be loaded, and the interface does not show the point cloud. Is it because my data catalog is not set correctly? How to set it up?

python version ?

hi Jbenhley:
Is it python2 or python3 version about this point cloud label project to use?

Use Point Labeler for an other dataset

Hi, thanks for the open source Tool, very helpful
It works perfectly on SemanticKitti, Now if i need to use an other dataset that does not contain poses or calibrations but only point cloud with PLY format? is it possible? (can i leave the files empty in this way) and how about the labels? how to generate the same format as your Dataset?
Thank you

Adding additional labels

Hello, Thank you for this much needed tool. I see that we can have semantic and instance labels for the same point. for e.g. the car has both semantic and instance labels. I wanted to know if we can have another type of label for the same point. Let's say we can have part labels as well? such as a point belonging to car will have semantic, instance and also part labels?. If I create a new label such as wheels and label the wheels of car. I fear it will overwrite the existing labels. and the semantic and instance labels will be lost.

No 3D point cloud Widget after upgrade

I upgraded some of my packages today and compiled the point labeler again the opengl view of point cloud was gone:

error_point_labeler

Here's the updated software:

Start-Date: 2020-04-16  10:01:25
Commandline: aptdaemon role='role-commit-packages' sender=':1.691'
Install: libvulkan1:amd64 (1.1.73+dfsg-1~gpu16.04.1, automatic)
Upgrade: ros-kinetic-rviz-visual-tools:amd64 (3.6.0-0xenial-20200310-081255+0000, 3.6.0-0xenial-20200323-033116+0000), python-sip:amd64 (4.17+dfsg-1build1, 4.17+dfsg-1ubuntu0.1), python-sip-dev:amd64 (4.17+dfsg-1build1, 4.17+dfsg-1ubuntu0.1), python-rospkg-modules:amd64 (1.2.3-1, 1.2.4-1), ros-kinetic-desktop:amd64 (1.3.2-0xenial-20200229-054156+0000, 1.3.2-0xenial-20200323-230404+0000), sip-dev:amd64 (4.17+dfsg-1build1, 4.17+dfsg-1ubuntu0.1), ros-kinetic-robot-model:amd64 (1.12.11-0xenial-20200218-164238+0000, 1.12.11-0xenial-20200312-215420+0000), ros-kinetic-joint-state-publisher:amd64 (1.12.14-1xenial-20200122-144827+0000, 1.12.15-1xenial-20200312-213847+0000), python-rosdep:amd64 (0.18.0-1, 0.19.0-1), ros-kinetic-rviz-plugin-tutorials:amd64 (0.10.3-0xenial-20200228-233509+0000, 0.10.3-0xenial-20200323-033053+0000), ros-kinetic-rqt-rviz:amd64 (0.5.10-0xenial-20200229-052320+0000, 0.5.10-0xenial-20200323-033006+0000), ros-kinetic-desktop-full:amd64 (1.3.2-0xenial-20200229-054346+0000, 1.3.2-0xenial-20200323-230520+0000), ros-kinetic-viz:amd64 (1.3.2-0xenial-20200229-053840+0000, 1.3.2-0xenial-20200323-041109+0000), google-chrome-stable:amd64 (80.0.3987.149-1, 81.0.4044.113-1), ros-kinetic-grid-map-demos:amd64 (1.6.2-1xenial-20200310-083935+0000, 1.6.2-1xenial-20200323-040141+0000), procps:amd64 (2:3.3.10-4ubuntu2.4, 2:3.3.10-4ubuntu2.5), thunderbird-locale-zh-hans:amd64 (1:60.9.0+build1-0ubuntu0.16.04.2, 1:60.9.1+build1-0ubuntu0.16.04.1), ros-kinetic-perception:amd64 (1.3.2-0xenial-20200218-165054+0000, 1.3.2-0xenial-20200323-030857+0000), ros-kinetic-simulators:amd64 (1.3.2-0xenial-20200229-053829+0000, 1.3.2-0xenial-20200323-043047+0000), ros-kinetic-librviz-tutorial:amd64 (0.10.3-0xenial-20200228-233302+0000, 0.10.3-0xenial-20200323-032735+0000), libpq5:amd64 (9.5.19-0ubuntu0.16.04.1, 9.5.21-0ubuntu0.16.04.1), ros-kinetic-urdf-tutorial:amd64 (0.3.0-1xenial-20200228-233646+0000, 0.3.0-1xenial-20200323-033234+0000), libprocps4:amd64 (2:3.3.10-4ubuntu2.4, 2:3.3.10-4ubuntu2.5), ros-kinetic-jsk-rviz-plugins:amd64 (2.1.5-0xenial-20200310-080917+0000, 2.1.5-0xenial-20200323-032657+0000), ros-kinetic-laser-assembler:amd64 (1.7.4-0xenial-20200109-041936+0000, 1.7.4-0xenial-20200323-024956+0000), thunderbird-locale-zh-cn:amd64 (1:60.9.0+build1-0ubuntu0.16.04.2, 1:60.9.1+build1-0ubuntu0.16.04.1), python-rospkg:amd64 (1.2.3-100, 1.2.4-100), thunderbird-gnome-support:amd64 (1:60.9.0+build1-0ubuntu0.16.04.2, 1:60.9.1+build1-0ubuntu0.16.04.1), libpq-dev:amd64 (9.5.19-0ubuntu0.16.04.1, 9.5.21-0ubuntu0.16.04.1), wine-devel-i386:i386 (5.3~xenial, 5.6~xenial), python-rosdep-modules:amd64 (0.18.0-1, 0.19.0-1), ros-kinetic-laser-filters:amd64 (1.8.5-0xenial-20200109-041445+0000, 1.8.5-0xenial-20200323-025010+0000), ros-kinetic-grid-map:amd64 (1.6.2-1xenial-20200310-084730+0000, 1.6.2-1xenial-20200323-041026+0000), ros-kinetic-rviz-python-tutorial:amd64 (0.10.3-0xenial-20200228-233521+0000, 0.10.3-0xenial-20200323-033103+0000), thunderbird-locale-en-gb:amd64 (1:60.9.0+build1-0ubuntu0.16.04.2, 1:60.9.1+build1-0ubuntu0.16.04.1), thunderbird-locale-en-us:amd64 (1:60.9.0+build1-0ubuntu0.16.04.2, 1:60.9.1+build1-0ubuntu0.16.04.1), intel-psxe-common-doc-2020:amd64 (2020.0-088, 2020.1-102), ros-kinetic-robot:amd64 (1.3.2-0xenial-20200218-164944+0000, 1.3.2-0xenial-20200312-220643+0000), ros-kinetic-media-export:amd64 (0.2.0-0xenial-20191214-001322+0000, 0.3.0-1xenial-20200310-065508+0000), intel-mkl-doc-2020:amd64 (2020.0-166, 2020.1-217), ros-kinetic-rviz:amd64 (1.12.17-0xenial-20200228-225334+0000, 1.12.17-0xenial-20200323-025037+0000), thunderbird:amd64 (1:60.9.0+build1-0ubuntu0.16.04.2, 1:60.9.1+build1-0ubuntu0.16.04.1), intel-mkl-doc-ps-2020:amd64 (2020.0-166, 2020.1-217), ros-kinetic-laser-pipeline:amd64 (1.6.2-0xenial-20200109-042746+0000, 1.6.2-0xenial-20200323-025928+0000), ros-kinetic-rqt-robot-plugins:amd64 (0.5.7-0xenial-20200229-053355+0000, 0.5.7-0xenial-20200323-040554+0000), ros-kinetic-visualization-tutorials:amd64 (0.10.3-0xenial-20200228-235451+0000, 0.10.3-0xenial-20200323-230242+0000), thunderbird-locale-en:amd64 (1:60.9.0+build1-0ubuntu0.16.04.2, 1:60.9.1+build1-0ubuntu0.16.04.1), ros-kinetic-grid-map-rviz-plugin:amd64 (1.6.2-1xenial-20200310-080820+0000, 1.6.2-1xenial-20200323-032442+0000), ros-kinetic-laser-geometry:amd64 (1.6.4-0xenial-20200109-041019+0000, 1.6.5-1xenial-20200323-023751+0000)
End-Date: 2020-04-16  10:01:50

My Environment is:

Software Version
OS 16.04
Qt 5.11
OpenGL 4.6 (Nvidia)

Here's the cmake output:

Not searching for unused variables given on the command line.
�[36m--�[0m The C compiler identification is GNU 5.4.0
�[36m--�[0m The CXX compiler identification is GNU 5.4.0
�[36m--�[0m Check for working C compiler: /usr/bin/cc
�[36m--�[0m Check for working C compiler: /usr/bin/cc -- works
�[36m--�[0m Detecting C compiler ABI info
�[36m--�[0m Detecting C compiler ABI info - done
�[36m--�[0m Detecting C compile features
�[36m--�[0m Detecting C compile features - done
�[36m--�[0m Check for working CXX compiler: /usr/bin/c++
�[36m--�[0m Check for working CXX compiler: /usr/bin/c++ -- works
�[36m--�[0m Detecting CXX compiler ABI info
�[36m--�[0m Detecting CXX compiler ABI info - done
�[36m--�[0m Detecting CXX compile features
�[36m--�[0m Detecting CXX compile features - done
�[36m--�[0m Found OpenGL: /usr/lib/x86_64-linux-gnu/libGL.so
�[36m--�[0m Found GLEW: /usr/include
�[36m--�[0m Boost version: 1.58.0
�[36m--�[0m Found the following Boost libraries:
�[36m--�[0m   filesystem
�[36m--�[0m   system
�[36m--�[0m Using CATKIN_DEVEL_PREFIX: /home/ran/catkin_ws/devel/.private/point_labeler
�[36m--�[0m Using CMAKE_PREFIX_PATH: /home/ran/catkin_ws/devel;/home/ran/kyber_ws/devel;/opt/ros/kinetic
�[36m--�[0m This workspace overlays: /home/ran/catkin_ws/devel;/home/ran/kyber_ws/devel;/opt/ros/kinetic
�[36m--�[0m Found PythonInterp: /usr/bin/python2 (found suitable version "2.7.12", minimum required is "2")
�[36m--�[0m Using PYTHON_EXECUTABLE: /usr/bin/python2
�[36m--�[0m Using Debian Python package layout
�[36m--�[0m Using empy: /usr/bin/empy
�[36m--�[0m Using CATKIN_ENABLE_TESTING: ON
�[36m--�[0m Call enable_testing()
�[36m--�[0m Using CATKIN_TEST_RESULTS_DIR: /home/ran/catkin_ws/build/point_labeler/test_results
�[36m--�[0m Found gtest sources under '/usr/src/gmock': gtests will be built
�[36m--�[0m Found gmock sources under '/usr/src/gmock': gmock will be built
�[36m--�[0m Found PythonInterp: /usr/bin/python2 (found version "2.7.12")
�[36m--�[0m Looking for pthread.h
�[36m--�[0m Looking for pthread.h - found
�[36m--�[0m Looking for pthread_create
�[36m--�[0m Looking for pthread_create - not found
�[36m--�[0m Looking for pthread_create in pthreads
�[36m--�[0m Looking for pthread_create in pthreads - not found
�[36m--�[0m Looking for pthread_create in pthread
�[36m--�[0m Looking for pthread_create in pthread - found
�[36m--�[0m Found Threads: TRUE
�[36m--�[0m Using Python nosetests: /usr/bin/nosetests-2.7
�[36m--�[0m catkin 0.8.3
�[36m--�[0m BUILD_SHARED_LIBS is on
Found catkin
�[36m--�[0m Configuring done
�[36m--�[0m Generating done
�[36m--�[0m Build files have been written to: /home/ran/catkin_ws/build/point_labeler

about calib.txt

hi, thanks for your amazing code!
i wonder if i test on my own lidar .bin files, i did't use camera, what should the calib.txt be written?

Seeking for helps :) I want to customize the tool to show RGB information

Hi @jbehley , thanks you for your great work. Thank you for providing me suggestions on another issue post, and I understand you are currently verrrrrry busy.
I am working on customize your finest work to visualize the RGB information on viewer, and I have the new data with RGB. I start to make some code change but faced a lot of problem, hope you and anyone who also see this post can give me some hints.
I start with change the code in KittiReader.cpp and store RGB info, and I also follow the similar way that how vertex information(x,y,z) transport to Shader, main change in Viewport.cpp, I put data into memory "bufTempRGBs_.assign(points_[t]->RGBs);" such as you did to points: "bufTempPoints_.assign(points_[t]->points);", and follow the similar path to send RGB info to draw_points.vert. but it seems not working, I checked the data before it assigned to GlBuffer(data exist and all correct at this step), so I assume it has something wrong with transport the data into buffer or get the data from buffer to the shader, but cannot figure out what exactly the issue is.
Do anyone else face the similar issue before, or do anyone also tried to add RGB info to this tool. I am looking forward to see your great ideas, thank you.

Unable to load maximize button and its functionality.

Thanks a lot for building this tool. It is very useful. I had used it in the past successfully. However I am trying to install the tool recently and the maximize button is not loading. Hence only half of the tool's UI fits in the screen. I would have to use super key + mouse every time I need to access the point cloud in the bottom half. (Attaching screenshot).
Capture

I tried on a couple of laptops with different configuration and same result. Are you aware of any changes in the dependency packages which can cause this issue? Thanks!

Spinning icon when trying to load test data

Hello, first of all I wanna say this is a fantastic product!!
I looked at the documentation closely and really like what you built!

I wanted to try it out on my machine, but get a beachball that loads forever.
I am using 140mb of assets from the SemanticKITTI (the first 98 frames from the 00 folder, along with all the rest).

Am I doing something wrong?
It seems to be staying in that state forever.

Thanks!
Screen Shot 2021-04-01 at 8 36 15 AM

About min range

Hello, first thanks for awesome tools.

I'm trying to exploit your tool for custom dataset and successfully loaded the data, but there are two problems ahead of me.

  1. Even i set the min range to 0.0, the near-centered squared-shape points are missing. I think this is because originally the tool is designed for the semantickitti, but i want to exploit all points without the default `exclusion' of points.

  2. I'm struggling with the number of scans to load, totally i have 186 scan data and properly convert them into bin files. However, the tools only read first 4 bin files like below.

... 4 scans with 2523424 points ...

Have you ever got this problem?

*As we scanned the scenes in stationary, we set the poses and calibration as default setting.

Again, thank you for your endeavor for making this tool.

About using point labeler for Point Cloud Based 3D Detection

Hello, first of all, thanks for you tool. It is really wonderful and works great for semantic segmentation related task. But I was wondering can I use it for Point Cloud based 3D Detection? If yes, then can you explain the process briefly? If no, which one (github repo) do you suggest to label points for 3D point cloud based detection ? (3D bounding box / Point cloud Mask)

problem with catkin deps fetch

i am using Ubuntu 18.04.3 LTS, i just followed the mentioned instructions and i had this error :
Screenshot from 2019-09-26 19-00-52

i made the update but i got the same error. any help will be appreciated.
Thank you

Adding labels

HI,
Can you give me instructions
I have question about the point cloud of semantic-kitti, Can i add some labels to other structure in the class building, I mean is it possible to label the doors for example, because i need some classes under the class building.
Thank you so much for your response

Originally posted by @medif in #6 (comment)

Unable to open label file

-- Setting 'tile size' to 100
mem size: 2400 MB
-- Setting 'max scans' to 500
-- Setting 'min range' to 2.5
-- Setting 'max range' to 50
/home/qiaran/catkin_ws/src/point_labeler/bin
[ERROR] velodyne or poses.txt missing.
#tiles = 40
Reading instances.txt...finished.
Unable to open label file.
Unable to open label file.
[1] 15795 segmentation fault sudo ./labeler

build problem when runing 'catkin build point_labeler'

Sorry to bother you, I follow the instruction but fail at some point.
I am using ubuntu 16.04, as for the default python 2.7 may cause xml problem, and the current version of empy only support python>3.6, I update my default python to 3.6.
All things worked well until 'catkin build point_labeler'
here is what I got:
Exception ignored in: <bound method BaseEventLoop.del of <_UnixSelectorEventLoop running=False closed=True debug=False>>
Traceback (most recent call last):
File "/usr/local/lib/python3.6/dist-packages/trollius/base_events.py", line 395, in del
File "/usr/local/lib/python3.6/dist-packages/trollius/unix_events.py", line 65, in close
File "/usr/local/lib/python3.6/dist-packages/trollius/unix_events.py", line 166, in remove_signal_handler
File "/usr/lib/python3.6/signal.py", line 47, in signal
TypeError: signal handler must be signal.SIG_IGN, signal.SIG_DFL, or a callable object

Screenshot from 2020-04-22 19-36-47
Screenshot from 2020-04-22 19-37-03

I do have the empy installed as in pip list.
Screenshot from 2020-04-22 19-37-29
This is what shows during build

Screenshot from 2020-04-22 19-37-44
Screenshot from 2020-04-22 19-38-01

can not load all points

Hi, Thanks to your open-source tool.

I want to annotate my own dataset, but point labeler can't load all points of my bin file.

The point cloud has 138,958,718 points, but 75,155,734 points are loaded.
I tried to change some options in settings.cfg, It still can't load all points.

This is original point cloud:
스크린샷, 2022-05-14 14-38-22

load it on point labeler:
스크린샷, 2022-05-14 14-39-11

What should I do?

Points simply not being displayed

Hi everyone,

First of all, congratulations on the great work and many thanks for sharing it!

While trying to import data into the labeler, part of the points are missing.

from semantic-kitti-api visualization tool
Screenshot from 2019-12-27 15-04-51

Visualization in the labeler, notice the diamond-shaped hole on the ground...

Screenshot from 2019-12-27 15-02-24

The missing part seen in the visualization tool

Screenshot from 2019-12-27 15-02-35

I've narrowed down to the 1 scan and the points that are missing, but I don't see anything abnormal from the MainFrame.cpp...

Could anyone give me some hint/guess/idea on solving the problem?

Thanks a lot.

I attached the binary velodyne file and pose.txt, calib.txt here in case anyone need them to reproduce the problem missing_points.zip .

The settings.cfg used:

tile size: 300
max scans: 400
min range: 0.0
max range: 200
gpu memory: 4

test data

Hi,
Thanks for your amazing works.
Do you mind upload some test data.There was a network problem for me to download kitti odometry.
best wishes.

catkin init issue

Hi,
I have followed your guide for builiding and downloading the dependencies, and I am stuck on the following error:

WARNING: Your workspace is not extending any other result
space, but it is set to use a linked devel space layout.
This requires the catkin CMake package in your source
space in order to be built.

I am assuming that I need to build first a workpsace the relies on ros/catkin but I am having problems building that too.

The main error I am receiving is when I run "catkin deps fetch" and I receive
"INFO:deps: Avoid fetching ROS packages.
INFO:deps: [ROS]: Searching all packages.
INFO:deps: [ROS]: Not found. Ignoring pre-defined ROS packages.
INFO:deps: Searching for dependencies."

Do you have any idea how to continue from here?
Help would be appreciated.

cloud and label point number mismatch?

mismatch_point

As shown in the above figure, I made my own dataset, after paint, I saved and reloaded the point cloud. It shows me the point number mismatch, I guess this might because of pointsCache_:

if (labels[i]->size() == 0) {
std::cout << "Warning: 0 labels?" << std::endl;
continue;
}
if (pointsCache_.find(indexes[i]) == pointsCache_.end()) {
std::cout << "Warning: labels of non cached points?" << std::endl;
continue;
}
if (labels[i]->size() != pointsCache_[indexes[i]]->size()) {
std::cout << "Warning: inconsistent numbers of labels for given point cloud!" << std::endl;
continue;
}
if (label_filenames_.size() < indexes[i]) {
std::cout << "Warning: wrong index?" << std::endl;
continue;
}

Because I never got any error message from the terminal.

OPENGL ERROR

I was trying to run the point labeler tool, however I have found some problems when it try to run ./labeler. Everything is installed and compiled as indicated in the repo. The compilation is ok, and when I run ./labeler in /point_labeler/bin/ I get the following error:

OpenGL Context Version 3.3 core profile
GLEW initialized.
OpenGL context version: 3.3
OpenGL vendor string : VMware, Inc.
OpenGL renderer string: SVGA3D; build: RELEASE; LLVM;
temp mem size: 3.6 MB
OpenGL Error: invalid enumerant(1280)
In: /catkin_ws/src/point_labeler/src/widget/Viewport.cpp on Line: 227
terminate called after throwing an instance of 'std::runtime_error'
what(): OpenGL error detected.
Aborted (core dumped)

Then, I tried to comment the lines where there is the error: all the lines in Viewport.cpp "glow::_CheckGlError(FILE, LINE);". By doing this the tool could be opened and when I select the folder with the data to annotate (the structure is as told in the repo), the tool closes I get the following error:

OpenGL Context Version 3.3 core profile
GLEW initialized.
OpenGL context version: 3.3
OpenGL vendor string : VMware, Inc.
OpenGL renderer string: SVGA3D; build: RELEASE; LLVM;
temp mem size: 3.6 MB
Found 0 instanceable labels.
/catkin_ws/src
terminate called after throwing an instance of 'std::runtime_error'
what(): Unknown name for calibration matrix.
Aborted (core dumped)

I don't know if there is something missing in my configuration or there is another mistake somewhere that I cannot find.

Thank you in advance for your help!

How to initialize bufPoints_

I try to add an option to view the original color of the point cloud.

Right now, however, I am struggling to find out where exactly the points in bufPoints_ is getting filled with points. I think I have narrowed it down to the method setPoints, but I'm not quite sure.

About poses.txt

  1. What is the unit of measurement of x,y,z, miter or millimiter?
  2. Which coordinate frame does pose refer to, world coordinate or last frame coordinate?

Thanks!

The X11 connection broke: No error (code 0)

Dear authors,

thank you for your excellent work.

when i run the bin/labeler, the xserver raise the error

The X11 connection broke: No error (code  0)
XIO: fatal IO error 22 (invalid argument) on X server ":1"
after 526 requests (526 known processed) with 0 events remaining

The Dependencies are all installed.

The ubuntu is 18.04, OpenGL version is 4.6.0, and NVIDIA driver is 470.57.02, GPU Quadro P620, only 1 Screen.

What I tried:
export DISPLAY=:0
or export DISPLAY=:0.0
or export DISPLAY=:1.0

All not work.

The commands
xclock
works (suggests Xorg works?)

One guess is the multi threads usage in labeler codes? But the software runs well on the other computer.

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.