diff --git a/Docs/img/vehicle_bounding_box.png b/Docs/img/vehicle_bounding_box.png index 934f84c12..6f53c4e6f 100644 Binary files a/Docs/img/vehicle_bounding_box.png and b/Docs/img/vehicle_bounding_box.png differ diff --git a/Docs/measurements.md b/Docs/measurements.md index efe4ce776..2adee1365 100644 --- a/Docs/measurements.md +++ b/Docs/measurements.md @@ -127,11 +127,7 @@ size. ###### Transform and bounding box The transform defines the location and orientation of the agent. The bounding -box is assumed to be centered at the agent's location. The box extent gives the -radii dimensions of the bounding box of the agent. +box is centered at the agent's location. The box extent gives the radii +dimensions of the bounding box of the agent. ![Vehicle Bounding Box](img/vehicle_bounding_box.png) - -!!! important - As seen in the picture, the Z coordinate of the box is not fitted to - vehicle's height. diff --git a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Server/CarlaEncoder.cpp b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Server/CarlaEncoder.cpp index f958146c1..55ab53c24 100644 --- a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Server/CarlaEncoder.cpp +++ b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Server/CarlaEncoder.cpp @@ -136,7 +136,6 @@ void FCarlaEncoder::Encode( void FCarlaEncoder::Encode(const UAgentComponent &AgentComponent, carla_agent &AgentData) { AgentData.id = AgentComponent.GetId(); - ::Encode(AgentComponent.GetComponentTransform(), AgentData.transform); FCarlaEncoder Encoder(AgentData); AgentComponent.AcceptVisitor(Encoder); } @@ -149,6 +148,7 @@ FCarlaEncoder::FCarlaEncoder(carla_agent &InData) : Data(InData) {} void FCarlaEncoder::Visit(const UTrafficSignAgentComponent &Agent) { + ::Encode(Agent.GetComponentTransform(), Data.transform); auto &TrafficSign = Agent.GetTrafficSign(); switch (TrafficSign.GetTrafficSignState()) { case ETrafficSignState::TrafficLightRed: @@ -200,6 +200,7 @@ void FCarlaEncoder::Visit(const UTrafficSignAgentComponent &Agent) void FCarlaEncoder::Visit(const UVehicleAgentComponent &Agent) { auto &Vehicle = Agent.GetVehicle(); + ::Encode(Vehicle.GetVehicleTransform(), Data.transform); Data.type = CARLA_SERVER_AGENT_VEHICLE; Data.forward_speed = Vehicle.GetVehicleForwardSpeed(); ::Encode(Vehicle.GetVehicleBoundsExtent(), Data.box_extent); @@ -207,6 +208,7 @@ void FCarlaEncoder::Visit(const UVehicleAgentComponent &Agent) void FCarlaEncoder::Visit(const UWalkerAgentComponent &Agent) { + ::Encode(Agent.GetComponentTransform(), Data.transform); Data.type = CARLA_SERVER_AGENT_PEDESTRIAN; Data.forward_speed = Agent.GetForwardSpeed(); ::Encode(Agent.GetBoundingBoxExtent(), Data.box_extent); diff --git a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Vehicle/CarlaVehicleController.cpp b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Vehicle/CarlaVehicleController.cpp index a5d41e16e..f2f449a75 100644 --- a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Vehicle/CarlaVehicleController.cpp +++ b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Vehicle/CarlaVehicleController.cpp @@ -64,7 +64,7 @@ void ACarlaVehicleController::Tick(float DeltaTime) auto Vehicle = GetPossessedVehicle(); CarlaPlayerState->UpdateTimeStamp(DeltaTime); const FVector PreviousSpeed = CarlaPlayerState->ForwardSpeed * CarlaPlayerState->GetOrientation(); - CarlaPlayerState->Transform = Vehicle->GetActorTransform(); + CarlaPlayerState->Transform = Vehicle->GetVehicleTransform(); CarlaPlayerState->ForwardSpeed = Vehicle->GetVehicleForwardSpeed(); const FVector CurrentSpeed = CarlaPlayerState->ForwardSpeed * CarlaPlayerState->GetOrientation(); CarlaPlayerState->Acceleration = (CurrentSpeed - PreviousSpeed) / DeltaTime; @@ -113,7 +113,7 @@ void ACarlaVehicleController::IntersectPlayerWithRoadMap() auto Vehicle = GetPossessedVehicle(); constexpr float ChecksPerCentimeter = 0.1f; auto Result = RoadMap->Intersect( - Vehicle->GetActorTransform(), + Vehicle->GetVehicleTransform(), Vehicle->GetVehicleBoundsExtent(), ChecksPerCentimeter); diff --git a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Vehicle/CarlaWheeledVehicle.cpp b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Vehicle/CarlaWheeledVehicle.cpp index 5b194f693..d38d2f290 100644 --- a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Vehicle/CarlaWheeledVehicle.cpp +++ b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Vehicle/CarlaWheeledVehicle.cpp @@ -37,6 +37,13 @@ ACarlaWheeledVehicle::~ACarlaWheeledVehicle() {} // -- Get functions ------------------------------------------------------------ // ============================================================================= +FTransform ACarlaWheeledVehicle::GetVehicleTransform() const +{ + FTransform Transform = VehicleBounds->GetComponentTransform(); + Transform.SetScale3D(GetActorTransform().GetScale3D()); + return Transform; +} + float ACarlaWheeledVehicle::GetVehicleForwardSpeed() const { return GetVehicleMovementComponent()->GetForwardSpeed() * 0.036f; @@ -44,7 +51,7 @@ float ACarlaWheeledVehicle::GetVehicleForwardSpeed() const FVector ACarlaWheeledVehicle::GetVehicleOrientation() const { - return GetActorTransform().GetRotation().GetForwardVector(); + return GetVehicleTransform().GetRotation().GetForwardVector(); } int32 ACarlaWheeledVehicle::GetVehicleCurrentGear() const diff --git a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Vehicle/CarlaWheeledVehicle.h b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Vehicle/CarlaWheeledVehicle.h index 09eb3e10e..0131c8f12 100644 --- a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Vehicle/CarlaWheeledVehicle.h +++ b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Vehicle/CarlaWheeledVehicle.h @@ -41,6 +41,11 @@ public: /// @{ public: + /// Transform of the vehicle. Location is shifted so it matches center of the + /// vehicle bounds rather than the actor's location. + UFUNCTION(Category = "CARLA Wheeled Vehicle", BlueprintCallable) + FTransform GetVehicleTransform() const; + /// Forward speed in km/h. Might be negative if goes backwards. UFUNCTION(Category = "CARLA Wheeled Vehicle", BlueprintCallable) float GetVehicleForwardSpeed() const; diff --git a/Util/ContentVersions.txt b/Util/ContentVersions.txt index 64d98a07d..061d7f5dd 100644 --- a/Util/ContentVersions.txt +++ b/Util/ContentVersions.txt @@ -8,4 +8,4 @@ 0.6.0: 1Gw8sw01hDEV4FtpHEZZwvS-6XN0jmaLT 0.7.0: 11PKC_lG7L80L1ZxiMlzV17utU45UcRnT 0.7.1: 1gf3YaFIjwr1EaK6qxq2V-a510Brt9Imq -Latest: 1_kSLT8Q05I7zC_X0q4ABMIB8gRd-W-ZF +Latest: 1LrXnaSD0eN3aeYFeBm2jNGSnA0JHwBng