  }
  
  void Localizer::handle_sensors(double current_time, const capnp::List<cereal::SensorEventData, capnp::Kind::STRUCT>::Reader& log) {
    // TODO does not yet account for double sensor readings in the log
    for (int i = 0; i < log.size(); i++) {
      const cereal::SensorEventData::Reader& sensor_reading = log[i];
  
 
</s>
VectorXd Localizer::get_state() {
  return this->kf->get_x();
}

VectorXd Localizer::get_stdev() {
  return this->kf->get_P().diagonal().array().sqrt();
}

  }
  
VectorXd Localizer::get_state() {
  return this->kf->get_x();
}

VectorXd Localizer::get_stdev() {
  return this->kf->get_P().diagonal().array().sqrt();
}

  void Localizer::handle_sensors(double current_time, const capnp::List<cereal::SensorEventData, capnp::Kind::STRUCT>::Reader& log) {
    // TODO does not yet account for double sensor readings in the log
    for (int i = 0; i < log.size(); i++) {
      const cereal::SensorEventData::Reader& sensor_reading = log[i];
  
keep add keep keep keep keep keep
 expose filter internal states and stds (#22564)
selfdrive/locationd/locationd.cc