Apollo 11.0
自动驾驶开放平台
sensor_object.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 *****************************************************************************/
17
21
22namespace apollo {
23namespace perception {
24namespace fusion {
25
26// SensorObject implementations
28 const std::shared_ptr<const base::Object>& object_ptr)
29 : object_(object_ptr), frame_header_(nullptr) {}
30
32 const std::shared_ptr<const base::Object>& object_ptr,
33 const std::shared_ptr<const SensorFrameHeader>& frame_header)
34 : object_(object_ptr), frame_header_(frame_header) {}
35
37 const std::shared_ptr<const base::Object>& object_ptr,
38 const std::shared_ptr<SensorFrame>& frame_ptr)
39 : object_(object_ptr),
40 frame_header_((frame_ptr == nullptr) ? nullptr : frame_ptr->GetHeader()) {
41}
42
44 if (frame_header_ == nullptr) {
45 return 0.0;
46 }
47
48 return frame_header_->timestamp;
49}
50
51bool SensorObject::GetRelatedFramePose(Eigen::Affine3d* pose) const {
52 if (pose == nullptr) {
53 AERROR << "pose is not available";
54 return false;
55 }
56 if (frame_header_ == nullptr) {
57 return false;
58 }
59
60 *pose = frame_header_->sensor2world_pose;
61 return true;
62}
63
64std::string SensorObject::GetSensorId() const {
65 if (frame_header_ == nullptr) {
66 return std::string("");
67 }
68
69 return frame_header_->sensor_info.name;
70}
71
73 if (frame_header_ == nullptr) {
75 }
76
77 return frame_header_->sensor_info.type;
78}
79
80// FusedObject implementations
82 base::ObjectPool& object_pool = base::ObjectPool::Instance();
83 object_ = object_pool.Get();
84}
85
86bool IsLidar(const SensorObjectConstPtr& obj) {
87 base::SensorType type = obj->GetSensorType();
88 return algorithm::SensorManager::Instance()->IsLidar(type);
89}
90
91bool IsRadar(const SensorObjectConstPtr& obj) {
92 base::SensorType type = obj->GetSensorType();
93 return algorithm::SensorManager::Instance()->IsRadar(type);
94}
95
97 base::SensorType type = obj->GetSensorType();
98 return algorithm::SensorManager::Instance()->IsCamera(type);
99}
100
101} // namespace fusion
102} // namespace perception
103} // namespace apollo
bool GetRelatedFramePose(Eigen::Affine3d *pose) const
#define AERROR
Definition log.h:44
SensorType
Sensor types are set in the order of lidar, radar, camera, ultrasonic Please make sure SensorType has...
Definition sensor_meta.h:29
ConcurrentObjectPool< Object, kObjectPoolSize, ObjectInitializer > ObjectPool
std::shared_ptr< const SensorObject > SensorObjectConstPtr
bool IsCamera(const SensorObjectConstPtr &obj)
bool IsLidar(const SensorObjectConstPtr &obj)
bool IsRadar(const SensorObjectConstPtr &obj)
class register implement
Definition arena_queue.h:37