27#include <rpc/config.h>
28#include <rpc/rpc_error.h>
42 if ((ptr !=
nullptr) && ptr->IsAlive()) {
47 }
catch (const ::rpc::timeout &timeout) {
51 "timeout while trying to garbage collect Actor",
53 "actor hasn't been removed from the simulation");
54 }
catch (
const std::exception &e) {
57 "exception thrown while trying to garbage collect Actor",
64 "unknown exception thrown while trying to garbage collect an Actor :",
74 template <
typename ActorT>
95 if (description.
description.
id ==
"sensor.other.lane_invasion") {
97 return MakeActorImpl<LaneInvasionSensor>(std::move(init), gc);
99 }
else if (description.
description.
id ==
"sensor.other.rss") {
100 return MakeActorImpl<RssSensor>(std::move(init), gc);
104 return MakeActorImpl<ServerSideSensor>(std::move(init), gc);
106 return MakeActorImpl<Vehicle>(std::move(init), gc);
108 return MakeActorImpl<Walker>(std::move(init), gc);
110 return MakeActorImpl<TrafficLight>(std::move(init), gc);
112 return MakeActorImpl<TrafficSign>(std::move(init), gc);
113 }
else if (description.
description.
id ==
"controller.ai.walker") {
114 return MakeActorImpl<WalkerAIController>(std::move(init), gc);
116 return MakeActorImpl<Actor>(std::move(init), gc);
#define DEBUG_ASSERT(predicate)
包含LaneInvasionSensor类的声明,这是一个继承自ClientSideSensor的类,用于检测车辆压线。
static bool StartsWith(const Range1T &input, const Range2T &test)
用于初始化 Actor 类。只有 ActorFactory 可以创建此对象,因此只有 ActorFactory 可以创建 Actor。
static SharedPtr< Actor > MakeActor(EpisodeProxy episode, rpc::Actor actor_description, GarbageCollectionPolicy garbage_collection_policy)
基于提供的 actor_description 创建一个参与者。episode 必须指向该参与者所在的章节(或者说区域)
ActorDescription description
static auto MakeActorImpl(ActorInitializer init, GarbageCollectionPolicy gc)
static void log_error(Args &&... args)
boost::shared_ptr< T > SharedPtr
使用这个SharedPtr(boost::shared_ptr)以保持与boost::python的兼容性, 但未来如果可能的话,我们希望能为std::shared_ptr制作一个Python适配器。
static void log_critical(Args &&... args)
void operator()(::carla::client::Actor *ptr) const noexcept