Skip to content
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

Pose initialization error #2650

Closed
3 tasks done
meliketanrikulu opened this issue Jan 13, 2023 · 5 comments
Closed
3 tasks done

Pose initialization error #2650

meliketanrikulu opened this issue Jan 13, 2023 · 5 comments
Assignees
Labels
component:localization Vehicle's position determination in its environment. (auto-assigned) priority:high High urgency and importance.

Comments

@meliketanrikulu
Copy link
Contributor

meliketanrikulu commented Jan 13, 2023

Checklist

  • I've read the contribution guidelines.
  • I've searched other issues and no duplicate issues were found.
  • I'm convinced that this is not my fault but a bug.

Description

There was an issue about this problem before, but the package structure has changed quite a bit.You can reach the previously studied issue here. Before this issue was resolved, there was a part we added, the pose_initializer package was sending the first pose to ekf for 1 second. When this issue was resolved in autoware, we tested it on our own computers and the problem seemed to be resolved. However, we did not remove this small solution that we applied on the vehicle. When we updated everything in accordance with the structure in autoware, we encountered this problem again.

We are getting the exact same error. gnss_poser is sending the correct pose to the pose_initializer package. NDT also takes this right pose and searches at the right spot and creates the first pose correctly here. This pose is sent to EKF as the first pose via the pose_initilizer package. However, EKF produces the wrong pose. The pose produced by EKF is either formed at the zero point of the map or somewhere between the zero point and the correct point obtained from gnss_poser.

Expected behavior

We expect EKF to localize correctly when autoware is started.

Actual behavior

When Autoware starts, gnss_poser sends the correct initial location and NDT calculates a correct initial location using that location. Then EKF takes this pose as the first pose via pose_initilizer, but cannot calculate its position correctly. The pose produced by EKF is either formed at the zero point of the map or somewhere between the zero point and the correct point obtained from gnss_poser.

video1
video2

Steps to reproduce

If you want to reproduce:

  1. bag files
  2. sensor launch
  3. vehicle launch
  4. map files

Versions

No response

Possible causes

No response

Additional context

No response

@meliketanrikulu meliketanrikulu added priority:high High urgency and importance. component:localization Vehicle's position determination in its environment. (auto-assigned) labels Jan 13, 2023
@kminoda
Copy link
Contributor

kminoda commented Jan 16, 2023

Thank you for the report! Let me confirm several points:

  1. So do you still apply your previous solution (= the pose_initializer package was sending the first pose to ekf for 1 second)?
  2. Which version of Autoware do you use? Is it the latest one?

We will also investigate the cause of this problem when we have time. But also feel free to post the cause or any solution here, if you find any (it will definitely be a big contribution for this OSS 😄 ) Here are some debug tips for this type of problem:

  • The main characters here are mainly ndt_scan_matcher and ekf_localizer, which both communicate mutually. Inspecting the topics between two nodes may be the first step (e.g. checking when origin points are published by using ros2 topic echo).
  • Checking activation/deactivation timing of pose_initializer may help, which is recently introduced with this PR.

@meliketanrikulu meliketanrikulu self-assigned this Jan 16, 2023
@meliketanrikulu
Copy link
Contributor Author

meliketanrikulu commented Jan 16, 2023

Thank you for the report! Let me confirm several points:

  1. So do you still apply your previous solution (= the pose_initializer package was sending the first pose to ekf for 1 second)?
  2. Which version of Autoware do you use? Is it the latest one?

We will also investigate the cause of this problem when we have time. But also feel free to post the cause or any solution here, if you find any (it will definitely be a big contribution for this OSS smile ) Here are some debug tips for this type of problem:

  • The main characters here are mainly ndt_scan_matcher and ekf_localizer, which both communicate mutually. Inspecting the topics between two nodes may be the first step (e.g. checking when origin points are published by using ros2 topic echo).
  • Checking activation/deactivation timing of pose_initializer may help, which is recently introduced with this PR.

Thank you for your comment @kminoda . I cheched all pipeline. There was a problem with ndt scan matcher package. I just changed this line. ndt old position is zero at the beginning, so for the beginning, the condition that this ndt old pose is empty is checked. However, here it is checked whether the new pose ndt is empty. I just replaced this with ndt old pose. This was causing the poses to return zero at the beginning from within the interpolator function here. Problem solved I will create PR.

@kminoda
Copy link
Contributor

kminoda commented Jan 17, 2023

@meliketanrikulu Thank you very much! I will check the PR.

@meliketanrikulu
Copy link
Contributor Author

Related PR: #2660

@kminoda
Copy link
Contributor

kminoda commented Jan 23, 2023

This issue is solved, right? @meliketanrikulu
Please close this issue if so.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component:localization Vehicle's position determination in its environment. (auto-assigned) priority:high High urgency and importance.
Projects
No open projects
Status: Done
Development

No branches or pull requests

2 participants