-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Description
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:
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:
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:
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.