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

Positioning error in wrong zone when NDT starts #1421

Closed
3 tasks done
meliketanrikulu opened this issue Jul 25, 2022 · 12 comments
Closed
3 tasks done

Positioning error in wrong zone when NDT starts #1421

meliketanrikulu opened this issue Jul 25, 2022 · 12 comments
Labels
component:localization Vehicle's position determination in its environment. (auto-assigned) priority:high High urgency and importance. status:help-wanted Assistance or contributors needed.

Comments

@meliketanrikulu
Copy link
Contributor

meliketanrikulu commented Jul 25, 2022

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

We encountered a random error while NDT was running. After the initial pose estimation stages (monte carlo lozalization) were performed correctly, we observed that when starting NDT, its position was set somewhere between the origin point of the map and the correct location of the vehicle, or it was set directly to the origin point of the map.
While receiving these errors, we see that our gnss errors are not high.

Expected behavior

We expect NDT to search in the right area stably.

Actual behavior

We observed that when starting NDT, its position was set somewhere between the origin point of the map and the correct location of the vehicle, or it was set directly to the origin point of the map.
video 1
video 2
error_ndt2

Steps to reproduce

bags
maps
We are working with UTM. You have to select lanelet2_map_projector_type parameter to UTM in tier4_map_loader packages launch file and you could set coordinate_system parameter as 4: LocalCartesianUTM in gnss_poser package

Versions

No response

Possible causes

Before starting NDT, particle filter is used when estimating initial pose, and we visualized best_particle in rviz to make sure there is no problem at this stage. We have seen that this stage works correctly and that the vehicle is in its position. After making sure that this stage works correctly, the NDT algorithm is constantly subscribing to a pose published from ekf, and an algorithm is running to use the most appropriate pose from the poses from ekf. When ekf node starts, it generates a pose at 0 0 0 at the central point of the map.When the NDT algorithm started, we think that there may have been a problem in the algorithm trying to choose the right one among the pose values it received from ekf. For this reason, it tries to produce poses by referencing old poses (map center) from ekf or one of the values in between.

Additional context

No response

@meliketanrikulu meliketanrikulu added component:localization Vehicle's position determination in its environment. (auto-assigned) priority:high High urgency and importance. labels Jul 25, 2022
@YamatoAndo
Copy link
Contributor

Thank you for your report.
You are right, it seems to refer to the NDT node for a pose at 0 0 0.

To fix this problem, I think that the EKF node should not publish the pose until it receives the initialization pose.
I think that way, the NDT node would not receive a pose at 0 0 0.

@meliketanrikulu
Copy link
Contributor Author

NDT node graph:
Screenshot from 2022-07-26 18-23-29

@xmfcx xmfcx moved this to Todo in Bus ODD Project Jul 26, 2022
@mitsudome-r mitsudome-r added the status:help-wanted Assistance or contributors needed. label Aug 2, 2022
@YamatoAndo
Copy link
Contributor

@meliketanrikulu
I would like to put a flag in ekf_localizer not to estimate the position until the initial position is received.
Any opinions on that?

※ Note that this is a temporary fix and the same problem may occur when re-initializing.

@meliketanrikulu
Copy link
Contributor Author

@meliketanrikulu
I would like to put a flag in ekf_localizer not to estimate the position until the initial position is received.
Any opinions on that?

※ Note that this is a temporary fix and the same problem may occur when re-initializing.

Hello @YamatoAndo . We solved this problem temporarily by publishing the initial pose for a second.Maybe it is not necessary to keep this period for so long.
Both of these methods seem to offer temporary fix. We can talk about this again according to the method to be used for reinitialization. If a method such as slowing down or stopping the vehicle is used, we can send the initial pose for a while.

@YamatoAndo
Copy link
Contributor

YamatoAndo commented Aug 3, 2022

@meliketanrikulu

We can talk about this again according to the method to be used for reinitialization.

Sure!

@meliketanrikulu
Copy link
Contributor Author

meliketanrikulu commented Aug 9, 2022

@meliketanrikulu I would like to put a flag in ekf_localizer not to estimate the position until the initial position is received. Any opinions on that?

※ Note that this is a temporary fix and the same problem may occur when re-initializing.

Is there related PR @YamatoAndo

@xmfcx
Copy link
Contributor

xmfcx commented Aug 16, 2022

Fixes:

  • Publish the initial pose multiple times.
    • Can cause unwanted consequences.
  • Ekf doesn't publish pose until initialized.

@mitsudome-r
Copy link
Member

I think new API for initialization is being discussed in this PR #1431.

@IshitaTakeshi
Copy link
Contributor

By the way now I'm refactoring the EKF code and trying to find and resolve these problems but it takes a while

@IshitaTakeshi
Copy link
Contributor

I think that the easiest way to resolve the problem of publishing the identity pose is

  1. Create a flag that manages the initialization state
  2. Make the flag true when receiving the initial pose
  3. Update the pose using the messages from NDT and publish the estimated pose only if the flag is true

@IshitaTakeshi
Copy link
Contributor

I opened a draft PR to realize the above

@mitsudome-r
Copy link
Member

@meliketanrikulu Could you confirm that the issue is fixed with the PR ?

Repository owner moved this from Todo to Done in Bus ODD Project Aug 31, 2022
technolojin pushed a commit to technolojin/autoware.universe that referenced this issue Oct 28, 2024
…time-beta-31

fix: all the processing_time publishing of the planning works as expected
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. status:help-wanted Assistance or contributors needed.
Projects
No open projects
Status: Done
Development

No branches or pull requests

6 participants