Skip to content

Commit 7dbb890

Browse files
committed
Update sorting condition
1 parent cb1f798 commit 7dbb890

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

perception/multi_object_tracker/src/multi_object_tracker_core.cpp

+10-5
Original file line numberDiff line numberDiff line change
@@ -457,16 +457,21 @@ void MultiObjectTracker::sanitizeTracker(
457457
constexpr float min_iou_for_unknown_object = 0.001;
458458
constexpr double distance_threshold = 5.0;
459459

460-
// Create sorted list with non-UNKNOWN objects first, then by measurement count
461-
std::vector<std::shared_ptr<Tracker>> sorted_list_tracker(list_tracker.begin(), list_tracker.end());
462-
std::sort(sorted_list_tracker.begin(), sorted_list_tracker.end(),
463-
[](const std::shared_ptr<Tracker>& a, const std::shared_ptr<Tracker>& b) {
460+
// Create sorted list with non-UNKNOWN objects first, then by measurement count
461+
std::vector<std::shared_ptr<Tracker>> sorted_list_tracker(
462+
list_tracker_.begin(), list_tracker_.end());
463+
std::sort(
464+
sorted_list_tracker.begin(), sorted_list_tracker.end(),
465+
[&time](const std::shared_ptr<Tracker> & a, const std::shared_ptr<Tracker> & b) {
464466
bool a_unknown = (a->getHighestProbLabel() == Label::UNKNOWN);
465467
bool b_unknown = (b->getHighestProbLabel() == Label::UNKNOWN);
466468
if (a_unknown != b_unknown) {
467469
return b_unknown; // Put non-UNKNOWN objects first
468470
}
469-
return a->getTotalMeasurementCount() > b->getTotalMeasurementCount(); // Then sort by measurement count
471+
if (a->getTotalMeasurementCount() != b->getTotalMeasurementCount()) {
472+
return a->getTotalMeasurementCount() > b->getTotalMeasurementCount(); // Then sort by measurement count
473+
}
474+
return a->getElapsedTimeFromLastUpdate(time) < b->getElapsedTimeFromLastUpdate(time); // Finally sort by elapsed time (smaller first)
470475
});
471476

472477
/* delete collision tracker */

0 commit comments

Comments
 (0)