CARLA
 
载入中...
搜索中...
未找到
ControllerParser.cpp
浏览该文件的文档.
1// Copyright (c) 2019 Computer Vision Center (CVC) at the Universitat Autonoma
2// de Barcelona (UAB).
3//
4// This work is licensed under the terms of the MIT license.
5// For a copy, see <https://opensource.org/licenses/MIT>.
6
7#include "carla/opendrive/parser/ControllerParser.h" // 引入 ControllerParser 的头文件
8
9#include "carla/road/MapBuilder.h" // 引入 MapBuilder 的头文件
10
11#include <pugixml/pugixml.hpp> // 引入 pugixml 库的头文件
12
13namespace carla {
14namespace opendrive {
15namespace parser {
16
17 void ControllerParser::Parse( // 定义解析函数
18 const pugi::xml_document &xml, // 输入的 XML 文档
19 carla::road::MapBuilder &map_builder) { // 地图构建器
20
21 // 提取 OpenDRIVE
22 const pugi::xml_node opendrive_node = xml.child("OpenDRIVE"); // 获取 OpenDRIVE 节点
23 for (pugi::xml_node controller_node = opendrive_node.child("controller"); // 遍历 controller 节点
24 controller_node; // 如果 controller_node 存在
25 controller_node = controller_node.next_sibling("controller")) { // 获取下一个 sibling 节点
26
27 const road::ContId controller_id = controller_node.attribute("id").value(); // 获取控制器 ID
28 const std::string controller_name = controller_node.attribute("name").value(); // 获取控制器名称
29 const uint32_t controller_sequence = controller_node.attribute("sequence").as_uint(); // 获取控制器序列号
30
31 log_debug("Controller: ", // 日志输出控制器信息
32 controller_id,
33 controller_name,
34 controller_sequence);
35
36 std::set<road::SignId> signals; // 创建信号 ID 集合
37
38 for (pugi::xml_node control_node : controller_node.children("control")) { // 遍历控制节点
39 const road::SignId signal_id = control_node.attribute("signalId").value(); // 获取信号 ID
40 // controller_type 包含在 OpenDrive 格式中,但尚未使用
41 // 获取控制器类型(尚未使用)
42 signals.insert(signal_id); // 将信号 ID 插入集合
43 }
44
45 map_builder.CreateController( // 在地图构建器中创建控制器
46 controller_id,
47 controller_name,
48 controller_sequence,
49 std::move(signals) // 移动信号集合
50 );
51 }
52
53 }
54
55} // namespace parser
56} // namespace opendrive
57} // namespace carla
static void Parse(const pugi::xml_document &xml, carla::road::MapBuilder &map_builder)
XMLĵʹṩMapBuilderͼ
void CreateController(const ContId controller_id, const std::string controller_name, const uint32_t controller_sequence, const std::set< road::SignId > &&signals)
const char_t * value() const
Definition pugixml.cpp:5410
xml_node child(const char_t *name) const
Definition pugixml.cpp:5685
xml_attribute attribute(const char_t *name) const
Definition pugixml.cpp:5695
std::string ContId
Definition RoadTypes.h:41
std::string SignId
Definition RoadTypes.h:35
CARLA模拟器的主命名空间。
Definition Carla.cpp:139
static void log_debug(Args &&... args)
Definition Logging.h:71