CARLA
 
载入中...
搜索中...
未找到
TrafficManagerBase.h
浏览该文件的文档.
1// Copyright (c) 2020 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#include <memory>
10#include "carla/client/Actor.h"/// @brief 包含CARLA客户端中Actor类的定义
11#include "carla/trafficmanager/SimpleWaypoint.h"/// @brief 包含CARLA交通管理器中SimpleWaypoint类的定义
12/**
13 * @namespace carla::traffic_manager
14 * @brief CARLA交通管理器的命名空间。
15 */
16namespace carla {
17namespace traffic_manager {
18 /**
19 * @brief Actor的智能指针类型别名。
20 * @details 这是一个指向carla::client::Actor对象的共享指针。
21 */
23/**
24 * @brief 路径类型别名。
25 * @details 这是一个包含cg::Location对象的向量,用于表示一条路径。
26 */
27using Path = std::vector<cg::Location>;
28/**
29 * @brief 路线类型别名。
30 * @details 这是一个包含uint8_t的向量,用于表示一条路线(可能是一个编码的路径或导航指令)。
31 */
32using Route = std::vector<uint8_t>;
33/**
34 * @brief Waypoint的智能指针类型别名。
35 * @details 这是一个指向carla::client::Waypoint对象的共享指针。
36 */
38/**
39 * @brief 动作类型别名。
40 * @details 这是一个包含RoadOption和WaypointPtr的pair,表示一个动作,其中RoadOption表示行驶选项,WaypointPtr表示该动作的目标点。
41 */
42using Action = std::pair<RoadOption, WaypointPtr>;
43/**
44 * @brief 动作缓冲区类型别名。
45 * @details 这是一个包含Action的向量,用于存储一系列的动作。
46 */
47using ActionBuffer = std::vector<Action>;
48
49
50/**
51/// * @class TrafficManagerBase
52/// * @brief 此类的功能是通过消息传递机制适当地整合交通管理器的各个阶段。
53/// */
54class TrafficManagerBase {
55
56public:
57 /**
58 * @brief 启动交通管理器。
59 */
60 virtual void Start() = 0;
61
62 /**
63 * @brief 停止交通管理器。
64 */
65 virtual void Stop() = 0;
66
67 /**
68 * @brief 释放交通管理器。
69 */
70 virtual void Release() = 0;
71
72 /**
73 * @brief 重置交通管理器。
74 */
75 virtual void Reset() = 0;
76
77 /**
78 * @brief 单例生命周期管理的受保护构造函数。
79 */
81
82 /**
83 * @brief 析构函数。
84 */
85 virtual ~TrafficManagerBase() {};
86
87 /**
88 * @brief 此方法向交通管理器注册车辆。
89 * @param actor_list 车辆列表。
90 */
91 virtual void RegisterVehicles(const std::vector<ActorPtr> &actor_list) = 0;
92
93 /**
94 * @brief 此方法从交通管理器注销车辆。
95 * @param actor_list 车辆列表。
96 */
97 virtual void UnregisterVehicles(const std::vector<ActorPtr> &actor_list) = 0;
98
99 /**
100 * @brief 设置车辆相对于限速的速度百分比降低。
101 * 如果小于0,则表示百分比增加。
102 * @param actor 车辆指针。
103 * @param percentage 百分比值。
104 */
105 virtual void SetPercentageSpeedDifference(const ActorPtr &actor, const float percentage) = 0;
106
107 /**
108 * @brief 设置车辆相对于中心线的车道偏移量。
109 * 正值表示向右偏移,负值表示向左偏移。
110 * @param actor 车辆指针。
111 * @param offset 偏移量。
112 */
113 virtual void SetLaneOffset(const ActorPtr &actor, const float offset) = 0;
114
115 /**
116 * @brief 设置车辆的精确期望速度。
117 * @param actor 车辆指针。
118 * @param value 速度值。
119 */
120 virtual void SetDesiredSpeed(const ActorPtr &actor, const float value) = 0;
121
122 /**
123 * @brief 设置全局相对于限速的速度百分比降低。
124 * 如果小于0,则表示百分比增加。
125 * @param percentage 百分比值。
126 */
127 virtual void SetGlobalPercentageSpeedDifference(float const percentage) = 0;
128
129 /**
130 * @brief 设置全局相对于中心线的车道偏移量。
131 * 正值表示向右偏移,负值表示向左偏移。
132 * @param offset 偏移量。
133 */
134 virtual void SetGlobalLaneOffset(float const offset) = 0;
135
136 /**
137 * @brief 设置车辆灯光的自动管理。
138 * @param actor 车辆指针。
139 * @param do_update 是否更新灯光管理。
140 */
141 virtual void SetUpdateVehicleLights(const ActorPtr &actor, const bool do_update) = 0;
142
143 /**
144 * @brief 设置车辆之间的碰撞检测规则。
145 *
146 * @param reference_actor 参考车辆指针。
147 * @param other_actor 其他车辆指针。
148 * @param detect_collision 是否检测碰撞。
149 */
150 virtual void SetCollisionDetection(const ActorPtr &reference_actor, const ActorPtr &other_actor, const bool detect_collision) = 0;
151
152 /**
153 * @brief 强制车辆换道。
154 *
155 * 方向标志可以设置为true表示向左换道,false表示向右换道。
156 *
157 * @param actor 车辆指针。
158 * @param direction 换道方向。
159 */
160 virtual void SetForceLaneChange(const ActorPtr &actor, const bool direction) = 0;
161
162 /**
163 * @brief 启用/禁用车辆的自动换道。
164 *
165 * @param actor 车辆指针。
166 * @param enable 是否启用自动换道。
167 */
168 virtual void SetAutoLaneChange(const ActorPtr &actor, const bool enable) = 0;
169
170 /**
171 * @brief 设置车辆与前车应保持的距离。
172 *
173 * @param actor 车辆指针。
174 * @param distance 应保持的距离。
175 */
176 virtual void SetDistanceToLeadingVehicle(const ActorPtr &actor, const float distance) = 0;
177
178 /**
179 * @brief 设置车辆忽略行人的碰撞概率。
180 *
181 * @param actor 车辆指针。
182 * @param perc 忽略行人的碰撞概率。
183 */
184 virtual void SetPercentageIgnoreWalkers(const ActorPtr &actor, const float perc) = 0;
185
186 /**
187 * @brief 设置车辆忽略其他车辆的碰撞概率。
188 *
189 * @param actor 车辆指针。
190 * @param perc 忽略其他车辆的碰撞概率。
191 */
192 virtual void SetPercentageIgnoreVehicles(const ActorPtr &actor, const float perc) = 0;
193
194 /**
195 * @brief 设置车辆闯红灯的概率。
196 *
197 * @param actor 车辆指针。
198 * @param perc 闯红灯的概率。
199 */
200 virtual void SetPercentageRunningLight(const ActorPtr &actor, const float perc) = 0;
201
202 /**
203 * @brief 设置车辆无视交通标志的概率。
204 *
205 * @param actor 车辆指针。
206 * @param perc 无视交通标志的概率。
207 */
208 virtual void SetPercentageRunningSign(const ActorPtr &actor, const float perc) = 0;
209
210 /**
211 * @brief 将交通管理器切换到同步执行模式。
212 *
213 * @param mode 是否启用同步模式。
214 */
215 virtual void SetSynchronousMode(bool mode) = 0;
216
217 /**
218 * @brief 设置同步执行模式的Tick超时时间。
219 *
220 * @param time Tick超时时间(毫秒)。
221 */
222 virtual void SetSynchronousModeTimeOutInMiliSecond(double time) = 0;
223
224 /**
225 * @brief 提供同步Tick。
226 *
227 * @return 如果成功提供同步Tick,则返回true;否则返回false。
228 */
229 virtual bool SynchronousTick() = 0;
230
231 /**
232 * @brief 获取CARLA场景信息代理。
233 *
234 * @return 返回CARLA场景信息代理的引用。
235 */
237
238 /**
239 * @brief 设置全局前车距离。
240 *
241 * @param dist 前车距离。
242 */
243 virtual void SetGlobalDistanceToLeadingVehicle(const float dist) = 0;
244
245 /**
246 * @brief 设置保持在右车道的百分比。
247 *
248 * @param actor 车辆指针。
249 * @param percentage 保持在右车道的百分比。
250 */
251 virtual void SetKeepRightPercentage(const ActorPtr &actor,const float percentage) = 0;
252
253 /**
254 * @brief 设置随机左变道的百分比。
255 *
256 * @param actor 车辆指针。
257 * @param percentage 随机左变道的百分比。
258 */
259 virtual void SetRandomLeftLaneChangePercentage(const ActorPtr &actor, const float percentage) = 0;
260
261 /**
262 * @brief 设置随机右变道的百分比。
263 *
264 * @param actor 车辆指针。
265 * @param percentage 随机右变道的百分比。
266 */
267 virtual void SetRandomRightLaneChangePercentage(const ActorPtr &actor, const float percentage) = 0;
268
269 /**
270 * @brief 设置混合物理模式。
271 *
272 * @param mode_switch 是否启用混合物理模式。
273 */
274 virtual void SetHybridPhysicsMode(const bool mode_switch) = 0;
275
276 /**
277 * @brief 设置混合物理半径。
278 *
279 * @param radius 混合物理半径。
280 */
281 virtual void SetHybridPhysicsRadius(const float radius) = 0;
282
283 /**
284 * @brief 设置随机化种子。
285 *
286 * @param seed 随机化种子。
287 */
288 virtual void SetRandomDeviceSeed(const uint64_t seed) = 0;
289
290 /**
291 * @brief 设置Open Street Map模式。
292 *
293 * @param mode_switch 是否启用Open Street Map模式。
294 */
295 virtual void SetOSMMode(const bool mode_switch) = 0;
296
297 /**
298 * @brief 设置自定义导入路径。
299 *
300 * @param actor 车辆指针。
301 * @param path 自定义路径。
302 * @param empty_buffer 是否清空缓冲区。
303 */
304 virtual void SetCustomPath(const ActorPtr &actor, const Path path, const bool empty_buffer) = 0;
305
306 /**
307 * @brief 移除路径。
308 *
309 * @param actor_id 车辆ID。
310 * @param remove_path 是否移除路径。
311 */
312 virtual void RemoveUploadPath(const ActorId &actor_id, const bool remove_path) = 0;
313
314 /**
315 * @brief 更新已设置的路径。
316 *
317 * @param actor_id 车辆ID。
318 * @param path 更新后的路径。
319 */
320 virtual void UpdateUploadPath(const ActorId &actor_id, const Path path) = 0;
321
322 /**
323 * @brief 设置自定义导入路线。
324 *
325 * @param actor 车辆指针。
326 * @param route 自定义路线。
327 * @param empty_buffer 是否清空缓冲区。
328 */
329 virtual void SetImportedRoute(const ActorPtr &actor, const Route route, const bool empty_buffer) = 0;
330
331 /**
332 * @brief 移除路线。
333 *
334 * @param actor_id 车辆ID。
335 * @param remove_path 是否移除路线。
336 */
337 virtual void RemoveImportedRoute(const ActorId &actor_id, const bool remove_path) = 0;
338
339 /**
340 * @brief 更新已设置的路线。
341 *
342 * @param actor_id 车辆ID。
343 * @param route 更新后的路线。
344 */
345 virtual void UpdateImportedRoute(const ActorId &actor_id, const Route route) = 0;
346
347 /**
348 * @brief 设置休眠车辆的自动重生。
349 *
350 * @param mode_switch 是否启用休眠车辆的自动重生。
351 */
352 virtual void SetRespawnDormantVehicles(const bool mode_switch) = 0;
353
354 /**
355 * @brief 设置重生车辆的范围。
356 *
357 * @param lower_bound 范围下限。
358 * @param upper_bound 范围上限。
359 */
360 virtual void SetBoundariesRespawnDormantVehicles(const float lower_bound, const float upper_bound) = 0;
361
362 /**
363 * @brief 设置范围限制。
364 *
365 * @param lower 范围下限。
366 * @param upper 范围上限。
367 */
368 virtual void SetMaxBoundaries(const float lower, const float upper) = 0;
369
370 /**
371 * @brief 获取车辆的下一个动作。
372 *
373 * @param actor_id 车辆ID。
374 * @return 车辆的下一个动作。
375 */
376 virtual Action GetNextAction(const ActorId &actor_id) = 0;
377
378 /**
379 * @brief 获取车辆的动作缓冲区。
380 *
381 * @param actor_id 车辆ID。
382 * @return 车辆的动作缓冲区。
383 */
384 virtual ActionBuffer GetActionBuffer(const ActorId &actor_id) = 0;
385 /**
386 * @brief 关闭系统。
387 */
388 virtual void ShutDown() = 0;
389
390protected:
391
392};
393
394} // namespace traffic_manager
395} // namespace carla
virtual void SetRandomDeviceSeed(const uint64_t seed)=0
设置随机化种子。
virtual void SetRandomLeftLaneChangePercentage(const ActorPtr &actor, const float percentage)=0
设置随机左变道的百分比。
virtual void SetBoundariesRespawnDormantVehicles(const float lower_bound, const float upper_bound)=0
设置重生车辆的范围。
virtual void SetPercentageIgnoreWalkers(const ActorPtr &actor, const float perc)=0
设置车辆忽略行人的碰撞概率。
virtual void SetPercentageRunningSign(const ActorPtr &actor, const float perc)=0
设置车辆无视交通标志的概率。
virtual void SetPercentageSpeedDifference(const ActorPtr &actor, const float percentage)=0
设置车辆相对于限速的速度百分比降低。 如果小于0,则表示百分比增加。
virtual carla::client::detail::EpisodeProxy & GetEpisodeProxy()=0
获取CARLA场景信息代理。
virtual void Release()=0
释放交通管理器。
virtual void UpdateImportedRoute(const ActorId &actor_id, const Route route)=0
更新已设置的路线。
virtual bool SynchronousTick()=0
提供同步Tick。
virtual void SetGlobalLaneOffset(float const offset)=0
设置全局相对于中心线的车道偏移量。 正值表示向右偏移,负值表示向左偏移。
virtual void SetAutoLaneChange(const ActorPtr &actor, const bool enable)=0
启用/禁用车辆的自动换道。
virtual void SetCollisionDetection(const ActorPtr &reference_actor, const ActorPtr &other_actor, const bool detect_collision)=0
设置车辆之间的碰撞检测规则。
virtual void RegisterVehicles(const std::vector< ActorPtr > &actor_list)=0
此方法向交通管理器注册车辆。
virtual void SetOSMMode(const bool mode_switch)=0
设置Open Street Map模式。
virtual void SetMaxBoundaries(const float lower, const float upper)=0
设置范围限制。
TrafficManagerBase()
单例生命周期管理的受保护构造函数。
virtual void SetPercentageIgnoreVehicles(const ActorPtr &actor, const float perc)=0
设置车辆忽略其他车辆的碰撞概率。
virtual Action GetNextAction(const ActorId &actor_id)=0
获取车辆的下一个动作。
virtual void SetHybridPhysicsRadius(const float radius)=0
设置混合物理半径。
virtual void SetForceLaneChange(const ActorPtr &actor, const bool direction)=0
强制车辆换道。
virtual void Reset()=0
重置交通管理器。
virtual void SetKeepRightPercentage(const ActorPtr &actor, const float percentage)=0
设置保持在右车道的百分比。
virtual void SetSynchronousMode(bool mode)=0
将交通管理器切换到同步执行模式。
virtual ActionBuffer GetActionBuffer(const ActorId &actor_id)=0
获取车辆的动作缓冲区。
virtual void SetLaneOffset(const ActorPtr &actor, const float offset)=0
设置车辆相对于中心线的车道偏移量。 正值表示向右偏移,负值表示向左偏移。
virtual void SetRandomRightLaneChangePercentage(const ActorPtr &actor, const float percentage)=0
设置随机右变道的百分比。
virtual void SetSynchronousModeTimeOutInMiliSecond(double time)=0
设置同步执行模式的Tick超时时间。
virtual void SetRespawnDormantVehicles(const bool mode_switch)=0
设置休眠车辆的自动重生。
virtual void RemoveImportedRoute(const ActorId &actor_id, const bool remove_path)=0
移除路线。
virtual void SetHybridPhysicsMode(const bool mode_switch)=0
设置混合物理模式。
virtual void SetCustomPath(const ActorPtr &actor, const Path path, const bool empty_buffer)=0
设置自定义导入路径。
virtual void RemoveUploadPath(const ActorId &actor_id, const bool remove_path)=0
移除路径。
virtual void SetDesiredSpeed(const ActorPtr &actor, const float value)=0
设置车辆的精确期望速度。
virtual void Stop()=0
停止交通管理器。
virtual void Start()=0
启动交通管理器。
virtual void ShutDown()=0
关闭系统。
virtual void SetUpdateVehicleLights(const ActorPtr &actor, const bool do_update)=0
设置车辆灯光的自动管理。
virtual void SetPercentageRunningLight(const ActorPtr &actor, const float perc)=0
设置车辆闯红灯的概率。
virtual void UnregisterVehicles(const std::vector< ActorPtr > &actor_list)=0
此方法从交通管理器注销车辆。
virtual void SetDistanceToLeadingVehicle(const ActorPtr &actor, const float distance)=0
设置车辆与前车应保持的距离。
virtual void SetGlobalDistanceToLeadingVehicle(const float dist)=0
设置全局前车距离。
virtual void UpdateUploadPath(const ActorId &actor_id, const Path path)=0
更新已设置的路径。
virtual void SetImportedRoute(const ActorPtr &actor, const Route route, const bool empty_buffer)=0
设置自定义导入路线。
virtual void SetGlobalPercentageSpeedDifference(float const percentage)=0
设置全局相对于限速的速度百分比降低。 如果小于0,则表示百分比增加。
carla::SharedPtr< cc::Actor > ActorPtr
使用别名简化代码中的命名
carla::SharedPtr< cc::Waypoint > WaypointPtr
Waypoint的智能指针类型别名。
Definition InMemoryMap.h:45
std::vector< uint8_t > Route
路线类型,由一系列地理位置组成
std::vector< cg::Location > Path
参与者的唯一标识符类型
std::vector< Action > ActionBuffer
动作缓冲区类型别名。
std::pair< RoadOption, WaypointPtr > Action
动作类型别名。
carla::ActorId ActorId
参与者的智能指针类型
CARLA模拟器的主命名空间。
Definition Carla.cpp:139
boost::shared_ptr< T > SharedPtr
使用这个SharedPtr(boost::shared_ptr)以保持与boost::python的兼容性, 但未来如果可能的话,我们希望能为std::shared_ptr制作一个Python适配器。
Definition Memory.h:19