18namespace traffic_manager {
34 uint16_t port = TM_DEFAULT_PORT);
63 return (
_port > 1023);
70 if (tm_ptr !=
nullptr) {
81 if (tm_ptr !=
nullptr) {
91 if (tm_ptr !=
nullptr) {
101 if (tm_ptr !=
nullptr) {
112 if (tm_ptr !=
nullptr) {
122 if (tm_ptr !=
nullptr) {
132 if (tm_ptr !=
nullptr) {
141 if (tm_ptr !=
nullptr) {
150 if (tm_ptr !=
nullptr) {
161 if (tm_ptr !=
nullptr) {
171 if(tm_ptr !=
nullptr){
181 if(tm_ptr !=
nullptr){
191 if(tm_ptr !=
nullptr){
201 if(tm_ptr !=
nullptr){
212 if(tm_ptr !=
nullptr){
223 if(tm_ptr !=
nullptr){
234 if(tm_ptr !=
nullptr){
244 if(tm_ptr !=
nullptr){
253 if(tm_ptr !=
nullptr){
261 if(tm_ptr !=
nullptr){
269 if(tm_ptr !=
nullptr){
278 if(tm_ptr !=
nullptr){
286 if(tm_ptr !=
nullptr){
294 if(tm_ptr !=
nullptr){
304 if(tm_ptr !=
nullptr){
314 if(tm_ptr !=
nullptr){
324 if(tm_ptr !=
nullptr){
334 if(tm_ptr !=
nullptr){
343 if(tm_ptr !=
nullptr){
352 if(tm_ptr !=
nullptr){
361 if(tm_ptr !=
nullptr){
371 if(tm_ptr !=
nullptr){
381 if(tm_ptr !=
nullptr){
391 if(tm_ptr !=
nullptr){
401 if(tm_ptr !=
nullptr){
410 if(tm_ptr !=
nullptr){
423 if (tm_ptr !=
nullptr) {
436 if (tm_ptr !=
nullptr) {
438 return action_buffer;
440 return action_buffer;
462 std::lock_guard<std::mutex> lock(
_mutex);
471 static std::map<uint16_t, TrafficManagerBase*>
_tm_map;
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 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
设置范围限制。
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 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 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,则表示百分比增加。
该类通过使用消息传递机制,将交通管理器的各个阶段恰当地整合在一起
static std::map< uint16_t, TrafficManagerBase * > _tm_map
存储交通管理器实例的静态映射表。
void SetRandomLeftLaneChangePercentage(const ActorPtr &actor, const float percentage)
设置车辆随机进行左侧车道变换的百分比。
Action GetNextAction(const ActorId &actor_id)
获取指定参与者的下一个动作。
void SetCollisionDetection(const ActorPtr &reference_actor, const ActorPtr &other_actor, const bool detect_collision)
设置车辆之间的碰撞检测规则
void SetImportedRoute(const ActorPtr &actor, const Route route, const bool empty_buffer)
设置导入的路线。
void SetPercentageRunningSign(const ActorPtr &actor, const float perc)
设置无视交通标志的概率。
bool SynchronousTick()
执行同步滴答。
uint16_t Port() const
获取当前端口号。
void ShutDown()
关闭交通管理器服务或客户端。
void SetLaneOffset(const ActorPtr &actor, const float offset)
设置车辆相对于车道中心线的偏移量。
void RemoveImportedRoute(const ActorId &actor_id, const bool remove_path)
移除路线。
void SetKeepRightPercentage(const ActorPtr &actor, const float percentage)
设置车辆保持在右侧车道的百分比。
void UnregisterVehicles(const std::vector< ActorPtr > &actor_list)
从交通管理器注销车辆。
void SetGlobalLaneOffset(float const offset)
设置全局车道偏移量,相对于中心线的位移。
void SetGlobalPercentageSpeedDifference(float const percentage)
设置全局速度百分比差异。
void SetHybridPhysicsMode(const bool mode_switch)
设置混合物理模式。
void UpdateImportedRoute(const ActorId &actor_id, const Route route)
更新已设置的路线。
TrafficManager(TrafficManager &&)=default
移动构造函数,用于移动另一个TrafficManager对象
static std::mutex _mutex
用于保护_tm_map的静态互斥锁。
void SetMaxBoundaries(const float lower, const float upper)
设置重生车辆的边界。
void SetSynchronousMode(bool mode)
将交通管理器切换为同步执行模式。
void SetPercentageIgnoreWalkers(const ActorPtr &actor, const float perc)
设置忽略行人的碰撞概率。
void RemoveUploadPath(const ActorId &actor_id, const bool remove_path)
移除路径。
TrafficManager & operator=(TrafficManager &&)=default
移动赋值运算符,用于将另一个TrafficManager对象移动赋值给当前对象
void SetPercentageRunningLight(const ActorPtr &actor, const float perc)
设置无视交通信号灯的概率。
void SetBoundariesRespawnDormantVehicles(const float lower_bound, const float upper_bound)
设置重生车辆的范围边界。
TrafficManagerBase * GetTM(uint16_t port) const
根据端口号获取交通管理器实例。
bool IsValidPort() const
检查端口号是否有效。
void SetCustomPath(const ActorPtr &actor, const Path path, const bool empty_buffer)
设置自定义路径。
void SetUpdateVehicleLights(const ActorPtr &actor, const bool do_update)
设置车辆灯光的自动管理
void SetRandomDeviceSeed(const uint64_t seed)
设置随机数生成器的种子。
void SetGlobalDistanceToLeadingVehicle(const float distance)
设置全局的前车距离。
void SetPercentageIgnoreVehicles(const ActorPtr &actor, const float perc)
设置忽略车辆的碰撞概率。
void SetDistanceToLeadingVehicle(const ActorPtr &actor, const float distance)
设置车辆与前车应保持的距离。
void SetAutoLaneChange(const ActorPtr &actor, const bool enable)
启用/禁用车辆的自动换道功能。
ActionBuffer GetActionBuffer(const ActorId &actor_id)
获取指定参与者的动作缓冲区。
TrafficManager(const TrafficManager &other)
拷贝构造函数,用于复制另一个TrafficManager对象。
TrafficManager()
默认构造函数,不执行任何操作。
void SetHybridPhysicsRadius(const float radius)
设置混合物理半径。
static void Tick()
执行TrafficManager的Tick操作,通常用于周期性地更新状态
void UpdateUploadPath(const ActorId &actor_id, const Path path)
更新已设置的路径。
static void Release()
释放TrafficManager对象,用于单例模式的清理工作
void SetRespawnDormantVehicles(const bool mode_switch)
设置是否自动重生车辆。
void SetForceLaneChange(const ActorPtr &actor, const bool direction)
强制车辆换道。
void SetPercentageSpeedDifference(const ActorPtr &actor, const float percentage)
设置车辆相对于限速的速度百分比差异。
void CreateTrafficManagerServer(carla::client::detail::EpisodeProxy episode_proxy, uint16_t port)
创建交通管理器服务器。
void RegisterVehicles(const std::vector< ActorPtr > &actor_list)
向交通管理器注册车辆。
bool CreateTrafficManagerClient(carla::client::detail::EpisodeProxy episode_proxy, uint16_t port)
创建交通管理器客户端。
TrafficManager & operator=(const TrafficManager &)=default
拷贝赋值运算符,用于将另一个TrafficManager对象赋值给当前对象
static void Reset()
重置TrafficManager对象,用于单例模式的重置操作
uint16_t _port
当前交通管理器实例使用的端口号。
void SetDesiredSpeed(const ActorPtr &actor, const float value)
设置车辆的期望速度。
void SetOSMMode(const bool mode_switch)
设置Open Street Map模式。
void SetSynchronousModeTimeOutInMiliSecond(double time)
设置同步执行模式的滴答超时时间(以毫秒为单位)。
void SetRandomRightLaneChangePercentage(const ActorPtr &actor, const float percentage)
设置车辆随机进行右侧车道变换的百分比。
static const unsigned short TM_DEFAULT_PORT
carla::SharedPtr< cc::Actor > ActorPtr
使用别名简化代码中的命名
std::vector< uint8_t > Route
路线类型,由一系列地理位置组成
std::vector< cg::Location > Path
参与者的唯一标识符类型
std::vector< Action > ActionBuffer
动作缓冲区类型别名。
std::pair< RoadOption, WaypointPtr > Action
动作类型别名。
carla::ActorId ActorId
参与者的智能指针类型
boost::shared_ptr< T > SharedPtr
使用这个SharedPtr(boost::shared_ptr)以保持与boost::python的兼容性, 但未来如果可能的话,我们希望能为std::shared_ptr制作一个Python适配器。