15#include "GeoReferencingSystem.h" 
   16#include "TimerManager.h" 
   20    RootComponent = CreateDefaultSubobject<USceneComponent>(TEXT(
"SceneRoot"));
 
   21    PrimaryActorTick.bCanEverTick = 
true;
 
   22    PrimaryActorTick.bStartWithTickEnabled = 
false;
 
   23    PrimaryActorTick.TickGroup = TG_PrePhysics;
 
   24    SetActorTickEnabled(
false);
 
   33        if (
ACamera* CameraPtr = Cast<ACamera>(Sensor))
 
   35            NewCaptureData.
Cameras.Add(CameraPtr);
 
   37        else if (
ALidar* LidarPtr = Cast<ALidar>(Sensor))
 
   39            NewCaptureData.
Lidars.Add(LidarPtr);
 
   47        AGeoReferencingSystem* GeoReferencingSystem = AGeoReferencingSystem::GetGeoReferencingSystem(GetWorld());
 
   49        if (GeoReferencingSystem)
 
   53                FVector Location = CaptureTransform.GetLocation();
 
   55                float StoredZ = Location.Z;
 
   57                FGeographicCoordinates GeographicCoordinates;
 
   58                GeographicCoordinates.Latitude = Location.X;
 
   59                GeographicCoordinates.Longitude = Location.Y;
 
   60                GeographicCoordinates.Altitude = Location.Z;
 
   66                    CaptureTransform.SetLocation(InUnrealCoordinates);
 
   71                    InUnrealCoordinates.Z = StoredZ;
 
   72                    CaptureTransform.SetLocation(InUnrealCoordinates);
 
   79            SimulatorLog::Log(
"Couldn't convert GPS coordinates into Unreal transform because couldn't find GeoReferencingSystem.");
 
   86        TArray<FTransform> NewCapturePositions;
 
   90            FVector OriginalPosition = OriginalTransform.GetLocation();
 
   91            FRotator OriginalRotation = OriginalTransform.GetRotation().Rotator();
 
   94            NewCapturePositions.Add(OriginalTransform);
 
   96            for (int32 i = 0; i < NumPhotos; i++)
 
   98                FTransform CameraTransform = FTransform::Identity;
 
  103                    CameraTransform.SetLocation(OriginalPosition + FVector(0, 100, 0));
 
  104                    CameraTransform.SetRotation(FQuat(OriginalRotation));
 
  107                    CameraTransform.SetLocation(OriginalPosition + FVector(0, -100, 0));
 
  108                    CameraTransform.SetRotation(FQuat(OriginalRotation + FRotator(0, 180, 0)));
 
  111                    CameraTransform.SetLocation(OriginalPosition + FVector(-100, 0, 0));
 
  112                    CameraTransform.SetRotation(FQuat(OriginalRotation + FRotator(0, 90, 0)));
 
  115                    CameraTransform.SetLocation(OriginalPosition + FVector(100, 0, 0));
 
  116                    CameraTransform.SetRotation(FQuat(OriginalRotation + FRotator(0, 270, 0)));
 
  121                NewCapturePositions.Add(CameraTransform);
 
  146        GetWorld()->GetTimerManager().SetTimer(Handle, FTimerDelegate::CreateLambda([
this]
 
  149                SetActorTickEnabled(
true);
 
  166    Super::Tick(DeltaTime);
 
  172    Super::EndPlay(EndPlayReason);
 
  185        SetActorTickEnabled(
false);
 
  189        GetWorld()->GetTimerManager().SetTimer(Handle, FTimerDelegate::CreateLambda([
this]
 
  295            SensorPtr->Destroy();
 
@ WaitingAfterPositionUpdate
 
@ WaitingForPositionUpdate
 
void ChangeCameraParameters(FCameraBaseParameters newParameters)
 
void SaveCurrentFrameToDisk()
 
FCameraBaseParameters GetCameraParameters()
 
virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override
 
void SetupDataCapture(FCaptureData NewCaptureData)
 
virtual void Tick(float DeltaTime) override
 
ADataCapture(const FObjectInitializer &ObjectInitializer)
 
void UpdatePositions(const FTransform &Transform)
 
virtual void BeginPlay() override
 
void ForceClearContainers()
 
void SaveCurrentPointCloudToDisk()
 
static void Log(const FString &Message, bool LogToTextFile=true, bool LogToROS=true)
 
static FVector GeographicToUnrealCoordinates(AGeoReferencingSystem *GeoReferencingSystem, const FGeographicCoordinates &GeographicCoordinates)
 
static bool AlignTransformFromGroundInMeters(AActor *Actor, FTransform &InTransform)
 
int32 FramesToKeepInSamePosition
 
bool UseHeightAboveGround
 
TArray< FTransform > CapturePositions
 
TArray< ACamera * > Cameras
 
TArray< ALidar * > Lidars
 
int32 CurrentCaptureIndex
 
TArray< ASensor * > Sensors