Skip to content

Commit e6b9418

Browse files
authoredDec 21, 2022
Fixed inconsistent behavior when line angle search finds two neighbors (#46)
1 parent 1221cf3 commit e6b9418

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed
 

‎linefit_ground_segmentation/src/ground_segmentation.cc

+7-5
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ void GroundSegmentation::assignClusterThread(const unsigned int &start_index,
165165
double dist = segments_[segment_index].verticalDistanceToLine(point_2d.d, point_2d.z);
166166
// Search neighboring segments.
167167
int steps = 1;
168-
while (dist == -1 && steps * segment_step < params_.line_search_angle) {
168+
while (dist < 0 && steps * segment_step < params_.line_search_angle) {
169169
// Fix indices that are out of bounds.
170170
int index_1 = segment_index + steps;
171171
while (index_1 >= params_.n_segments) index_1 -= params_.n_segments;
@@ -174,12 +174,14 @@ void GroundSegmentation::assignClusterThread(const unsigned int &start_index,
174174
// Get distance to neighboring lines.
175175
const double dist_1 = segments_[index_1].verticalDistanceToLine(point_2d.d, point_2d.z);
176176
const double dist_2 = segments_[index_2].verticalDistanceToLine(point_2d.d, point_2d.z);
177-
// Select larger distance if both segments return a valid distance.
178-
if (dist_1 > dist) {
177+
if (dist_1 >= 0) {
179178
dist = dist_1;
180179
}
181-
if (dist_2 > dist) {
182-
dist = dist_2;
180+
if (dist_2 >= 0) {
181+
// Select smaller distance if both segments return a valid distance.
182+
if (dist < 0 || dist_2 < dist) {
183+
dist = dist_2;
184+
}
183185
}
184186
++steps;
185187
}

0 commit comments

Comments
 (0)
Please sign in to comment.