Apollo 10.0
自动驾驶开放平台
localization_integ.cc
浏览该文件的文档.
1/******************************************************************************
2 * Copyright 2018 The Apollo Authors. All Rights Reserved.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *****************************************************************************/
16
18
23
24namespace apollo {
25namespace localization {
26namespace msf {
27
28using common::Status;
29using common::util::TimeUtil;
30
32 : localization_integ_impl_(new LocalizationIntegImpl()) {}
33
35 delete localization_integ_impl_;
36 localization_integ_impl_ = nullptr;
37}
38
40 return localization_integ_impl_->Init(params);
41}
42
44 LidarFrame lidar_frame;
45 LidarMsgTransfer transfer;
46 transfer.Transfer(message, &lidar_frame);
47 localization_integ_impl_->PcdProcess(lidar_frame);
48}
49
51 ImuData imu;
52 TransferImuFlu(imu_msg, &imu);
53 localization_integ_impl_->RawImuProcessRfu(imu);
54}
55
57 ImuData imu;
58 TransferImuRfu(imu_msg, &imu);
59 localization_integ_impl_->RawImuProcessRfu(imu);
60}
61
63 const drivers::gnss::EpochObservation &raw_obs_msg) {
64 localization_integ_impl_->RawObservationProcess(raw_obs_msg);
65}
66
68 const drivers::gnss::GnssEphemeris &gnss_orbit_msg) {
69 localization_integ_impl_->RawEphemerisProcess(gnss_orbit_msg);
70}
71
73 const drivers::gnss::GnssBestPose &bestgnsspos_msg) {
74 localization_integ_impl_->GnssBestPoseProcess(bestgnsspos_msg);
75}
76
78 const drivers::gnss::Heading &gnssheading_msg) {
79 localization_integ_impl_->GnssHeadingProcess(gnssheading_msg);
80}
81
83 const {
84 return localization_integ_impl_->GetLastestLidarLocalization();
85}
86
88 const {
89 return localization_integ_impl_->GetLastestIntegLocalization();
90}
91
93 const {
94 return localization_integ_impl_->GetLastestGnssLocalization();
95}
96
98 ImuData *imu_rfu) {
99 CHECK_NOTNULL(imu_rfu);
100
101 double measurement_time = TimeUtil::Gps2Unix(imu_msg.measurement_time());
102 imu_rfu->measurement_time = measurement_time;
103 imu_rfu->fb[0] = imu_msg.linear_acceleration().x() * FLAGS_imu_rate;
104 imu_rfu->fb[1] = imu_msg.linear_acceleration().y() * FLAGS_imu_rate;
105 imu_rfu->fb[2] = imu_msg.linear_acceleration().z() * FLAGS_imu_rate;
106
107 imu_rfu->wibb[0] = imu_msg.angular_velocity().x() * FLAGS_imu_rate;
108 imu_rfu->wibb[1] = imu_msg.angular_velocity().y() * FLAGS_imu_rate;
109 imu_rfu->wibb[2] = imu_msg.angular_velocity().z() * FLAGS_imu_rate;
110}
111
113 ImuData *imu_flu) {
114 CHECK_NOTNULL(imu_flu);
115
116 double measurement_time = TimeUtil::Gps2Unix(imu_msg.measurement_time());
117 imu_flu->measurement_time = measurement_time;
118 imu_flu->fb[0] = -imu_msg.linear_acceleration().y() * FLAGS_imu_rate;
119 imu_flu->fb[1] = imu_msg.linear_acceleration().x() * FLAGS_imu_rate;
120 imu_flu->fb[2] = imu_msg.linear_acceleration().z() * FLAGS_imu_rate;
121
122 imu_flu->wibb[0] = -imu_msg.angular_velocity().y() * FLAGS_imu_rate;
123 imu_flu->wibb[1] = imu_msg.angular_velocity().x() * FLAGS_imu_rate;
124 imu_flu->wibb[2] = imu_msg.angular_velocity().z() * FLAGS_imu_rate;
125}
126
127} // namespace msf
128} // namespace localization
129} // namespace apollo
A general class to denote the return status of an API call.
Definition status.h:43
static double Gps2Unix(double gps_time)
Definition time_util.h:37
void Transfer(const drivers::PointCloud &message, LidarFrame *lidar_frame)
void RawObservationProcess(const drivers::gnss::EpochObservation &raw_obs_msg)
void GnssHeadingProcess(const drivers::gnss::Heading &gnssheading_msg)
void GnssBestPoseProcess(const drivers::gnss::GnssBestPose &bestgnsspos_msg)
void RawEphemerisProcess(const drivers::gnss::GnssEphemeris &gnss_orbit_msg)
const LocalizationResult & GetLastestIntegLocalization() const
common::Status Init(const LocalizationIntegParam &params)
const LocalizationResult & GetLastestGnssLocalization() const
const LocalizationResult & GetLastestLidarLocalization() const
const LocalizationResult & GetLastestLidarLocalization() const
void RawImuProcessFlu(const drivers::gnss::Imu &imu_msg)
void PcdProcess(const drivers::PointCloud &message)
const LocalizationResult & GetLastestIntegLocalization() const
common::Status Init(const LocalizationIntegParam &params)
void GnssHeadingProcess(const drivers::gnss::Heading &gnss_heading_msg)
void RawObservationProcess(const drivers::gnss::EpochObservation &raw_obs_msg)
const LocalizationResult & GetLastestGnssLocalization() const
void RawEphemerisProcess(const drivers::gnss::GnssEphemeris &gnss_orbit_msg)
void TransferImuFlu(const drivers::gnss::Imu &imu_msg, ImuData *imu_data)
void RawImuProcessRfu(const drivers::gnss::Imu &imu_msg)
void TransferImuRfu(const drivers::gnss::Imu &imu_msg, ImuData *imu_rfu)
void GnssBestPoseProcess(const drivers::gnss::GnssBestPose &bestgnsspos_msg)
The class of LidarMagTransfer
The gflags used by localization module
The class of LocalizationInteg
The class of LocalizationIntegImpl
class register implement
Definition arena_queue.h:37
optional apollo::common::Point3D angular_velocity
Definition imu.proto:29
optional apollo::common::Point3D linear_acceleration
Definition imu.proto:26
optional double measurement_time
Definition imu.proto:14