Skip to content

feat(multi_object_tracker): cherry-pick multi object tracker from AWF #2065

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 3 commits into
base: beta/v0.44
Choose a base branch
from

Conversation

Ericpotato
Copy link

Description

This PR cherry-picked changes from the following AWF PRs:
feat(autoware_multi_object_tracker): tracker confidence check by its uncertainty
fix(autoware_multi_object_tracker): update Mahalanobis distance threshold for data association
and changed the parameter constexpr double EXPIRED_PROBABILITY_THRESHOLD from 0.015 to 0.0075
It performed well in experiments. and effectively reduce false positive rate.

Note

There is another PR of multi_object_tracker for branch beta/v0.41, link
But cherry-pick tha PR to beta/v0.44 caused a lot conflict and some contents are not fully verified in road tests
So this part might need to be updated later.

Related links

Parent Issue:

How was this PR tested?

TIER IV Internal Link

Notes for reviewers

None.

Interface changes

None.

Effects on system behavior

None.

technolojin and others added 3 commits May 27, 2025 19:12
…uncertainty (autowarefoundation#10378)

* preparation

Signed-off-by: Taekjin LEE <[email protected]>

* feat(autoware_multi_object_tracker): enhance matrix initialization and add debug logging for tracker removal

Signed-off-by: Taekjin LEE <[email protected]>

* feat(autoware_multi_object_tracker): integrate max distance matrix for tracker removal logic

Signed-off-by: Taekjin LEE <[email protected]>

* refactor(autoware_multi_object_tracker): remove debug logging for tracker removal process

Signed-off-by: Taekjin LEE <[email protected]>

style(pre-commit): autofix

Signed-off-by: Taekjin LEE <[email protected]>

* refactor(autoware_multi_object_tracker): remove unused string include in association.cpp

Signed-off-by: Taekjin LEE <[email protected]>

* refactor(autoware_multi_object_tracker): remove commented debug logging in association.cpp

Signed-off-by: Taekjin LEE <[email protected]>

* refactor(autoware_multi_object_tracker): remove distance_threshold parameter and update related configurations

Signed-off-by: Taekjin LEE <[email protected]>

* refactor(tracker): implement isConfidentTracker method for object confidence assessment

Signed-off-by: Taekjin LEE <[email protected]>

* refactor(tracker): rename isConfidentTracker to isConfident and add isExpired method for object status management

Signed-off-by: Taekjin LEE <[email protected]>

* refactor(tracker): enhance updateWithoutMeasurement and isExpired methods for improved object status management

Signed-off-by: Taekjin LEE <[email protected]>

* refactor(tracker): adjust confidence and expiration thresholds for improved tracking accuracy

Signed-off-by: Taekjin LEE <[email protected]>

* refactor(tracker): add position covariance methods and improve confidence assessment logic

Signed-off-by: Taekjin LEE <[email protected]>

* refactor(tracker): add total existence probability calculation and improve debug output

Signed-off-by: Taekjin LEE <[email protected]>

* refactor(tracker): enhance debug output for expiration checks and adjust minor axis threshold

Signed-off-by: Taekjin LEE <[email protected]>

* refactor(tracker): simplify overlap removal logic by introducing canRemoveOverlappedTarget method

refactor(tracker): improve code readability by formatting and enhancing overlap removal logic

refactor(tracker): enhance UUID handling and improve confidence checks in tracker logic

refactor(tracker): improve debug output for confidence and expiration checks

Signed-off-by: Taekjin LEE <[email protected]>

* refactor(tracker): optimize overlap removal by using list iteration instead of sorting

Signed-off-by: Taekjin LEE <[email protected]>

* refactor(tracker): simplify existence probability retrieval and enhance code clarity

Signed-off-by: Taekjin LEE <[email protected]>

* refactor(debugger): streamline existence probability retrieval in TrackerObjectDebugger

Signed-off-by: Taekjin LEE <[email protected]>

* feat(tracker): add time parameter to position covariance and confidence checks

Signed-off-by: Taekjin LEE <[email protected]>

* refactor(tracker): enhance confidence checks by refining covariance thresholds and improving debug output

Signed-off-by: Taekjin LEE <[email protected]>

style(pre-commit): autofix

Signed-off-by: Taekjin LEE <[email protected]>

refactor(tracker): comment out debug messages in confidence and expiration checks for cleaner output

refactor(processor): simplify object retrieval in removeOverlappedTracker method

Signed-off-by: Taekjin LEE <[email protected]>

* refactor(tracker): remove redundant debug messages and enhance expiration checks with constants

Signed-off-by: Taekjin LEE <[email protected]>

* fix: set default value if the given existence probability is almost zero

Signed-off-by: Taekjin LEE <[email protected]>

* feat: merge overlapped trackers probability

Signed-off-by: Taekjin LEE <[email protected]>

* refactor(tracker): improve existence probability updates and add debug output for probability vectors

Signed-off-by: Taekjin LEE <[email protected]>

* style(pre-commit): autofix

Signed-off-by: Taekjin LEE <[email protected]>

* refactor(tracker): rename updateExistenceProbabilities to mergeExistenceProbabilities and simplify logic

Signed-off-by: Taekjin LEE <[email protected]>

* refactor(tracker): remove debug output from mergeOverlappedTracker function

Signed-off-by: Taekjin LEE <[email protected]>

* refactor(tracker): remove debug output for existence probabilities in mergeOverlappedTracker function

Signed-off-by: Taekjin LEE <[email protected]>

* refactor(tracker): include string header and simplify UUID string retrieval

Signed-off-by: Taekjin LEE <[email protected]>

* refactor(tracker): rename normalize parameter to clamp and update related logic

Signed-off-by: Taekjin LEE <[email protected]>

* refactor(tracker): rename EXPIRED_CONFIDENCE_THRESHOLD to EXPIRED_PROBABILITY_THRESHOLD for clarity

Signed-off-by: Taekjin LEE <[email protected]>

* refactor(tracker): add comment to clarify target removal condition in canMergeOverlappedTarget function

Signed-off-by: Taekjin LEE <[email protected]>

* style(pre-commit): autofix

* refactor(tracker): add validation checks for covariance matrix in getPositionCovarianceEigenSq and getPositionCovarianceSizeSq functions

Signed-off-by: Taekjin LEE <[email protected]>

* refactor(tracker): improve covariance validation logging in getPositionCovarianceEigenSq and getPositionCovarianceSizeSq functions

Signed-off-by: Taekjin LEE <[email protected]>

* refactor(tracker): optimize iterator handling in mergeOverlappedTracker function

Signed-off-by: Taekjin LEE <[email protected]>

* refactor(types): change default_existence_probability type from double to float

Signed-off-by: Taekjin LEE <[email protected]>

* refactor(tracker): rename getPositionCovarianceSizeSq to getPositionCovarianceDeterminant for clarity

Signed-off-by: Taekjin LEE <[email protected]>

* refactor(tracker): update covariance thresholds to mitigate drawbacks

Signed-off-by: Taekjin LEE <[email protected]>

* refactor(tracker): adjust covariance thresholds for confidence and expiration checks

Updated the covariance thresholds in the Tracker class to improve confidence and expiration logic, enhancing the accuracy of object tracking.

Signed-off-by: Taekjin LEE <[email protected]>

* fix: adjust existence probability threshold of expiration

Signed-off-by: Taekjin LEE <[email protected]>

* refactor(tracker): improve UUID formatting in tracker_base.hpp

Updated the UUID formatting logic in the Tracker class to use a constant for the UUID size and ensure proper type casting, enhancing code clarity and maintainability.

Signed-off-by: Taekjin LEE <[email protected]>

* fix(types): cap existence probability to a maximum of 0.999

Added a check to ensure that the existence probability does not exceed 0.999, addressing potential issues with overly high values that may not be set correctly.

Signed-off-by: Taekjin LEE <[email protected]>

---------

Signed-off-by: Taekjin LEE <[email protected]>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
…hold for data association (autowarefoundation#10648)

* refactor(autoware_multi_object_tracker): update Mahalanobis distance threshold for data association

Changed the Mahalanobis distance threshold from 3.035 to a new critical value of 3.717, corresponding to a 99.99% confidence level for improved accuracy in object tracking.

Signed-off-by: Taekjin LEE <[email protected]>

* style(pre-commit): autofix

Signed-off-by: Taekjin LEE <[email protected]>

* refactor(autoware_multi_object_tracker): rename Mahalanobis distance threshold for clarity

Updated the Mahalanobis distance threshold variable name to better reflect its purpose in the data association process, enhancing code readability.

Signed-off-by: Taekjin LEE <[email protected]>

---------

Signed-off-by: Taekjin LEE <[email protected]>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Copy link

Thank you for contributing to the Autoware project!

🚧 If your pull request is in progress, switch it to draft mode.

Please ensure:

@Ericpotato Ericpotato requested review from rej55 and technolojin May 28, 2025 06:10
@technolojin
Copy link

@Ericpotato
Please pair with autoware launcher update

Copy link

@Ericpotato
Copy link
Author

@technolojin
Thanks for your remind!
But it seems that this PR does not need update in launcher. At least in the experiment yesterday, xx1 v0.49 used the same launcher without errors
It may because that this PR does not cover all changes from your PR #2055.
I think if would better if you can make the cherry-picking PR of #2055 to beta/v0.44, since it has a lot of conflicts if I just cherry-pick the contents.

Thanks again for your patience!

@Ericpotato
Copy link
Author

@technolojin
Sorry! Just to confirm,
Will you create the cherry-pick PR to universe beta/v0.44 based on #2055 ?
If so, I will close this PR as it won't be necessary.

@KYabuuchi
Copy link

After this cherry-pick, pedestrian recognition becomes weak(?) in the actual vehicle. 😭
We are suspending merge until the cause is clarified. TIER IV INTERNAL LINK

@KYabuuchi KYabuuchi marked this pull request as draft June 1, 2025 23:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants