14 PrimaryActorTick.bCanEverTick =
false;
35 AttachToActor(
CurrentOwner.Get(), FAttachmentTransformRules::KeepWorldTransform);
51 Super::EndPlay(EndPlayReason);
69void ACollisionSensor::OnComponentHit(UPrimitiveComponent* HitComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, FVector NormalImpulse,
const FHitResult& Hit)
76 NormalImpulse *= 1e-2;
77 if (NormalImpulse.Size() > 0.3f)
84 OtherActor->GetName(),
101 NormalImpulse *= 1e-2;
102 if (NormalImpulse.Size() > 200)
109 OtherActor->GetName(),
121 auto Quote = [](FString S)
123 S.ReplaceInline(TEXT(
"\""), TEXT(
"\\\""));
124 return FString::Printf(TEXT(
"%s"), *S);
134 Location = Data.
ActorPtr->GetActorLocation();
138 const FString ImpulseStr = FString::Printf(TEXT(
"%.2f,%.2f,%.2f"), NormalImpulse.X, NormalImpulse.Y, NormalImpulse.Z);
142 return FString::Printf(
143 TEXT(
"actor=%s other_actor=%s other_actor_id=%s other_actor_location=%.2f,%.2f,%.2f impulse_strength=%s impulse_magnitude=%.2f timestamp=%s"),
147 Location.X, Location.Y, Location.Z,
157 if (Actor && Actor->GetClass()->ImplementsInterface(UActorInformation::StaticClass()))
161 ID = IActorInformation::Execute_GetActorID(Actor);
193 FileSavePath = DataLocation + AttachedVehicle->GetActorID_Implementation();
216 UE_LOG(LogTemp, Warning, TEXT(
"FileSavePath %s"), *
FileSavePath);
218 LogFile = NewObject<ULogFile>(ULogFile::StaticClass());
224 Prefix = AttachedVehicle->GetActorID_Implementation();
226 FString FileName = Prefix.IsEmpty() ? TEXT(
"collision") : Prefix + TEXT(
"_collision");
void SendCollisionData(const FString &CollisionDataString)
void Init(FCollisionSensorParameters CollisionSensorParameters, bool SimulateSensor=true)
void OnComponentHit(UPrimitiveComponent *HitComponent, AActor *OtherActor, UPrimitiveComponent *OtherComp, FVector NormalImpulse, const FHitResult &Hit)
UPrimitiveComponent * PrimitiveComponent
FString CollsionDataToString(const CollisionData &Data)
FString TryGetID(AActor *Actor) const
TSharedPtr< ROSMessages::std_msgs::String > CollisionMessage
FCollisionSensorParameters Parameters
ACollisionSensor(const FObjectInitializer &ObjectInitializer)
virtual void BeginPlay() override
void CreateLogFile() override
void CreateDataSavePath() override
virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override
void OnActorHit(AActor *Actor, AActor *OtherActor, FVector NormalImpulse, const FHitResult &Hit)
TWeakObjectPtr< AActor > CurrentOwner
bool CanSimulateSensor() const
void SetSimulateSensor(bool SimulateSensor)
UTopic * GetROSTopic() const
AVehicle * IsAttachedToVehicle() const
virtual FString GetActorID_Implementation() const override
FString CreateTimeStampString() const
void WriteToLogFile(const FString &Message)
FORCEINLINE bool IsROSConnected() const
virtual void CreateROSTopic()
static FString GetDataFolder()
void Create(const FString &FileNameWithoutExtension, FLogFileSettings Settings)
UPrimitiveComponent * PrimitiveComponent
FFileWriteOptions FileWriteOptions
FFileCreationOptions FileCreationOptions