Agrarsense
TransformSensor.h
Go to the documentation of this file.
1// Copyright (c) 2023 FrostBit Software Lab at the Lapland University of Applied Sciences
2//
3// This work is licensed under the terms of the MIT license.
4// For a copy, see <https://opensource.org/licenses/MIT>.
5
6#pragma once
7
8#include "CoreMinimal.h"
12
13#include "ROSIntegration/Public/geometry_msgs/Transform.h"
14#include "ROSIntegration/Public/sensor_msgs/NavSatFix.h"
15#include "ROSIntegration/Public/std_msgs/String.h"
16
17#include "TransformSensor.generated.h"
18
19class AGeoReferencingSystem;
20
21/*
22* This Sensor publishes target Actor World transform
23* and GNSS (Latitude, Longitude and Altitude) to ROS topic.
24*/
25UCLASS()
26class AGRARSENSE_API ATransformSensor : public ASensor
27{
28 GENERATED_BODY()
29
30public:
31
32 ATransformSensor(const FObjectInitializer& ObjectInitializer);
33
34 void Init(FTransformSensorParameters Params, bool SimulateSensor = true);
35
40 virtual ESensorTypes GetSensorType() const override
41 {
43 }
44
45protected:
46
47 virtual void BeginPlay() override;
48
49 virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
50
51 virtual void CreateROSTopic() override;
52
53 virtual void DestroyROSTopic() override;
54
55 void CreateDataSavePath() override;
56
58
59private:
60
61 void TickParallel(float DeltaTime);
62
63 void SendTransformDataToROS(const FVector& Translation, const FQuat& Rotation);
64
65 void SendGpsDataToROS(const FVector& ActorPosition);
66
67 void SaveTransformMetaDataToDisk(const FVector& Translation, const FQuat& Rotation);
68
69 void CreateLogFile() override;
70
71 TSharedPtr<ROSMessages::geometry_msgs::Transform> TransformMessage;
72
73 TSharedPtr<ROSMessages::std_msgs::String> GnssMessageString;
74
75 TSharedPtr<ROSMessages::sensor_msgs::NavSatFix> NavSatFixMessage;
76
77 UPROPERTY()
78 FVector PreviousPosition = FVector(0.0f, 0.0f, 0.0f);
79
80 UPROPERTY()
81 FQuat PreviousRotation = FQuat(0.0f, 0.0f, 0.0f, 0.0f);
82
83 UPROPERTY()
84 FTickEntry TickEntry;
85
86 UPROPERTY()
87 UTopic* GnssTopic = nullptr;
88
89 UPROPERTY()
90 UTopic* NavSatFixTopic = nullptr;
91
92 UPROPERTY()
93 AGeoReferencingSystem* GeoReferencingSystem = nullptr;
94};
ESensorTypes
Definition: SensorTypes.h:15
Definition: Sensor.h:45
virtual ESensorTypes GetSensorType() const override
TSharedPtr< ROSMessages::std_msgs::String > GnssMessageString
TSharedPtr< ROSMessages::geometry_msgs::Transform > TransformMessage
TSharedPtr< ROSMessages::sensor_msgs::NavSatFix > NavSatFixMessage
FTransformSensorParameters Parameters