Apollo 11.0
自动驾驶开放平台
park_data_center.cc
浏览该文件的文档.
1/******************************************************************************
2 * Copyright 2024 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
22
23#include <algorithm>
24#include <cmath>
25
26#include "cyber/common/file.h"
27
28namespace apollo {
29namespace planning {
30
31bool ParkDataCenter::is_init_ = false;
32
33ParkDataCenter::ParkDataCenter() {
34 AINFO << "Park Data Center is ready!";
35}
36
38 AINFO << "Destructor ParkDataCenter!";
39 history_nudge_info_data_.Clear();
40}
41
42void ParkDataCenter::UpdateHistoryNudgeInfo(uint32_t sequence_num) {
43 history_nudge_info_data_.Add(sequence_num, std::make_unique<NudgeInfoMap>(current_nudge_info_data_));
44 current_nudge_info_data_.clear();
45}
46
48 uint32_t sequence_num,
49 std::size_t reference_line_key,
50 std::unordered_map<std::string, NudgeObstacleInfo> *track_info) {
51 auto *last_frame_nugde_info = history_nudge_info_data_.Find(sequence_num);
52 if (nullptr == last_frame_nugde_info) {
53 return false;
54 }
55 auto iter = last_frame_nugde_info->find(reference_line_key);
56 if (iter == last_frame_nugde_info->end()) {
57 return false;
58 } else {
59 *track_info = iter->second.tracking_nudge_obs_info();
60 }
61 return true;
62}
63
64const NudgeInfo &ParkDataCenter::current_nudge_info(std::size_t reference_line_key) {
65 auto iter = current_nudge_info_data_.find(reference_line_key);
66 if (iter == current_nudge_info_data_.end()) {
67 current_nudge_info_data_[reference_line_key] = NudgeInfo();
68 }
69 return current_nudge_info_data_[reference_line_key];
70}
71
72NudgeInfo *ParkDataCenter::mutable_current_nudge_info(std::size_t reference_line_key) {
73 auto itr = current_nudge_info_data_.find(reference_line_key);
74 if (itr == current_nudge_info_data_.end()) {
75 current_nudge_info_data_[reference_line_key] = NudgeInfo();
76 }
77 return &current_nudge_info_data_[reference_line_key];
78}
79
80} // namespace planning
81} // namespace apollo
bool Add(const I id, std::unique_ptr< T > ptr)
const T * Find(const I id) const
NudgeInfo * mutable_current_nudge_info(std::size_t reference_line_key)
bool GetLastFrameNudgeTrackInfo(uint32_t sequence_num, std::size_t reference_line_key, std::unordered_map< std::string, NudgeObstacleInfo > *track_info)
void UpdateHistoryNudgeInfo(uint32_t sequence_num)
const NudgeInfo & current_nudge_info(std::size_t reference_line_key)
Planning module main class.
#define AINFO
Definition log.h:42
class register implement
Definition arena_queue.h:37