Agrarsense
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
AOverlapSensor Class Reference

#include <OverlapSensor.h>

Inheritance diagram for AOverlapSensor:
Inheritance graph
[legend]
Collaboration diagram for AOverlapSensor:
Collaboration graph
[legend]

Public Member Functions

 AOverlapSensor (const FObjectInitializer &ObjectInitializer)
 
void Init (FOverlapSensorParameters InParameters)
 
virtual ESensorTypes GetSensorType () const override
 
void SetOverlapBounds (const FVector &NewSize)
 
void SetVisualizeOverlapArea (bool Visualize)
 
void SetOverlapRelativePosition (const FVector &Vector)
 
void SetOverlapResponseToAllChannels (const ECollisionResponse Response)
 
bool IsVisualizingOverlapArea () const
 
virtual FString GetParametersAsString () const override
 
- Public Member Functions inherited from ASensor
 ASensor (const FObjectInitializer &ObjectInitializer)
 
FString ExportToJsonFile (const FString &FileName)
 
virtual ESensorTypes GetSensorType () const
 
FString GetSensorIdentifier () const
 
void SetSensorIdentifier (const FString newIdentifier)
 
FString GetSensorName () const
 
virtual FString GetParametersAsString () const
 
AVehicleIsAttachedToVehicle () const
 
void SetSensorName (const FString newName)
 
virtual FString GetTopicName ()
 
UTopic * GetROSTopic () const
 
void SetSimulateSensor (bool SimulateSensor)
 
bool CanSimulateSensor () const
 
ASensorModelGetSensorModel () const
 
void SetSensorModel (ASensorModel *NewSensorModel)
 
FORCEINLINE bool IsROSConnected () const
 
UROSIntegrationGameInstance * GetROSGameInstance () const
 
virtual FString GetActorID_Implementation () const override
 
virtual FString GetActorName_Implementation () const override
 
virtual FString GetActorInformation_Implementation () const override
 
virtual void SetActorName_Implementation (const FString &NewActorName) override
 
virtual void SetActorIDAndName_Implementation (const FString &NewActorName, const FString &NewID) override
 
void SetParentActorPtr (AActor *ParentActorPtr)
 
- Public Member Functions inherited from IActorInformation
FString GetActorID () const
 
FString GetActorName () const
 
FString GetActorInformation () const
 
void SetActorName (const FString &NewActorName)
 
void SetActorIDAndName (const FString &NewActorName, const FString &NewID)
 

Protected Member Functions

void OnOverlapBegin (UPrimitiveComponent *OverlappedComponent, AActor *OtherActor, UPrimitiveComponent *OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult &SweepResult)
 
void OnOverlapEnd (UPrimitiveComponent *OverlappedComponent, AActor *OtherActor, UPrimitiveComponent *OtherComp, int32 OtherBodyIndex)
 
- Protected Member Functions inherited from ASensor
virtual void BeginPlay () override
 
virtual void EndPlay (const EEndPlayReason::Type EndPlayReason) override
 
FString CreateTimeStampString () const
 
virtual void CreateROSTopic ()
 
virtual void DestroyROSTopic ()
 
virtual void CreateDataSavePath ()
 
bool IsLogFileCreated ()
 
virtual void CreateLogFile ()
 
void WriteToLogFile (const FString &Message)
 

Protected Attributes

UBoundsVisualizerComponent * BoundsComponent = nullptr
 
- Protected Attributes inherited from ASensor
UTopic * ROSTopic = nullptr
 
bool SendDataToROS = true
 
ULogFileLogFile = nullptr
 
AActor * ParentActor = nullptr
 
FString FileSavePath
 
UROSIntegrationGameInstance * ROSInstance = nullptr
 

Private Member Functions

virtual void BeginPlay () override
 
virtual void EndPlay (const EEndPlayReason::Type EndPlayReason) override
 
void BuildAndSendMessage (const FString &Prefix, AActor *Actor)
 
void CreateDataSavePath () override
 
void CreateLogFile () override
 
FString TryGetID (AActor *Actor)
 

Private Attributes

TSharedPtr< ROSMessages::std_msgs::String > ROSMessage
 
FOverlapSensorParameters Parameters
 
AVehicleVehicle = nullptr
 
FString VehicleName
 
FString VehicleID
 
bool IsVisible = false
 

Additional Inherited Members

- Static Public Member Functions inherited from ASensor
static void HideComponentForAllCameras (UPrimitiveComponent *PrimitiveComponent)
 
static TMap< FString, FColor > GetSemanticColors ()
 
static TArray< TWeakObjectPtr< UPrimitiveComponent > > GetComponentsToHide ()
 
- Static Public Member Functions inherited from IActorInformation
static void SetAndValidateActorIDAndName (FString &ActorName, FString &ActorID, TWeakObjectPtr< AActor > Actor)
 
static bool DestroyActorByID (const FString &ID)
 
static AActor * GetActorByID (const FString &ID)
 
template<typename T >
static TArray< T * > GetActorsWithInterface ()
 
static void PrintAllIds ()
 
- Public Attributes inherited from ASensor
FSensorDestroy OnSensorDestroy
 
FString AttachedToComponent
 
FName AttachedToBone
 
- Static Protected Member Functions inherited from ASensor
template<typename InStructType >
static FString StructToString (const InStructType &InStruct)
 
- Static Protected Attributes inherited from ASensor
static FPrimitiveAdded OnPrimitiveAdded
 
static const FName NiagaraPointsInt = "User.PointCount"
 
static const FName NiagaraHitPoints = "User.HitPoints"
 
static const FName NiagaraHitColors = "User.HitColors"
 
static const FName NiagaraPointsFloat = "User.Test"
 

Detailed Description

Overlap sensor is a sensor that detects overlap with certain objects in the simulation. This can be useful for development purposes, such as determining when a Walker/Vehicle enters the "safe zone" of another Vehicle. Note that this sensor does not simulate any real-world sensor.

Definition at line 28 of file OverlapSensor.h.

Constructor & Destructor Documentation

◆ AOverlapSensor()

AOverlapSensor::AOverlapSensor ( const FObjectInitializer &  ObjectInitializer)

Definition at line 19 of file OverlapSensor.cpp.

19 : Super(ObjectInitializer)
20{
21 PrimaryActorTick.bCanEverTick = false;
22
23 BoundsComponent = CreateDefaultSubobject<UBoundsVisualizerComponent>(TEXT("BoundsComponent"));
24 BoundsComponent->SetupAttachment(RootComponent);
25 BoundsComponent->SetGenerateOverlapEvents(true);
26 BoundsComponent->SetVisibility(false);
27 BoundsComponent->SetCollisionEnabled(ECollisionEnabled::QueryOnly);
28}
UBoundsVisualizerComponent * BoundsComponent
Definition: OverlapSensor.h:98

References BoundsComponent.

Member Function Documentation

◆ BeginPlay()

void AOverlapSensor::BeginPlay ( )
overrideprivatevirtual

Reimplemented from ASensor.

Definition at line 97 of file OverlapSensor.cpp.

98{
99 Super::BeginPlay();
100
101 BoundsComponent->OnComponentBeginOverlap.AddDynamic(this, &AOverlapSensor::OnOverlapBegin);
102 BoundsComponent->OnComponentEndOverlap.AddDynamic(this, &AOverlapSensor::OnOverlapEnd);
103}
void OnOverlapEnd(UPrimitiveComponent *OverlappedComponent, AActor *OtherActor, UPrimitiveComponent *OtherComp, int32 OtherBodyIndex)
void OnOverlapBegin(UPrimitiveComponent *OverlappedComponent, AActor *OtherActor, UPrimitiveComponent *OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult &SweepResult)

References BoundsComponent, OnOverlapBegin(), and OnOverlapEnd().

◆ BuildAndSendMessage()

void AOverlapSensor::BuildAndSendMessage ( const FString &  Prefix,
AActor *  Actor 
)
private

Definition at line 193 of file OverlapSensor.cpp.

194{
195 if (!Actor)
196 {
197 return;
198 }
199
200 FString ID = TryGetID(Actor);
201 FString Message;
202
203 // Calculate distance from sensor parent (vehicle) to incoming Actor
204 AActor* From = this;
205 if (AActor* VehicleActorPtr = GetParentActor())
206 {
207 From = VehicleActorPtr;
208 }
209 float DistanceInMeters = FVector::Dist(From->GetActorLocation(), Actor->GetActorLocation()) / 100.0f;
210
211 // Add distance to the end of the message
212 if (ID.IsEmpty())
213 {
214 Message = FString::Printf(TEXT("%s: %s, Distance: %.2f m"), *Prefix, *Actor->GetName(), DistanceInMeters);
215 }
216 else
217 {
218 Message = FString::Printf(TEXT("%s: %s: ID: %s, Distance: %.2f m"), *Prefix, *Actor->GetName(), *ID, DistanceInMeters);
219 }
220
221 UTopic* Topic = GetROSTopic();
222 if (ROSMessage.IsValid() && Topic && IsROSConnected())
223 {
224 ROSMessage->_Data = Message;
225 Topic->Publish(ROSMessage);
226 }
227
228 WriteToLogFile(Message);
229
230 if (Vehicle)
231 {
232 FString Msg = FString::Printf(TEXT("Actor '%s' with ID: '%s' %s"), *VehicleName, *VehicleID, *Message);
234 }
235}
TSharedPtr< ROSMessages::std_msgs::String > ROSMessage
FString VehicleName
AVehicle * Vehicle
FString TryGetID(AActor *Actor)
UTopic * GetROSTopic() const
Definition: Sensor.h:150
void WriteToLogFile(const FString &Message)
Definition: Sensor.cpp:294
FORCEINLINE bool IsROSConnected() const
Definition: Sensor.h:201
static void Log(const FString &Message, bool LogToTextFile=true, bool LogToROS=true)

References ASensor::GetROSTopic(), ASensor::IsROSConnected(), SimulatorLog::Log(), ROSMessage, TryGetID(), Vehicle, VehicleID, VehicleName, and ASensor::WriteToLogFile().

Referenced by OnOverlapBegin(), and OnOverlapEnd().

◆ CreateDataSavePath()

void AOverlapSensor::CreateDataSavePath ( )
overrideprivatevirtual

Creates data save path for this sensor. Can be overriden if needed.

Reimplemented from ASensor.

Definition at line 237 of file OverlapSensor.cpp.

238{
239 if (!FileSavePath.IsEmpty())
240 {
241 return;
242 }
243
244 const FString DataLocation = UAgrarsensePaths::GetDataFolder();
245
246 // Default save path
247 FileSavePath = DataLocation + GetActorID_Implementation() + "/";
248
249 if (AVehicle* AttachedVehicle = IsAttachedToVehicle())
250 {
251 // If sensor is attached to vehicle, save data to vehicle folder
252 FileSavePath = DataLocation + AttachedVehicle->GetActorID_Implementation();
253 }
254}
AVehicle * IsAttachedToVehicle() const
Definition: Sensor.cpp:152
virtual FString GetActorID_Implementation() const override
Definition: Sensor.h:216
FString FileSavePath
Definition: Sensor.h:372
static FString GetDataFolder()

References ASensor::FileSavePath, ASensor::GetActorID_Implementation(), UAgrarsensePaths::GetDataFolder(), and ASensor::IsAttachedToVehicle().

Referenced by CreateLogFile().

◆ CreateLogFile()

void AOverlapSensor::CreateLogFile ( )
overrideprivatevirtual

Create Text file for this sensor if it has not been created already. Text file will be created to ROOT/Data/Run/Logs directory. Filename will be SensorName_ID_UnixTimestamp.txt Can be overriden by individual sensor if needed.

Reimplemented from ASensor.

Definition at line 256 of file OverlapSensor.cpp.

257{
258 if (IsValid(LogFile))
259 {
260 // File has already been created, return
261 return;
262 }
263
265
266 FLogFileSettings Settings;
269 Settings.QueueLength = MAX_int32;
270 Settings.KeepFileOpen = false;
271 Settings.Timestamp = false;
272 Settings.OverrideFilePath = true;
273 Settings.FilePath = FileSavePath;
274
275 UE_LOG(LogTemp, Warning, TEXT("FileSavePath %s"), *FileSavePath);
276
277 LogFile = NewObject<ULogFile>(ULogFile::StaticClass());
278 if (IsValid(LogFile))
279 {
280 FString Prefix;
281 if (AVehicle* AttachedVehicle = IsAttachedToVehicle())
282 {
283 Prefix = AttachedVehicle->GetActorID_Implementation();
284 }
285 FString FileName = Prefix.IsEmpty() ? TEXT("overlap") : Prefix + TEXT("_overlap");
286
287 LogFile->Create(FileName, Settings);
288
289 }
290}
void CreateDataSavePath() override
ULogFile * LogFile
Definition: Sensor.h:367
void Create(const FString &FileNameWithoutExtension, FLogFileSettings Settings)
Definition: LogFile.cpp:40
bool KeepFileOpen
Definition: LogFile.h:42
bool Timestamp
Definition: LogFile.h:39
FString FilePath
Definition: LogFile.h:54
FFileWriteOptions FileWriteOptions
Definition: LogFile.h:45
int32 QueueLength
Definition: LogFile.h:48
bool OverrideFilePath
Definition: LogFile.h:51
FFileCreationOptions FileCreationOptions
Definition: LogFile.h:36

References ULogFile::Create(), CreateDataSavePath(), FLogFileSettings::FileCreationOptions, FLogFileSettings::FilePath, ASensor::FileSavePath, FLogFileSettings::FileWriteOptions, ASensor::IsAttachedToVehicle(), FLogFileSettings::KeepFileOpen, ASensor::LogFile, FLogFileSettings::OverrideFilePath, Overwrite, Queue, FLogFileSettings::QueueLength, and FLogFileSettings::Timestamp.

Referenced by Init().

◆ EndPlay()

void AOverlapSensor::EndPlay ( const EEndPlayReason::Type  EndPlayReason)
overrideprivatevirtual

Reimplemented from ASensor.

Definition at line 105 of file OverlapSensor.cpp.

106{
107 Super::EndPlay(EndPlayReason);
108
109 BoundsComponent->OnComponentBeginOverlap.RemoveDynamic(this, &AOverlapSensor::OnOverlapBegin);
110 BoundsComponent->OnComponentEndOverlap.RemoveDynamic(this, &AOverlapSensor::OnOverlapEnd);
111}

References BoundsComponent, OnOverlapBegin(), and OnOverlapEnd().

◆ GetParametersAsString()

virtual FString AOverlapSensor::GetParametersAsString ( ) const
inlineoverridevirtual

Get this sensor parameters as string

Reimplemented from ASensor.

Definition at line 82 of file OverlapSensor.h.

83 {
85 }
FOverlapSensorParameters Parameters
static FString StructToString(const InStructType &InStruct)
Definition: Sensor.h:325

◆ GetSensorType()

virtual ESensorTypes AOverlapSensor::GetSensorType ( ) const
inlineoverridevirtual

Get type of the sensor

Returns
Sensor's type

Reimplemented from ASensor.

Definition at line 43 of file OverlapSensor.h.

44 {
46 }

References Overlap.

◆ Init()

void AOverlapSensor::Init ( FOverlapSensorParameters  InParameters)

Definition at line 30 of file OverlapSensor.cpp.

31{
32 Parameters = InParameters;
33
34 Vehicle = Cast<AVehicle>(Parameters.OwningActor);
35
36 if (Vehicle)
37 {
38 VehicleName = IActorInformation::Execute_GetActorName(Vehicle);
39 VehicleID = IActorInformation::Execute_GetActorID(Vehicle);
40 }
41
42 UPrimitiveComponent* TriggerComponent = Cast<UPrimitiveComponent>(BoundsComponent);
43
44 // if you change DefaultEngine.ini collision channels then this index must be changed as well!
45 const int32 OverlapSensorIndex = 2;
46 const ECollisionChannel OverlapSensorChannel = UCollisionProfile::Get()->ConvertToCollisionChannel(false, OverlapSensorIndex);
47 BoundsComponent->SetCollisionEnabled(ECollisionEnabled::QueryOnly);
48 BoundsComponent->SetGenerateOverlapEvents(true);
49 BoundsComponent->SetCollisionObjectType(OverlapSensorChannel);
50 BoundsComponent->SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Ignore);
51 BoundsComponent->SetCollisionResponseToChannel(OverlapSensorChannel, ECollisionResponse::ECR_Overlap);
52 BoundsComponent->SetRelativeLocation(Parameters.RelativePosition);
53
54 if (RootComponent)
55 {
56 BoundsComponent->AttachToComponent(RootComponent, FAttachmentTransformRules::KeepWorldTransform);
57 }
58
59 TriggerComponent = BoundsComponent;
60
61 if (TriggerComponent)
62 {
63 SetOverlapBounds(InParameters.Size);
64 //SetRootComponent(TriggerComponent);
66
67 ROSMessages::std_msgs::String StringMsg;
68 ROSMessage = MakeShared<ROSMessages::std_msgs::String>(StringMsg);
69
71 {
73 }
74 }
75
77 {
78 // Adjust the scale of the Sphere/Box component bounds to match the scale of the VisualizerComponent mesh
79 FVector ScaledVector = FVector(Parameters.Size.X / SIZE_DIVISOR, Parameters.Size.Y / SIZE_DIVISOR, Parameters.Size.Z / SIZE_DIVISOR);
80 BoundsComponent->SetRelativeScale3D(ScaledVector);
81 BoundsComponent->SetRelativeLocation(Parameters.RelativePosition);
82
83 if (RootComponent)
84 {
85 BoundsComponent->AttachToComponent(RootComponent, FAttachmentTransformRules::KeepWorldTransform);
86 }
87 }
88
90 {
91 AttachToActor(Parameters.OwningActor, FAttachmentTransformRules::KeepWorldTransform);
92 }
93
95}
static constexpr float SIZE_DIVISOR
void CreateLogFile() override
void SetOverlapBounds(const FVector &NewSize)
void SetSimulateSensor(bool SimulateSensor)
Definition: Sensor.h:160
virtual void CreateROSTopic()
Definition: Sensor.cpp:190

References BoundsComponent, CreateLogFile(), FOverlapSensorParameters::CreateROSTopic, ASensor::CreateROSTopic(), FOverlapSensorParameters::OwningActor, Parameters, FOverlapSensorParameters::RelativePosition, ROSMessage, SetOverlapBounds(), ASensor::SetSimulateSensor(), FOverlapSensorParameters::Size, SIZE_DIVISOR, Vehicle, VehicleID, and VehicleName.

Referenced by USensorFactory::SpawnOverlapSensor().

◆ IsVisualizingOverlapArea()

bool AOverlapSensor::IsVisualizingOverlapArea ( ) const
inline

Definition at line 77 of file OverlapSensor.h.

78 {
79 return IsVisible;
80 }

◆ OnOverlapBegin()

void AOverlapSensor::OnOverlapBegin ( UPrimitiveComponent *  OverlappedComponent,
AActor *  OtherActor,
UPrimitiveComponent *  OtherComp,
int32  OtherBodyIndex,
bool  bFromSweep,
const FHitResult &  SweepResult 
)
protected

Definition at line 167 of file OverlapSensor.cpp.

169{
170 // Don't allow Overlapping with other Overlapping sensors..
171 AOverlapSensor* OtherOverlapSensor = Cast<AOverlapSensor>(OtherActor);
172 if (OtherOverlapSensor)
173 {
174 return;
175 }
176
177 BuildAndSendMessage("Overlap Begin with", OtherActor);
178}
void BuildAndSendMessage(const FString &Prefix, AActor *Actor)

References BuildAndSendMessage().

Referenced by BeginPlay(), and EndPlay().

◆ OnOverlapEnd()

void AOverlapSensor::OnOverlapEnd ( UPrimitiveComponent *  OverlappedComponent,
AActor *  OtherActor,
UPrimitiveComponent *  OtherComp,
int32  OtherBodyIndex 
)
protected

Definition at line 180 of file OverlapSensor.cpp.

182{
183 // Don't allow Overlapping with other Overlapping sensors..
184 AOverlapSensor* OtherOverlapSensor = Cast< AOverlapSensor>(OtherActor);
185 if (OtherOverlapSensor)
186 {
187 return;
188 }
189
190 BuildAndSendMessage("Overlap End with", OtherActor);
191}

References BuildAndSendMessage().

Referenced by BeginPlay(), and EndPlay().

◆ SetOverlapBounds()

void AOverlapSensor::SetOverlapBounds ( const FVector &  NewSize)

Set this Overlap sensor Overlap bounds.

Definition at line 113 of file OverlapSensor.cpp.

114{
115 Parameters.Size = NewSize;
116
117 if (BoundsComponent)
118 {
119 // Adjust the scale of the Sphere/Box component bounds to match the scale of the VisualizerComponent mesh
120 FVector ScaledVector = FVector(Parameters.Size.X / SIZE_DIVISOR, Parameters.Size.Y / SIZE_DIVISOR, Parameters.Size.Z / SIZE_DIVISOR);
121 BoundsComponent->SetRelativeScale3D(ScaledVector);
122 }
123
124 FString ActorID = IActorInformation::Execute_GetActorID(this);
125
126 FString Msg = FString::Printf(TEXT("OverlapSensor with ID: %s changed overlap bounds to: %s"), *ActorID, *NewSize.ToString());
128}

References BoundsComponent, SimulatorLog::Log(), Parameters, FOverlapSensorParameters::Size, and SIZE_DIVISOR.

Referenced by UROSCommands::HandleChangeOverlapSensorBounds(), and Init().

◆ SetOverlapRelativePosition()

void AOverlapSensor::SetOverlapRelativePosition ( const FVector &  Vector)

Set this Overlap sensor relative position to parent.

Definition at line 140 of file OverlapSensor.cpp.

141{
143
144 if (BoundsComponent)
145 {
146 BoundsComponent->SetRelativeLocation(Parameters.RelativePosition);
147 }
148
149 FString Msg = FString::Printf(TEXT("OverlapSensor.cpp: Changed overlap relative position to: %s"), *Vector.ToString());
151}

References BoundsComponent, SimulatorLog::Log(), Parameters, and FOverlapSensorParameters::RelativePosition.

Referenced by UROSCommands::HandleChangeOverlapSensorPosition().

◆ SetOverlapResponseToAllChannels()

void AOverlapSensor::SetOverlapResponseToAllChannels ( const ECollisionResponse  Response)

Set this sensor overlap response.

Parameters
ResponseThe desired collision response. ECR_Overlap: Allows all overlaps to be recognized. ECR_Ignore: Allows only Walker overlaps to be recognized. Other than ECR_Overlap or ECR_Ignore is ignored.

Definition at line 153 of file OverlapSensor.cpp.

154{
155 if (Response != ECollisionResponse::ECR_Overlap && Response != ECollisionResponse::ECR_Ignore)
156 {
157 // If Response is neither ECR_Overlap nor ECR_Ignore, return
158 return;
159 }
160
161 if (BoundsComponent)
162 {
163 BoundsComponent->SetCollisionResponseToAllChannels(Response);
164 }
165}

References BoundsComponent.

◆ SetVisualizeOverlapArea()

void AOverlapSensor::SetVisualizeOverlapArea ( bool  Visualize)

Set this Overlap sensor bounds visulization on or off.

Definition at line 130 of file OverlapSensor.cpp.

131{
132 IsVisible = Visualize;
133
134 if (BoundsComponent)
135 {
136 BoundsComponent->SetVisibility(IsVisible);
137 }
138}

References BoundsComponent, and IsVisible.

Referenced by UROSCommands::HandleVisualizeOverlapSensorsBounds(), and AVehicle::SetVisualizeVehicleOverlapArea().

◆ TryGetID()

FString AOverlapSensor::TryGetID ( AActor *  Actor)
private

Definition at line 292 of file OverlapSensor.cpp.

293{
294 FString ID;
295
296 if (Actor && Actor->GetClass()->ImplementsInterface(UActorInformation::StaticClass()))
297 {
298 if (Actor->Implements<UActorInformation>())
299 {
300 ID = IActorInformation::Execute_GetActorID(Actor);
301 }
302 }
303
304 return ID;
305}

Referenced by BuildAndSendMessage().

Member Data Documentation

◆ BoundsComponent

UBoundsVisualizerComponent* AOverlapSensor::BoundsComponent = nullptr
protected

◆ IsVisible

bool AOverlapSensor::IsVisible = false
private

Definition at line 125 of file OverlapSensor.h.

Referenced by SetVisualizeOverlapArea().

◆ Parameters

FOverlapSensorParameters AOverlapSensor::Parameters
private

Definition at line 116 of file OverlapSensor.h.

Referenced by Init(), SetOverlapBounds(), and SetOverlapRelativePosition().

◆ ROSMessage

TSharedPtr<ROSMessages::std_msgs::String> AOverlapSensor::ROSMessage
private

Definition at line 114 of file OverlapSensor.h.

Referenced by BuildAndSendMessage(), and Init().

◆ Vehicle

AVehicle* AOverlapSensor::Vehicle = nullptr
private

◆ VehicleID

FString AOverlapSensor::VehicleID
private

Definition at line 123 of file OverlapSensor.h.

Referenced by BuildAndSendMessage(), and Init().

◆ VehicleName

FString AOverlapSensor::VehicleName
private

Definition at line 121 of file OverlapSensor.h.

Referenced by BuildAndSendMessage(), and Init().


The documentation for this class was generated from the following files: