27 road::LaneId lane_id = lane_node.attribute(
"id").as_int();
34 const double s_offset = lane_width_node.attribute(
"sOffset").as_double();
35 const double a = lane_width_node.attribute(
"a").as_double();
36 const double b = lane_width_node.attribute(
"b").as_double();
37 const double c = lane_width_node.attribute(
"c").as_double();
38 const double d = lane_width_node.attribute(
"d").as_double();
44 if (width_count == 0 && lane->
GetId() != 0) {
46 std::cout <<
"WARNING: In road " << lane->
GetRoad()->GetId() <<
" lane " << lane->
GetId() <<
47 " no \"<width>\" parameter found under \"<lane>\" tag. Using default values." << std::endl;
52 const double s_offset = lane_border_node.attribute(
"sOffset").as_double();
53 const double a = lane_border_node.attribute(
"a").as_double();
54 const double b = lane_border_node.attribute(
"b").as_double();
55 const double c = lane_border_node.attribute(
"c").as_double();
56 const double d = lane_border_node.attribute(
"d").as_double();
69 const std::string type = lane_road_mark.attribute(
"type").value();
70 const std::string weight = lane_road_mark.attribute(
"weight").value();
71 const std::string color = lane_road_mark.attribute(
"color").value();
72 const std::string material = lane_road_mark.attribute(
"material").value();
73 const double width = lane_road_mark.attribute(
"width").as_double();
74 const std::string lane_change = lane_road_mark.attribute(
"laneChange").value();
75 const double height = lane_road_mark.attribute(
"height").as_double();
79 std::string type_name =
"";
80 double type_width = 0.0;
81 road_mark_type = lane_road_mark.
child(
"type");
105 const double length = road_mark_type_line_node.attribute(
"length").as_double();
106 const double space = road_mark_type_line_node.attribute(
"space").as_double();
107 const double t = road_mark_type_line_node.attribute(
"tOffset").as_double();
108 const double s_offset = road_mark_type_line_node.attribute(
"sOffset").as_double();
109 const std::string rule = road_mark_type_line_node.attribute(
"rule").value();
110 const double width = road_mark_type_line_node.attribute(
"width").as_double();
129 const double s_offset = lane_material_node.attribute(
"sOffset").as_double();
130 const std::string surface = lane_material_node.attribute(
"surface").value();
131 const double friction = lane_material_node.attribute(
"friction").as_double();
132 const double roughness = lane_material_node.attribute(
"roughness").as_double();
140 const double s_offset = lane_visibility_node.attribute(
"sOffset").as_double();
141 const double forward = lane_visibility_node.attribute(
"forward").as_double();
142 const double back = lane_visibility_node.attribute(
"back").as_double();
143 const double left = lane_visibility_node.attribute(
"left").as_double();
144 const double right = lane_visibility_node.attribute(
"right").as_double();
153 const double s_offset = lane_speed_node.attribute(
"sOffset").as_double();
154 const double max = lane_speed_node.attribute(
"max").as_double();
155 std::string unit = lane_speed_node.attribute(
"unit").value();
164 const double s_offset = lane_access_node.attribute(
"sOffset").as_double();
165 const std::string restriction = lane_access_node.attribute(
"restriction").value();
173 const double s_offset = lane_height_node.attribute(
"sOffset").as_double();
174 const double inner = lane_height_node.attribute(
"inner").as_double();
175 const double outer = lane_height_node.attribute(
"outer").as_double();
183 const double s_offset = lane_rule_node.attribute(
"sOffset").as_double();
184 const std::string value = lane_rule_node.attribute(
"value").value();
206 double s = lane_section_node.attribute(
"s").as_double();
209 ParseLanes(road_id, s, left_node, map_builder);
214 ParseLanes(road_id, s, center_node, map_builder);
219 ParseLanes(road_id, s, right_node, map_builder);
static void Parse(const pugi::xml_document &xml, carla::road::MapBuilder &map_builder)
解析XML文档中的车道信息,并构建道路地图中的车道部分 该函数读取XML文档中的车道数据,如车道宽度、车道类型、车道方向等 并使用这些数据来构建或更新道路地图中的车道部分
void CreateLaneAccess(Lane *lane, const double s, const std::string restriction)
void CreateLaneHeight(Lane *lane, const double s, const double inner, const double outer)
Lane * GetLane(const RoadId road_id, const LaneId lane_id, const double s)
void CreateLaneBorder(Lane *lane, const double s, const double a, const double b, const double c, const double d)
void CreateLaneRule(Lane *lane, const double s, const std::string value)
void CreateLaneSpeed(Lane *lane, const double s, const double max, const std::string unit)
void CreateRoadMarkTypeLine(Lane *lane, const int road_mark_id, const double length, const double space, const double tOffset, const double s, const std::string rule, const double width)
void CreateRoadMark(Lane *lane, const int road_mark_id, const double s, const std::string type, const std::string weight, const std::string color, const std::string material, const double width, const std::string lane_change, const double height, const std::string type_name, const double type_width)
void CreateLaneWidth(Lane *lane, const double s, const double a, const double b, const double c, const double d)
void CreateLaneVisibility(Lane *lane, const double s, const double forward, const double back, const double left, const double right)
void CreateLaneMaterial(Lane *lane, const double s, const std::string surface, const double friction, const double roughness)
double as_double(double def=0) const
unsigned int as_uint(unsigned int def=0) const
const char_t * value() const
xml_node child(const char_t *name) const
xml_object_range< xml_node_iterator > children() const
xml_attribute attribute(const char_t *name) const
static void ParseLanes(road::RoadId road_id, double s, const pugi::xml_node &parent_node, carla::road::MapBuilder &map_builder)