9#include <condition_variable>
24namespace traffic_manager {
37using Path = std::vector<cg::Location>;
44using Route = std::vector<uint8_t>;
429 std::condition_variable
_cv;
提供与TrafficManagerServer的RPC通信功能。
远程交通管理器类,通过消息传递机制整合交通管理的各个阶段。
void SetPercentageIgnoreVehicles(const ActorPtr &actor, const float perc)
设置车辆忽略其他车辆碰撞的百分比概率。
carla::client::detail::EpisodeProxy & GetEpisodeProxy()
获取CARLA回合信息。
void SetUpdateVehicleLights(const ActorPtr &actor, const bool do_update)
设置车辆灯光的自动管理功能。
void SetGlobalPercentageSpeedDifference(float const percentage)
设置全局速度相对于限速的百分比减少量。
void RemoveUploadPath(const ActorId &actor_id, const bool remove_path)
移除路径。
carla::client::detail::EpisodeProxy episodeProxyTM
CARLA客户端连接对象。
void SetCollisionDetection(const ActorPtr &reference_actor, const ActorPtr &other_actor, const bool detect_collision)
设置车辆之间的碰撞检测规则。
void SetKeepRightPercentage(const ActorPtr &actor, const float percentage)
设置车辆保持在右侧车道的百分比概率。
bool SynchronousTick()
提供同步Tick。
void UpdateUploadPath(const ActorId &actor_id, const Path path)
更新已设置的路径。
void SetGlobalLaneOffset(float const offset)
设置全局车道偏移量,相对于车道中心线。
void UnregisterVehicles(const std::vector< ActorPtr > &actor_list)
从交通管理器注销车辆。
std::condition_variable _cv
条件变量,用于线程同步。
void SetHybridPhysicsMode(const bool mode_switch)
设置混合物理模式。
void RemoveImportedRoute(const ActorId &actor_id, const bool remove_path)
移除路线。
void RegisterVehicles(const std::vector< ActorPtr > &actor_list)
注册车辆到交通管理器。
void SetCustomPath(const ActorPtr &actor, const Path path, const bool empty_buffer)
设置自定义路径。
void SetDesiredSpeed(const ActorPtr &actor, const float value)
设置车辆的精确期望速度。
void SetLaneOffset(const ActorPtr &actor, const float offset)
设置车辆相对于车道中心线的偏移量。
void SetOSMMode(const bool mode_switch)
设置Open Street Map(OSM)模式。
void SetRandomDeviceSeed(const uint64_t seed)
设置随机化种子。
void UpdateImportedRoute(const ActorId &actor_id, const Route route)
更新已设置的路线。
void SetGlobalDistanceToLeadingVehicle(const float distance)
设置全局前车距离。
void SetRandomRightLaneChangePercentage(const ActorPtr &actor, const float percentage)
设置车辆随机进行右车道变换的百分比概率。
virtual ~TrafficManagerRemote()
析构函数。
std::mutex _mutex
互斥锁,用于保护共享资源。
void SetRespawnDormantVehicles(const bool mode_switch)
设置自动重生休眠车辆的模式。
TrafficManagerClient client
远程客户端,使用IP和端口信息连接到远程RPC交通管理器服务器。
void SetAutoLaneChange(const ActorPtr &actor, const bool enable)
启用/禁用车辆的自动换道功能。
void SetBoundariesRespawnDormantVehicles(const float lower_bound, const float upper_bound)
设置休眠车辆重生的边界。
void SetImportedRoute(const ActorPtr &actor, const Route route, const bool empty_buffer)
设置自定义路线。
void SetPercentageIgnoreWalkers(const ActorPtr &actor, const float perc)
设置车辆忽略行人碰撞的百分比概率。
Action GetNextAction(const ActorId &actor_id)
获取车辆的下一个动作。
void SetPercentageRunningLight(const ActorPtr &actor, const float perc)
设置车辆无视交通信号灯的概率百分比。
void SetSynchronousModeTimeOutInMiliSecond(double time)
设置同步执行模式的Tick超时时间(毫秒)。
ActionBuffer GetActionBuffer(const ActorId &actor_id)
获取车辆的动作缓冲区。
bool _keep_alive
保持活动状态标志。
void SetRandomLeftLaneChangePercentage(const ActorPtr &actor, const float percentage)
设置车辆随机进行左车道变换的百分比概率。
void SetPercentageSpeedDifference(const ActorPtr &actor, const float percentage)
设置车辆相对于限速的速度差异百分比。
TrafficManagerRemote(const std::pair< std::string, uint16_t > &_serverTM, carla::client::detail::EpisodeProxy &episodeProxy)
构造函数,存储远程服务器的位置信息。
void SetDistanceToLeadingVehicle(const ActorPtr &actor, const float distance)
设置车辆与前车应保持的距离。
void HealthCheckRemoteTM()
检查服务器是否存活。
void SetPercentageRunningSign(const ActorPtr &actor, const float perc)
设置车辆无视交通标志的概率百分比。
virtual void ShutDown()
关闭交通管理器。
void SetSynchronousMode(bool mode)
切换交通管理器为同步执行模式。
void SetForceLaneChange(const ActorPtr &actor, const bool direction)
强制车辆进行换道。
void SetHybridPhysicsRadius(const float radius)
设置混合物理模式的半径。
void SetMaxBoundaries(const float lower, const float upper)
设置最大的重生边界。
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适配器。