CARLA
载入中...
搜索中...
未找到
LibCarla
source
carla
rss
LibCarla/source/carla/rss/RssSensor.h
浏览该文件的文档.
1
// Copyright (c) 2019-2020 Intel Corporation
2
//
3
// This work is licensed under the terms of the MIT license.
4
// For a copy, see <https://opensource.org/licenses/MIT>.
5
6
#pragma once
7
8
#include <atomic>
9
#include <future>
10
#include <list>
11
#include <memory>
12
#include <mutex>
13
#include <vector>
14
#include "
carla/client/Sensor.h
"
15
16
namespace
ad
{
17
// 命名空间ad的定义
18
namespace
rss {
19
// 命名空间rss的定义,位于ad命名空间内
20
namespace
world {
21
// 命名空间world的定义,位于rss命名空间内
22
23
/// forward declaration of the RssDynamics struct
24
struct
RssDynamics;
25
26
}
// namespace world
27
}
// namespace rss
28
}
// namespace ad
29
30
namespace
carla
{
31
// carla命名空间的定义开始
32
namespace
rss {
33
// rss命名空间的定义,位于carla命名空间内
34
/// 前向声明 RoadBoundariesMode 枚举类
35
enum class
RoadBoundariesMode
;
36
/// 前向声明 RssCheck 类
37
class
RssCheck;
38
/// 前向声明 ActorConstellationResult 结构体
39
struct
ActorConstellationResult;
40
/// 前向声明 ActorConstellationData 结构体
41
struct
ActorConstellationData;
42
}
// namespace rss
43
44
namespace
client
{
45
46
/// 实现carla::client::Sensor接口的RSS传感器类
47
/// 这个类是RssCheck类的代理
48
class
RssSensor
:
public
Sensor
{
49
public
:
50
// 使用基类Sensor的构造函数
51
using
Sensor::Sensor;
52
// 定义一个函数类型,用于Actor星座(即周围物体的配置或分布)回调
53
// 该函数接收一个指向carla::rss::ActorConstellationData的智能指针,并返回一个carla::rss::ActorConstellationResult
54
using
ActorConstellationCallbackFunctionType
=
55
std::function<
::carla::rss::ActorConstellationResult
(
carla::SharedPtr<::carla::rss::ActorConstellationData>
)>;
56
57
/// @brief 构造函数
58
// 显式地使用ActorInitializer对象作为参数进行初始化 /// @brief constructor
59
explicit
RssSensor
(
ActorInitializer
init);
60
61
/// @brief 析构函数
62
// 用于RssSensor对象的清理工作
63
~RssSensor
();
64
65
/// 为每个待处理的测量中的每个行为体注册一个回调函数,以便决定RSS传感器相对于自我车辆与行为体星座的操作。
66
void
RegisterActorConstellationCallback
(
ActorConstellationCallbackFunctionType
callback);
67
68
/// 注册一个回调函数,每次接收到新的测量数据时都会执行该函数。
69
///
70
/// @警告:如果对一个已经在监听的传感器调用此函数,则会窃取之前设置的回调函数的数据流。请注意,
71
/// 模拟器中的多个Sensor实例(甚至在不同进程中)可能指向同一个传感器。
72
void
Listen
(
CallbackFunctionType
callback)
override
;
73
74
/// 停止监听新的测量数据。
75
/// 注意:为了能够等待非活动状态的回调函数,全局解释器锁(GIL)必须被解锁。
76
void
Stop
()
override
;
77
78
/// 返回此Sensor实例当前是否正在监听模拟器中的相关传感器
79
bool
IsListening
()
const override
{
80
return
_on_tick_register_id
!= 0u;
81
}
82
83
/// @brief 设置当前的日志级别
84
void
SetLogLevel
(
const
uint8_t &log_level);
85
86
/// @brief 设置当前的地图日志级别
87
void
SetMapLogLevel
(
const
uint8_t &map_log_level);
88
89
/// 返回当前自车(ego vehicle)所使用的动力学参数(@see also
90
/// RssCheck::GetEgoVehicleDynamics() 以获取更多信息)
91
const ::ad::rss::world::RssDynamics &
GetEgoVehicleDynamics
()
const
;
92
/// @brief 设置自车(ego vehicle)将要使用的动力学参数(@see
93
/// also RssCheck::SetEgoVehicleDynamics() 以获取更多信息)
94
void
SetEgoVehicleDynamics
(const ::ad::rss::world::RssDynamics &ego_dynamics);
95
96
/// 返回当前其他车辆所使用的动力学参数(@see RssCheck::GetOtherVehicleDynamics() 获取更多信息)
97
const ::ad::rss::world::RssDynamics &
GetOtherVehicleDynamics
()
const
;
98
/// @brief 设置其他车辆所使用的动力学参数(@see RssCheck::SetOtherVehicleDynamics() 获取更多信息)
99
void
SetOtherVehicleDynamics
(const ::ad::rss::world::RssDynamics &other_vehicle_dynamics);
100
101
/// 返回当前行人所使用的动力学参数(@see RssCheck::GetPedestrianDynamics() 获取更多信息)
102
const ::ad::rss::world::RssDynamics &
GetPedestrianDynamics
()
const
;
103
/// @brief 设置行人所使用的动力学参数(@see RssCheck::SetPedestrianDynamics() 获取更多信息)
104
void
SetPedestrianDynamics
(const ::ad::rss::world::RssDynamics &pedestrian_dynamics);
105
106
/// @returns 当前用于遵守道路边界的模式 (@see 同样参见 RssCheck::GetRoadBoundariesMode())
107
const ::carla::rss::RoadBoundariesMode &
GetRoadBoundariesMode
()
const
;
108
/// @brief 设置当前用于遵守道路边界的模式 (@see 同样参见 RssCheck::SetRoadBoundariesMode())
109
void
SetRoadBoundariesMode
(const ::carla::rss::RoadBoundariesMode &road_boundaries_mode);
110
111
/// @returns 当前的路由目标 (@see 同样参见 RssCheck::GetRoutingTargets())
112
const
std::vector<::carla::geom::Transform>
GetRoutingTargets
()
const
;
113
/// @brief 向当前路由目标列表追加一个路由目标 (@see 同样参见 RssCheck::AppendRoutingTarget())
114
void
AppendRoutingTarget
(const ::carla::geom::Transform &routing_target);
115
/// @brief 重置当前的路由目标 (@see 同样参见 RssCheck::ResetRoutingTargets())
116
void
ResetRoutingTargets
();
117
118
/// @brief drop the current route (@see also RssCheck::DropRoute())
119
void
DropRoute
();
120
121
private
:
122
/// 传感器滴答(tick,可以理解为周期性触发的操作)回调函数,实际执行传感器相关逻辑的函数
123
/// the acutal sensor tick callback function
124
void
TickRssSensor
(
const
client::Timestamp
×tamp,
CallbackFunctionType
callback);
125
void
TickRssSensorThreadLocked
(
const
client::Timestamp
×tamp,
SharedPtr<carla::client::ActorList>
actors,
126
CallbackFunctionType
callback);
127
// 在相关线程加锁的情况下执行传感器滴答操作的函数,传入时间戳、演员列表和回调函数等参数
128
//// the object actually performing the RSS processing
129
std::shared_ptr<::carla::rss::RssCheck>
_rss_check
;
130
// 实际执行RSS处理的对象,是一个智能指针指向RssCheck类的实例,用于进行RSS相关的核心处理逻辑
131
/// the id got when registering for the on tick event
132
std::size_t
_on_tick_register_id
;
133
/// 注册滴答事件(on tick event,周期性触发的事件)时获取的ID,用于标识该注册操作等相关用途
134
/// the mutex to protect the actual RSS processing and in case it takes too long to process ever frame
135
std::mutex
_processing_lock
;
136
/// 互斥锁,用于保护实际的RSS处理过程,防止在处理每帧数据耗时过长等情况下出现并发问题
137
/// the future for the async ticking thread
138
std::future<void>
_tick_future
;
139
/// 用于异步滴答线程的未来(future,用于异步获取线程执行结果等操作)对象
140
/// some debug timings
141
std::list<double>
_rss_check_timings
;
142
/// 一些用于调试的时间记录,可能记录RSS检查等操作的耗时情况等,以列表形式存储
143
//// the rss actor constellation callback function
144
ActorConstellationCallbackFunctionType
_rss_actor_constellation_callback
;
145
/ /RSS行为体星座(周围物体分布相关)回调函数,用于在相关场景下执行自定义的回调逻辑
146
/// reqired to store DropRoute() requests until next sensor tick
147
bool
_drop_route
;
148
/// 用于存储DropRoute()请求的标志,直到下一次传感器滴答时处理,用于控制路由丢弃相关逻辑的标记
149
/// last processed frame
150
std::size_t
_last_processed_frame
;
151
/// 上一次处理的帧编号,用于记录处理进度等相关情况
152
static
std::atomic_uint
_global_map_initialization_counter_
;
153
};
154
155
}
// namespace client
156
}
// namespace carla
Sensor.h
carla::client::ActorInitializer
用于初始化 Actor 类。只有 ActorFactory 可以创建此对象,因此只有 ActorFactory 可以创建 Actor。
Definition
client/detail/ActorState.h:92
carla::client::RssSensor
实现carla::client::Sensor接口的RSS传感器类 这个类是RssCheck类的代理
Definition
LibCarla/source/carla/rss/RssSensor.h:48
carla::client::RssSensor::_last_processed_frame
std::size_t _last_processed_frame
用于存储DropRoute()请求的标志,直到下一次传感器滴答时处理,用于控制路由丢弃相关逻辑的标记
Definition
LibCarla/source/carla/rss/RssSensor.h:150
carla::client::RssSensor::_tick_future
std::future< void > _tick_future
互斥锁,用于保护实际的RSS处理过程,防止在处理每帧数据耗时过长等情况下出现并发问题
Definition
LibCarla/source/carla/rss/RssSensor.h:138
carla::client::RssSensor::ResetRoutingTargets
void ResetRoutingTargets()
重置当前的路由目标 (
Definition
LibCarla/source/carla/rss/RssSensor.cpp:276
carla::client::RssSensor::_on_tick_register_id
std::size_t _on_tick_register_id
the id got when registering for the on tick event
Definition
LibCarla/source/carla/rss/RssSensor.h:132
carla::client::RssSensor::_drop_route
RSS行为体星座(周围物体分布相关)回调函数,用于在相关场景下执行自定义的回调逻辑 bool _drop_route
reqired to store DropRoute() requests until next sensor tick
Definition
LibCarla/source/carla/rss/RssSensor.h:147
carla::client::RssSensor::~RssSensor
~RssSensor()
析构函数
Definition
LibCarla/source/carla/rss/RssSensor.cpp:29
carla::client::RssSensor::IsListening
bool IsListening() const override
返回此Sensor实例当前是否正在监听模拟器中的相关传感器
Definition
LibCarla/source/carla/rss/RssSensor.h:79
carla::client::RssSensor::GetOtherVehicleDynamics
const ::ad::rss::world::RssDynamics & GetOtherVehicleDynamics() const
返回当前其他车辆所使用的动力学参数(
Definition
LibCarla/source/carla/rss/RssSensor.cpp:181
carla::client::RssSensor::SetLogLevel
void SetLogLevel(const uint8_t &log_level)
设置当前的日志级别
Definition
LibCarla/source/carla/rss/RssSensor.cpp:130
carla::client::RssSensor::SetEgoVehicleDynamics
void SetEgoVehicleDynamics(const ::ad::rss::world::RssDynamics &ego_dynamics)
设置自车(ego vehicle)将要使用的动力学参数(
Definition
LibCarla/source/carla/rss/RssSensor.cpp:167
carla::client::RssSensor::_rss_check
std::shared_ptr<::carla::rss::RssCheck > _rss_check
Definition
LibCarla/source/carla/rss/RssSensor.h:129
carla::client::RssSensor::DropRoute
void DropRoute()
drop the current route (
Definition
LibCarla/source/carla/rss/RssSensor.cpp:285
carla::client::RssSensor::_global_map_initialization_counter_
static std::atomic_uint _global_map_initialization_counter_
上一次处理的帧编号,用于记录处理进度等相关情况
Definition
LibCarla/source/carla/rss/RssSensor.h:152
carla::client::RssSensor::SetPedestrianDynamics
void SetPedestrianDynamics(const ::ad::rss::world::RssDynamics &pedestrian_dynamics)
设置行人所使用的动力学参数(
Definition
LibCarla/source/carla/rss/RssSensor.cpp:225
carla::client::RssSensor::RegisterActorConstellationCallback
void RegisterActorConstellationCallback(ActorConstellationCallbackFunctionType callback)
为每个待处理的测量中的每个行为体注册一个回调函数,以便决定RSS传感器相对于自我车辆与行为体星座的操作。
Definition
LibCarla/source/carla/rss/RssSensor.cpp:35
carla::client::RssSensor::ActorConstellationCallbackFunctionType
std::function<::carla::rss::ActorConstellationResult(carla::SharedPtr<::carla::rss::ActorConstellationData >)> ActorConstellationCallbackFunctionType
Definition
LibCarla/source/carla/rss/RssSensor.h:54
carla::client::RssSensor::Stop
void Stop() override
停止监听新的测量数据。
Definition
LibCarla/source/carla/rss/RssSensor.cpp:100
carla::client::RssSensor::GetPedestrianDynamics
const ::ad::rss::world::RssDynamics & GetPedestrianDynamics() const
返回当前行人所使用的动力学参数(
Definition
LibCarla/source/carla/rss/RssSensor.cpp:210
carla::client::RssSensor::TickRssSensor
void TickRssSensor(const client::Timestamp ×tamp, CallbackFunctionType callback)
传感器滴答(tick,可以理解为周期性触发的操作)回调函数,实际执行传感器相关逻辑的函数
Definition
LibCarla/source/carla/rss/RssSensor.cpp:291
carla::client::RssSensor::SetOtherVehicleDynamics
void SetOtherVehicleDynamics(const ::ad::rss::world::RssDynamics &other_vehicle_dynamics)
设置其他车辆所使用的动力学参数(
Definition
LibCarla/source/carla/rss/RssSensor.cpp:196
carla::client::RssSensor::SetMapLogLevel
void SetMapLogLevel(const uint8_t &map_log_level)
设置当前的地图日志级别
Definition
LibCarla/source/carla/rss/RssSensor.cpp:141
carla::client::RssSensor::_rss_check_timings
std::list< double > _rss_check_timings
用于异步滴答线程的未来(future,用于异步获取线程执行结果等操作)对象
Definition
LibCarla/source/carla/rss/RssSensor.h:141
carla::client::RssSensor::GetEgoVehicleDynamics
const ::ad::rss::world::RssDynamics & GetEgoVehicleDynamics() const
返回当前自车(ego vehicle)所使用的动力学参数(
Definition
LibCarla/source/carla/rss/RssSensor.cpp:152
carla::client::RssSensor::RssSensor
RssSensor(ActorInitializer init)
构造函数
Definition
LibCarla/source/carla/rss/RssSensor.cpp:27
carla::client::RssSensor::AppendRoutingTarget
void AppendRoutingTarget(const ::carla::geom::Transform &routing_target)
向当前路由目标列表追加一个路由目标 (
Definition
LibCarla/source/carla/rss/RssSensor.cpp:258
carla::client::RssSensor::_processing_lock
std::mutex _processing_lock
注册滴答事件(on tick event,周期性触发的事件)时获取的ID,用于标识该注册操作等相关用途
Definition
LibCarla/source/carla/rss/RssSensor.h:135
carla::client::RssSensor::SetRoadBoundariesMode
void SetRoadBoundariesMode(const ::carla::rss::RoadBoundariesMode &road_boundaries_mode)
设置当前用于遵守道路边界的模式 (
Definition
LibCarla/source/carla/rss/RssSensor.cpp:249
carla::client::RssSensor::_rss_actor_constellation_callback
ActorConstellationCallbackFunctionType _rss_actor_constellation_callback
一些用于调试的时间记录,可能记录RSS检查等操作的耗时情况等,以列表形式存储 / the rss actor constellation callback function
Definition
LibCarla/source/carla/rss/RssSensor.h:144
carla::client::RssSensor::GetRoadBoundariesMode
const ::carla::rss::RoadBoundariesMode & GetRoadBoundariesMode() const
Definition
LibCarla/source/carla/rss/RssSensor.cpp:239
carla::client::RssSensor::GetRoutingTargets
const std::vector<::carla::geom::Transform > GetRoutingTargets() const
Definition
LibCarla/source/carla/rss/RssSensor.cpp:267
carla::client::RssSensor::Listen
void Listen(CallbackFunctionType callback) override
注册一个回调函数,每次接收到新的测量数据时都会执行该函数。
Definition
LibCarla/source/carla/rss/RssSensor.cpp:43
carla::client::RssSensor::TickRssSensorThreadLocked
void TickRssSensorThreadLocked(const client::Timestamp ×tamp, SharedPtr< carla::client::ActorList > actors, CallbackFunctionType callback)
Definition
LibCarla/source/carla/rss/RssSensor.cpp:322
carla::client::Sensor
传感器基类,继承自Actor类。
Definition
LibCarla/source/carla/client/Sensor.h:29
carla::client::Sensor::CallbackFunctionType
std::function< void(SharedPtr< sensor::SensorData >)> CallbackFunctionType
回调函数的类型别名,用于接收传感器数据。
Definition
LibCarla/source/carla/client/Sensor.h:37
carla::client::Timestamp
Definition
Timestamp.h:16
ad
Definition
RssRestrictor.h:11
carla::rss::RoadBoundariesMode
RoadBoundariesMode
结构体定义道路边界的不同支持处理
Definition
RssCheck.h:34
carla
CARLA模拟器的主命名空间。
Definition
Carla.cpp:139
carla::SharedPtr
boost::shared_ptr< T > SharedPtr
使用这个SharedPtr(boost::shared_ptr)以保持与boost::python的兼容性, 但未来如果可能的话,我们希望能为std::shared_ptr制作一个Python适配器。
Definition
Memory.h:19
client
包含CARLA客户端相关类和函数的命名空间。
carla::rss::ActorConstellationResult
Struct defining the configuration for RSS processing of a given actor
Definition
RssCheck.h:112
制作者
1.10.0