11namespace traffic_manager {
42 float new_percentage = std::min(100.0f, percentage);
50 const auto entry = std::make_pair(actor->GetId(), offset);
55 float new_value = std::max(0.0f, value);
63 float new_percentage = std::min(100.0f, percentage);
72 const ActorId reference_id = reference_actor->GetId();
73 const ActorId other_id = other_actor->GetId();
75 if (detect_collision) {
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});
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});
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);
99 const auto entry = std::make_pair(actor->GetId(), lane_change_info);
104 const auto entry = std::make_pair(actor->GetId(), percentage);
109 const auto entry = std::make_pair(actor->GetId(), percentage);
114 const auto entry = std::make_pair(actor->GetId(), percentage);
120 const auto entry = std::make_pair(actor->GetId(), do_update);
128 const auto entry = std::make_pair(actor->GetId(), enable);
136 float new_distance = std::max(0.0f, distance);
138 const auto entry = std::make_pair(actor->GetId(), new_distance);
161 float new_perc = cg::Math::Clamp(perc, 0.0f, 100.0f);
163 const auto entry = std::make_pair(actor->GetId(), new_perc);
171 float new_perc = cg::Math::Clamp(perc, 0.0f, 100.0f);
172 const auto entry = std::make_pair(actor->GetId(), new_perc);
178 float new_perc = cg::Math::Clamp(perc, 0.0f, 100.0f);
179 const auto entry = std::make_pair(actor->GetId(), new_perc);
185 float new_perc = cg::Math::Clamp(perc, 0.0f, 100.0f);
186 const auto entry = std::make_pair(actor->GetId(), new_perc);
192 float new_radius = std::max(radius, 0.0f);
204 const auto entry = std::make_pair(actor->GetId(), path);
207 const auto entry2 = std::make_pair(actor->GetId(), empty_buffer);
225 const auto entry = std::make_pair(actor_id, path);
232 const auto entry = std::make_pair(actor->GetId(), route);
234 const auto entry2 = std::make_pair(actor->GetId(), empty_buffer);
251 const auto entry = std::make_pair(actor_id, route);
287 return speed_limit * (1.0f - percentage_difference / 100.0f);
304 bool avoid_collision =
true;
309 avoid_collision =
false;
312 return avoid_collision;
327 return change_lane_info;
332 float percentage = -1.0f;
344 float percentage = -1.0f;
356 float percentage = -1.0f;
368 bool auto_lane_change_policy =
true;
375 return auto_lane_change_policy;
380 float specific_distance_margin = 0.0f;
389 return specific_distance_margin;
394 float percentage = 0.0f;
406 float percentage = 0.0f;
418 float percentage = 0.0f;
430 bool do_update =
false;
442 float percentage = 0.0f;
479 bool custom_path_bool =
false;
486 return custom_path_bool;
491 Path custom_path_import;
498 return custom_path_import;
503 bool custom_route_bool =
false;
510 return custom_route_bool;
515 Route custom_route_import;
522 return custom_route_import;
void RemoveEntry(const Key &key)
从映射中移除指定的键及其对应的值。
const Value & GetValue(const Key &key) const
获取指定键的值。
bool Contains(const Key &key) const
检查映射是否包含指定的键。
void AddEntry(const std::pair< Key, Value > &entry)
添加或更新键值对。
float GetRandomLeftLaneChangePercentage(const ActorId &actor_id)
查询车辆随机右变道百分比概率的方法
std::atomic< float > respawn_lower_bound
相对于主角车辆的最小重生距离
float GetPercentageIgnoreWalkers(const ActorId &actor_id) const
获取百分比以忽略任何步行者的方法
AtomicMap< ActorId, ChangeLaneInfo > force_lane_change
强制换道命令映射
ChangeLaneInfo GetForceLaneChange(const ActorId &actor_id)
查询车辆变道指令的方法
AtomicMap< ActorId, bool > auto_lane_change
自动换道命令映射
float GetLaneOffset(const ActorId &actor_id) const
查询车辆车道偏移量的方法
AtomicMap< ActorId, bool > upload_path
是否导入自定义路径的参数映射
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
全局车道偏移
float global_percentage_difference_from_limit
全局目标速度限制差异百分比
std::atomic< bool > synchronous_mode
同步开关
double GetSynchronousModeTimeOutInMiliSecond() const
获取同步模式超时
std::atomic< float > distance_margin
距离边距
std::chrono::duration< double, std::milli > synchronous_time_out
同步模式超时变量
std::atomic< float > hybrid_physics_radius
混合物理半径
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
随机左换道百分比映射
AtomicMap< ActorId, float > perc_keep_right
靠右行驶规则百分比映射
AtomicMap< ActorId, float > perc_ignore_walkers
忽略行人百分比映射
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
基于期望速度的单个车辆目标速度映射
AtomicMap< ActorId, bool > upload_route
是否导入自定义路线的参数映射
bool GetUploadPath(const ActorId &actor_id) const
获取是否正在上传路径的方法
float min_lower_bound
相对于主角车辆的最小可能重生距离
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
闯交通信号灯百分比映射
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
混合物理模式开关
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
随机右换道百分比映射
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
在碰撞检测期间要忽略的演员集合映射
void SetPercentageRunningLight(const ActorPtr &actor, const float perc)
设置无视交通信号灯的概率的方法
AtomicMap< ActorId, float > perc_run_traffic_sign
闯交通标志百分比映射
void SetRespawnDormantVehicles(const bool mode_switch)
设置是否自动重生休眠车辆的方法
std::atomic< bool > osm_mode
Open Street Map模式参数
Path GetCustomPath(const ActorId &actor_id) const
获取自定义路径的方法
void SetAutoLaneChange(const ActorPtr &actor, const bool enable)
启用/禁用车辆的自动换道功能
AtomicMap< ActorId, float > distance_to_leading_vehicle
到前导车辆的距离映射
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
自动重生模式开关
AtomicMap< ActorId, float > lane_offset
单个车辆的车道偏移映射
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
车辆灯光自动更新标志映射
std::atomic< float > respawn_upper_bound
相对于主角车辆的最大重生距离
AtomicMap< ActorId, Route > custom_route
存储所有自定义路线的结构
AtomicMap< ActorId, float > perc_ignore_vehicles
忽略车辆百分比映射
AtomicMap< ActorId, float > percentage_difference_from_speed_limit
基于速度限制差异的单个车辆目标速度映射
void SetOSMMode(const bool mode_switch)
设置Open Street Map模式的方法
AtomicMap< ActorId, Path > custom_path
存储所有自定义路径的结构
bool GetHybridPhysicsMode() const
获取混合物理模式的方法
void SetSynchronousMode(const bool mode_switch=true)
设置同步模式的方法
void SetUpdateVehicleLights(const ActorPtr &actor, const bool do_update)
设置是否自动更新车辆灯光状态的方法
float max_upper_bound
相对于主角车辆的最大可能重生距离
carla::SharedPtr< cc::Actor > ActorPtr
使用别名简化代码中的命名
std::vector< uint8_t > Route
路线类型,由一系列地理位置组成
std::vector< cg::Location > Path
参与者的唯一标识符类型
carla::ActorId ActorId
参与者的智能指针类型