Apollo 10.0
自动驾驶开放平台
apollo::hdmap::adapter::ProtoOrganizer类 参考

#include <proto_organizer.h>

apollo::hdmap::adapter::ProtoOrganizer 的协作图:

Public 成员函数

void GetRoadElements (std::vector< RoadInternal > *roads)
 
void GetJunctionElements (const std::vector< JunctionInternal > &junctions)
 
void GetOverlapElements (const std::vector< RoadInternal > &roads, const std::vector< JunctionInternal > &junctions)
 
void GetObjectElements (const ObjectInternal &objects)
 
void OutputData (apollo::hdmap::Map *pb_map)
 

详细描述

在文件 proto_organizer.h50 行定义.

成员函数说明

◆ GetJunctionElements()

void apollo::hdmap::adapter::ProtoOrganizer::GetJunctionElements ( const std::vector< JunctionInternal > &  junctions)

在文件 proto_organizer.cc111 行定义.

112 {
113 for (auto& junction_internal : junctions) {
114 std::string junction_id = junction_internal.junction.id().id();
115 proto_data_.pb_junctions[junction_id] = junction_internal.junction;
116 }
117}
std::unordered_map< std::string, PbJunction > pb_junctions

◆ GetObjectElements()

void apollo::hdmap::adapter::ProtoOrganizer::GetObjectElements ( const ObjectInternal objects)

在文件 proto_organizer.cc185 行定义.

185 {
186 for (const auto& rsu_internal : objects.rsus) {
187 const std::string& rsu_id = rsu_internal.rsu.id().id();
188 proto_data_.pb_rsus[rsu_id] = rsu_internal.rsu;
189 }
190}
std::unordered_map< std::string, PbRSU > pb_rsus

◆ GetOverlapElements()

void apollo::hdmap::adapter::ProtoOrganizer::GetOverlapElements ( const std::vector< RoadInternal > &  roads,
const std::vector< JunctionInternal > &  junctions 
)

在文件 proto_organizer.cc366 行定义.

368 {
369 std::unordered_map<std::pair<std::string, std::string>, OverlapWithLane,
370 PairHash>
371 lane_lane_overlaps;
372 // overlap
373 for (auto& road_internal : roads) {
374 for (auto& road_section : road_internal.sections) {
375 for (auto& lane_internal : road_section.lanes) {
376 std::string lane_id = lane_internal.lane.id().id();
377 GetLaneObjectOverlapElements(lane_id, lane_internal.overlap_objects);
378 GetLaneSignalOverlapElements(lane_id, lane_internal.overlap_signals);
379 GetLaneJunctionOverlapElements(lane_id,
380 lane_internal.overlap_junctions);
381 for (auto& overlap_lane : lane_internal.overlap_lanes) {
382 lane_lane_overlaps[make_pair(lane_id, overlap_lane.object_id)] =
383 overlap_lane;
384 }
385 }
386 }
387 }
388
389 GetLaneLaneOverlapElements(lane_lane_overlaps);
390 GetJunctionObjectOverlapElements(junctions);
391}

◆ GetRoadElements()

void apollo::hdmap::adapter::ProtoOrganizer::GetRoadElements ( std::vector< RoadInternal > *  roads)

在文件 proto_organizer.cc42 行定义.

42 {
43 for (auto& road_internal : *roads) {
44 // lanes
45 for (auto& section_internal : road_internal.sections) {
46 for (auto& lane_internal : section_internal.lanes) {
47 std::string lane_id = lane_internal.lane.id().id();
48 proto_data_.pb_lanes[lane_id] = lane_internal.lane;
49 section_internal.section.add_lane_id()->set_id(lane_id);
50 }
51 (*road_internal.road.add_section()) = section_internal.section;
52 proto_data_.pb_roads[road_internal.id] = road_internal.road;
53 }
54 // crosswalks
55 for (auto& crosswalk : road_internal.crosswalks) {
56 proto_data_.pb_crosswalks[crosswalk.id().id()] = crosswalk;
57 }
58 // parking_spaces
59 for (auto& parking_space : road_internal.parking_spaces) {
60 proto_data_.pb_parking_spaces[parking_space.id().id()] = parking_space;
61 }
62 // clear areas
63 for (auto& clear_area : road_internal.clear_areas) {
64 proto_data_.pb_clear_areas[clear_area.id().id()] = clear_area;
65 }
66 // speed_bump
67 for (auto& speed_bump : road_internal.speed_bumps) {
68 proto_data_.pb_speed_bumps[speed_bump.id().id()] = speed_bump;
69 }
70 // stop lines
71 for (auto& stop_line_internal : road_internal.stop_lines) {
72 proto_data_.pb_stop_lines[stop_line_internal.id] = stop_line_internal;
73 }
74 // traffic_lights
75 for (auto& traffic_light_internal : road_internal.traffic_lights) {
76 auto& traffic_light = traffic_light_internal.traffic_light;
77 for (auto stop_line_id : traffic_light_internal.stop_line_ids) {
78 CHECK_GT(proto_data_.pb_stop_lines.count(stop_line_id), 0U);
79 auto& stop_line_curve = proto_data_.pb_stop_lines[stop_line_id].curve;
80 (*traffic_light.add_stop_line()) = stop_line_curve;
81 }
82 proto_data_.pb_signals[traffic_light.id().id()] = traffic_light;
83 }
84 // stop signs
85 for (auto& stop_sign_internal : road_internal.stop_signs) {
86 auto& stop_sign = stop_sign_internal.stop_sign;
87 for (auto stop_line_id : stop_sign_internal.stop_line_ids) {
88 CHECK_GT(proto_data_.pb_stop_lines.count(stop_line_id), 0U);
89 auto& stop_line_curve = proto_data_.pb_stop_lines[stop_line_id].curve;
90 (*stop_sign.add_stop_line()) = stop_line_curve;
91 }
92 proto_data_.pb_stop_signs[stop_sign.id().id()] = stop_sign;
93 }
94 // yield signs
95 for (auto& yield_sign_internal : road_internal.yield_signs) {
96 auto& yield_sign = yield_sign_internal.yield_sign;
97 for (auto stop_line_id : yield_sign_internal.stop_line_ids) {
98 CHECK_GT(proto_data_.pb_stop_lines.count(stop_line_id), 0U);
99 auto& stop_line_curve = proto_data_.pb_stop_lines[stop_line_id].curve;
100 (*yield_sign.add_stop_line()) = stop_line_curve;
101 }
102 proto_data_.pb_yield_signs[yield_sign.id().id()] = yield_sign;
103 }
104 // pnc junctions
105 for (auto& pnc_junction : road_internal.pnc_junctions) {
106 proto_data_.pb_pnc_junctions[pnc_junction.id().id()] = pnc_junction;
107 }
108 }
109}
std::unordered_map< std::string, PbClearArea > pb_clear_areas
std::unordered_map< std::string, PbParkingSpace > pb_parking_spaces
std::unordered_map< std::string, PbSpeedBump > pb_speed_bumps
std::unordered_map< std::string, PbSignal > pb_signals
std::unordered_map< std::string, PbCrosswalk > pb_crosswalks
std::unordered_map< std::string, PbRoad > pb_roads
std::unordered_map< std::string, PbStopSign > pb_stop_signs
std::unordered_map< std::string, PbLane > pb_lanes
std::unordered_map< std::string, PbPNCJunction > pb_pnc_junctions
std::unordered_map< std::string, StopLineInternal > pb_stop_lines
std::unordered_map< std::string, PbYieldSign > pb_yield_signs

◆ OutputData()

void apollo::hdmap::adapter::ProtoOrganizer::OutputData ( apollo::hdmap::Map pb_map)

在文件 proto_organizer.cc393 行定义.

393 {
394 for (auto& road_pair : proto_data_.pb_roads) {
395 *(pb_map->add_road()) = road_pair.second;
396 }
397 for (auto& lane_pair : proto_data_.pb_lanes) {
398 *(pb_map->add_lane()) = lane_pair.second;
399 }
400 for (auto& crosswalk_pair : proto_data_.pb_crosswalks) {
401 *(pb_map->add_crosswalk()) = crosswalk_pair.second;
402 }
403 for (auto& parking_space_pair : proto_data_.pb_parking_spaces) {
404 *(pb_map->add_parking_space()) = parking_space_pair.second;
405 }
406 for (auto& clear_area_pair : proto_data_.pb_clear_areas) {
407 *(pb_map->add_clear_area()) = clear_area_pair.second;
408 }
409 for (auto& speed_bump_pair : proto_data_.pb_speed_bumps) {
410 *(pb_map->add_speed_bump()) = speed_bump_pair.second;
411 }
412 for (auto& signal_pair : proto_data_.pb_signals) {
413 *(pb_map->add_signal()) = signal_pair.second;
414 }
415 for (auto& stop_sign_pair : proto_data_.pb_stop_signs) {
416 *(pb_map->add_stop_sign()) = stop_sign_pair.second;
417 }
418 for (auto& yield_sign_pair : proto_data_.pb_yield_signs) {
419 *(pb_map->add_yield()) = yield_sign_pair.second;
420 }
421 for (auto& pnc_junction_pair : proto_data_.pb_pnc_junctions) {
422 *(pb_map->add_pnc_junction()) = pnc_junction_pair.second;
423 }
424 for (auto& junction_pair : proto_data_.pb_junctions) {
425 *(pb_map->add_junction()) = junction_pair.second;
426 }
427 for (auto& rsu_pair : proto_data_.pb_rsus) {
428 *(pb_map->add_rsu()) = rsu_pair.second;
429 }
430 for (auto& overlap_pair : proto_data_.pb_overlaps) {
431 *(pb_map->add_overlap()) = overlap_pair.second;
432 }
433
434 AINFO << "hdmap statistics: roads-" << proto_data_.pb_roads.size()
435 << ",lanes-" << proto_data_.pb_lanes.size() << ",crosswalks-"
436 << proto_data_.pb_crosswalks.size() << ",parking spaces-"
437 << proto_data_.pb_parking_spaces.size() << ",clear areas-"
438 << proto_data_.pb_clear_areas.size() << ",speed bumps-"
439 << proto_data_.pb_speed_bumps.size() << ",signals-"
440 << proto_data_.pb_signals.size() << ",stop signs-"
441 << proto_data_.pb_stop_signs.size() << ",yield signs-"
442 << proto_data_.pb_yield_signs.size() << ",pnc-junctions-"
443 << proto_data_.pb_pnc_junctions.size() << ",junctions-"
444 << proto_data_.pb_junctions.size() << ",overlaps-"
445 << proto_data_.pb_rsus.size() << ",rsus-"
446 << proto_data_.pb_overlaps.size();
447}
#define AINFO
Definition log.h:42
std::unordered_map< std::string, PbOverlap > pb_overlaps

该类的文档由以下文件生成: