68 std::string
type {
"line" };
80 std::vector<Geometry> geometry;
92 geo.
road_id = node_road.attribute(
"id").as_uint();
95 geo.
s = node_geo.attribute(
"s").as_double();
96 geo.
x = node_geo.attribute(
"x").as_double();
97 geo.
y = node_geo.attribute(
"y").as_double();
98 geo.
hdg = node_geo.attribute(
"hdg").as_double();
99 geo.
length = node_geo.attribute(
"length").as_double();
104 if (geo.
type ==
"arc") {
106 }
else if (geo.
type ==
"spiral") {
109 }
else if (geo.
type ==
"poly3") {
114 }
else if (geo.
type ==
"paramPoly3") {
127 geometry.emplace_back(geo);
133 for (
auto const geo : geometry) {
135 if (geo.type ==
"line") {
137 }
else if (geo.type ==
"arc") {
138 map_builder.
AddRoadGeometryArc(road, geo.s, geo.x, geo.y, geo.hdg, geo.length, geo.arc.curvature);
139 }
else if (geo.type ==
"spiral") {
146 geo.spiral.curvStart,
148 }
else if (geo.type ==
"poly3") {
159 }
else if (geo.type ==
"paramPoly3") {
174 geo.param_poly3.p_range);
static void Parse(const pugi::xml_document &xml, carla::road::MapBuilder &map_builder)
解析XML文档中的几何信息并构建道路地图
void AddRoadGeometryArc(carla::road::Road *road, const double s, const double x, const double y, const double hdg, const double length, const double curvature)
void AddRoadGeometryParamPoly3(carla::road::Road *road, const double s, const double x, const double y, const double hdg, const double length, const double aU, const double bU, const double cU, const double dU, const double aV, const double bV, const double cV, const double dV, const std::string p_range)
void AddRoadGeometryPoly3(carla::road::Road *road, const double s, const double x, const double y, const double hdg, const double length, const double a, const double b, const double c, const double d)
Road * GetRoad(const RoadId road_id)
void AddRoadGeometrySpiral(carla::road::Road *road, const double s, const double x, const double y, const double hdg, const double length, const double curvStart, const double curvEnd)
void AddRoadGeometryLine(carla::road::Road *road, const double s, const double x, const double y, const double hdg, const double length)
double as_double(double def=0) const
const char_t * value() const
xml_node child(const char_t *name) const
xml_node first_child() const
xml_object_range< xml_node_iterator > children() const
xml_attribute attribute(const char_t *name) const
const char_t * name() const
GeometryParamPoly3 param_poly3