From acdb5849078646dba658e05d999c23d0ec15bfb5 Mon Sep 17 00:00:00 2001 From: larryng-rapyuta <81980129+larryng-rapyuta@users.noreply.github.com> Date: Tue, 16 Nov 2021 17:47:10 +0800 Subject: [PATCH] Amr spawn with params (#21) * added actors spawning with ROS2 param * added actors spawning with ROS2 param * removed an uneeded file for ROS2 params, ROS2SpawnableActor * fixed spawned robots pick drop crash * added copyright to ROS2Spawnable, removed emptiness check since doesnt seem useful at the moment * changed box back to using BP_AMRPayload * changed SetActorLabel to editor only and added use of Rename Co-authored-by: larryng-rapyuta <lng@rapyuta-robotics.com> --- Content/Tools/ROS2GameMode.uasset | Bin 90973 -> 97987 bytes .../Private/Tools/ROS2Spawnable.cpp | 33 ++++++++++++++ .../Private/Tools/SimulationState.cpp | 35 ++++++++++----- .../Public/Tools/ROS2Spawnable.h | 42 ++++++++++++++++++ 4 files changed, 100 insertions(+), 10 deletions(-) create mode 100644 Source/RapyutaSimulationPlugins/Private/Tools/ROS2Spawnable.cpp create mode 100644 Source/RapyutaSimulationPlugins/Public/Tools/ROS2Spawnable.h diff --git a/Content/Tools/ROS2GameMode.uasset b/Content/Tools/ROS2GameMode.uasset index ab1e5aad17dc78f36ceee4b87ec346c7b334f0d2..6b993d791f65b10b8de4cdcb5b028b2025f25707 100644 GIT binary patch literal 97987 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 literal 90973 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 PszEDe(rf;F@OA$WD$Hje diff --git a/Source/RapyutaSimulationPlugins/Private/Tools/ROS2Spawnable.cpp b/Source/RapyutaSimulationPlugins/Private/Tools/ROS2Spawnable.cpp new file mode 100644 index 000000000..46fd60476 --- /dev/null +++ b/Source/RapyutaSimulationPlugins/Private/Tools/ROS2Spawnable.cpp @@ -0,0 +1,33 @@ +// Copyright 2020-2021 Rapyuta Robotics Co., Ltd. + +#include "Tools/ROS2Spawnable.h" + +// rclUE +#include "Srvs/ROS2SpawnEntitySrv.h" + +void UROS2Spawnable::InitializeParameters(FROSSpawnEntity_Request Request) +{ + SetName(Request.state_name); + SetNamespace(Request.robot_namespace); + +} + +void UROS2Spawnable::SetName(FString Name) +{ + ActorName = Name; +} + +void UROS2Spawnable::SetNamespace(FString Namespace) +{ + ActorNamespace = Namespace; +} + +FString UROS2Spawnable::GetName() +{ + return ActorName; +} + +FString UROS2Spawnable::GetNamespace() +{ + return ActorNamespace; +} \ No newline at end of file diff --git a/Source/RapyutaSimulationPlugins/Private/Tools/SimulationState.cpp b/Source/RapyutaSimulationPlugins/Private/Tools/SimulationState.cpp index 555f02d09..66374be4b 100644 --- a/Source/RapyutaSimulationPlugins/Private/Tools/SimulationState.cpp +++ b/Source/RapyutaSimulationPlugins/Private/Tools/SimulationState.cpp @@ -1,9 +1,10 @@ // Copyright 2020-2021 Rapyuta Robotics Co., Ltd. #include "Tools/SimulationState.h" - +#include "Tools/ROS2Spawnable.h" // UE #include "EngineUtils.h" +#include "Engine/World.h" #include "Kismet/GameplayStatics.h" // rclUE @@ -126,7 +127,6 @@ bool ASimulationState::ReferenceFrameToInertiaFrame(const FString& InReferenceFr FQuat& OutOrientation) { bool bSuccess = false; - LeftToRight(OutPositionX, OutPositionY, OutPositionZ, OutOrientation); if (InReferenceFrame.IsEmpty()) { @@ -186,7 +186,7 @@ void ASimulationState::SetEntityStateSrv(UROS2GenericSrv* Service) { Response.success = false; UE_LOG(LogTemp, Warning, - TEXT("Entity %s not exit or not under SimulationState control. Please call AddEntity to make Actors under SimulationState contorl."), + TEXT("Entity %s not exit or not under SimulationState control. Please call AddEntity to make Actors under SimulationState control."), *Request.state_name); } } @@ -222,7 +222,7 @@ void ASimulationState::AttachSrv(UROS2GenericSrv* Service) else { UE_LOG(LogTemp, Warning, - TEXT("Entity %s and/or %s not exit or not under SimulationState Actor control. Please call AddEntity to make Actors under SimulationState contorl."), + TEXT("Entity %s and/or %s not exit or not under SimulationState Actor control. Please call AddEntity to make Actors under SimulationState control."), *Request.name1, *Request.name2); } @@ -236,14 +236,14 @@ void ASimulationState::SpawnEntitySrv(UROS2GenericSrv* Service) FROSSpawnEntity_Request Request; SpawnEntityService->GetRequest(Request); - UE_LOG(LogTemp, Warning, TEXT("SpawnEntityService called")); - FROSSpawnEntity_Response Response; + Response.success = ReferenceFrameToInertiaFrame(Request.state_reference_frame, Request.state_pose_position_x, Request.state_pose_position_y, Request.state_pose_position_z, Request.state_pose_orientation); + if (Response.success) { if (SpawnableEntities.Contains(Request.xml)) @@ -254,17 +254,31 @@ void ASimulationState::SpawnEntitySrv(UROS2GenericSrv* Service) UE_LOG(LogTemp, Warning, TEXT("Spawning %s"), *Request.xml); Response.success = true; - FActorSpawnParameters SpawnParameters; - SpawnParameters.Name = FName(Request.state_name); FRotator Rotator = Request.state_pose_orientation.Rotator(); FVector Position(Request.state_pose_position_x, Request.state_pose_position_y, Request.state_pose_position_z); - AActor* NewEntity = GetWorld()->SpawnActor(SpawnableEntities[Request.xml], &Position, &Rotator, SpawnParameters); + FVector Scale(1, 1, 1); + FTransform Transform(Rotator, Position, Scale); + + AActor* NewEntity = GetWorld()->SpawnActorDeferred<AActor>(SpawnableEntities[Request.xml], Transform); + UROS2Spawnable* SpawnableComponent = NewObject<UROS2Spawnable>(NewEntity, FName("ROS2 Spawn Parameters")); + + SpawnableComponent->RegisterComponent(); + SpawnableComponent->InitializeParameters(Request); + NewEntity->AddInstanceComponent(SpawnableComponent); +#if WITH_EDITOR + NewEntity->SetActorLabel(*Request.state_name); +#endif + NewEntity->Rename(*Request.state_name); + + UGameplayStatics::FinishSpawningActor(NewEntity, Transform); AddEntity(NewEntity); + + UE_LOG(LogTemp, Warning, TEXT("New Spawned Entity Name: %s"), *NewEntity->GetName()); } else { UE_LOG(LogTemp, Warning, - TEXT("Entity %s not exit or not under SimulationState Actor control. Please call AddEntity to make Actors under SimulationState contorl."), + TEXT("Entity %s not exit or not under SimulationState Actor control. Please call AddEntity to make Actors under SimulationState control."), *Request.xml); } } @@ -272,6 +286,7 @@ void ASimulationState::SpawnEntitySrv(UROS2GenericSrv* Service) SpawnEntityService->SetResponse(Response); } + void ASimulationState::DeleteEntitySrv(UROS2GenericSrv* Service) { UROS2DeleteEntitySrv* DeleteEntityService = Cast<UROS2DeleteEntitySrv>(Service); diff --git a/Source/RapyutaSimulationPlugins/Public/Tools/ROS2Spawnable.h b/Source/RapyutaSimulationPlugins/Public/Tools/ROS2Spawnable.h new file mode 100644 index 000000000..4b82afe0a --- /dev/null +++ b/Source/RapyutaSimulationPlugins/Public/Tools/ROS2Spawnable.h @@ -0,0 +1,42 @@ +// Copyright 2020-2021 Rapyuta Robotics Co., Ltd. + +#pragma once +#include "CoreMinimal.h" +#include "GameFramework/Actor.h" + +// rclUE +#include "Srvs/ROS2SpawnEntitySrv.h" + +#include "ROS2Spawnable.generated.h" + +UCLASS(ClassGroup = (Custom), Blueprintable, meta = (BlueprintSpawnableComponent)) +class RAPYUTASIMULATIONPLUGINS_API UROS2Spawnable : public UActorComponent +{ + GENERATED_BODY() + +public: + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + FString ActorName; + + UPROPERTY(EditAnywhere, BlueprintReadWrite) + FString ActorNamespace; + +public: + + UFUNCTION(BlueprintCallable) + virtual void InitializeParameters(FROSSpawnEntity_Request Request); + + UFUNCTION(BlueprintCallable) + virtual void SetName(FString Name); + + UFUNCTION(BlueprintCallable) + virtual void SetNamespace(FString Namespace); + + UFUNCTION(BlueprintCallable) + virtual FString GetName(); + + UFUNCTION(BlueprintCallable) + virtual FString GetNamespace(); + +};