Apollo 10.0
自动驾驶开放平台
msf_localization_component.h
浏览该文件的文档.
1/******************************************************************************
2 * Copyright 2017 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
17#pragma once
18
19#include <memory>
20#include <string>
21
24#include "cyber/cyber.h"
26
29
30#include "modules/common_msgs/sensor_msgs/gnss_best_pose.pb.h"
31#include "modules/common_msgs/sensor_msgs/gnss_raw_observation.pb.h"
32#include "modules/common_msgs/sensor_msgs/imu.pb.h"
33#include "modules/common_msgs/sensor_msgs/pointcloud.pb.h"
34#include "modules/common_msgs/localization_msgs/gps.pb.h"
35#include "modules/common_msgs/localization_msgs/localization.pb.h"
37
38namespace apollo {
39namespace localization {
40
42 : public cyber::Component<drivers::gnss::Imu> {
43 public:
46
47 bool Init() override;
48
49 bool Proc(const std::shared_ptr<drivers::gnss::Imu>& imu_msg) override;
50
51 private:
52 bool InitConfig();
53 bool InitIO();
54
55 private:
56 std::shared_ptr<cyber::Reader<drivers::PointCloud>> lidar_listener_ = nullptr;
57 std::string lidar_topic_ = "";
58
59 std::shared_ptr<cyber::Reader<drivers::gnss::GnssBestPose>>
60 bestgnsspos_listener_ = nullptr;
61 std::string bestgnsspos_topic_ = "";
62
63 std::shared_ptr<cyber::Reader<drivers::gnss::Heading>>
64 gnss_heading_listener_ = nullptr;
65 std::string gnss_heading_topic_ = "";
66
67 private:
68 std::shared_ptr<LocalizationMsgPublisher> publisher_;
69 MSFLocalization localization_;
70
71 public:
72 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
73};
74
76
78 public:
79 explicit LocalizationMsgPublisher(const std::shared_ptr<cyber::Node>& node);
81
82 bool InitConfig();
83 bool InitIO();
84
85 void PublishPoseBroadcastTF(const LocalizationEstimate& localization);
86 void PublishPoseBroadcastTopic(const LocalizationEstimate& localization);
87
88 void PublishLocalizationMsfGnss(const LocalizationEstimate& localization);
89 void PublishLocalizationMsfLidar(const LocalizationEstimate& localization);
90 void PublishLocalizationStatus(const LocalizationStatus& localization_status);
91
92 private:
93 std::shared_ptr<cyber::Node> node_;
94
95 LocalizationGnssCompensator* localization_gnss_compensator_;
96
97 std::string localization_topic_ = "";
98 std::shared_ptr<cyber::Writer<LocalizationEstimate>> localization_talker_ =
99 nullptr;
100
101 std::string broadcast_tf_frame_id_ = "";
102 std::string broadcast_tf_child_frame_id_ = "";
104
105 std::string lidar_local_topic_ = "";
106 std::shared_ptr<cyber::Writer<LocalizationEstimate>> lidar_local_talker_ =
107 nullptr;
108
109 std::string gnss_local_topic_ = "";
110 std::shared_ptr<cyber::Writer<LocalizationEstimate>> gnss_local_talker_ =
111 nullptr;
112
113 std::string localization_status_topic_ = "";
114 std::shared_ptr<cyber::Writer<LocalizationStatus>>
115 localization_status_talker_ = nullptr;
116 double pre_system_time_ = 0.0;
117};
118
119} // namespace localization
120} // namespace apollo
void PublishLocalizationMsfGnss(const LocalizationEstimate &localization)
void PublishPoseBroadcastTopic(const LocalizationEstimate &localization)
void PublishLocalizationMsfLidar(const LocalizationEstimate &localization)
void PublishLocalizationStatus(const LocalizationStatus &localization_status)
void PublishPoseBroadcastTF(const LocalizationEstimate &localization)
bool Proc(const std::shared_ptr< drivers::gnss::Imu > &imu_msg) override
generate localization info based on MSF
This class provides an easy way to publish coordinate frame transform information.
#define CYBER_REGISTER_COMPONENT(name)
Definition component.h:656
The class of MSFLocalization
class register implement
Definition arena_queue.h:37