-
Notifications
You must be signed in to change notification settings - Fork 661
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
feat(pose_instability_detector): change validation algorithm #7042
feat(pose_instability_detector): change validation algorithm #7042
Conversation
Signed-off-by: TaikiYamada4 <[email protected]>
Signed-off-by: TaikiYamada4 <[email protected]>
Signed-off-by: TaikiYamada4 <[email protected]>
Rewrite json schema. Refactor some variables. Signed-off-by: TaikiYamada4 <[email protected]>
Signed-off-by: TaikiYamada4 <[email protected]>
Signed-off-by: TaikiYamada4 <[email protected]>
Signed-off-by: TaikiYamada4 <[email protected]>
Revert lateral threshold calculation. Signed-off-by: TaikiYamada4 <[email protected]>
Signed-off-by: TaikiYamada4 <[email protected]>
Signed-off-by: TaikiYamada4 <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have not yet reviewed the detailed implementation, but I left some comments on what I noticed quickly.
localization/pose_instability_detector/src/pose_instability_detector.cpp
Outdated
Show resolved
Hide resolved
Signed-off-by: TaikiYamada4 <[email protected]>
Signed-off-by: TaikiYamada4 <[email protected]>
Signed-off-by: TaikiYamada4 <[email protected]>
localization/pose_instability_detector/src/pose_instability_detector.cpp
Outdated
Show resolved
Hide resolved
Signed-off-by: TaikiYamada4 <[email protected]>
@KYabuuchi Anyways, I will revert this PR to draft since I have to evaluate this PR by myself since many changes have happened. Plus, I am to remove the consideration of the process noise in dead reckoning and I have to check that out too. |
Signed-off-by: TaikiYamada4 <[email protected]>
Signed-off-by: TaikiYamada4 <[email protected]>
Signed-off-by: TaikiYamada4 <[email protected]>
Signed-off-by: TaikiYamada4 <[email protected]>
…ing hpp files Signed-off-by: TaikiYamada4 <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
At first, please fix the failing test. Currently, diagnostics are not published unless both odometry and twist are subscribed to, so it seems the test cannot exit the while loop.
But, I think the current implementation is basically fine. 🙆♂️
I will approve once the issues I pointed out are resolved.
Signed-off-by: TaikiYamada4 <[email protected]>
Signed-off-by: TaikiYamada4 <[email protected]>
…ages can use the methods in pose_instability_detector Signed-off-by: TaikiYamada4 <[email protected]>
I've changed |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks Good To Me 🙆♂️
Thank you for patiently responding to my many requests.
* Create define_static_threshold() Signed-off-by: TaikiYamada4 <[email protected]> * Revised dead reckoning methodology Signed-off-by: TaikiYamada4 <[email protected]> * style(pre-commit): autofix * Change threshold calculation to use the online time difference Signed-off-by: TaikiYamada4 <[email protected]> * Simplify threshold calculation. Rewrite json schema. Refactor some variables. Signed-off-by: TaikiYamada4 <[email protected]> * style(pre-commit): autofix * Rewrite lateral_threshold and vertical threshold Signed-off-by: TaikiYamada4 <[email protected]> * Consider dead reckoning noise, update README.md. Signed-off-by: TaikiYamada4 <[email protected]> * Added sentences to README.md Signed-off-by: TaikiYamada4 <[email protected]> * Filled README.md Revert lateral threshold calculation. Signed-off-by: TaikiYamada4 <[email protected]> * style(pre-commit): autofix * Add #include <algorithm> Signed-off-by: TaikiYamada4 <[email protected]> * style(pre-commit): autofix * Fixed pose_instability_detector.schema.json Signed-off-by: TaikiYamada4 <[email protected]> * Revised calculation of the process noise of dead reckoning. Signed-off-by: TaikiYamada4 <[email protected]> * style(pre-commit): autofix * Fixed typo and lack of information Signed-off-by: TaikiYamada4 <[email protected]> * Revised redundant time substitutions Signed-off-by: TaikiYamada4 <[email protected]> * Revised dead reckoning algorithm for orientation. Signed-off-by: TaikiYamada4 <[email protected]> * style(pre-commit): autofix * Added information about lateral thresholld calculation in README.md Signed-off-by: TaikiYamada4 <[email protected]> * Removed all dead reckoning related process noise stuff Signed-off-by: TaikiYamada4 <[email protected]> * Removed parameters and desciprtion of dead reckoning process noise stuff Signed-off-by: TaikiYamada4 <[email protected]> * style(pre-commit): autofix * Fixed integration logic for angular twist Signed-off-by: TaikiYamada4 <[email protected]> * Let the hpp file be exportable, and follow the guidelines when exporting hpp files Signed-off-by: TaikiYamada4 <[email protected]> * style(pre-commit): autofix * Fix typo Signed-off-by: TaikiYamada4 <[email protected]> * Delete include from package.xml Signed-off-by: TaikiYamada4 <[email protected]> * Make test codes work. Create a threshold structure so that other packages can use the methods in pose_instability_detector Signed-off-by: TaikiYamada4 <[email protected]> * style(pre-commit): autofix --------- Signed-off-by: TaikiYamada4 <[email protected]> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Description
Change of instability detection
Currently,
pose_instability_detector
compares the EKF pose and dead reckoning (DR) pose with a constant threshold defined in thepose_instability_detector.param.yaml
file.However, since the instability definition should change by the timer period and the vehicle twist, I made a framework for the
pose_instability_detector
to calculate the threshold of instability by itself, using the characteristics of the localization component. Note that this PR only puts timer period on consideration.Hence, the
pose_instability_detector.param.yaml
drastically changed so that the parameters for calculation has been required but not the threshold itself.Read the README.md for more information.
Change of DR algorithm
Since there was a lack of time span for twist integration, I revised the algorithm so that the twist integration is fully done from the previous EKF pose to the current EKF pose.
Related links
The following link shows the test results using actual driving data (For TIER IV people only)
TIER IV INTERNAL LINK
Tests performed
I have tested this module with several driving data in TIER IV, and check that the
/diagnostics
seems to output proper values. (For TIER IV people, see the link above.)I also check that the
rqt_runtime_monitor
works well.Currently,
pose_instability_detector
have output WARNs because of "large twist variance" and "angular twist error due to wrong gyro bias settings" even in normal environments but they appear very rare and only when the angular twist has a large perturbation.Notes for reviewers
Interface changes
ROS Topic Changes
None
ROS Parameter Changes
Discarded all parameters, and added the following instead.
Effects on system behavior
This PR should not change the system behavior. However, since the current
pose_instability_detector
has optimistic threshold values and this PR makes it low, WARN diagnostics from this node may appear respectively more frequently (but yet with low possibility).Pre-review checklist for the PR author
The PR author must check the checkboxes below when creating the PR.
In-review checklist for the PR reviewers
The PR reviewers must check the checkboxes below before approval.
Post-review checklist for the PR author
The PR author must check the checkboxes below before merging.
After all checkboxes are checked, anyone who has write access can merge the PR.