CARLA
 
载入中...
搜索中...
未找到
Parameters.cpp
浏览该文件的文档.
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#include "carla/trafficmanager/Parameters.h" // 引入参数头文件
8#include "carla/trafficmanager/Constants.h" // 引入常量头文件
9
10namespace carla {
11namespace traffic_manager {
12
13Parameters::Parameters() { // 参数构造函数
14
15 /// 设置默认的同步模式超时。
16 synchronous_time_out = std::chrono::duration<int, std::milli>(10);
17}
18
19Parameters::~Parameters() {} // 参数析构函数
20
21//////////////////////////////////// SETTERS //////////////////////////////////
22
23void Parameters::SetHybridPhysicsMode(const bool mode_switch) { // 设置混合物理模式
24 hybrid_physics_mode.store(mode_switch); // 存储模式开关状态
25}
26
27void Parameters::SetRespawnDormantVehicles(const bool mode_switch) { // 设置重生休眠车辆
28 respawn_dormant_vehicles.store(mode_switch); // 存储重生休眠车辆的状态
29}
30
31void Parameters::SetMaxBoundaries(const float lower, const float upper) { // 设置最大边界
32 min_lower_bound = lower; // 设置最小下边界
33 max_upper_bound = upper; // 设置最大上边界
34}
35
36void Parameters::SetBoundariesRespawnDormantVehicles(const float lower_bound, const float upper_bound) { // 设置休眠车辆重生边界
37 respawn_lower_bound = min_lower_bound > lower_bound ? min_lower_bound : lower_bound; // 确定重生下边界
38 respawn_upper_bound = max_upper_bound < upper_bound ? max_upper_bound : upper_bound; // 确定重生上边界
39}
40
41void Parameters::SetPercentageSpeedDifference(const ActorPtr &actor, const float percentage) { // 设置速度差百分比
42 float new_percentage = std::min(100.0f, percentage); // 限制最大百分比为100
43 percentage_difference_from_speed_limit.AddEntry({actor->GetId(), new_percentage}); // 添加速度差记录
44 if (exact_desired_speed.Contains(actor->GetId())) { // 如果参与者的精确期望速度存在
45 exact_desired_speed.RemoveEntry(actor->GetId()); // 移除该参与者的精确期望速度
46 }
47}
48
49void Parameters::SetLaneOffset(const ActorPtr &actor, const float offset) { // 设置车道偏移
50 const auto entry = std::make_pair(actor->GetId(), offset); // 创建参与者ID和偏移的条目
51 lane_offset.AddEntry(entry); // 添加车道偏移记录
52}
53
54void Parameters::SetDesiredSpeed(const ActorPtr &actor, const float value) { // 设置期望速度
55 float new_value = std::max(0.0f, value); // 确保速度不小于0
56 exact_desired_speed.AddEntry({actor->GetId(), new_value}); // 添加参与者的精确期望速度
57 if (percentage_difference_from_speed_limit.Contains(actor->GetId())) { // 如果速度差记录存在
58 percentage_difference_from_speed_limit.RemoveEntry(actor->GetId()); // 移除该参与者的速度差记录
59 }
60}
61
62void Parameters::SetGlobalPercentageSpeedDifference(const float percentage) { // 设置全局速度差百分比
63 float new_percentage = std::min(100.0f, percentage); // 限制最大百分比为100
64 global_percentage_difference_from_limit = new_percentage; // 设置全局速度差
65}
66
67void Parameters::SetGlobalLaneOffset(const float offset) { // 设置全局车道偏移
68 global_lane_offset = offset; // 设置全局偏移量
69}
70
71void Parameters::SetCollisionDetection(const ActorPtr &reference_actor, const ActorPtr &other_actor, const bool detect_collision) { // 设置碰撞检测
72 const ActorId reference_id = reference_actor->GetId(); // 获取参考参与者的ID
73 const ActorId other_id = other_actor->GetId(); // 获取其他参与者的ID
74
75 if (detect_collision) { // 如果需要检测碰撞
76 if (ignore_collision.Contains(reference_id)) { // 如果参考参与者在忽略碰撞列表中
77 std::shared_ptr<AtomicActorSet> actor_set = ignore_collision.GetValue(reference_id); // 获取该参与者的忽略集合
78 if (actor_set->Contains(other_id)) { // 如果其他参与者在集合中
79 actor_set->Remove({other_id}); // 从集合中移除该参与者
80 }
81 }
82 } else { // 如果不需要检测碰撞
83 if (ignore_collision.Contains(reference_id)) { // 如果参考参与者在忽略碰撞列表中
84 std::shared_ptr<AtomicActorSet> actor_set = ignore_collision.GetValue(reference_id); // 获取该参与者的忽略集合
85 if (!actor_set->Contains(other_id)) { // 如果其他参与者不在集合中
86 actor_set->Insert({other_actor}); // 将其他参与者加入集合
87 }
88 } else { // 如果参考参与者不在列表中
89 std::shared_ptr<AtomicActorSet> actor_set = std::make_shared<AtomicActorSet>(); // 创建新的忽略集合
90 actor_set->Insert({other_actor}); // 将其他参与者加入集合
91 auto entry = std::make_pair(reference_id, actor_set); // 创建条目
92 ignore_collision.AddEntry(entry); // 添加条目到忽略碰撞列表
93 }
94 }
95}
96
97void Parameters::SetForceLaneChange(const ActorPtr &actor, const bool direction) { // 设置强制变道
98 const ChangeLaneInfo lane_change_info = {true, direction}; // 创建变道信息
99 const auto entry = std::make_pair(actor->GetId(), lane_change_info); // 创建参与者ID和变道信息的条目
100 force_lane_change.AddEntry(entry); // 添加变道记录
101}
102
103void Parameters::SetKeepRightPercentage(const ActorPtr &actor, const float percentage) { // 设置保持右侧的百分比
104 const auto entry = std::make_pair(actor->GetId(), percentage); // 创建参与者ID和保持右侧百分比的条目
105 perc_keep_right.AddEntry(entry); // 添加保持右侧记录
106}
107
108void Parameters::SetRandomLeftLaneChangePercentage(const ActorPtr &actor, const float percentage) { // 设置随机左变道的百分比
109 const auto entry = std::make_pair(actor->GetId(), percentage); // 创建参与者ID和随机左变道百分比的条目
110 perc_random_left.AddEntry(entry); // 添加随机左变道记录
111}
112
113void Parameters::SetRandomRightLaneChangePercentage(const ActorPtr &actor, const float percentage) { // 设置随机右变道的百分比
114 const auto entry = std::make_pair(actor->GetId(), percentage); // 创建参与者ID和随机右变道百分比的条目
115 perc_random_right.AddEntry(entry); // 添加随机右变道记录
116}
117
118void Parameters::SetUpdateVehicleLights(const ActorPtr &actor, const bool do_update) {
119 // 设置车辆灯光更新状态
120 const auto entry = std::make_pair(actor->GetId(), do_update);
121 // 创建参与者ID和更新状态的条目
123 // 将条目添加到自动更新车辆灯光列表中
124}
125
126void Parameters::SetAutoLaneChange(const ActorPtr &actor, const bool enable) {
127 // 设置自动变道功能
128 const auto entry = std::make_pair(actor->GetId(), enable);
129 // 创建参与者ID和变道使能状态的条目
131 // 将条目添加到自动变道列表中
132}
133
134void Parameters::SetDistanceToLeadingVehicle(const ActorPtr &actor, const float distance) {
135 // 设置与前车的距离
136 float new_distance = std::max(0.0f, distance);
137 // 确保距离不小于0
138 const auto entry = std::make_pair(actor->GetId(), new_distance);
139 // 创建参与者ID和距离的条目
141 // 将条目添加到前车距离列表中
142}
143
144void Parameters::SetSynchronousMode(const bool mode_switch) {
145 // 设置同步模式开关
146 synchronous_mode.store(mode_switch);
147}
148
150 // 设置同步模式超时时间(毫秒)
151 synchronous_time_out = std::chrono::duration<double, std::milli>(time);
152}
153
155 // 设置全局前车距离
156 distance_margin.store(dist);
157}
158
159void Parameters::SetPercentageRunningLight(const ActorPtr &actor, const float perc) {
160 // 设置运行信号灯的百分比
161 float new_perc = cg::Math::Clamp(perc, 0.0f, 100.0f);
162 // 确保百分比在0到100之间
163 const auto entry = std::make_pair(actor->GetId(), new_perc);
164 // 创建参与者ID和百分比的条目
166 // 将条目添加到运行信号灯百分比列表中
167}
168
169void Parameters::SetPercentageRunningSign(const ActorPtr &actor, const float perc) {
170 // 设置运行标志的百分比
171 float new_perc = cg::Math::Clamp(perc, 0.0f, 100.0f);
172 const auto entry = std::make_pair(actor->GetId(), new_perc);
174}
175
176void Parameters::SetPercentageIgnoreVehicles(const ActorPtr &actor, const float perc) {
177 // 设置忽略车辆的百分比
178 float new_perc = cg::Math::Clamp(perc, 0.0f, 100.0f);
179 const auto entry = std::make_pair(actor->GetId(), new_perc);
181}
182
183void Parameters::SetPercentageIgnoreWalkers(const ActorPtr &actor, const float perc) {
184 // 设置忽略行人的百分比
185 float new_perc = cg::Math::Clamp(perc, 0.0f, 100.0f);
186 const auto entry = std::make_pair(actor->GetId(), new_perc);
188}
189
190void Parameters::SetHybridPhysicsRadius(const float radius) {
191 // 设置混合物理半径
192 float new_radius = std::max(radius, 0.0f);
193 // 确保半径不小于0
194 hybrid_physics_radius.store(new_radius);
195}
196
197void Parameters::SetOSMMode(const bool mode_switch) {
198 // 设置开放街图模式开关
199 osm_mode.store(mode_switch);
200}
201
202void Parameters::SetCustomPath(const ActorPtr &actor, const Path path, const bool empty_buffer) {
203 // 设置参与者的自定义路径
204 const auto entry = std::make_pair(actor->GetId(), path);
205 custom_path.AddEntry(entry);
206 // 将路径条目添加到自定义路径列表中
207 const auto entry2 = std::make_pair(actor->GetId(), empty_buffer);
208 upload_path.AddEntry(entry2);
209 // 将空缓冲区条目添加到上传路径列表中
210}
211
212void Parameters::RemoveUploadPath(const ActorId &actor_id, const bool remove_path) {
213 // 根据参数决定是删除上传路径还是自定义路径
214 if (!remove_path) {
215 upload_path.RemoveEntry(actor_id);
216 } else {
217 custom_path.RemoveEntry(actor_id);
218 }
219}
220
221void Parameters::UpdateUploadPath(const ActorId &actor_id, const Path path) {
222 // 更新上传路径
223 custom_path.RemoveEntry(actor_id);
224 // 移除旧的自定义路径条目
225 const auto entry = std::make_pair(actor_id, path);
226 custom_path.AddEntry(entry);
227 // 添加新的自定义路径条目
228}
229
230void Parameters::SetImportedRoute(const ActorPtr &actor, const Route route, const bool empty_buffer) {
231 // 设置参与者的导入路线
232 const auto entry = std::make_pair(actor->GetId(), route);
233 custom_route.AddEntry(entry);
234 const auto entry2 = std::make_pair(actor->GetId(), empty_buffer);
235 upload_route.AddEntry(entry2);
236}
237
238void Parameters::RemoveImportedRoute(const ActorId &actor_id, const bool remove_path) {
239 // 根据参数决定是删除上传路线还是自定义路线
240 if (!remove_path) {
241 upload_route.RemoveEntry(actor_id);
242 } else {
243 custom_route.RemoveEntry(actor_id);
244 }
245}
246
247void Parameters::UpdateImportedRoute(const ActorId &actor_id, const Route route) {
248 // 更新导入路线
249 custom_route.RemoveEntry(actor_id);
250 // 移除旧的自定义路线条目
251 const auto entry = std::make_pair(actor_id, route);
252 custom_route.AddEntry(entry);
253 // 添加新的自定义路线条目
254}
255
256//////////////////////////////////// GETTERS //////////////////////////////////
257
259 // 获取混合物理半径
260 return hybrid_physics_radius.load();
261}
262
264 // 获取同步模式状态
265 return synchronous_mode.load();
266}
267
269 // 获取同步模式超时时间(毫秒)
270 return synchronous_time_out.count();
271}
272
273float Parameters::GetVehicleTargetVelocity(const ActorId &actor_id, const float speed_limit) const {
274 // 从全局获取参与者与速度限制的百分比差异
275 float percentage_difference = global_percentage_difference_from_limit;
276
277 // 如果参与者的速度限制包含在内,获取其特定的百分比差异
279 percentage_difference = percentage_difference_from_speed_limit.GetValue(actor_id);
280 }
281 // 如果参与者有精确的期望速度,直接返回该速度
282 else if (exact_desired_speed.Contains(actor_id)) {
283 return exact_desired_speed.GetValue(actor_id);
284 }
285
286 // 根据速度限制和百分比差异计算目标速度
287 return speed_limit * (1.0f - percentage_difference / 100.0f);
288}
289
290float Parameters::GetLaneOffset(const ActorId &actor_id) const {
291 // 从全局获取车道偏移
292 float offset = global_lane_offset;
293
294 // 如果参与者的车道偏移存在,获取其特定的偏移值
295 if (lane_offset.Contains(actor_id)) {
296 offset = lane_offset.GetValue(actor_id);
297 }
298
299 return offset; // 返回车道偏移
300}
301
302bool Parameters::GetCollisionDetection(const ActorId &reference_actor_id, const ActorId &other_actor_id) const {
303 // 默认设置为避免碰撞
304 bool avoid_collision = true;
305
306 // 如果引用参与者被设置为忽略碰撞,并且其他参与者在其忽略列表中
307 if (ignore_collision.Contains(reference_actor_id) &&
308 ignore_collision.GetValue(reference_actor_id)->Contains(other_actor_id)) {
309 avoid_collision = false; // 不避免碰撞
310 }
311
312 return avoid_collision; // 返回碰撞检测结果
313}
314
316 // 初始化车道变更信息
317 ChangeLaneInfo change_lane_info {false, false};
318
319 // 如果参与者的强制车道变更存在,获取其信息
320 if (force_lane_change.Contains(actor_id)) {
321 change_lane_info = force_lane_change.GetValue(actor_id);
322 }
323
324 // 移除该参与者的强制车道变更条目
325 force_lane_change.RemoveEntry(actor_id);
326
327 return change_lane_info; // 返回车道变更信息
328}
329
331 // 初始化保持右侧的百分比
332 float percentage = -1.0f;
333
334 // 如果参与者的保持右侧百分比存在,获取其值
335 if (perc_keep_right.Contains(actor_id)) {
336 percentage = perc_keep_right.GetValue(actor_id);
337 }
338
339 return percentage; // 返回保持右侧的百分比
340}
341
343 // 初始化随机左侧车道变更的百分比
344 float percentage = -1.0f;
345
346 // 如果参与者的随机左侧车道变更百分比存在,获取其值
347 if (perc_random_left.Contains(actor_id)) {
348 percentage = perc_random_left.GetValue(actor_id);
349 }
350
351 return percentage; // 返回随机左侧车道变更的百分比
352}
353
355 // 初始化随机右侧车道变更的百分比
356 float percentage = -1.0f;
357
358 // 如果参与者的随机右侧车道变更百分比存在,获取其值
359 if (perc_random_right.Contains(actor_id)) {
360 percentage = perc_random_right.GetValue(actor_id);
361 }
362
363 return percentage; // 返回随机右侧车道变更的百分比
364}
365
366bool Parameters::GetAutoLaneChange(const ActorId &actor_id) const {
367 // 默认自动车道变更政策为真
368 bool auto_lane_change_policy = true;
369
370 // 如果参与者的自动车道变更设置存在,获取其值
371 if (auto_lane_change.Contains(actor_id)) {
372 auto_lane_change_policy = auto_lane_change.GetValue(actor_id);
373 }
374
375 return auto_lane_change_policy; // 返回自动车道变更政策
376}
377
379 // 初始化与前车的距离边际
380 float specific_distance_margin = 0.0f;
381
382 // 如果参与者的前车距离存在,获取其值
384 specific_distance_margin = distance_to_leading_vehicle.GetValue(actor_id);
385 } else {
386 specific_distance_margin = distance_margin; // 否则使用全局默认值
387 }
388
389 return specific_distance_margin; // 返回与前车的距离
390}
391
392float Parameters::GetPercentageRunningLight(const ActorId &actor_id) const {
393 // 初始化红绿灯违规的百分比
394 float percentage = 0.0f;
395
396 // 如果参与者的红绿灯违规百分比存在,获取其值
397 if (perc_run_traffic_light.Contains(actor_id)) {
398 percentage = perc_run_traffic_light.GetValue(actor_id);
399 }
400
401 return percentage; // 返回红绿灯违规的百分比
402}
403
404float Parameters::GetPercentageRunningSign(const ActorId &actor_id) const {
405 // 初始化交通标志违规的百分比
406 float percentage = 0.0f;
407
408 // 如果参与者的交通标志违规百分比存在,获取其值
409 if (perc_run_traffic_sign.Contains(actor_id)) {
410 percentage = perc_run_traffic_sign.GetValue(actor_id);
411 }
412
413 return percentage; // 返回交通标志违规的百分比
414}
415
417 // 初始化忽略行人的百分比
418 float percentage = 0.0f;
419
420 // 如果参与者的忽略行人百分比存在,获取其值
421 if (perc_ignore_walkers.Contains(actor_id)) {
422 percentage = perc_ignore_walkers.GetValue(actor_id);
423 }
424
425 return percentage; // 返回忽略行人的百分比
426}
427
428bool Parameters::GetUpdateVehicleLights(const ActorId &actor_id) const {
429 // 默认更新车辆灯光为假
430 bool do_update = false;
431
432 // 如果参与者的灯光更新设置存在,获取其值
433 if (auto_update_vehicle_lights.Contains(actor_id)) {
434 do_update = auto_update_vehicle_lights.GetValue(actor_id);
435 }
436
437 return do_update; // 返回灯光更新设置
438}
439
441 // 初始化忽略其他车辆的百分比
442 float percentage = 0.0f;
443
444 // 如果参与者的忽略车辆百分比存在,获取其值
445 if (perc_ignore_vehicles.Contains(actor_id)) {
446 percentage = perc_ignore_vehicles.GetValue(actor_id);
447 }
448
449 return percentage; // 返回忽略车辆的百分比
450}
451
453 // 返回混合物理模式的状态
454 return hybrid_physics_mode.load();
455}
456
458 // 返回是否重新生成休眠车辆的设置
459 return respawn_dormant_vehicles.load();
460}
461
463 // 返回休眠车辆重新生成的下边界值
464 return respawn_lower_bound.load();
465}
466
468 // 返回休眠车辆重新生成的上边界值
469 return respawn_upper_bound.load();
470}
471
473 // 返回是否启用OSM模式的设置
474 return osm_mode.load();
475}
476
477bool Parameters::GetUploadPath(const ActorId &actor_id) const {
478 // 初始化自定义路径标志
479 bool custom_path_bool = false;
480
481 // 如果参与者有自定义上传路径,获取其值
482 if (upload_path.Contains(actor_id)) {
483 custom_path_bool = upload_path.GetValue(actor_id);
484 }
485
486 return custom_path_bool; // 返回自定义路径标志
487}
488
489Path Parameters::GetCustomPath(const ActorId &actor_id) const {
490 // 初始化自定义路径
491 Path custom_path_import;
492
493 // 如果参与者有自定义路径,获取其值
494 if (custom_path.Contains(actor_id)) {
495 custom_path_import = custom_path.GetValue(actor_id);
496 }
497
498 return custom_path_import; // 返回自定义路径
499}
500
501bool Parameters::GetUploadRoute(const ActorId &actor_id) const {
502 // 初始化自定义路线标志
503 bool custom_route_bool = false;
504
505 // 如果参与者有自定义上传路线,获取其值
506 if (upload_route.Contains(actor_id)) {
507 custom_route_bool = upload_route.GetValue(actor_id);
508 }
509
510 return custom_route_bool; // 返回自定义路线标志
511}
512
514 // 初始化自定义路线
515 Route custom_route_import;
516
517 // 如果参与者有自定义路线,获取其值
518 if (custom_route.Contains(actor_id)) {
519 custom_route_import = custom_route.GetValue(actor_id);
520 }
521
522 return custom_route_import; // 返回自定义路线
523}
524
525
526} // namespace traffic_manager
527} // namespace carla
void RemoveEntry(const Key &key)
从映射中移除指定的键及其对应的值。
Definition AtomicMap.h:91
const Value & GetValue(const Key &key) const
获取指定键的值。
Definition AtomicMap.h:81
bool Contains(const Key &key) const
检查映射是否包含指定的键。
Definition AtomicMap.h:70
void AddEntry(const std::pair< Key, Value > &entry)
添加或更新键值对。
Definition AtomicMap.h:54
float GetRandomLeftLaneChangePercentage(const ActorId &actor_id)
查询车辆随机右变道百分比概率的方法
std::atomic< float > respawn_lower_bound
相对于主角车辆的最小重生距离
Definition Parameters.h:83
float GetPercentageIgnoreWalkers(const ActorId &actor_id) const
获取百分比以忽略任何步行者的方法
AtomicMap< ActorId, ChangeLaneInfo > force_lane_change
强制换道命令映射
Definition Parameters.h:55
ChangeLaneInfo GetForceLaneChange(const ActorId &actor_id)
查询车辆变道指令的方法
AtomicMap< ActorId, bool > auto_lane_change
自动换道命令映射
Definition Parameters.h:57
float GetLaneOffset(const ActorId &actor_id) const
查询车辆车道偏移量的方法
AtomicMap< ActorId, bool > upload_path
是否导入自定义路径的参数映射
Definition Parameters.h:95
void SetLaneOffset(const ActorPtr &actor, const float offset)
设置车道偏移量,从中心线开始的位移 正值表示向右偏移,负值表示向左偏移
float GetDistanceToLeadingVehicle(const ActorId &actor_id) const
查询给定车辆与前方车辆之间距离的方法
void SetImportedRoute(const ActorPtr &actor, const Route route, const bool empty_buffer)
设置自定义路线的方法
bool GetCollisionDetection(const ActorId &reference_actor_id, const ActorId &other_actor_id) const
查询一对车辆之间避碰规则的方法
void SetHybridPhysicsRadius(const float radius)
设置混合物理半径的方法
Route GetImportedRoute(const ActorId &actor_id) const
获取自定义路由的方法
float global_lane_offset
全局车道偏移
Definition Parameters.h:49
float global_percentage_difference_from_limit
全局目标速度限制差异百分比
Definition Parameters.h:47
std::atomic< bool > synchronous_mode
同步开关
Definition Parameters.h:75
double GetSynchronousModeTimeOutInMiliSecond() const
获取同步模式超时
std::atomic< float > distance_margin
距离边距
Definition Parameters.h:77
std::chrono::duration< double, std::milli > synchronous_time_out
同步模式超时变量
Definition Parameters.h:296
std::atomic< float > hybrid_physics_radius
混合物理半径
Definition Parameters.h:91
bool GetUploadRoute(const ActorId &actor_id) const
获取是否正在上传路线的方法
void UpdateUploadPath(const ActorId &actor_id, const Path path)
更新已设置的点列表的方法
float GetKeepRightPercentage(const ActorId &actor_id)
查询车辆保持右侧规则的百分比概率的方法
bool GetOSMMode() const
获取Open Street Map模式的方法
void SetRandomLeftLaneChangePercentage(const ActorPtr &actor, const float percentage)
设置随机向左换道的概率的方法
void SetGlobalDistanceToLeadingVehicle(const float dist)
设置所有注册车辆应保持与前车的距离的方法
AtomicMap< ActorId, float > perc_random_left
随机左换道百分比映射
Definition Parameters.h:69
AtomicMap< ActorId, float > perc_keep_right
靠右行驶规则百分比映射
Definition Parameters.h:67
AtomicMap< ActorId, float > perc_ignore_walkers
忽略行人百分比映射
Definition Parameters.h:63
float GetHybridPhysicsRadius() const
获取混合物理半径的方法
void UpdateImportedRoute(const ActorId &actor_id, const Route route)
更新已设置路线的方法
float GetVehicleTargetVelocity(const ActorId &actor_id, const float speed_limit) const
查询车辆目标速度的方法
void SetGlobalLaneOffset(float const offset)
设置全局车道偏移量,从中心线开始的位移 正值表示向右偏移,负值表示向左偏移
AtomicMap< ActorId, float > exact_desired_speed
基于期望速度的单个车辆目标速度映射
Definition Parameters.h:45
AtomicMap< ActorId, bool > upload_route
是否导入自定义路线的参数映射
Definition Parameters.h:99
bool GetUploadPath(const ActorId &actor_id) const
获取是否正在上传路径的方法
float min_lower_bound
相对于主角车辆的最小可能重生距离
Definition Parameters.h:87
void SetDistanceToLeadingVehicle(const ActorPtr &actor, const float distance)
设置车辆应保持与前车距离的方法
float GetUpperBoundaryRespawnDormantVehicles() const
获取车辆重生时与英雄车辆之间最大距离的方法
float GetRandomRightLaneChangePercentage(const ActorId &actor_id)
查询车辆随机向左变道百分比概率的方法
void SetForceLaneChange(const ActorPtr &actor, const bool direction)
强制车辆换道的方法 方向标志可以设置为true表示向左,false表示向右
AtomicMap< ActorId, float > perc_run_traffic_light
闯交通信号灯百分比映射
Definition Parameters.h:59
float GetLowerBoundaryRespawnDormantVehicles() const
获取车辆重生时与英雄车辆之间最小距离的方法
void SetPercentageRunningSign(const ActorPtr &actor, const float perc)
设置无视交通标志的概率的方法
void SetCustomPath(const ActorPtr &actor, const Path path, const bool empty_buffer)
设置自定义路径的方法
std::atomic< bool > hybrid_physics_mode
混合物理模式开关
Definition Parameters.h:79
void RemoveImportedRoute(const ActorId &actor_id, const bool remove_path)
移除路线的方法
bool GetAutoLaneChange(const ActorId &actor_id) const
查询车辆自动变道规则的方法
void SetPercentageIgnoreVehicles(const ActorPtr &actor, const float perc)
设置无视其他车辆的概率的方法
void SetKeepRightPercentage(const ActorPtr &actor, const float percentage)
设置强制靠右行驶的概率的方法
void SetMaxBoundaries(const float lower, const float upper)
设置重生休眠车辆时的边界限制的方法
void SetSynchronousModeTimeOutInMiliSecond(const double time)
设置同步模式超时时间
void SetHybridPhysicsMode(const bool mode_switch)
设置混合物理模式的方法
AtomicMap< ActorId, float > perc_random_right
随机右换道百分比映射
Definition Parameters.h:71
float GetPercentageRunningSign(const ActorId &actor_id) const
获取百分比以运行任何交通灯的方法
void SetCollisionDetection(const ActorPtr &reference_actor, const ActorPtr &other_actor, const bool detect_collision)
设置车辆之间的碰撞检测规则的方法
bool GetRespawnDormantVehicles() const
获取是否自动重生载具的方法
AtomicMap< ActorId, std::shared_ptr< AtomicActorSet > > ignore_collision
在碰撞检测期间要忽略的演员集合映射
Definition Parameters.h:51
void SetPercentageRunningLight(const ActorPtr &actor, const float perc)
设置无视交通信号灯的概率的方法
AtomicMap< ActorId, float > perc_run_traffic_sign
闯交通标志百分比映射
Definition Parameters.h:61
void SetRespawnDormantVehicles(const bool mode_switch)
设置是否自动重生休眠车辆的方法
std::atomic< bool > osm_mode
Open Street Map模式参数
Definition Parameters.h:93
Path GetCustomPath(const ActorId &actor_id) const
获取自定义路径的方法
void SetAutoLaneChange(const ActorPtr &actor, const bool enable)
启用/禁用车辆的自动换道功能
AtomicMap< ActorId, float > distance_to_leading_vehicle
到前导车辆的距离映射
Definition Parameters.h:53
float GetPercentageIgnoreVehicles(const ActorId &actor_id) const
方法获取百分比以忽略任何车辆
void SetDesiredSpeed(const ActorPtr &actor, const float value)
设置车辆的精确期望速度
void RemoveUploadPath(const ActorId &actor_id, const bool remove_path)
移除一组点的方法
bool GetSynchronousMode() const
获取同步模式的方法
void SetGlobalPercentageSpeedDifference(float const percentage)
设置全局相对于速度限制的速度降低百分比 如果小于0,则表示速度增加百分比
std::atomic< bool > respawn_dormant_vehicles
自动重生模式开关
Definition Parameters.h:81
AtomicMap< ActorId, float > lane_offset
单个车辆的车道偏移映射
Definition Parameters.h:43
void SetPercentageIgnoreWalkers(const ActorPtr &actor, const float perc)
设置无视其他车辆的概率的方法
float GetPercentageRunningLight(const ActorId &actor_id) const
获取百分比以运行任何交通灯的方法
void SetBoundariesRespawnDormantVehicles(const float lower_bound, const float upper_bound)
设置重生休眠车辆的边界的方法
bool GetUpdateVehicleLights(const ActorId &actor_id) const
获取车辆灯光是否应自动更新的方法
void SetRandomRightLaneChangePercentage(const ActorPtr &actor, const float percentage)
设置随机向右换道的概率的方法
void SetPercentageSpeedDifference(const ActorPtr &actor, const float percentage)
设置车辆相对于速度限制的速度降低百分比 如果小于0,则表示速度增加百分比
AtomicMap< ActorId, bool > auto_update_vehicle_lights
车辆灯光自动更新标志映射
Definition Parameters.h:73
std::atomic< float > respawn_upper_bound
相对于主角车辆的最大重生距离
Definition Parameters.h:85
AtomicMap< ActorId, Route > custom_route
存储所有自定义路线的结构
Definition Parameters.h:101
AtomicMap< ActorId, float > perc_ignore_vehicles
忽略车辆百分比映射
Definition Parameters.h:65
AtomicMap< ActorId, float > percentage_difference_from_speed_limit
基于速度限制差异的单个车辆目标速度映射
Definition Parameters.h:41
void SetOSMMode(const bool mode_switch)
设置Open Street Map模式的方法
AtomicMap< ActorId, Path > custom_path
存储所有自定义路径的结构
Definition Parameters.h:97
bool GetHybridPhysicsMode() const
获取混合物理模式的方法
void SetSynchronousMode(const bool mode_switch=true)
设置同步模式的方法
void SetUpdateVehicleLights(const ActorPtr &actor, const bool do_update)
设置是否自动更新车辆灯光状态的方法
float max_upper_bound
相对于主角车辆的最大可能重生距离
Definition Parameters.h:89
carla::SharedPtr< cc::Actor > ActorPtr
使用别名简化代码中的命名
std::vector< uint8_t > Route
路线类型,由一系列地理位置组成
std::vector< cg::Location > Path
参与者的唯一标识符类型
carla::ActorId ActorId
参与者的智能指针类型
CARLA模拟器的主命名空间。
Definition Carla.cpp:139
路线类型,由一系列字节组成,表示路线信息
Definition Parameters.h:32