HomePose Estimator Arbiter
Auxiliary

Pose Estimator Arbiter

Pose Estimator Arbiter

Pose Estimator Arbiter manages the lifecycle of multiple localization sources, deciding which sources are active based on scenario rules.

Supported Sources

SourceEnum ValueStopper Mechanism
NDT Scan MatcherndtIntercept point cloud topic
YabLocyablocIntercept image topic + call pause service
EagleyeeagleyeIntercept output pose topic
AR TagartagIntercept image topic
LiDAR Markerlidar_markerIntercept point cloud topic

Custom Switching Rules

Developers can inherit from BaseSwitchRule to implement custom rules. For example, switching based on vehicle zone (NDT for outdoor yard, AR Tag for loading zone) or localization quality (switch to YabLoc when NDT score drops).

custom_switch_rule.hpp
cpp
class PortSwitchRule : public BaseSwitchRule {
public:
  std::unordered_map<PoseEstimatorType, bool> update() override {
    // Dynamic switching based on zone and quality
    if (is_in_loading_zone()) {
      return {{PoseEstimatorType::artag, true},
              {PoseEstimatorType::ndt, false}};
    }
    return {{PoseEstimatorType::ndt, true},
            {PoseEstimatorType::artag, false}};
  }
};