yzrobot / online_learning

[ROS package] Online Learning for Human Detection in 3D Point Clouds
GNU General Public License v3.0
156 stars 70 forks source link

How do I use this package with a 64-line LIDAR? #17

Open tcjcxy30 opened 4 years ago

tcjcxy30 commented 4 years ago

Hi: Thank you for your work. This is what I need. I have a 64-line LIDAR but this package seems to only support 16-line LIDAR. What should I do to take my LIDAR data to use this package? Looking forward to your reply.

yzrobot commented 4 years ago

Hi, obviously you have more points to deal with. Since this "online learning" is actually a modular pipeline, you may need to consider "clustering" with your 64-line LIDAR first. To do so you could refer here: https://github.com/yzrobot/adaptive_clustering/blob/master/src/adaptive_clustering.cpp#L252. Alternatively, if real-time performance is affected, you may want to consider downsampling. The SVM part can remain unchanged for the time being, and improve when necessary. Cheers.

yzrobot commented 4 years ago

downsampling c.f.https://github.com/yzrobot/adaptive_clustering/blob/devel/src/adaptive_clustering.cpp

Carolbelieve commented 4 years ago

Hi: First, I use downsampling with "setLeafSize(0.04f, 0.04f, 0.04f)" at "adaptive_clustering.cpp" with setting "VLP-16", the human can be clustered with box. The pointcloud size from "7xxxx" to "2xxxx", and at about 17FPS on a laptop. Then, I use the same setting at "object3d_detector.cpp" and no boxes appear. So what are the problem I might run into here?

Carolbelieve commented 4 years ago

Hi, Yan, @yzrobot, thank you for your project first. I have read your paper and check the code and find the probability models are abandoned in the line "if(svm_predict(svmmodel, svmnode) != 1)". So I need to train a new svm model or tune the parameters?

yzrobot commented 4 years ago

Hi, are you referring to here, if so:

- Function: double svm_predict(const struct svm_model *model,
                               const struct svm_node *x);

    This function does classification or regression on a test vector x
    given a model.

    For a classification model, the predicted class for x is returned.
    For a regression model, the function value of x calculated using
    the model is returned. For an one-class model, +1 or -1 is
    returned.

So the idea of the code is that, if it's 1 then we show the bounding-box, otherwise no. You don't need to train a new svm model, the code can handle it correctly.

yzrobot commented 4 years ago

Hi: First, I use downsampling with "setLeafSize(0.04f, 0.04f, 0.04f)" at "adaptive_clustering.cpp" with setting "VLP-16", the human can be clustered with box. The pointcloud size from "7xxxx" to "2xxxx", and at about 17FPS on a laptop. Then, I use the same setting at "object3d_detector.cpp" and no boxes appear. So what are the problem I might run into here?

adaptive_clustering.cpp shows clusters, while object3d_detector.cpp shows humans (clustering + svm), so I guess that no cluster was recognized as human by svm.

PranavShevkar commented 10 months ago

Hello, I am also working on a 64 line lidar. Did anyone actually manage to use this package to use with 64 line lidar. If so, can you share some valuable info or a link to the repo/

Thanks in advance