You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Current localization architecture has an issue when re-initializing the pose. If we want to re-initialize from point A to B, we cannot guarantee that both NDT and EKF states are updated to point B synchronously. This may end up in the localization estimation being pulled back to point A.
For example, here's what may happen:
pose_initializer sends a pose initialization request to NDT (EKF: A)
pose_initializer receives an accurate initial pose from NDT (EKF: A)
NDT receives /loc.../pose_twist_.../biased_pose_with_covariance = point A initial guess from EKF (EKF: A) (which should not happen)
NDT keeps publishing point A (EKF: A)
/initialpose3d is sent from pose_initializer to EKF (EKF: B)
EKF receives /loc.../pose_estimator/pose_with_covariance = point A from NDT (EKF: A)
Proposal
Here I make an assumption that the pose initialization is only performed when either of the following is met:
the vehicle is stopped
the vehicle is disengaged (or driven manually)
In other words, I do not consider the pose re-initialization when the vehicle is driving autonomously. (I believe that re-initialization during autonomous driving is rather a long-term challenge, so I leave it out of the scope for now)
To overcome this issue, I propose to deactivate the localization components (in current Universe, ndt_scan_matcher and ekf_localizer) during the pose initialization. When they are deactivated, the localization is expected to stop publishing the estimation. After the calculation finishes, the components throw away their pose&twist buffers they have and are activated.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Background
Current localization architecture has an issue when re-initializing the pose. If we want to re-initialize from point A to B, we cannot guarantee that both NDT and EKF states are updated to point B synchronously. This may end up in the localization estimation being pulled back to point A.
For example, here's what may happen:
pose_initializer
sends a pose initialization request to NDT (EKF: A)pose_initializer
receives an accurate initial pose from NDT (EKF: A)/loc.../pose_twist_.../biased_pose_with_covariance
= point A initial guess from EKF (EKF: A) (which should not happen)/initialpose3d
is sent frompose_initializer
to EKF (EKF: B)/loc.../pose_estimator/pose_with_covariance
= point A from NDT (EKF: A)Proposal
Here I make an assumption that the pose initialization is only performed when either of the following is met:
In other words, I do not consider the pose re-initialization when the vehicle is driving autonomously. (I believe that re-initialization during autonomous driving is rather a long-term challenge, so I leave it out of the scope for now)
To overcome this issue, I propose to deactivate the localization components (in current Universe,
ndt_scan_matcher
andekf_localizer
) during the pose initialization. When they are deactivated, the localization is expected to stop publishing the estimation. After the calculation finishes, the components throw away their pose&twist buffers they have and are activated.PR
autowarefoundation/autoware.universe#1873
Beta Was this translation helpful? Give feedback.
All reactions