CARLA
 
载入中...
搜索中...
未找到
RawData.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/Buffer.h" // 引入Buffer类的头文件
10#include "carla/sensor/s11n/SensorHeaderSerializer.h" // 引入SensorHeaderSerializer类的头文件
11#include "carla/ros2/ROS2.h" // 引入ROS2类的头文件
12
13#include <cstdint> // 引入cstdint库以使用固定宽度整数类型
14#include <iterator> // 引入iterator库以使用迭代器
15
16namespace carla { // carla命名空间
17namespace sensor { // sensor命名空间
18
19 /// 包装一个传感器生成的原始数据以及一些有用的元信息。
20 class RawData {
21 using HeaderSerializer = s11n::SensorHeaderSerializer; // 定义HeaderSerializer为SensorHeaderSerializer的别名
22 private:
23
24 // 获取头部信息
25 const auto &GetHeader() const {
26 return HeaderSerializer::Deserialize(_buffer); // 反序列化缓冲区以获取头部信息
27 }
28
29 public:
30
31 /// 生成数据的传感器的类型ID。
32 uint64_t GetSensorTypeId() const {
33 return GetHeader().sensor_type; // 返回传感器类型ID
34 }
35
36 /// 生成数据时的帧计数。
37 uint64_t GetFrame() const {
38 return GetHeader().frame; // 返回帧计数
39 }
40
41 /// 生成数据时的时间戳。
42 double GetTimestamp() const {
43 return GetHeader().timestamp; // 返回时间戳
44 }
45
46 /// 生成数据时的传感器变换信息。
48 return GetHeader().sensor_transform; // 返回传感器变换信息
49 }
50
51 /// 指向传感器生成的数据的开始迭代器。
52 auto begin() noexcept {
53 return _buffer.begin() + HeaderSerializer::header_offset; // 返回数据开始位置的迭代器
54 }
55
56 /// @copydoc begin() 的常量版本
57 auto begin() const noexcept {
58 return _buffer.begin() + HeaderSerializer::header_offset; // 返回数据开始位置的迭代器
59 }
60
61 /// 指向传感器生成的数据的结束迭代器。
62 auto end() noexcept {
63 return _buffer.end(); // 返回数据结束位置的迭代器
64 }
65
66 /// @copydoc end() 的常量版本
67 auto end() const noexcept {
68 return _buffer.end(); // 返回数据结束位置的迭代器
69 }
70
71 /// 检索指向包含传感器生成的数据的内存的指针。
72 auto data() noexcept {
73 return begin(); // 返回数据起始地址
74 }
75
76 /// @copydoc data() 的常量版本
77 auto data() const noexcept {
78 return begin(); // 返回数据起始地址
79 }
80
81 /// 传感器生成的数据的字节大小。
82 size_t size() const {
83 DEBUG_ASSERT(std::distance(begin(), end()) >= 0); // 确保数据大小非负
84 return static_cast<size_t>(std::distance(begin(), end())); // 返回数据大小
85 }
86
87 private:
88
89 template <typename... Items>
90 friend class CompositeSerializer; // 允许CompositeSerializer类访问私有成员
91 friend class carla::ros2::ROS2; // 允许carla::ros2::ROS2类访问私有成员
92
93 // 构造函数,接受一个Buffer对象并移动它
94 RawData(Buffer &&buffer) : _buffer(std::move(buffer)) {}
95
96 Buffer _buffer; // 存储传感器数据的缓冲区
97 };
98
99} // namespace sensor
100} // namespace carla
#define DEBUG_ASSERT(predicate)
Definition Debug.h:68
一块原始数据。 请注意,如果需要更多容量,则会分配一个新的内存块,并 删除旧的内存块。这意味着默认情况下,缓冲区只能增长。要释放内存,使用 clear 或 pop。
const_iterator begin() const noexcept
const_iterator end() const noexcept
编译时映射表,用于将传感器对象映射到序列化器。
包装一个传感器生成的原始数据以及一些有用的元信息。
Definition RawData.h:20
uint64_t GetFrame() const
生成数据时的帧计数。
Definition RawData.h:37
auto begin() const noexcept
指向传感器生成的数据的开始迭代器。 的常量版本
Definition RawData.h:57
auto end() noexcept
指向传感器生成的数据的结束迭代器。
Definition RawData.h:62
auto data() const noexcept
检索指向包含传感器生成的数据的内存的指针。 的常量版本
Definition RawData.h:77
const auto & GetHeader() const
Definition RawData.h:25
auto data() noexcept
检索指向包含传感器生成的数据的内存的指针。
Definition RawData.h:72
auto end() const noexcept
指向传感器生成的数据的结束迭代器。 的常量版本
Definition RawData.h:67
double GetTimestamp() const
生成数据时的时间戳。
Definition RawData.h:42
const rpc::Transform & GetSensorTransform() const
生成数据时的传感器变换信息。
Definition RawData.h:47
auto begin() noexcept
指向传感器生成的数据的开始迭代器。
Definition RawData.h:52
uint64_t GetSensorTypeId() const
生成数据的传感器的类型ID。
Definition RawData.h:32
size_t size() const
传感器生成的数据的字节大小。
Definition RawData.h:82
RawData(Buffer &&buffer)
Definition RawData.h:94
类的功能注释,说明这个类用于对所有传感器数据附带的元信息(头部信息)进行序列化操作
static const Header & Deserialize(const Buffer &message)
CARLA模拟器的主命名空间。
Definition Carla.cpp:139