142 {
143
145
147 uint64_t measurement_time =
149
150 auto mutable_head = tf2_msg.mutable_header();
151
152 localization_gnss_compensator_ = LocalizationGnssCompensator::Instance();
153
155 current_send_tf_time, &measurement_time);
156
157 mutable_head->set_timestamp_sec(
159 mutable_head->set_frame_id(broadcast_tf_frame_id_);
160 tf2_msg.set_child_frame_id(broadcast_tf_child_frame_id_);
161
162 auto mutable_translation = tf2_msg.mutable_transform()->mutable_translation();
163 mutable_translation->set_x(localization.pose().position().x());
164 mutable_translation->set_y(localization.pose().position().y());
165 mutable_translation->set_z(localization.pose().position().z());
166
167 auto mutable_rotation = tf2_msg.mutable_transform()->mutable_rotation();
168 mutable_rotation->set_qx(localization.pose().orientation().qx());
169 mutable_rotation->set_qy(localization.pose().orientation().qy());
170 mutable_rotation->set_qz(localization.pose().orientation().qz());
171 mutable_rotation->set_qw(localization.pose().orientation().qw());
172
174}
static Time Now()
PRECISION >= 1000000 means the precision is at least 1us.
Cyber has builtin time type Time.
uint64_t ToNanosecond() const
convert time to nanosecond.
void ProcessCompensation(const uint64_t ¤t_send_tf_time, uint64_t *measurement_time)
compensate the time parsed from invalid GNSS data