diff --git a/CHANGELOG.md b/CHANGELOG.md index 574d1003c..bba483c0f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ - `get_ackermann_controller_settings`: to get the last ackermann controller settings applied - `apply_ackermann_controller_settings`: to apply new ackermann controller settings * Fixed bug causing the Traffic Manager to not be deterministic when using hybrid mode + * Added `NormalsSensor`, a new sensor with normals information * Added support for N wheeled vehicles ## CARLA 0.9.13 diff --git a/LibCarla/source/carla/sensor/SensorRegistry.h b/LibCarla/source/carla/sensor/SensorRegistry.h index 507da2280..ee43c3625 100644 --- a/LibCarla/source/carla/sensor/SensorRegistry.h +++ b/LibCarla/source/carla/sensor/SensorRegistry.h @@ -30,6 +30,7 @@ // 2. Add a forward-declaration of the sensor here. class ACollisionSensor; class ADepthCamera; +class ANormalsCamera; class ADVSCamera; class AGnssSensor; class AInertialMeasurementUnit; @@ -58,6 +59,7 @@ namespace sensor { using SensorRegistry = CompositeSerializer< std::pair, std::pair, + std::pair, std::pair, std::pair, std::pair, @@ -84,6 +86,7 @@ namespace sensor { // 4. Include the sensor here. #include "Carla/Sensor/CollisionSensor.h" #include "Carla/Sensor/DepthCamera.h" +#include "Carla/Sensor/NormalsCamera.h" #include "Carla/Sensor/DVSCamera.h" #include "Carla/Sensor/GnssSensor.h" #include "Carla/Sensor/InertialMeasurementUnit.h" diff --git a/PythonAPI/carla/source/libcarla/SensorData.cpp b/PythonAPI/carla/source/libcarla/SensorData.cpp index ca11eaa36..cecf673d9 100644 --- a/PythonAPI/carla/source/libcarla/SensorData.cpp +++ b/PythonAPI/carla/source/libcarla/SensorData.cpp @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include diff --git a/PythonAPI/examples/manual_control.py b/PythonAPI/examples/manual_control.py index aa1d0c374..528ebddec 100755 --- a/PythonAPI/examples/manual_control.py +++ b/PythonAPI/examples/manual_control.py @@ -1121,6 +1121,7 @@ class CameraManager(object): 'chromatic_aberration_intensity': '0.5', 'chromatic_aberration_offset': '0'}], ['sensor.camera.optical_flow', cc.Raw, 'Optical Flow', {}], + ['sensor.camera.normals', cc.Raw, 'Camera Normals', {}], ] world = self._parent.get_world() bp_library = world.get_blueprint_library() diff --git a/Unreal/CarlaUE4/Plugins/Carla/Content/PostProcessingMaterials/NormalsEffectMaterial.uasset b/Unreal/CarlaUE4/Plugins/Carla/Content/PostProcessingMaterials/NormalsEffectMaterial.uasset new file mode 100644 index 000000000..143a260eb Binary files /dev/null and b/Unreal/CarlaUE4/Plugins/Carla/Content/PostProcessingMaterials/NormalsEffectMaterial.uasset differ diff --git a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/NormalsCamera.cpp b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/NormalsCamera.cpp new file mode 100644 index 000000000..f112306c2 --- /dev/null +++ b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/NormalsCamera.cpp @@ -0,0 +1,32 @@ +// Copyright (c) 2017 Computer Vision Center (CVC) at the Universitat Autonoma +// de Barcelona (UAB). +// +// This work is licensed under the terms of the MIT license. +// For a copy, see . + +#include "Carla.h" +#include "Carla/Sensor/NormalsCamera.h" + +#include "Carla/Sensor/PixelReader.h" + +FActorDefinition ANormalsCamera::GetSensorDefinition() +{ + return UActorBlueprintFunctionLibrary::MakeCameraDefinition(TEXT("normals")); +} + +ANormalsCamera::ANormalsCamera(const FObjectInitializer &ObjectInitializer) + : Super(ObjectInitializer) +{ + Enable16BitFormat(true); + AddPostProcessingMaterial( + TEXT("Material'/Carla/PostProcessingMaterials/PhysicLensDistortion.PhysicLensDistortion'")); + + AddPostProcessingMaterial( + TEXT("Material'/Carla/PostProcessingMaterials/NormalsEffectMaterial.NormalsEffectMaterial'")); +} + +void ANormalsCamera::PostPhysTick(UWorld *World, ELevelTick TickType, float DeltaSeconds) +{ + TRACE_CPUPROFILER_EVENT_SCOPE(ANormalsCamera::PostPhysTick); + FPixelReader::SendPixelsInRenderThread(*this); +} diff --git a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/NormalsCamera.h b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/NormalsCamera.h new file mode 100644 index 000000000..f2f14f476 --- /dev/null +++ b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/NormalsCamera.h @@ -0,0 +1,30 @@ +// Copyright (c) 2017 Computer Vision Center (CVC) at the Universitat Autonoma +// de Barcelona (UAB). +// +// This work is licensed under the terms of the MIT license. +// For a copy, see . + +#pragma once + +#include "Carla/Sensor/ShaderBasedSensor.h" + +#include "Carla/Actor/ActorDefinition.h" + +#include "NormalsCamera.generated.h" + +/// Sensor that produces "normals" images. +UCLASS() +class CARLA_API ANormalsCamera : public AShaderBasedSensor +{ + GENERATED_BODY() + +public: + + static FActorDefinition GetSensorDefinition(); + + ANormalsCamera(const FObjectInitializer &ObjectInitializer); + +protected: + + void PostPhysTick(UWorld *World, ELevelTick TickType, float DeltaSeconds) override; +};