CARLA
 
载入中...
搜索中...
未找到
LaneMarking.cpp
浏览该文件的文档.
1// Copyright (c) 2017 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/road/element/LaneMarking.h" // 引入 LaneMarking 头文件
8
9#include "carla/Exception.h" // 引入异常处理头文件
10#include "carla/StringUtil.h" // 引入字符串工具头文件
11#include "carla/road/element/RoadInfoMarkRecord.h" // 引入道路信息标记记录头文件
12
13namespace carla {
14namespace road {
15namespace element {
16
17 // 静态函数:根据字符串获取 LaneMarking 类型
18 static LaneMarking::Type GetType(std::string str) {
19 StringUtil::ToLower(str); // 将字符串转换为小写
20 if (str == "broken") { // 检查是否为 "broken"
21 return LaneMarking::Type::Broken; // 返回 LaneMarking::Type::Broken
22 } else if (str == "solid") { // 检查是否为 "solid"
23 return LaneMarking::Type::Solid; // 返回 LaneMarking::Type::Solid
24 } else if (str == "solid solid") { // 检查是否为 "solid solid"
25 return LaneMarking::Type::SolidSolid; // 返回 LaneMarking::Type::SolidSolid
26 } else if (str == "solid broken") { // 检查是否为 "solid broken"
27 return LaneMarking::Type::SolidBroken; // 返回 LaneMarking::Type::SolidBroken
28 } else if (str == "broken solid") { // 检查是否为 "broken solid"
29 return LaneMarking::Type::BrokenSolid; // 返回 LaneMarking::Type::BrokenSolid
30 } else if (str == "broken broken") { // 检查是否为 "broken broken"
31 return LaneMarking::Type::BrokenBroken; // 返回 LaneMarking::Type::BrokenBroken
32 } else if (str == "botts dots") { // 检查是否为 "botts dots"
33 return LaneMarking::Type::BottsDots; // 返回 LaneMarking::Type::BottsDots
34 } else if (str == "grass") { // 检查是否为 "grass"
35 return LaneMarking::Type::Grass; // 返回 LaneMarking::Type::Grass
36 } else if (str == "curb") { // 检查是否为 "curb"
37 return LaneMarking::Type::Curb; // 返回 LaneMarking::Type::Curb
38 } else if (str == "none") { // 检查是否为 "none"
39 return LaneMarking::Type::None; // 返回 LaneMarking::Type::None
40 } else {
41 return LaneMarking::Type::Other; // 返回 LaneMarking::Type::Other
42 }
43 }
44
45 // 静态函数:根据字符串获取 LaneMarking 颜色
46 static LaneMarking::Color GetColor(std::string str) {
47 StringUtil::ToLower(str); // 将字符串转换为小写
48 if (str == "standard") { // 检查是否为 "standard"
49 return LaneMarking::Color::Standard; // 返回 LaneMarking::Color::Standard
50 } else if (str == "blue") { // 检查是否为 "blue"
51 return LaneMarking::Color::Blue; // 返回 LaneMarking::Color::Blue
52 } else if (str == "green") { // 检查是否为 "green"
53 return LaneMarking::Color::Green; // 返回 LaneMarking::Color::Green
54 } else if (str == "red") { // 检查是否为 "red"
55 return LaneMarking::Color::Red; // 返回 LaneMarking::Color::Red
56 } else if (str == "white") { // 检查是否为 "white"
57 return LaneMarking::Color::White; // 返回 LaneMarking::Color::White
58 } else if (str == "yellow") { // 检查是否为 "yellow"
59 return LaneMarking::Color::Yellow; // 返回 LaneMarking::Color::Yellow
60 } else {
61 return LaneMarking::Color::Other; // 返回 LaneMarking::Color::Other
62 }
63 }
64
65 // 静态函数:根据 RoadInfoMarkRecord 的 LaneChange 获取 LaneMarking 的 LaneChange
67 switch (lane_change) { // 根据 lane_change 进行判断
68 case RoadInfoMarkRecord::LaneChange::Increase: // 如果是 Increase
69 return LaneMarking::LaneChange::Right; // 返回 LaneMarking::LaneChange::Right
70 case RoadInfoMarkRecord::LaneChange::Decrease: // 如果是 Decrease
71 return LaneMarking::LaneChange::Left; // 返回 LaneMarking::LaneChange::Left
72 case RoadInfoMarkRecord::LaneChange::Both: // 如果是 Both
73 return LaneMarking::LaneChange::Both; // 返回 LaneMarking::LaneChange::Both
74 default: // 默认情况
75 return LaneMarking::LaneChange::None; // 返回 LaneMarking::LaneChange::None
76 }
77 }
78
79 // LaneMarking 构造函数,接收一个 RoadInfoMarkRecord 对象
81 : type(GetType(info.GetType())), // 初始化 type
82 color(GetColor(info.GetColor())), // 初始化 color
83 lane_change(GetLaneChange(info.GetLaneChange())), // 初始化 lane_change
84 width(info.GetWidth()) {} // 初始化 width
85
86} // namespace element
87} // namespace road
88} // namespace carla
static void ToLower(WritableRangeT &str)
Definition StringUtil.h:40
每条车道在道路横截面内可以提供多个道路标记条目。 道路标记信息定义了车道外边界的线条样式。 对于左侧车道,这是左边界;对于右侧车道,这是右边界。 左右车道之间的分隔线样式由零号车道(即中央车道)的道路标...
static LaneMarking::Type GetType(std::string str)
static LaneMarking::LaneChange GetLaneChange(RoadInfoMarkRecord::LaneChange lane_change)
static LaneMarking::Color GetColor(std::string str)
CARLA模拟器的主命名空间。
Definition Carla.cpp:139
LaneChange
可以用作标志。
Definition LaneMarking.h:50
LaneMarking(const RoadInfoMarkRecord &info)