From 9d16e6672e8b3e7152bc0017264869018b6b7176 Mon Sep 17 00:00:00 2001 From: nsubiron Date: Thu, 14 Jun 2018 17:20:06 +0200 Subject: [PATCH] Change autopilot to turn at intersections based on front wheels instead of pivot --- .../Source/Carla/Vehicle/WheeledVehicleAIController.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Vehicle/WheeledVehicleAIController.cpp b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Vehicle/WheeledVehicleAIController.cpp index 008e6388a..c8a2cf8e6 100644 --- a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Vehicle/WheeledVehicleAIController.cpp +++ b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Vehicle/WheeledVehicleAIController.cpp @@ -203,7 +203,13 @@ void AWheeledVehicleAIController::TickAutopilotController() float AWheeledVehicleAIController::GoToNextTargetLocation(FVector &Direction) { - const auto &CurrentLocation = Vehicle->GetActorLocation(); + // Get middle point between the two front wheels. + const auto CurrentLocation = [&](){ + const auto &Wheels = Vehicle->GetVehicleMovementComponent()->Wheels; + check((Wheels.Num() > 1) && (Wheels[0u] != nullptr) && (Wheels[1u] != nullptr)); + return (Wheels[0u]->Location + Wheels[1u]->Location) / 2.0f; + }(); + const auto Target = [&](){ const auto &Result = TargetLocations.front(); return FVector{Result.X, Result.Y, CurrentLocation.Z};