Apollo  6.0
Open source self driving car software
object_types.h
Go to the documentation of this file.
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 #pragma once
17 
18 #include <map>
19 #include <string>
20 
21 namespace apollo {
22 namespace perception {
23 namespace base {
24 
25 // @brief general object type
26 enum class ObjectType {
27  UNKNOWN = 0,
28  UNKNOWN_MOVABLE = 1,
30  PEDESTRIAN = 3,
31  BICYCLE = 4,
32  VEHICLE = 5,
33  MAX_OBJECT_TYPE = 6,
34 };
35 
36 // @brief internal object type used by lidar perception
37 enum class InternalObjectType {
38  INT_BACKGROUND = 0,
39  INT_SMALLMOT = 1,
40  INT_PEDESTRIAN = 2,
41  INT_NONMOT = 3,
42  INT_BIGMOT = 4,
43  INT_UNKNOWN = 5,
45 };
46 
47 // @brief internal object type used by visual perception
48 enum class VisualObjectType {
49  CAR,
50  VAN,
51  BUS,
52  TRUCK,
53  BICYCLE,
54  TRICYCLE,
55  PEDESTRIAN,
60 };
61 
62 // @brief fine-grained object types
63 enum class ObjectSubType {
64  UNKNOWN = 0,
65  UNKNOWN_MOVABLE = 1,
67  CAR = 3,
68  VAN = 4,
69  TRUCK = 5,
70  BUS = 6,
71  CYCLIST = 7,
72  MOTORCYCLIST = 8,
73  TRICYCLIST = 9,
74  PEDESTRIAN = 10,
75  TRAFFICCONE = 11,
76  MAX_OBJECT_TYPE = 12,
77 };
78 
79 // @brief motion state
80 enum class MotionState {
81  UNKNOWN = 0,
82  MOVING = 1,
83  STATIONARY = 2,
84 };
85 
89 enum class VisualLandmarkType {
90  RoadArrow,
91  RoadText,
95 };
96 
97 const std::map<VisualLandmarkType, std::string> kVisualLandmarkType2NameMap = {
98  {VisualLandmarkType::RoadArrow, "RoadArrow"},
99  {VisualLandmarkType::RoadText, "RoadText"},
100  {VisualLandmarkType::TrafficSign, "TrafficSign"},
101  {VisualLandmarkType::TrafficLight, "TrafficLight"},
102 };
103 
104 const std::map<std::string, base::VisualLandmarkType>
106  {"RoadArrow", VisualLandmarkType::RoadArrow},
107  {"RoadText", VisualLandmarkType::RoadText},
108  {"TrafficSign", VisualLandmarkType::TrafficSign},
109  {"TrafficLight", VisualLandmarkType::TrafficLight},
110 };
111 
115 const std::map<ObjectType, std::string> kObjectType2NameMap = {
116  {ObjectType::UNKNOWN, "UNKNOWN"},
117  {ObjectType::UNKNOWN_MOVABLE, "UNKNOWN_MOVABLE"},
118  {ObjectType::UNKNOWN_UNMOVABLE, "UNKNOWN_UNMOVABLE"},
119  {ObjectType::PEDESTRIAN, "PEDESTRIAN"},
120  {ObjectType::BICYCLE, "BICYCLE"},
121  {ObjectType::VEHICLE, "VEHICLE"},
122  {ObjectType::MAX_OBJECT_TYPE, "MAX_OBJECT_TYPE"}};
123 
124 const std::map<std::string, ObjectType> kObjectName2TypeMap = {
125  {"UNKNOWN", ObjectType::UNKNOWN},
126  {"UNKNOWN_MOVABLE", ObjectType::UNKNOWN_MOVABLE},
127  {"UNKNOWN_UNMOVABLE", ObjectType::UNKNOWN_UNMOVABLE},
128  {"PEDESTRIAN", ObjectType::PEDESTRIAN},
129  {"BICYCLE", ObjectType::BICYCLE},
130  {"VEHICLE", ObjectType::VEHICLE},
131  {"MAX_OBJECT_TYPE", ObjectType::MAX_OBJECT_TYPE}};
132 
136 const std::map<VisualObjectType, ObjectType> kVisualTypeMap = {
138  {VisualObjectType::VAN, ObjectType::VEHICLE},
139  {VisualObjectType::BUS, ObjectType::VEHICLE},
140  {VisualObjectType::TRUCK, ObjectType::VEHICLE},
142  {VisualObjectType::TRICYCLE, ObjectType::BICYCLE},
146  {VisualObjectType::UNKNOWN_UNMOVABLE, ObjectType::UNKNOWN_UNMOVABLE},
148 };
149 
150 const std::map<VisualObjectType, std::string> kVisualType2NameMap = {
151  {VisualObjectType::CAR, "CAR"},
152  {VisualObjectType::VAN, "VAN"},
153  {VisualObjectType::BUS, "BUS"},
154  {VisualObjectType::TRUCK, "TRUCK"},
155  {VisualObjectType::BICYCLE, "BICYCLE"},
156  {VisualObjectType::TRICYCLE, "TRICYCLE"},
157  {VisualObjectType::PEDESTRIAN, "PEDESTRIAN"},
158  {VisualObjectType::TRAFFICCONE, "TRAFFICCONE"},
159  {VisualObjectType::UNKNOWN_MOVABLE, "UNKNOWN_MOVABLE"},
160  {VisualObjectType::UNKNOWN_UNMOVABLE, "UNKNOWN_UNMOVABLE"},
161  {VisualObjectType::MAX_OBJECT_TYPE, "MAX_OBJECT_TYPE"},
162 };
163 
164 const std::map<std::string, base::VisualObjectType> kVisualName2TypeMap = {
165  {"CAR", VisualObjectType::CAR},
166  {"VAN", VisualObjectType::VAN},
167  {"BUS", VisualObjectType::BUS},
168  {"TRUCK", VisualObjectType::TRUCK},
169  {"BICYCLE", VisualObjectType::BICYCLE},
170  {"TRICYCLE", VisualObjectType::TRICYCLE},
171  {"PEDESTRIAN", VisualObjectType::PEDESTRIAN},
172  {"TRAFFICCONE", VisualObjectType::TRAFFICCONE},
173  {"UNKNOWN_MOVABLE", VisualObjectType::UNKNOWN_MOVABLE},
174  {"UNKNOWN_UNMOVABLE", VisualObjectType::UNKNOWN_UNMOVABLE},
175  {"MAX_OBJECT_TYPE", VisualObjectType::MAX_OBJECT_TYPE},
176 };
177 
181 const std::map<ObjectSubType, ObjectType> kSubType2TypeMap = {
186  {ObjectSubType::VAN, ObjectType::VEHICLE},
187  {ObjectSubType::TRUCK, ObjectType::VEHICLE},
188  {ObjectSubType::BUS, ObjectType::VEHICLE},
190  {ObjectSubType::MOTORCYCLIST, ObjectType::BICYCLE},
191  {ObjectSubType::TRICYCLIST, ObjectType::BICYCLE},
193  {ObjectSubType::TRAFFICCONE, ObjectType::UNKNOWN_UNMOVABLE},
195 };
196 
197 const std::map<ObjectSubType, std::string> kSubType2NameMap = {
198  {ObjectSubType::UNKNOWN, "UNKNOWN"},
199  {ObjectSubType::UNKNOWN_MOVABLE, "UNKNOWN_MOVABLE"},
200  {ObjectSubType::UNKNOWN_UNMOVABLE, "UNKNOWN_UNMOVABLE"},
201  {ObjectSubType::CAR, "CAR"},
202  {ObjectSubType::VAN, "VAN"},
203  {ObjectSubType::TRUCK, "TRUCK"},
204  {ObjectSubType::BUS, "BUS"},
205  {ObjectSubType::CYCLIST, "CYCLIST"},
206  {ObjectSubType::MOTORCYCLIST, "MOTORCYCLIST"},
207  {ObjectSubType::TRICYCLIST, "TRICYCLIST"},
208  {ObjectSubType::PEDESTRIAN, "PEDESTRIAN"},
209  {ObjectSubType::TRAFFICCONE, "TRAFFICCONE"},
210  {ObjectSubType::MAX_OBJECT_TYPE, "MAX_OBJECT_TYPE"},
211 };
212 
213 const std::map<std::string, ObjectSubType> kName2SubTypeMap = {
214  {"UNKNOWN", ObjectSubType::UNKNOWN},
215  {"UNKNOWN_MOVABLE", ObjectSubType::UNKNOWN_MOVABLE},
216  {"UNKNOWN_UNMOVABLE", ObjectSubType::UNKNOWN_UNMOVABLE},
217  {"CAR", ObjectSubType::CAR},
218  {"VAN", ObjectSubType::VAN},
219  {"TRUCK", ObjectSubType::TRUCK},
220  {"BUS", ObjectSubType::BUS},
221  {"CYCLIST", ObjectSubType::CYCLIST},
222  {"MOTORCYCLIST", ObjectSubType::MOTORCYCLIST},
223  {"TRICYCLIST", ObjectSubType::TRICYCLIST},
224  {"PEDESTRIAN", ObjectSubType::PEDESTRIAN},
225  {"TRAFFICCONE", ObjectSubType::TRAFFICCONE},
226  {"MAX_OBJECT_TYPE", ObjectSubType::MAX_OBJECT_TYPE},
227 };
228 
229 } // namespace base
230 } // namespace perception
231 } // namespace apollo
const std::map< std::string, ObjectType > kObjectName2TypeMap
Definition: object_types.h:124
const std::map< VisualObjectType, std::string > kVisualType2NameMap
Definition: object_types.h:150
MotionState
Definition: object_types.h:80
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
const std::map< std::string, base::VisualObjectType > kVisualName2TypeMap
Definition: object_types.h:164
const std::map< ObjectType, std::string > kObjectType2NameMap
Definition: object_types.h:115
const std::map< VisualLandmarkType, std::string > kVisualLandmarkType2NameMap
Definition: object_types.h:97
InternalObjectType
Definition: object_types.h:37
VisualLandmarkType
Definition: object_types.h:89
const std::map< std::string, ObjectSubType > kName2SubTypeMap
Definition: object_types.h:213
const std::map< std::string, base::VisualLandmarkType > kVisualLandmarkName2TypeMap
Definition: object_types.h:105
VisualObjectType
Definition: object_types.h:48
ObjectType
Definition: object_types.h:26
ObjectSubType
Definition: object_types.h:63
const std::map< ObjectSubType, ObjectType > kSubType2TypeMap
Definition: object_types.h:181
const std::map< VisualObjectType, ObjectType > kVisualTypeMap
Definition: object_types.h:136
const std::map< ObjectSubType, std::string > kSubType2NameMap
Definition: object_types.h:197