27 road::LaneId lane_id = lane_node.attribute(
"id").as_int();
33 for (
pugi::xml_node lane_width_node : lane_node.children(
"width")) {
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;
51 for (
pugi::xml_node lane_border_node : lane_node.children(
"border")) {
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();
65 for (
pugi::xml_node lane_road_mark : lane_node.children(
"roadMark")) {
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();
127 for (
pugi::xml_node lane_material_node : lane_node.children(
"material")) {
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();
139 for (
pugi::xml_node lane_visibility_node : lane_node.children(
"visibility")) {
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();
152 for (
pugi::xml_node lane_speed_node : lane_node.children(
"speed")) {
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();
163 for (
pugi::xml_node lane_access_node : lane_node.children(
"access")) {
164 const double s_offset = lane_access_node.attribute(
"sOffset").as_double();
165 const std::string restriction = lane_access_node.attribute(
"restriction").value();
172 for (
pugi::xml_node lane_height_node : lane_node.children(
"height")) {
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();
182 for (
pugi::xml_node lane_rule_node : lane_node.children(
"rule")) {
183 const double s_offset = lane_rule_node.attribute(
"sOffset").as_double();
184 const std::string value = lane_rule_node.attribute(
"value").value();