CARLA
 
载入中...
搜索中...
未找到
RadarData.h
浏览该文件的文档.
1// Copyright (c) 2019 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 <cstdint>
10#include <vector>
11#include <cstdio>
12
13namespace carla {
14
15namespace ros2 { // carla命名空间下的ros2子命名空间
16 class ROS2; // 声明ROS2类
17}
18
19namespace sensor { // carla命名空间下的sensor子命名空间,用于定义传感器相关的数据和序列化
20
21namespace s11n { // sensor命名空间下的s11n子命名空间,用于定义序列化相关的类
22 class RadarSerializer; // 声明RadarSerializer类,用于雷达数据的序列化
23}
24
25namespace data {
26
27 struct RadarDetection { // 定义RadarDetection结构体,用于存储雷达检测到的对象信息
28 float velocity; // 速度,单位为米每秒(m/s)
29 float azimuth; // 方位角,单位为弧度(rad),表示目标相对于正北方向的角度
30 float altitude; // 高度角,单位为弧度(rad),表示目标相对于地平面的高度
31 float depth; // 深度,单位为米(m),表示目标距离雷达的距离
32 };
33
34 class RadarData { // 定义RadarData类,用于存储雷达数据
35 static_assert(sizeof(float) == sizeof(uint32_t), "Invalid float size"); // 静态断言,确保float类型的大小与uint32_t一致
36 static_assert(sizeof(float) * 4 == sizeof(RadarDetection), "Invalid RadarDetection size"); // 静态断言,确保RadarDetection结构体的大小为4个float的大小
37
38 public:
39 explicit RadarData() = default; // RadarData类的显式默认构造函数
40
41 constexpr static auto detection_size = sizeof(RadarDetection); // RadarData类中用于获取RadarDetection结构体大小的静态常量
42
43 RadarData &operator=(RadarData &&) = default; // RadarData类的移动赋值运算符,使用默认实现
44
45 /// 设置雷达数据的新分辨率
46 ///分配或释放内存空间,如果需要的话
47 ///
48 ///@warning 这个操作成本较高,不应该每帧调用
49 void SetResolution(uint32_t resolution) {
50 // 清空_detections向量,并将未使用的容量缩减到0
51 _detections.clear();
52 _detections.shrink_to_fit();
53 // 为_detections向量预留新的容量
54 _detections.reserve(resolution);
55 }
56
57 // 返回当前检测的数量
58 size_t GetDetectionCount() const {
59 return _detections.size();
60 }
61
62 /// 删除当前的检测数据
63 /// 这个操作不会改变分辨率或已分配的内存
64 void Reset() {
65 _detections.clear();
66 }
67
68 /// 添加一个新的检测对象到雷达数据中
70 _detections.push_back(detection);
71 }
72
73 private:
74 std::vector<RadarDetection> _detections; ///用于存储RadarDetection对象的动态数组
75
76 friend class s11n::RadarSerializer; // 声明RadarSerializer类和ROS2类为RadarData类的友元类
77 friend class carla::ros2::ROS2;
78 };
79
80} // namespace s11n
81} // namespace sensor
82} // namespace carla
RadarData & operator=(RadarData &&)=default
void Reset()
删除当前的检测数据 这个操作不会改变分辨率或已分配的内存
Definition RadarData.h:64
void SetResolution(uint32_t resolution)
设置雷达数据的新分辨率 分配或释放内存空间,如果需要的话
Definition RadarData.h:49
size_t GetDetectionCount() const
Definition RadarData.h:58
static constexpr auto detection_size
Definition RadarData.h:41
void WriteDetection(RadarDetection detection)
添加一个新的检测对象到雷达数据中
Definition RadarData.h:69
std::vector< RadarDetection > _detections
Definition RadarData.h:74
Serializes the data generated by Radar sensors.
CARLA模拟器的主命名空间。
Definition Carla.cpp:139