20 const std::string &node_name,
25 validity_node = validity_node.
next_sibling(
"validity")) {
27 const auto from_lane = validity_node.attribute(
"fromLane").as_int();
28 const auto to_lane = validity_node.attribute(
"toLane").as_int();
40 const std::string validity =
"validity";
54 const double t_position = signal_node.attribute(
"t").as_double();
55 const road::SignId signal_id = signal_node.attribute(
"id").value();
56 const std::string name = signal_node.attribute(
"name").value();
57 const std::string dynamic = signal_node.attribute(
"dynamic").value();
58 const std::string orientation = signal_node.attribute(
"orientation").value();
59 const double zOffset = signal_node.attribute(
"zOffSet").as_double();
60 const std::string country = signal_node.attribute(
"country").value();
61 const std::string type = signal_node.attribute(
"type").value();
62 const std::string subtype = signal_node.attribute(
"subtype").value();
63 const double value = signal_node.attribute(
"value").as_double();
64 const std::string unit = signal_node.attribute(
"unit").value();
65 const double height = signal_node.attribute(
"height").as_double();
66 const double width = signal_node.attribute(
"width").as_double();
67 const std::string text = signal_node.attribute(
"text").value();
68 const double hOffset = signal_node.attribute(
"hOffset").as_double();
69 const double pitch = signal_node.attribute(
"pitch").as_double();
70 const double roll = signal_node.attribute(
"roll").as_double();
97 auto signal_reference = map_builder.
AddSignal(road,
117 AddValidity(signal_reference, signal_node,
"validity", map_builder);
120 const std::string dependency_id = dependency_node.attribute(
"id").value();
121 const std::string dependency_type = dependency_node.attribute(
"type").value();
123 log_debug(
"Added dependency to signal ", signal_id,
":", dependency_id, dependency_type);
129 const double x = position_node.attribute(
"x").as_double();
130 const double y = position_node.attribute(
"y").as_double();
131 const double z = position_node.attribute(
"z").as_double();
132 const double hdg = position_node.attribute(
"hdg").as_double();
133 const double inertial_pitch = position_node.attribute(
"pitch").as_double();
134 const double inertial_roll = position_node.attribute(
"roll").as_double();
139 hdg, inertial_pitch, inertial_roll);
144 const double s_position = signal_reference_node.attribute(
"s").as_double();
145 const double t_position = signal_reference_node.attribute(
"t").as_double();
146 const road::SignId signal_id = signal_reference_node.attribute(
"id").value();
147 const std::string signal_reference_orientation =
148 signal_reference_node.attribute(
"orientation").value();
152 "Added SignalReference ",
155 signal_reference_orientation);
165 signal_reference_orientation);
167 AddValidity(signal_reference, signal_reference_node,
"validity", map_builder);
static void Parse(const pugi::xml_document &xml, carla::road::MapBuilder &map_builder)
解析XML文档中的交通信号信息,并将其用于构建道路地图。 该函数读取XML文档中的交通信号数据,如信号灯的位置、类型和控制逻辑, 并使用这些数据来构建或更新道路地图中的交通信号部分。
void AddSignalPositionInertial(const SignId signal_id, const double x, const double y, const double z, const double hdg, const double pitch, const double roll)
void AddValidityToSignalReference(element::RoadInfoSignal *signal_reference, const LaneId from_lane, const LaneId to_lane)
void AddDependencyToSignal(const SignId signal_id, const std::string dependency_id, const std::string dependency_type)
element::RoadInfoSignal * AddSignalReference(Road *road, const SignId signal_id, const double s_position, const double t_position, const std::string signal_reference_orientation)
element::RoadInfoSignal * AddSignal(Road *road, const SignId signal_id, const double s, const double t, const std::string name, const std::string dynamic, const std::string orientation, const double zOffset, const std::string country, const std::string type, const std::string subtype, const double value, const std::string unit, const double height, const double width, const std::string text, const double hOffset, const double pitch, const double roll)
Road * GetRoad(const RoadId road_id)
double as_double(double def=0) const
unsigned int as_uint(unsigned int def=0) const
xml_node child(const char_t *name) const
xml_object_range< xml_node_iterator > children() const
xml_node next_sibling() const
xml_attribute attribute(const char_t *name) const
static void AddValidity(road::element::RoadInfoSignal *signal_reference, pugi::xml_node parent_node, const std::string &node_name, road::MapBuilder &map_builder)
static void log_debug(Args &&... args)