8#include "CoreMinimal.h"
12#include "ROSIntegration/Public/std_msgs/String.h"
14#include "CollisionSensor.generated.h"
30 return FString::Printf(TEXT(
"%s, %s, %s, %s, %s"), *
Actor, *
OtherActor, *X, *Y, *Z);
40 auto Quote = [](FString S)
42 S.ReplaceInline(TEXT(
"\""), TEXT(
"\\\""));
43 return FString::Printf(TEXT(
"\"%s\""), *S);
46 const FString ImpulseStr = FString::Printf(TEXT(
"%.2f,%.2f,%.2f"),
49 const FString Ts = FDateTime::UtcNow().ToIso8601();
51 return FString::Printf(
52 TEXT(
"actor=%s other_actor=%s impulse_strength=\"%s\" impulse_magnitude=%.2f ts=%s"),
78 UFUNCTION(BlueprintCallable)
92 virtual void BeginPlay()
override;
94 virtual void EndPlay(
const EEndPlayReason::Type EndPlayReason)
override;
96 void CreateDataSavePath()
override;
98 void CreateLogFile()
override;
104 void SendCollisionData(
const FString& CollisionDataString);
107 void OnComponentHit(UPrimitiveComponent* HitComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, FVector NormalImpulse, const FHitResult& Hit);
110 void OnActorHit(AActor* Actor, AActor* OtherActor, FVector NormalImpulse, const FHitResult& Hit);
114 FString TryGetID(AActor* Actor) const;
117 TWeakObjectPtr<AActor> CurrentOwner;
120 UPrimitiveComponent* PrimitiveComponent =
nullptr;
122 TSharedPtr<ROSMessages::std_msgs::String> CollisionMessage;
virtual ESensorTypes GetSensorType() const override
FCollisionSensorParameters Parameters
FString ToStringHumanReadable()
FString ToLogString() const