-
Notifications
You must be signed in to change notification settings - Fork 700
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(autoware_pose_covariance_modifier): add new node to early fuse gnss and ndt poses #6570
feat(autoware_pose_covariance_modifier): add new node to early fuse gnss and ndt poses #6570
Conversation
...ier4_localization_launch/launch/pose_twist_fusion_filter/pose_twist_fusion_filter.launch.xml
Outdated
Show resolved
Hide resolved
...n/autoware_pose_covariance_modifier_node/config/autoware_pose_covariance_modifier.param.yaml
Outdated
Show resolved
Hide resolved
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #6570 +/- ##
==========================================
- Coverage 15.41% 0.00% -15.42%
==========================================
Files 1904 1 -1903
Lines 132758 90 -132668
Branches 42265 0 -42265
==========================================
- Hits 20468 0 -20468
+ Misses 89541 90 -89451
+ Partials 22749 0 -22749
☔ View full report in Codecov by Sentry. |
0247d7b
to
3e35850
Compare
7641a96
to
3c75cff
Compare
Its ready for the review. Could you check. I would be happy if you give feedback. |
@meliketanrikulu I understand that plugging in a simple node between NDT and EKF is more efficient implementation-wise, but a bit of architecture change can grow to a chaos. So could you please try to create a node that fit this architecture? |
73644b5
to
bb868cc
Compare
Signed-off-by: M. Fatih Cırıt <mfc@leodrive.ai>
Signed-off-by: M. Fatih Cırıt <mfc@leodrive.ai>
Signed-off-by: M. Fatih Cırıt <mfc@leodrive.ai>
Signed-off-by: M. Fatih Cırıt <mfc@leodrive.ai>
Signed-off-by: M. Fatih Cırıt <mfc@leodrive.ai>
Signed-off-by: M. Fatih Cırıt <mfc@leodrive.ai>
Signed-off-by: M. Fatih Cırıt <mfc@leodrive.ai>
Signed-off-by: Melike Tanrıkulu <melike@leodrive.ai>
Signed-off-by: Melike Tanrıkulu <melike@leodrive.ai>
Signed-off-by: Melike Tanrıkulu <melike@leodrive.ai>
Signed-off-by: M. Fatih Cırıt <mfc@leodrive.ai>
Signed-off-by: M. Fatih Cırıt <mfc@leodrive.ai>
9091768
to
2efbb92
Compare
Rebased it to latest main. @TaikiYamada4 I've applied your suggestions. #6570 (comment) See this for the final test results. If you are fine with it, we can merge it. |
Signed-off-by: M. Fatih Cırıt <mfc@leodrive.ai>
36d17b6
to
bf40cca
Compare
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.
@meliketanrikulu @xmfcx
Thank you for accommodating my revision requests for so long!
Looks good to me!
…nss and ndt poses (autowarefoundation#6570) Signed-off-by: Melike Tanrıkulu <melike@leodrive.ai> Co-authored-by: M. Fatih Cırıt <mfc@leodrive.ai> Signed-off-by: vividf <yihsiang.fang@tier4.jp>
…nss and ndt poses (autowarefoundation#6570) Signed-off-by: Melike Tanrıkulu <melike@leodrive.ai> Co-authored-by: M. Fatih Cırıt <mfc@leodrive.ai>
Description
Closes:
Related discussion:
This PR was created to use NDT and GNSS together in localization. In order for EKF to work properly, the covariance values of the given inputs must be provided correctly as input. In Default AW, NDT covariance values are provided with default values. GNSS, on the other hand, provides its own error in a healthy way.
This PR also suggests that we drive with reference to the trusted source (GNSS), which can reliably calculate the error. It aims to drive with GNSS alone when the GNSS error is low, to use NDT-GNSS together when the GNSS error increases, and to use only NDT alone when the GNSS error goes beyond acceptable limits.
Without this package
Only NDT pose is used in localization. GNSS pose is only used for initialization.
With this package
Both NDT and GNSS poses are used in localization, depending on the standard deviation values coming from the GNSS
system.
Here is a flowchart depicting the process and the predefined thresholds:
How and when are the NDT covariance values overwritten?
NDT covariance values overwritten only for the
GNSS + NDT
mode.This enables a smooth transition between
GNSS Only
andNDT Only
modes.In this mode, both NDT and GNSS poses are published from this node.
Assumptions
NDT covariance calculation
Goal
gnss_std_dev
increases within its bounds,ndt_std_dev
should proportionally decrease within its own bounds.To achieve this, we first linearly interpolate:
Base value:
gnss_std_dev
Base range: [
threshold_gnss_stddev_xy_bound_lower
,threshold_gnss_stddev_xy_bound_upper
]Target range: [
ndt_std_dev_bound_lower
,ndt_std_dev_bound_upper
]Target value:
ndt_std_dev_target
Final value =
ndt_std_dev_bound_lower
+ndt_std_dev_bound_upper
-ndt_std_dev_target
(to get the inverse)Illustration
Tests performed
The testing steps are shown in the video below:
Installation
Prepare Autoware to test PR:
Parameter settings:
Launch Autoware:
Check Out The Results:
Test Video
Note
Explanations for the video:
Check Out Debug Topics
ros2 topic echo /localization/autoware_pose_covariance_modifier/selected_pose_type
ros2 topic echo /autoware_pose_covariance_modifier/output/gnss_position_stddev
ros2 topic echo /autoware_pose_covariance_modifier/output/ndt_position_stddev
Below you can see the results when you start using ndt while using gnss:
Notes for reviewers
Interface changes
Effects on system behavior
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.