24 #include "gtest/gtest_prod.h" 27 #include "modules/drivers/gnss/proto/ins.pb.h" 28 #include "modules/localization/proto/gps.pb.h" 29 #include "modules/localization/proto/imu.pb.h" 30 #include "modules/localization/proto/localization.pb.h" 31 #include "modules/localization/proto/rtk_config.pb.h" 34 namespace localization {
41 void InitConfig(
const rtk_config::Config &config);
43 void GpsCallback(
const std::shared_ptr<localization::Gps> &gps_msg);
45 const std::shared_ptr<drivers::gnss::InsStat> &status_msg);
46 void ImuCallback(
const std::shared_ptr<localization::CorrectedImu> &imu_msg);
53 void RunWatchDog(
double gps_timestamp);
56 LocalizationEstimate *localization,
57 LocalizationStatus *localization_status);
59 const localization::CorrectedImu &imu,
60 LocalizationEstimate *localization);
61 void FillLocalizationMsgHeader(LocalizationEstimate *localization);
62 void FillLocalizationStatusMsg(
const drivers::gnss::InsStat &status,
63 LocalizationStatus *localization_status);
65 bool FindMatchingIMU(
const double gps_timestamp_sec, CorrectedImu *imu_msg);
66 bool InterpolateIMU(
const CorrectedImu &imu1,
const CorrectedImu &imu2,
67 const double timestamp_sec, CorrectedImu *imu_msg);
69 T InterpolateXYZ(
const T &p1,
const T &p2,
const double frac1);
71 bool FindNearestGpsStatus(
const double gps_timestamp_sec,
72 drivers::gnss::InsStat *status);
75 std::string module_name_ =
"localization";
77 std::list<localization::CorrectedImu> imu_list_;
78 size_t imu_list_max_size_ = 50;
79 std::mutex imu_list_mutex_;
81 std::list<drivers::gnss::InsStat> gps_status_list_;
82 size_t gps_status_list_max_size_ = 10;
83 std::mutex gps_status_list_mutex_;
85 std::vector<double> map_offset_;
87 double gps_time_delay_tolerance_ = 1.0;
88 double gps_imu_time_diff_threshold_ = 0.02;
89 double gps_status_time_diff_threshold_ = 1.0;
91 double last_received_timestamp_sec_ = 0.0;
92 double last_reported_timestamp_sec_ = 0.0;
94 bool enable_watch_dog_ =
true;
95 bool service_started_ =
false;
96 double service_started_time = 0.0;
98 int64_t localization_seq_num_ = 0;
99 LocalizationEstimate last_localization_result_;
100 LocalizationStatus last_localization_status_result_;
102 int localization_publish_freq_ = 100;
103 int report_threshold_err_num_ = 10;
104 int service_delay_threshold = 1;
107 FRIEND_TEST(RTKLocalizationTest, InterpolateIMU);
108 FRIEND_TEST(RTKLocalizationTest, ComposeLocalizationMsg);
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
void InitConfig(const rtk_config::Config &config)
void GetLocalizationStatus(LocalizationStatus *localization_status)
void GetLocalization(LocalizationEstimate *localization)
void GpsStatusCallback(const std::shared_ptr< drivers::gnss::InsStat > &status_msg)
void ImuCallback(const std::shared_ptr< localization::CorrectedImu > &imu_msg)
struct apollo::drivers::hesai::GPS Gps
void GpsCallback(const std::shared_ptr< localization::Gps > &gps_msg)
The class of MonitorLogBuffer.
Definition: rtk_localization.h:36
This class help collect MonitorMessage pb to monitor topic. The messages can be published automatical...
Definition: monitor_log_buffer.h:60
~RTKLocalization()=default