CARLA
 
载入中...
搜索中...
未找到
EpisodeState.h
浏览该文件的文档.
1// Copyright (c) 2017 Computer Vision Center (CVC) at the Universitat Autonoma
2// de Barcelona (UAB).
3//
4// This work is licensed under the terms of the MIT license.
5// For a copy, see <https://opensource.org/licenses/MIT>.
6
7#pragma once // 防止头文件被重复包含
8
9#include "carla/Iterator.h" // 引入迭代器头文件
10#include "carla/ListView.h" // 引入列表视图头文件
11#include "carla/NonCopyable.h" // 引入不可复制类的头文件
12#include "carla/client/ActorSnapshot.h" // 引入参与者快照头文件
13#include "carla/client/Timestamp.h" // 引入时间戳头文件
14#include "carla/geom/Vector3DInt.h" // 引入三维整数向量头文件
15#include "carla/sensor/data/RawEpisodeState.h" // 引入原始剧集状态数据头文件
16
17#include <boost/optional.hpp> // 引入Boost可选类型头文件
18
19#include <memory> // 引入智能指针头文件
20#include <unordered_map> // 引入无序映射头文件
21
22namespace carla { // 定义carla命名空间
23namespace client { // 定义client子命名空间
24namespace detail { // 定义detail子命名空间
25
26 /// 表示某一帧的所有参与者的状态
28 : public std::enable_shared_from_this<EpisodeState>, // 允许共享自身指针
29 private NonCopyable { // 禁止复制
30
32
33 public:
34
35 // 构造函数,接受剧集ID
36 explicit EpisodeState(uint64_t episode_id) : _episode_id(episode_id) {}
37
38 // 构造函数,接受原始剧集状态
39 explicit EpisodeState(const sensor::data::RawEpisodeState &state);
40
41 // 获取剧集ID
42 auto GetEpisodeId() const {
43 return _episode_id;
44 }
45
46 // 获取当前帧数
47 auto GetFrame() const {
48 return _timestamp.frame;
49 }
50
51 // 获取时间戳
52 const auto &GetTimestamp() const {
53 return _timestamp;
54 }
55
56 // 获取模拟状态
60
61 // 检查地图是否发生变化
62 bool HasMapChanged() const {
63 return (_simulation_state & SimulationState::MapChange) != SimulationState::None;
64 }
65
66 // 检查光照更新是否待处理
67 bool IsLightUpdatePending() const {
68 return (_simulation_state & SimulationState::PendingLightUpdate) != 0;
69 }
70
71 // 检查是否包含指定的参与者快照
72 bool ContainsActorSnapshot(ActorId actor_id) const {
73 return _actors.find(actor_id) != _actors.end();
74 }
75
76 // 获取指定参与者的快照
78 ActorSnapshot state; // 创建参与者快照对象
79 CopyActorSnapshotIfPresent(id, state); // 复制快照(如果存在)
80 return state; // 返回快照
81 }
82
83 // 获取指定参与者的快照(如果存在)
84 boost::optional<ActorSnapshot> GetActorSnapshotIfPresent(ActorId id) const {
85 boost::optional<ActorSnapshot> state; // 创建可选快照
86 CopyActorSnapshotIfPresent(id, state); // 复制快照(如果存在)
87 return state; // 返回可选快照
88 }
89
90 // 获取所有参与者ID
91 auto GetActorIds() const {
92 return MakeListView( // 创建列表视图
93 iterator::make_map_keys_const_iterator(_actors.begin()), // 获取参与者ID迭代器
94 iterator::make_map_keys_const_iterator(_actors.end())); // 获取参与者ID迭代器
95 }
96
97 // 获取参与者数量
98 size_t size() const {
99 return _actors.size(); // 返回参与者数量
100 }
101
102 // 返回参与者快照的开始迭代器
103 auto begin() const {
104 return iterator::make_map_values_const_iterator(_actors.begin()); // 返回参与者快照值的开始迭代器
105 }
106
107 // 返回参与者快照的结束迭代器
108 auto end() const {
109 return iterator::make_map_values_const_iterator(_actors.end()); // 返回参与者快照值的结束迭代器
110 }
111
112 private:
113
114 // 复制指定参与者的快照(如果存在)
115 template <typename T>
116 void CopyActorSnapshotIfPresent(ActorId id, T &value) const {
117 auto it = _actors.find(id); // 查找参与者
118 if (it != _actors.end()) { // 如果找到了
119 value = it->second; // 复制快照
120 }
121 }
122
123 const uint64_t _episode_id; // 存储剧集ID
124
125 const Timestamp _timestamp; // 存储时间戳
126
127 geom::Vector3DInt _map_origin; // 存储地图原点
128
129 SimulationState _simulation_state; // 存储模拟状态
130
131 std::unordered_map<ActorId, ActorSnapshot> _actors; // 存储参与者快照的无序映射
132 };
133
134} // namespace detail
135} // namespace client
136} // namespace carla
137
这个类用于禁止拷贝和移动构造函数及赋值操作
std::size_t frame
自模拟器启动以来经过的帧数。
Definition Timestamp.h:37
表示某一帧的所有参与者的状态
EpisodeState(uint64_t episode_id)
ActorSnapshot GetActorSnapshot(ActorId id) const
const auto & GetTimestamp() const
boost::optional< ActorSnapshot > GetActorSnapshotIfPresent(ActorId id) const
SimulationState GetsimulationState() const
std::unordered_map< ActorId, ActorSnapshot > _actors
void CopyActorSnapshotIfPresent(ActorId id, T &value) const
bool ContainsActorSnapshot(ActorId actor_id) const
表示给定帧处剧集的状态。
static auto make_map_keys_const_iterator(It it)
创建一个迭代器,该迭代器提供对map键的const引用的遍历。
Definition Iterator.h:28
static auto make_map_values_const_iterator(It it)
创建一个迭代器,该迭代器提供对map值的const引用的遍历。
Definition Iterator.h:61
carla::ActorId ActorId
参与者的智能指针类型
CARLA模拟器的主命名空间。
Definition Carla.cpp:139
static auto MakeListView(Iterator begin, Iterator end)
包含CARLA客户端相关类和函数的命名空间。