CARLA
Loading...
Searching...
No Matches
CaService.h
Go to the documentation of this file.
1// Copyright (c) 2026 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
10
14#include "carla/geom/Math.h"
17#include <vector>
19#include <chrono>
20
22{
23public:
24 CaService(URandomEngine *random_engine);
25 void SetActor(UWorld *world, AActor *Owner);
26
27 void SetParams(const float GenCamMin, const float GenCamMax, const bool FixedRate);
28 void SetVelDeviation(const float noise_vel_stddev_x);
29 void SetYawrateDeviation(const float noise_yawrate_stddev, const float noise_yawrate_bias);
30 void SetAccelerationStandardDeviation(const FVector &Vec);
31 void SetGNSSDeviation(const float noise_lat_stddev,
32 const float noise_lon_stddev,
33 const float noise_alt_stddev,
34 const float noise_head_stddev,
35 const float noise_lat_bias,
36 const float noise_lon_bias,
37 const float noise_alt_bias,
38 const float noise_head_bias);
39 bool Trigger(float DeltaSeconds);
40 CAM_t GetCamMessage()const;
41 bool CarlaActorInitialized()const { return mCarlaActor!=nullptr; }
42private:
46 UWorld *mWorld{nullptr};
52 float mGenCam;
58 unsigned int mGenCamLowDynamicsLimit{3};
60
64
68 std::chrono::milliseconds mGenerationDelta0;
69
70 bool CheckTriggeringConditions(float DeltaSeconds);
71 bool CheckHeadingDelta(float DeltaSeconds);
72 bool CheckPositionDelta(float DeltaSeconds);
73 bool CheckSpeedDelta(float DeltaSeconds);
74 double GetFVectorAngle(const FVector &a, const FVector &b)const;
75 void GenerateCamMessage(float DeltaTime);
77
78 float GetHeading()const;
79 long GetVehicleRole()const;
80
81 /* Constant values for message*/
82 const long mProtocolVersion = 2;
86
87 carla::geom::Vector3D ComputeAccelerometer(const float DeltaTime);
88 const carla::geom::Vector3D ComputeAccelerometerNoise(const FVector &Accelerometer)const;
89 /// Standard deviation for acceleration settings.
90 FVector StdDevAccel;
91
92 /// Used to compute the acceleration
93 std::array<FVector, 2> PrevLocation;
94
95 /// Used to compute the acceleration
97
98 // GNSS reference position and heading
99 FVector GetReferencePosition()const;
105
110
111 // Velocity
112 float ComputeSpeed()const;
114
115 // Yaw rate
116 const float ComputeYawNoise(const FVector &Gyroscope)const;
117 float ComputeYawRate()const;
120
122 void CreateITSPduHeader(CAM_t &message);
123 void AddCooperativeAwarenessMessage(CAMContainer::CoopAwareness_t &CoopAwarenessMessage, float DeltaTime);
129
130 // random for noise
132 ITSContainer::SpeedValue_t BuildSpeedValue(const float vel)const;
133};
Base class for CARLA wheeled vehicles.
float LongitudeBias
Definition CaService.h:107
void CreateITSPduHeader(CAM_t &message)
UWorld * mWorld
Definition CaService.h:46
float GetHeading() const
carla::geom::GeoProjection CurrentGeoProjection
Definition CaService.h:100
float AltitudeBias
Definition CaService.h:108
float ComputeSpeed() const
void SetGNSSDeviation(const float noise_lat_stddev, const float noise_lon_stddev, const float noise_alt_stddev, const float noise_head_stddev, const float noise_lat_bias, const float noise_lon_bias, const float noise_alt_bias, const float noise_head_bias)
const long mMessageId
Definition CaService.h:83
UCarlaEpisode * mCarlaEpisode
Definition CaService.h:45
void SetVelDeviation(const float noise_vel_stddev_x)
float HeadingDeviation
Definition CaService.h:104
float LatitudeDeviation
Definition CaService.h:101
bool mDccRestriction
Definition CaService.h:55
long GetVehicleRole() const
float mGenerationInterval
Definition CaService.h:59
ITSContainer::SpeedValue_t BuildSpeedValue(const float vel) const
Definition CaService.cpp:23
const long mProtocolVersion
Definition CaService.h:82
bool Trigger(float DeltaSeconds)
float YawrateDeviation
Definition CaService.h:118
void SetAccelerationStandardDeviation(const FVector &Vec)
float LongitudeDeviation
Definition CaService.h:102
const carla::geom::Vector3D ComputeAccelerometerNoise(const FVector &Accelerometer) const
FVector mLastCamPosition
Definition CaService.h:65
float ComputeYawRate() const
float mLastCamTimeStamp
Definition CaService.h:48
float VelocityDeviation
Definition CaService.h:113
float mGenCamMin
Definition CaService.h:50
CAM_t mCAMMessage
Definition CaService.h:128
void SetYawrateDeviation(const float noise_yawrate_stddev, const float noise_yawrate_bias)
unsigned int mGenCamLowDynamicsCounter
Definition CaService.h:57
bool mFixedRate
Definition CaService.h:56
bool CheckHeadingDelta(float DeltaSeconds)
float mGenCam
Definition CaService.h:52
void SetActor(UWorld *world, AActor *Owner)
Definition CaService.cpp:52
carla::geom::Vector3D ComputeAccelerometer(const float DeltaTime)
FVector mLastCamHeading
Definition CaService.h:67
std::array< FVector, 2 > PrevLocation
Used to compute the acceleration.
Definition CaService.h:93
CAM_t GetCamMessage() const
long mStationId
Definition CaService.h:84
double mElapsedTime
Definition CaService.h:53
float LatitudeBias
Definition CaService.h:106
std::chrono::milliseconds mGenerationDelta0
Definition CaService.h:68
float mLastCamSpeed
Definition CaService.h:66
FVector StdDevAccel
Standard deviation for acceleration settings.
Definition CaService.h:90
long mStationType
Definition CaService.h:85
FCarlaActor * mCarlaActor
Definition CaService.h:44
unsigned int mGenCamLowDynamicsLimit
Definition CaService.h:58
const float ComputeYawNoise(const FVector &Gyroscope) const
bool CheckPositionDelta(float DeltaSeconds)
bool CarlaActorInitialized() const
Definition CaService.h:41
void AddLowFrequencyContainer(CAMContainer::LowFrequencyContainer_t &lfc)
double GetFVectorAngle(const FVector &a, const FVector &b) const
ITSContainer::StationType_t GetStationType() const
void AddBasicVehicleContainerHighFrequency(CAMContainer::HighFrequencyContainer_t &hfc, float DeltaTime)
float mGenCamMax
Definition CaService.h:51
float YawrateBias
Definition CaService.h:119
float mGenDeltaTimeMod
Definition CaService.h:54
URandomEngine * mRandomEngine
Definition CaService.h:131
FVector GetReferencePosition() const
float HeadingBias
Definition CaService.h:109
float VehicleSpeed
Definition CaService.h:61
void GenerateCamMessage(float DeltaTime)
bool CheckSpeedDelta(float DeltaSeconds)
ACarlaWheeledVehicle * mVehicle
Definition CaService.h:47
AActor * mActorOwner
Definition CaService.h:43
float PrevDeltaTime
Used to compute the acceleration.
Definition CaService.h:96
void SetParams(const float GenCamMin, const float GenCamMax, const bool FixedRate)
void AddRSUContainerHighFrequency(CAMContainer::HighFrequencyContainer_t &hfc)
float AltitudeDeviation
Definition CaService.h:103
CAM_t CreateCooperativeAwarenessMessage(float DeltaTime)
FVector VehicleHeading
Definition CaService.h:63
bool CheckTriggeringConditions(float DeltaSeconds)
float mLastLowCamTimeStamp
Definition CaService.h:49
void AddCooperativeAwarenessMessage(CAMContainer::CoopAwareness_t &CoopAwarenessMessage, float DeltaTime)
FVector VehiclePosition
Definition CaService.h:62
void AddBasicContainer(CAMContainer::BasicContainer_t &BasicContainer)
A view over an actor and its properties.
Definition CarlaActor.h:25
long StationType_t
Definition LibITS.h:162
long SpeedValue_t
Definition LibITS.h:209
@ messageID_cam
Definition LibITS.h:178
A simulation episode.
Definition LibITS.h:776