HomePose Initializer
Core Modules

Pose Initializer

Pose Initializer

Pose Initializer is an orchestration module (not an estimator) responsible for providing initial pose during system cold start or localization loss. It coordinates GNSS, NDT alignment service, and EKF reset to achieve a coarse-to-fine initialization process.

Initialization Flow

100%

DIRECT

AUTO

No

Yes

Yes

No

Yes

No

No

Yes

Initialize Request
(AUTO / DIRECT)

Method?

Set User-Defined Pose
Publish pose_reset

Vehicle Stopped?
(stop_check_module)

Reject: ERROR_UNSAFE

Disable EKF & NDT
(Trigger Modules)

Pose Provided
in Request?

Use Request Pose

Get GNSS Pose
(gnss_module)

GNSS Timeout?

Fail: No Coarse Pose

Map Height Fitting

Call ndt_align_srv
(Monte Carlo + TPE)

Generate 200 Particles
TPE-guided Sampling

For Each Particle:
NDT Align & Score

Select Best Particle
(Highest Score)

Score > Threshold?
(reliable flag)

Warn: Unreliable
Initialization

Override Covariance
with output_pose_covariance

Publish pose_reset
to EKF

Re-enable EKF & NDT

State → INITIALIZED

Pose Initializer Complete Initialization Flow

AUTO Mode

AUTO mode is the standard automatic initialization flow. First, stop_check_module confirms the vehicle is stationary. Then EKF and NDT triggers are paused. Next, a coarse pose is obtained from GNSS with map height fitting. Then ndt_align_srv service is called, which internally uses TPE (Tree-Structured Parzen Estimator) algorithm to generate 200 particle hypotheses, performs NDT alignment and scoring for each hypothesis, and selects the optimal particle as the precise pose.

Sub-modules

Sub-moduleFileResponsibility
GnssModulegnss_module.cppGNSS pose acquisition, timeout check, map height fitting
LocalizationModulelocalization_module.cppNDT/YabLoc alignment service client wrapper
EkfLocalizationTriggerModuleekf_localization_trigger_module.cppEKF activation/deactivation
NdtLocalizationTriggerModulendt_localization_trigger_module.cppNDT activation/deactivation
StopCheckModulestop_check_module.cppVehicle stationary check