25namespace localization {
36 AERROR <<
"Init Config false.";
41 AERROR <<
"Init Interval false.";
48bool NDTLocalizationComponent::InitConfig() {
49 localization_topic_ = FLAGS_localization_topic;
50 lidar_topic_ = FLAGS_lidar_topic;
51 lidar_pose_topic_ = FLAGS_localization_ndt_topic;
52 broadcast_tf_frame_id_ = FLAGS_broadcast_tf_frame_id;
53 broadcast_tf_child_frame_id_ = FLAGS_broadcast_tf_child_frame_id;
54 odometry_status_topic_ = FLAGS_ins_stat_topic;
55 localization_status_topic_ = FLAGS_localization_msf_status;
57 localization_->Init();
62bool NDTLocalizationComponent::InitIO() {
67 std::function<void(
const std::shared_ptr<drivers::PointCloud>&)>
68 lidar_register_call = std::bind(&NDTLocalizationComponent::LidarCallback,
69 this, std::placeholders::_1);
71 reader_config, lidar_register_call);
75 std::function<void(
const std::shared_ptr<drivers::gnss::InsStat>&)>
76 odometry_status_call =
77 std::bind(&NDTLocalizationComponent::OdometryStatusCallback,
this,
78 std::placeholders::_1);
80 reader_config, odometry_status_call);
82 localization_talker_ =
88 localization_status_talker_ =
95 const std::shared_ptr<localization::Gps>& gps_msg) {
96 localization_->OdometryCallback(gps_msg);
98 if (localization_->IsServiceStarted()) {
100 localization_->GetLocalization(&localization);
103 localization_->GetLocalizationStatus(&localization_status);
106 PublishPoseBroadcastTopic(localization);
107 PublishPoseBroadcastTF(localization);
108 PublishLocalizationStatusTopic(localization_status);
109 ADEBUG <<
"[OnTimer]: Localization message publish success!";
115void NDTLocalizationComponent::LidarCallback(
116 const std::shared_ptr<drivers::PointCloud>& lidar_msg) {
117 localization_->LidarCallback(lidar_msg);
119 if (localization_->IsServiceStarted()) {
121 localization_->GetLidarLocalization(&localization);
123 PublishLidarPoseBroadcastTopic(localization);
127void NDTLocalizationComponent::OdometryStatusCallback(
128 const std::shared_ptr<drivers::gnss::InsStat>& status_msg) {
129 localization_->OdometryStatusCallback(status_msg);
132void NDTLocalizationComponent::PublishPoseBroadcastTF(
133 const LocalizationEstimate& localization) {
137 auto mutable_head = tf2_msg.mutable_header();
138 mutable_head->set_timestamp_sec(localization.measurement_time());
139 mutable_head->set_frame_id(broadcast_tf_frame_id_);
140 tf2_msg.set_child_frame_id(broadcast_tf_child_frame_id_);
142 auto mutable_translation = tf2_msg.mutable_transform()->mutable_translation();
143 mutable_translation->set_x(localization.pose().position().x());
144 mutable_translation->set_y(localization.pose().position().y());
145 mutable_translation->set_z(localization.pose().position().z());
147 auto mutable_rotation = tf2_msg.mutable_transform()->mutable_rotation();
148 mutable_rotation->set_qx(localization.pose().orientation().qx());
149 mutable_rotation->set_qy(localization.pose().orientation().qy());
150 mutable_rotation->set_qz(localization.pose().orientation().qz());
151 mutable_rotation->set_qw(localization.pose().orientation().qw());
153 tf2_broadcaster_->SendTransform(tf2_msg);
156void NDTLocalizationComponent::PublishPoseBroadcastTopic(
157 const LocalizationEstimate& localization) {
158 localization_talker_->Write(localization);
161void NDTLocalizationComponent::PublishLidarPoseBroadcastTopic(
162 const LocalizationEstimate& localization) {
163 lidar_pose_talker_->Write(localization);
166void NDTLocalizationComponent::PublishLocalizationStatusTopic(
167 const LocalizationStatus& localization_status) {
168 localization_status_talker_->Write(localization_status);
a singleton clock that can be used to get the current timestamp.
std::shared_ptr< Node > node_
NDTLocalizationComponent()
bool Proc(const std::shared_ptr< localization::Gps > &odometry_msg) override
The gflags used by localization module
Contains a number of helper functions related to quaternions.
uint32_t pending_queue_size
configuration for responding ChannelBuffer.