CARLA
 
载入中...
搜索中...
未找到
DVSCamera.h
浏览该文件的文档.
1// Copyright (c) 2020 Robotics and Perception Group (GPR)
2// 苏黎世大学和苏黎世联邦理工学院
3//
4// 动态视觉传感器只对运动的目标成像,每个像素的工作是相互独立、互不干涉的。
5// 也就是说每个感光像素都只对自己所负责的一部分区域进行独立感光。
6// 同时, 每个感光像素都不再直接采样实值, 而是时时刻刻去比较光电流的相对变化值是否超过了一个阈值。
7// 当在对应像素上感受到足够的光强变化时, 传感器就会发出一个“事件信号”。
8// 参考:https://blog.csdn.net/Yannan_Strath/article/details/126799956
9//
10// This work is licensed under the terms of the MIT license.
11// For a copy, see <https://opensource.org/licenses/MIT>.
12
13#pragma once
14
18
19#include "DVSCamera.generated.h"
20
21namespace dvs
22{
23 /// 动态视觉传感器 (DVS, Dynamic Vision Sensor) 配置结构
24 struct Config
25 {
26 float Cp; // 与亮度变化增量相关的正阈值 C,范围为 (0-1)。
27 float Cm; // 与亮度变化减少相关的负阈值 C,范围为(0-1)。
28 float sigma_Cp; // 正事件的白噪声标准差,范围为 (0-1)。
29 float sigma_Cm; // 负事件的白噪声标准差,范围为 (0-1)。
30 std::uint64_t refractory_period_ns; // 不应期(像素在触发事件后无法触发事件的时间),以纳秒为单位。它限制了触发事件的最高频率。
31 bool use_log; // 是否以对数强度刻度工作。
32 float log_eps; // 用于将图像转换为对数的 Epsilon 值
33 };
34
35 // 秒转纳秒
36 inline constexpr std::int64_t secToNanosec(double seconds)
37 {
38 return static_cast<std::int64_t>(seconds * 1e9);
39 }
40
41 // 纳秒转秒(小于1纳秒进行截断)
42 inline constexpr double nanosecToSecTrunc(std::int64_t nanoseconds)
43 {
44 return static_cast<double>(nanoseconds) / 1e9;
45 }
46
47} // namespace dvs
48
49/// 产生动态视觉事件的传感器
50UCLASS()
51class CARLA_API ADVSCamera : public AShaderBasedSensor
52{
53 GENERATED_BODY()
54 using DVSEventArray = std::vector<::carla::sensor::data::DVSEvent>;
55
56public:
57 ADVSCamera(const FObjectInitializer &ObjectInitializer);
58 static FActorDefinition GetSensorDefinition();
59 void Set(const FActorDescription &ActorDescription) override;
60
61protected:
62 virtual void PostPhysTick(UWorld *World, ELevelTick TickType, float DeltaTime) override;
63 void ImageToGray(const TArray<FColor> &image);
64 void ImageToLogGray(const TArray<FColor> &image);
65 ADVSCamera::DVSEventArray Simulation (float DeltaTime);
66
67private:
68 /// 包含最新(当前)图像和先前图像的图像
69 TArray<float> last_image, prev_image;
70
71 /// 包含触发事件最新参考值的图像
72 TArray<float> ref_values;
73
74 /// 包含以秒为单位的最新事件时间的图像
75 TArray<double> last_event_timestamp;
76
77 /// 以纳秒为单位的当前时间
78 std::int64_t current_time;
79
80 /// 动态时间传感器的仿真配置
81 dvs::Config config;
82};
sode override
Definition ActorData.h:280
TSharedPtr< const FActorInfo > carla::rpc::ActorState UWorld * World
产生动态视觉事件的传感器
Definition DVSCamera.h:52
std::vector<::carla::sensor::data::DVSEvent > DVSEventArray
Definition DVSCamera.h:54
A sensor that produces data by applying post-process materials (shaders) to a scene capture image.
CARLA模拟器的主命名空间。
Definition Carla.cpp:139
constexpr std::int64_t secToNanosec(double seconds)
Definition DVSCamera.h:36
constexpr double nanosecToSecTrunc(std::int64_t nanoseconds)
Definition DVSCamera.h:42
动态视觉传感器 (DVS, Dynamic Vision Sensor) 配置结构
Definition DVSCamera.h:25
float sigma_Cp
Definition DVSCamera.h:28
std::uint64_t refractory_period_ns
Definition DVSCamera.h:30
bool use_log
Definition DVSCamera.h:31
float log_eps
Definition DVSCamera.h:32
float sigma_Cm
Definition DVSCamera.h:29