CARLA
 
载入中...
搜索中...
未找到
InertialMeasurementUnit.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// 包含 Carla 传感器基类的头文件
10
13// 用于禁用 UE4 宏的头文件
15// 包含 Carla 的几何 3D 向量类的头文件
16#include "carla/geom/Vector3D.h"
17// 用于启用 UE4 宏的头文件
19// 包含标准库中的 array 头文件
20#include <array>
21// 为类生成代码的宏,表明此头文件会被 Unreal Engine 的反射系统处理
22#include "InertialMeasurementUnit.generated.h"
23// 将类声明为 Unreal Engine 的 UCLASS,以便使用 UE 的反射和序列化等功能
24UCLASS()
25UCLASS()
26class CARLA_API AInertialMeasurementUnit : public ASensor
27{
28 GENERATED_BODY()
29
30public:
31 // 构造函数,使用 FObjectInitializer 初始化对象
32 AInertialMeasurementUnit(const FObjectInitializer &ObjectInitializer);
33 // 获取传感器的定义,通常用于创建该类型的新实例
34 static FActorDefinition GetSensorDefinition();
35 // 重写基类的设置函数,根据演员描述来设置传感器
36 void Set(const FActorDescription &ActorDescription) override;
37 // 重写基类的设置所有者函数,设置传感器的所有者
38 void SetOwner(AActor *Owner) override;
39 // 在物理更新后调用,进行后续的物理相关处理
40 virtual void PostPhysTick(UWorld *World, ELevelTick TickType, float DeltaTime) override;
41 // 计算加速度计噪声,根据输入的加速度向量
42 const carla::geom::Vector3D ComputeAccelerometerNoise(
43 const FVector &Accelerometer);
44 // 计算陀螺仪噪声,根据输入的陀螺仪向量
45 const carla::geom::Vector3D ComputeGyroscopeNoise(
46 const FVector &Gyroscope);
47
48// 计算加速度计的值,输入是时间间隔,结果以 m/s² 为单位 carla::geom::Vector3D ComputeAccelerometer(const float DeltaTime);
49
50 // 计算陀螺仪的值,结果以 rad/sec 为单位
51 carla::geom::Vector3D ComputeGyroscope();
52
53 // 计算罗盘的值,结果是相对于北方的角度,以 rad 为单位
54 float ComputeCompass();
55 // 设置加速度的标准偏差
56 void SetAccelerationStandardDeviation(const FVector &Vec);
57 // 设置陀螺仪的标准偏差
58 void SetGyroscopeStandardDeviation(const FVector &Vec);
59 // 设置陀螺仪的偏差
60 void SetGyroscopeBias(const FVector &Vec);
61 // 获取加速度的标准偏差,返回一个常引用
62 const FVector &GetAccelerationStandardDeviation() const;
63 // 获取陀螺仪的标准偏差,返回一个常引用
64 const FVector &GetGyroscopeStandardDeviation() const;
65 // 获取陀螺仪的偏差,返回一个常引用
66 const FVector &GetGyroscopeBias() const;
67
68 // 基于 OpenDRIVE 的经纬度定义北方的向量,在 (0.0f, -1.0f, 0.0f) 方向
69 static const FVector CarlaNorthVector;
70
71private:
72// 在游戏开始时调用,可用于初始化一些变量或执行一些操作
73 void BeginPlay() override;
74
75 // 加速度的标准偏差
76 FVector StdDevAccel;
77
78 // 加速度的标准偏差
79 FVector StdDevGyro;
80
81// 陀螺仪的偏差
82 FVector BiasGyro;
83
84 // 用于计算加速度的数组,存储上两个位置信息
85 std::array<FVector, 2> PrevLocation;
86
87 // 用于计算加速度的上一个时间间隔
89
90};
TSharedPtr< const FActorInfo > carla::rpc::ActorState UWorld * World
static const FVector CarlaNorthVector
std::array< FVector, 2 > PrevLocation