Skip to content

Some questions about surface feature extraction #283

@BLB0803

Description

@BLB0803

Hello, Shan, I had read the article and watched the LIO-SAM and LVI-SAM demo on YouTube, there are amazing work.

And I'm reading the codes to get further understanding of whole system now.

BUT, I found something really confusing me, at

featureExtraction.cpp, function extractFeatures(), line 202,

I saw that a point belongs to planar feature will be labeled as -1 in the array called cloudLabel.

In which part makes me confused is, at line 227 of featureExtraction.cpp, below the labeling part mentioned before,

if (cloudLabel[k] <= 0){ surfaceCloudScan->push_back(extractedCloud->points[k]); }

It seems like you chosed not only points labeled as -1 but also labeled as 0.

To check out this part, I visualized the surfaceCloud that published by the publisher called pubSurfacePoints at rviz, here's the result:

Screenshot from 2021-09-27 16-07-16

Some points should not belongs to planar feature(like points of trees) had been extracted, cuz of pushing not only -1 but also 0 labeled points into surfaceCloudScan.

So I tryed to change
if (cloudLabel[k] <= 0){ surfaceCloudScan->push_back(extractedCloud->points[k]); }
with
if (cloudLabel[k] < 0){ surfaceCloudScan->push_back(extractedCloud->points[k]); }

to save planar features properly, and the visualize result like below:
Screenshot from 2021-09-27 16-20-11

It seems like extracted some "real" planar features, although are sparse.

But after I changed that, every time when I test with the dataset named campus_large_dataset.bag,

It crashed at the timestamp of[PAUSED ] Bag Time: 1572807852.632124 Duration: 430.792850 / 994.965750 like below:

Screenshot from 2021-09-27 16-35-01

Screenshot from 2021-09-27 16-38-51

Although I had double checked the /config/params.yaml to ensure parameters were configured properly.

And the WARN message is:

[ WARN] [1632731906.350954159]: Large velocity, reset IMU-preintegration!

Maybe it's because of lacking of features after I changed code like that, I guess.

Is this a bug or just I misunderstood the codes of that part? Because I had checked the same part of LVI-SAM at featureExtraction.cpp, it's exactly the same as:

if (cloudLabel[k] <= 0){ surfaceCloudScan->push_back(extractedCloud->points[k]); }

But in my opinion, a points labeled as '0' should not belongs to planar feature, since the value of each points in the label container cloudLabel, would be initialized as 0 by default.

So how could I fix this problem? Expecting for your reply.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions