CARLA
 
载入中...
搜索中...
未找到
Vehicle.h
浏览该文件的文档.
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#pragma once
8
9// 包含Carla客户端中Actor相关的头文件
10// Actor在Carla模拟环境里代表各种参与模拟的实体对象,例如车辆、行人、交通标志等
11// 该头文件提供了创建、操作以及获取Actor相关属性的类、接口等相关定义
12#include "carla/client/Actor.h"
13
14// 包含用于定义阿克曼转向控制器(Ackermann Controller)相关设置的头文件
15// 阿克曼转向常用于车辆等的转向控制模型,此头文件中可能包含如转向角度限制、控制增益等相关设置的定义
16// 方便配置相应的控制逻辑,以实现基于阿克曼转向原理的车辆操控
18
19// 定义交通信号灯状态相关的数据结构、枚举等内容的头文件
20// 例如包含了红灯、绿灯、黄灯等不同状态的表示方式
21// 也可能提供一些用于判断、转换交通灯状态的辅助函数或方法,有助于在模拟交通场景中处理与交通灯相关的交互逻辑
23
24// 与基于阿克曼转向模型对车辆进行控制相关的头文件
25// 声明了发送给车辆使其按照阿克曼转向原理进行运动控制(像控制车辆的转向、速度等)的结构体、类或者相关函数接口
26// 方便在代码里实现对车辆具体的操控逻辑,基于阿克曼转向来模拟车辆行驶行为
28
29// 针对车辆控制方面更通用的头文件
30// 包含了如车辆的油门、刹车、转向等基础控制操作对应的结构体定义、控制命令的封装等内容
31// 通过使用此头文件里的定义,可以实现基本的车辆驾驶行为模拟,对车辆进行常规操作控制
33
34// 涉及车辆门相关操作和属性的定义的头文件
35// 例如定义了车门的打开、关闭状态表示,以及可能存在控制车门开关的函数接口声明等
36// 在模拟诸如乘车、下车等涉及车辆门状态改变的场景时会用到里面的相关功能
38
39// 用来定义车辆灯光状态的头文件
40// 像车辆的大灯(远光、近光)、转向灯、刹车灯等不同灯光的亮灭状态、组合状态等相关的数据结构都在这里定义
41// 同时可能提供用于设置、查询车辆灯光状态的接口声明,有助于模拟车辆在不同行驶场景下的灯光使用情况
43
44// 侧重于车辆物理特性控制方面的头文件
45// 包含对车辆的质量、惯性、摩擦力等物理参数进行设置和获取的相关类、结构体定义以及对应的操作函数接口声明等内容
46// 借助这些定义能够更精细地模拟车辆在物理环境中的运动和行为表现,实现更逼真的车辆物理模拟
48
49// 定义了用于获取和表示车辆各种遥测数据的头文件(车辆遥测数据)
50// 例如车辆的实时速度、位置坐标、加速度、航向角等信息的结构体或类在此定义
51// 对于分析车辆的行驶状态、记录行驶轨迹以及基于车辆实时状态进行更复杂的控制决策等方面非常有用
52#include "carla/rpc/VehicleTelemetryData.h" // 车辆遥测数据
53
54// 主要涉及车辆车轮相关内容的头文件
55// 像车轮的转速、转向角度、轮胎压力等属性的定义会在这里出现
56// 可能还有针对车轮单独控制或者获取其状态的函数接口声明,在模拟车辆复杂的运动、处理车轮相关故障等场景下能发挥作用
58
59// 包含和Carla中交通管理相关的头文件
60// 可能包含用于管理交通流量、设置交通规则、协调不同车辆和交通参与者之间交互关系的类定义和函数接口声明
61// 例如可以用于设置车辆速度限制、生成交通流等功能,以构建更逼真的交通模拟场景
63
65
66namespace carla {
67
68namespace traffic_manager {
69 class TrafficManager;
70}
71
72namespace client {
73
74 class TrafficLight;
75
76 class Vehicle : public Actor {
77 public:
78
87
88
89 explicit Vehicle(ActorInitializer init);
90
91 /// 开关车辆的自动驾驶仪.
92 void SetAutopilot(bool enabled = true, uint16_t tm_port = TM_DEFAULT_PORT);
93
94 /// 返回车辆的遥测数据.
95 ///
96 /// @warning 此函数调用模拟器.
98
99 /// 开关车辆的自动驾驶仪.
100 void ShowDebugTelemetry(bool enabled = true);
101
102 /// 应用 @a 控制此车辆.
103 void ApplyControl(const Control &control);
104
105 /// 应用 @a 控制此车辆.
106 void ApplyAckermannControl(const AckermannControl &control);
107
108 /// 返回最后应用于车辆的 Ackermann controller 设置.
109 ///
110 /// @warning 此函数调用模拟器.
112
113 /// 应用 Ackermann 控制设置给此车辆
115
116 /// 给此车辆应用物理控制.
117 void ApplyPhysicsControl(const PhysicsControl &physics_control);
118
119 /// 在车中开门
120 void OpenDoor(const VehicleDoor door_idx);
121
122 /// 在车中关门
123 void CloseDoor(const VehicleDoor door_idx);
124
125 /// 给车辆设置一个 @a LightState.
126 void SetLightState(const LightState &light_state);
127
128 /// 给车辆轮子一个 @a 旋转 (影响汽车的骨骼框架,而不是物理)
129 void SetWheelSteerDirection(WheelLocation wheel_location, float angle_in_deg);
130
131 /// 从车辆轮子返回一个 @a 旋转
132 ///
133 /// @note 基于轮子的物理,此函数返回它的旋转
134 float GetWheelSteerAngle(WheelLocation wheel_location);
135
136 /// 返回最后应用于车辆的控制.
137 ///
138 /// @note 此函数不调用模拟器.
139 /// 在最后一个节拍返回接收到的数据.
140 Control GetControl() const;
141
142 /// 返回车辆最后应用的物理控制.
143 ///
144 /// @warning 此函数调用模拟器.
146
147 /// 返回当前车辆的打开灯(LightState).
148 ///
149 /// @note 此函数不调用模拟器.
150 /// 在最后一个节拍返回接收到的数据.
152
153 /// 返回当前影响该车辆的速度限制.
154 ///
155 /// @note 此函数不调用模拟器.
156 /// 在最后一个节拍返回接收到的数据.
157 float GetSpeedLimit() const;
158
159 /// 返回当前影响该车辆的交通灯的状态.
160 ///
161 /// @return 绿灯表示车辆没有受到交通信号灯的影响.
162 ///
163 /// @note 此函数不调用模拟器.
164 /// 在最后一个节拍返回接收到的数据.
166
167 /// 返回交通灯是否正在影响该车辆.
168 ///
169 /// @note 此函数不调用模拟器.
170 /// 在最后一个节拍返回接收到的数据.
171 bool IsAtTrafficLight();
172
173 /// 检索当前影响该车辆的交通灯.
175
176 /// 如果可用,启用CarSim模拟
177 void EnableCarSim(std::string simfile_path);
178
179 /// 允许使用CarSim内部道路定义,而不是虚幻引擎的
180 void UseCarSimRoad(bool enabled);
181
183 uint64_t MaxSubsteps,
184 float MaxSubstepDeltaTime,
185 std::string VehicleJSON = "",
186 std::string PowertrainJSON = "",
187 std::string TireJSON = "",
188 std::string BaseJSONPath = "");
189
190 void RestorePhysXPhysics();
191
192 /// 返回车辆的故障状态
194
195 private:
196
198
200 };
201
202} // namespace client
203} // namespace carla
用于初始化 Actor 类。只有 ActorFactory 可以创建此对象,因此只有 ActorFactory 可以创建 Actor。
表示模拟中的一个行为体(Actor)。
车辆类的前向声明,用于在LaneInvasionSensor类中可能的引用。
Definition Vehicle.h:76
void SetWheelSteerDirection(WheelLocation wheel_location, float angle_in_deg)
给车辆轮子一个 旋转 (影响汽车的骨骼框架,而不是物理)
Definition Vehicle.cpp:109
TelemetryData GetTelemetryData() const
返回车辆的遥测数据.
Definition Vehicle.cpp:55
void ApplyControl(const Control &control)
应用 控制此车辆.
Definition Vehicle.cpp:65
PhysicsControl GetPhysicsControl() const
返回车辆最后应用的物理控制.
Definition Vehicle.cpp:124
float GetWheelSteerAngle(WheelLocation wheel_location)
从车辆轮子返回一个 旋转
Definition Vehicle.cpp:114
void CloseDoor(const VehicleDoor door_idx)
在车中关门
Definition Vehicle.cpp:99
LightState GetLightState() const
返回当前车辆的打开灯(LightState).
Definition Vehicle.cpp:129
bool IsAtTrafficLight()
返回交通灯是否正在影响该车辆.
Definition Vehicle.cpp:144
void EnableCarSim(std::string simfile_path)
如果可用,启用CarSim模拟
Definition Vehicle.cpp:155
rpc::TrafficLightState GetTrafficLightState() const
返回当前影响该车辆的交通灯的状态.
Definition Vehicle.cpp:139
void ApplyAckermannControl(const AckermannControl &control)
应用 控制此车辆.
Definition Vehicle.cpp:74
void ApplyPhysicsControl(const PhysicsControl &physics_control)
给此车辆应用物理控制.
Definition Vehicle.cpp:89
rpc::AckermannControllerSettings GetAckermannControllerSettings() const
返回最后应用于车辆的 Ackermann controller 设置.
Definition Vehicle.cpp:79
float GetSpeedLimit() const
返回当前影响该车辆的速度限制.
Definition Vehicle.cpp:134
SharedPtr< TrafficLight > GetTrafficLight() const
检索当前影响该车辆的交通灯.
Definition Vehicle.cpp:149
Control GetControl() const
返回最后应用于车辆的控制.
Definition Vehicle.cpp:119
void UseCarSimRoad(bool enabled)
允许使用CarSim内部道路定义,而不是虚幻引擎的
Definition Vehicle.cpp:160
void ApplyAckermannControllerSettings(const rpc::AckermannControllerSettings &settings)
应用 Ackermann 控制设置给此车辆
Definition Vehicle.cpp:84
void OpenDoor(const VehicleDoor door_idx)
在车中开门
Definition Vehicle.cpp:94
void EnableChronoPhysics(uint64_t MaxSubsteps, float MaxSubstepDeltaTime, std::string VehicleJSON="", std::string PowertrainJSON="", std::string TireJSON="", std::string BaseJSONPath="")
Definition Vehicle.cpp:166
void SetLightState(const LightState &light_state)
给车辆设置一个 LightState.
Definition Vehicle.cpp:104
rpc::VehicleFailureState GetFailureState() const
返回车辆的故障状态
Definition Vehicle.cpp:188
const bool _is_control_sticky
Definition Vehicle.h:197
void SetAutopilot(bool enabled=true, uint16_t tm_port=TM_DEFAULT_PORT)
开关车辆的自动驾驶仪.
Definition Vehicle.cpp:43
void ShowDebugTelemetry(bool enabled=true)
开关车辆的自动驾驶仪.
Definition Vehicle.cpp:60
该类通过使用消息传递机制,将交通管理器的各个阶段恰当地整合在一起
static const unsigned short TM_DEFAULT_PORT
Definition Constants.h:22
CARLA模拟器的主命名空间。
Definition Carla.cpp:139
boost::shared_ptr< T > SharedPtr
使用这个SharedPtr(boost::shared_ptr)以保持与boost::python的兼容性, 但未来如果可能的话,我们希望能为std::shared_ptr制作一个Python适配器。
Definition Memory.h:19
包含CARLA客户端相关类和函数的命名空间。