From 36699ae8a6635b4888c93c27817e795df3e2a58e Mon Sep 17 00:00:00 2001 From: Shashank Singh Date: Mon, 19 Apr 2021 18:22:12 +0200 Subject: [PATCH 1/9] Optical Flow --- LibCarla/source/carla/sensor/SensorRegistry.h | 4 ++ LibCarla/source/carla/sensor/data/Color.h | 32 ++++++++++ LibCarla/source/carla/sensor/data/Image.h | 5 +- LibCarla/source/carla/sensor/data/ImageTmpl.h | 3 + .../sensor/s11n/Image16bitSerializer.cpp | 21 +++++++ .../carla/sensor/s11n/Image16bitSerializer.h | 59 +++++++++++++++++++ .../carla/source/libcarla/SensorData.cpp | 26 ++++++++ PythonAPI/examples/manual_control.py | 45 ++++++++++++++ Unreal/CarlaUE4/Config/DefaultEngine.ini | 2 + .../Source/Carla/Sensor/OpticalFlowCamera.cpp | 31 ++++++++++ .../Source/Carla/Sensor/OpticalFlowCamera.h | 24 ++++++++ .../Carla/Source/Carla/Sensor/PixelReader.cpp | 44 +++++++++++++- .../Carla/Source/Carla/Sensor/PixelReader.h | 13 ++-- .../Carla/Sensor/SceneCaptureSensor.cpp | 3 +- .../Source/Carla/Sensor/SceneCaptureSensor.h | 16 +++++ 15 files changed, 318 insertions(+), 10 deletions(-) create mode 100644 LibCarla/source/carla/sensor/s11n/Image16bitSerializer.cpp create mode 100644 LibCarla/source/carla/sensor/s11n/Image16bitSerializer.h create mode 100644 Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/OpticalFlowCamera.cpp create mode 100644 Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/OpticalFlowCamera.h diff --git a/LibCarla/source/carla/sensor/SensorRegistry.h b/LibCarla/source/carla/sensor/SensorRegistry.h index fadee6f3de0..accba7e0319 100644 --- a/LibCarla/source/carla/sensor/SensorRegistry.h +++ b/LibCarla/source/carla/sensor/SensorRegistry.h @@ -19,6 +19,7 @@ #include "carla/sensor/s11n/EpisodeStateSerializer.h" #include "carla/sensor/s11n/GnssSerializer.h" #include "carla/sensor/s11n/ImageSerializer.h" +#include "carla/sensor/s11n/Image16bitSerializer.h" #include "carla/sensor/s11n/IMUSerializer.h" #include "carla/sensor/s11n/LidarSerializer.h" #include "carla/sensor/s11n/NoopSerializer.h" @@ -34,6 +35,7 @@ class AGnssSensor; class AInertialMeasurementUnit; class ALaneInvasionSensor; class AObstacleDetectionSensor; +class AOpticalFlowCamera; class ARadar; class ARayCastSemanticLidar; class ARayCastLidar; @@ -60,6 +62,7 @@ namespace sensor { std::pair, std::pair, std::pair, + std::pair, std::pair, std::pair, std::pair, @@ -84,6 +87,7 @@ namespace sensor { #include "Carla/Sensor/InertialMeasurementUnit.h" #include "Carla/Sensor/LaneInvasionSensor.h" #include "Carla/Sensor/ObstacleDetectionSensor.h" +#include "Carla/Sensor/OpticalFlowCamera.h" #include "Carla/Sensor/Radar.h" #include "Carla/Sensor/RayCastLidar.h" #include "Carla/Sensor/RayCastSemanticLidar.h" diff --git a/LibCarla/source/carla/sensor/data/Color.h b/LibCarla/source/carla/sensor/data/Color.h index 1b9eb591bce..4073c432866 100644 --- a/LibCarla/source/carla/sensor/data/Color.h +++ b/LibCarla/source/carla/sensor/data/Color.h @@ -46,6 +46,38 @@ namespace data { static_assert(sizeof(Color) == sizeof(uint32_t), "Invalid color size!"); +#pragma pack(push, 1) + /// A 64-bit PF_FloatRGBA color [16bit / channel]. (still uses uint16 types to transport 16bit floats) + struct Color16bit { + Color16bit() = default; + Color16bit(const Color16bit &) = default; + + Color16bit(uint16_t r, uint16_t g, uint16_t b, uint16_t a = 255u) + : b(b), g(g), r(r), a(a) {} + + Color16bit &operator=(const Color16bit &) = default; + + bool operator==(const Color16bit &rhs) const { + return (r == rhs.r) && (g == rhs.g) && (b == rhs.b) && (a == rhs.a); + } + + bool operator!=(const Color16bit &rhs) const { + return !(*this == rhs); + } + +// operator rpc::Color16bit() const { +// return {r, g, b}; +// } + + uint16_t b = 0u; + uint16_t g = 0u; + uint16_t r = 0u; + uint16_t a = 0u; + }; +#pragma pack(pop) + + static_assert(sizeof(Color16bit) == sizeof(uint64_t), "Invalid 16bit color size!"); + } // namespace data } // namespace sensor } // namespace carla diff --git a/LibCarla/source/carla/sensor/data/Image.h b/LibCarla/source/carla/sensor/data/Image.h index fd5a7b22890..ca7705484ce 100644 --- a/LibCarla/source/carla/sensor/data/Image.h +++ b/LibCarla/source/carla/sensor/data/Image.h @@ -13,9 +13,12 @@ namespace carla { namespace sensor { namespace data { - /// An image of 32-bit BGRA colors. + /// An image of 32-bit BGRA colors (8-bit channels) using Image = ImageTmpl; + /// An image of 64-bit BGRA colors (16-bit channels) + using Image16bit = ImageTmpl; + } // namespace data } // namespace sensor } // namespace carla diff --git a/LibCarla/source/carla/sensor/data/ImageTmpl.h b/LibCarla/source/carla/sensor/data/ImageTmpl.h index 9f68559fc4c..deb41dc64cc 100644 --- a/LibCarla/source/carla/sensor/data/ImageTmpl.h +++ b/LibCarla/source/carla/sensor/data/ImageTmpl.h @@ -9,6 +9,7 @@ #include "carla/Debug.h" #include "carla/sensor/data/Array.h" #include "carla/sensor/s11n/ImageSerializer.h" +#include "carla/sensor/s11n/Image16bitSerializer.h" namespace carla { namespace sensor { @@ -21,8 +22,10 @@ namespace data { protected: using Serializer = s11n::ImageSerializer; + using Serializer16bit = s11n::Image16bitSerializer; friend Serializer; + friend Serializer16bit; explicit ImageTmpl(RawData &&data) : Super(Serializer::header_offset, std::move(data)) { diff --git a/LibCarla/source/carla/sensor/s11n/Image16bitSerializer.cpp b/LibCarla/source/carla/sensor/s11n/Image16bitSerializer.cpp new file mode 100644 index 00000000000..97793e90288 --- /dev/null +++ b/LibCarla/source/carla/sensor/s11n/Image16bitSerializer.cpp @@ -0,0 +1,21 @@ +// +// Created by flo on 09.11.20. +// + +#include "Image16bitSerializer.h" +#include "carla/sensor/s11n/Image16bitSerializer.h" + +#include "carla/sensor/data/Image.h" + +namespace carla { + namespace sensor { + namespace s11n { + + SharedPtr Image16bitSerializer::Deserialize(RawData &&data) { + auto image = SharedPtr(new data::Image16bit{std::move(data)}); + return image; + } + + } // namespace s11n + } // namespace sensor +} // namespace carla diff --git a/LibCarla/source/carla/sensor/s11n/Image16bitSerializer.h b/LibCarla/source/carla/sensor/s11n/Image16bitSerializer.h new file mode 100644 index 00000000000..621700e1b09 --- /dev/null +++ b/LibCarla/source/carla/sensor/s11n/Image16bitSerializer.h @@ -0,0 +1,59 @@ +// +// Created by flo on 09.11.20. +// + +#pragma once + +#include "carla/Memory.h" +#include "carla/sensor/RawData.h" + +#include +#include + +namespace carla { + namespace sensor { + + class SensorData; + + namespace s11n { + + /// Serializes image buffers generated by camera sensors. + class Image16bitSerializer { + public: + +#pragma pack(push, 1) + struct ImageHeader { + uint32_t width; + uint32_t height; + float fov_angle; + }; +#pragma pack(pop) + + constexpr static auto header_offset = sizeof(ImageHeader); + + static const ImageHeader &DeserializeHeader(const RawData &data) { + return *reinterpret_cast(data.begin()); + } + + template + static Buffer Serialize(const Sensor &sensor, Buffer &&bitmap); + + static SharedPtr Deserialize(RawData &&data); + }; + + template + inline Buffer Image16bitSerializer::Serialize(const Sensor &sensor, Buffer &&bitmap) { + DEBUG_ASSERT(bitmap.size() > sizeof(ImageHeader)); + ImageHeader header = { + sensor.GetImageWidth(), + sensor.GetImageHeight(), + sensor.GetFOVAngle() + }; + std::memcpy(bitmap.data(), reinterpret_cast(&header), sizeof(header)); + return std::move(bitmap); + } + + } // namespace s11n + } // namespace sensor +} // namespace carla + diff --git a/PythonAPI/carla/source/libcarla/SensorData.cpp b/PythonAPI/carla/source/libcarla/SensorData.cpp index 58eaffd35de..74d512c946c 100644 --- a/PythonAPI/carla/source/libcarla/SensorData.cpp +++ b/PythonAPI/carla/source/libcarla/SensorData.cpp @@ -40,6 +40,14 @@ namespace data { return out; } + std::ostream &operator<<(std::ostream &out, const Image16bit &image) { + out << "Image16bit(frame=" << std::to_string(image.GetFrame()) + << ", timestamp=" << std::to_string(image.GetTimestamp()) + << ", size=" << std::to_string(image.GetWidth()) << 'x' << std::to_string(image.GetHeight()) + << ')'; + return out; + } + std::ostream &operator<<(std::ostream &out, const LidarMeasurement &meas) { out << "LidarMeasurement(frame=" << std::to_string(meas.GetFrame()) << ", timestamp=" << std::to_string(meas.GetTimestamp()) @@ -272,6 +280,24 @@ void export_sensor_data() { .def(self_ns::str(self_ns::self)) ; + class_, boost::noncopyable, boost::shared_ptr>("Image16bit", no_init) + .add_property("width", &csd::Image16bit::GetWidth) + .add_property("height", &csd::Image16bit::GetHeight) + .add_property("fov", &csd::Image16bit::GetFOVAngle) + .add_property("raw_data", &GetRawDataAsBuffer) + // .def("convert", &ConvertImage, (arg("color_converter"))) unimplemented + // .def("save_to_disk", &SaveImageToDisk, (arg("path"), arg("color_converter")=EColorConverter::Raw)) unimplemented + .def("__len__", &csd::Image16bit::size) + .def("__iter__", iterator()) + .def("__getitem__", +[](const csd::Image16bit &self, size_t pos) -> csd::Color16bit { + return self.at(pos); + }) + .def("__setitem__", +[](csd::Image16bit &self, size_t pos, csd::Color16bit color) { + self.at(pos) = color; + }) + .def(self_ns::str(self_ns::self)) + ; + class_, boost::noncopyable, boost::shared_ptr>("LidarMeasurement", no_init) .add_property("horizontal_angle", &csd::LidarMeasurement::GetHorizontalAngle) .add_property("channels", &csd::LidarMeasurement::GetChannelCount) diff --git a/PythonAPI/examples/manual_control.py b/PythonAPI/examples/manual_control.py index c0c867dbac3..2686b818b6f 100755 --- a/PythonAPI/examples/manual_control.py +++ b/PythonAPI/examples/manual_control.py @@ -63,6 +63,13 @@ import os import sys +OPENCV_INSTALLED = True +try: + import cv2 +except ImportError: + OPENCV_INSTALLED = False + pass + try: sys.path.append(glob.glob('../carla/dist/carla-*%d.%d-%s.egg' % ( sys.version_info.major, @@ -155,6 +162,27 @@ def get_actor_display_name(actor, truncate=250): return (name[:truncate - 1] + u'\u2026') if len(name) > truncate else name +def render_optical_flow_data(data): + intensity = np.linalg.norm(data, axis=2) + angle = np.arctan2(data[:, :, 0], data[:, :, 1]) + max_intensity = 100 + # N.B.: an intensity of exactly 1.0 makes the output black (perhaps showing the over-saturation), so keep it < 1 + intensity = np.clip(intensity, 0, max_intensity - 1) / max_intensity + # log scaling + basis = 30 + intensity = np.log1p((basis - 1) * intensity) / np.log1p(basis - 1) + # for the angle they use 360° scale, see https://stackoverflow.com/a/57203497/14467327 + angle = (np.pi + angle) * 360 / (2 * np.pi) + # print(F"Ranges, angle: [{np.min(angle)}, {np.max(angle)}], " + # F"intensity: [{np.min(intensity)}, {np.max(intensity)}]") + intensity = intensity[:, :, np.newaxis] + angle = angle[:, :, np.newaxis] + hsv_img = np.concatenate((angle, np.ones_like(intensity), intensity), axis=2) + img_out = np.array(cv2.cvtColor(np.array(hsv_img, dtype=np.float32), cv2.COLOR_HSV2RGB) * 256, + dtype=np.dtype("uint8")) + return img_out + + # ============================================================================== # -- World --------------------------------------------------------------------- # ============================================================================== @@ -981,6 +1009,7 @@ def __init__(self, parent_actor, hud, gamma_correction): self.transform_index = 1 self.sensors = [ ['sensor.camera.rgb', cc.Raw, 'Camera RGB', {}], + ['sensor.camera.optical_flow', cc.Raw, 'Optical Flow', {}], ['sensor.camera.depth', cc.Raw, 'Camera Depth (Raw)', {}], ['sensor.camera.depth', cc.Depth, 'Camera Depth (Gray Scale)', {}], ['sensor.camera.depth', cc.LogarithmicDepth, 'Camera Depth (Logarithmic Gray Scale)', {}], @@ -1079,6 +1108,22 @@ def _parse_image(weak_self, image): # Blue is positive, red is negative dvs_img[dvs_events[:]['y'], dvs_events[:]['x'], dvs_events[:]['pol'] * 2] = 255 self.surface = pygame.surfarray.make_surface(dvs_img.swapaxes(0, 1)) + elif self.sensors[self.index][0].startswith('sensor.camera.optical_flow'): + # print(image) + array = np.frombuffer(image.raw_data, dtype=np.uint16) + array = np.reshape(array, (image.height, image.width, 4)) + if OPENCV_INSTALLED: + data_array = np.array(array[:, :, 0:2], dtype=np.float32) + data_array[:, :, 0] = (data_array[:, :, 0] - 32767) * (2 * image.width / 65535) + data_array[:, :, 1] = (32767 - data_array[:, :, 1]) * (2 * image.height / 65535) + + img_out = render_optical_flow_data(data_array) + + self.surface = pygame.surfarray.make_surface(img_out.swapaxes(0, 1)) + else: + array = array[:, :, :3] + array = array[:, :, ::-1] + self.surface = pygame.surfarray.make_surface(array.swapaxes(0, 1)) else: image.convert(self.sensors[self.index][1]) array = np.frombuffer(image.raw_data, dtype=np.dtype("uint8")) diff --git a/Unreal/CarlaUE4/Config/DefaultEngine.ini b/Unreal/CarlaUE4/Config/DefaultEngine.ini index 7cd2dcff374..c8d82afca98 100644 --- a/Unreal/CarlaUE4/Config/DefaultEngine.ini +++ b/Unreal/CarlaUE4/Config/DefaultEngine.ini @@ -19,6 +19,8 @@ GlobalDefaultServerGameMode=/Game/Carla/Blueprints/Game/CarlaGameMode.CarlaGameM [/Script/Engine.RendererSettings] r.DefaultFeature.MotionBlur=True +r.BasePassOutputsVelocity=True +r.BasePassForceOutputsVelocity=True r.AllowStaticLighting=False r.DiscardUnusedQuality=True r.DefaultFeature.Bloom=False diff --git a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/OpticalFlowCamera.cpp b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/OpticalFlowCamera.cpp new file mode 100644 index 00000000000..c8c9c04f261 --- /dev/null +++ b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/OpticalFlowCamera.cpp @@ -0,0 +1,31 @@ +#include "Carla.h" +#include "Carla/Sensor/OpticalFlowCamera.h" + +#include "Carla/Sensor/PixelReader.h" + +FActorDefinition AOpticalFlowCamera::GetSensorDefinition() +{ + return UActorBlueprintFunctionLibrary::MakeCameraDefinition(TEXT("optical_flow")); +} + +AOpticalFlowCamera::AOpticalFlowCamera(const FObjectInitializer &ObjectInitializer) + : Super(ObjectInitializer) +{ + Enable16BitFormat(true); + AddPostProcessingMaterial( + TEXT("Material'/Carla/PostProcessingMaterials/PhysicLensDistortion.PhysicLensDistortion'")); +// AddPostProcessingMaterial( +//#if PLATFORM_LINUX +// TEXT("Material'/Carla/PostProcessingMaterials/DepthEffectMaterial_GLSL.DepthEffectMaterial_GLSL'") +//#else +// TEXT("Material'/Carla/PostProcessingMaterials/DepthEffectMaterial.DepthEffectMaterial'") +//#endif +// ); + AddPostProcessingMaterial( + TEXT("Material'/Carla/PostProcessingMaterials/VelocityMaterial.VelocityMaterial'")); +} + +void AOpticalFlowCamera::PostPhysTick(UWorld *World, ELevelTick TickType, float DeltaSeconds) +{ + FPixelReader::SendPixelsInRenderThread(*this, true); +} diff --git a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/OpticalFlowCamera.h b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/OpticalFlowCamera.h new file mode 100644 index 00000000000..9647c8850ff --- /dev/null +++ b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/OpticalFlowCamera.h @@ -0,0 +1,24 @@ +#pragma once + +#include "Carla/Sensor/ShaderBasedSensor.h" + +#include "Carla/Actor/ActorDefinition.h" + +#include "OpticalFlowCamera.generated.h" + +/// Sensor that produces "optical flow" images. +UCLASS() +class CARLA_API AOpticalFlowCamera : public AShaderBasedSensor +{ + GENERATED_BODY() + +public: + + static FActorDefinition GetSensorDefinition(); + + AOpticalFlowCamera(const FObjectInitializer &ObjectInitializer); + +protected: + + void PostPhysTick(UWorld *World, ELevelTick TickType, float DeltaSeconds) override; +}; diff --git a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/PixelReader.cpp b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/PixelReader.cpp index 9e0e8e06bb3..19bf220bbce 100644 --- a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/PixelReader.cpp +++ b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/PixelReader.cpp @@ -73,6 +73,36 @@ static void WritePixelsToBuffer_Vulkan( } } +// Temporal; this avoid allocating the array each time and also avoids checking +// for a bigger texture, ReadSurfaceData will allocate the space needed. +TArray gFloatPixels; + +static void WriteFloatPixelsToBuffer_Vulkan( + const UTextureRenderTarget2D &RenderTarget, + carla::Buffer &Buffer, + uint32 Offset, + FRHICommandListImmediate &InRHICmdList) +{ + check(IsInRenderingThread()); + auto RenderResource = + static_cast(RenderTarget.Resource); + FTexture2DRHIRef Texture = RenderResource->GetRenderTargetTexture(); + if (!Texture) + { + return; + } + + FIntPoint Rect = RenderResource->GetSizeXY(); + + // NS: Extra copy here, don't know how to avoid it. + InRHICmdList.ReadSurfaceFloatData( + Texture, + FIntRect(0, 0, Rect.X, Rect.Y), + gFloatPixels, + FReadSurfaceDataFlags(RCM_UNorm, CubeFace_MAX)); + Buffer.copy_from(Offset, gFloatPixels); +} + // ============================================================================= // -- FPixelReader ------------------------------------------------------------- // ============================================================================= @@ -134,7 +164,8 @@ void FPixelReader::WritePixelsToBuffer( UTextureRenderTarget2D &RenderTarget, carla::Buffer &Buffer, uint32 Offset, - FRHICommandListImmediate &InRHICmdList + FRHICommandListImmediate &InRHICmdList, + bool use16BitFormat ) { TRACE_CPUPROFILER_EVENT_SCOPE_STR(__FUNCTION__); @@ -142,7 +173,14 @@ void FPixelReader::WritePixelsToBuffer( if (IsVulkanPlatform(GMaxRHIShaderPlatform) || IsD3DPlatform(GMaxRHIShaderPlatform, false)) { - WritePixelsToBuffer_Vulkan(RenderTarget, Buffer, Offset, InRHICmdList); + if (use16BitFormat) + { + WriteFloatPixelsToBuffer_Vulkan(RenderTarget, Buffer, Offset, InRHICmdList); + } + else + { + WritePixelsToBuffer_Vulkan(RenderTarget, Buffer, Offset, InRHICmdList); + } return; } @@ -155,7 +193,7 @@ void FPixelReader::WritePixelsToBuffer( FRHITexture2D *Texture = RenderTargetResource->GetRenderTargetTexture(); checkf(Texture != nullptr, TEXT("FPixelReader: UTextureRenderTarget2D missing render target texture")); - const uint32 BytesPerPixel = 4u; // PF_R8G8B8A8 + const uint32 BytesPerPixel = use16BitFormat ? 8u : 4u; // PF_R8G8B8A8 or PF_FloatRGBA const uint32 Width = Texture->GetSizeX(); const uint32 Height = Texture->GetSizeY(); const uint32 ExpectedStride = Width * BytesPerPixel; diff --git a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/PixelReader.h b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/PixelReader.h index 106b54b5990..31ee36fd056 100644 --- a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/PixelReader.h +++ b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/PixelReader.h @@ -62,7 +62,7 @@ class FPixelReader /// /// @pre To be called from game-thread. template - static void SendPixelsInRenderThread(TSensor &Sensor); + static void SendPixelsInRenderThread(TSensor &Sensor, bool use16BitFormat = false); private: @@ -73,7 +73,8 @@ class FPixelReader UTextureRenderTarget2D &RenderTarget, carla::Buffer &Buffer, uint32 Offset, - FRHICommandListImmediate &InRHICmdList); + FRHICommandListImmediate &InRHICmdList, + bool use16BitFormat = false); }; @@ -82,7 +83,7 @@ class FPixelReader // ============================================================================= template -void FPixelReader::SendPixelsInRenderThread(TSensor &Sensor) +void FPixelReader::SendPixelsInRenderThread(TSensor &Sensor, bool use16BitFormat) { TRACE_CPUPROFILER_EVENT_SCOPE(FPixelReader::SendPixelsInRenderThread); check(Sensor.CaptureRenderTarget != nullptr); @@ -100,7 +101,7 @@ void FPixelReader::SendPixelsInRenderThread(TSensor &Sensor) // game-thread. ENQUEUE_RENDER_COMMAND(FWritePixels_SendPixelsInRenderThread) ( - [&Sensor, Stream=Sensor.GetDataStream(Sensor)](auto &InRHICmdList) mutable + [&Sensor, Stream=Sensor.GetDataStream(Sensor), use16BitFormat](auto &InRHICmdList) mutable { TRACE_CPUPROFILER_EVENT_SCOPE_STR("FWritePixels_SendPixelsInRenderThread"); @@ -112,7 +113,8 @@ void FPixelReader::SendPixelsInRenderThread(TSensor &Sensor) *Sensor.CaptureRenderTarget, Buffer, carla::sensor::SensorRegistry::get::type::header_offset, - InRHICmdList); + InRHICmdList, use16BitFormat); + if(Buffer.data()) { SCOPE_CYCLE_COUNTER(STAT_CarlaSensorStreamSend); @@ -122,6 +124,7 @@ void FPixelReader::SendPixelsInRenderThread(TSensor &Sensor) } } ); + // Blocks until the render thread has finished all it's tasks Sensor.WaitForRenderThreadToFinsih(); } diff --git a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/SceneCaptureSensor.cpp b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/SceneCaptureSensor.cpp index a87cecc77ba..2dd6cb9accd 100644 --- a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/SceneCaptureSensor.cpp +++ b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/SceneCaptureSensor.cpp @@ -467,7 +467,8 @@ void ASceneCaptureSensor::BeginPlay() // Determine the gamma of the player. const bool bInForceLinearGamma = !bEnablePostProcessingEffects; - CaptureRenderTarget->InitCustomFormat(ImageWidth, ImageHeight, PF_B8G8R8A8, bInForceLinearGamma); + CaptureRenderTarget->InitCustomFormat(ImageWidth, ImageHeight, bEnable16BitFormat ? PF_A16B16G16R16 : PF_B8G8R8A8, + bInForceLinearGamma); if (bEnablePostProcessingEffects) { diff --git a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/SceneCaptureSensor.h b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/SceneCaptureSensor.h index 5e3fc4d0970..372870d8571 100644 --- a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/SceneCaptureSensor.h +++ b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/SceneCaptureSensor.h @@ -63,6 +63,18 @@ class CARLA_API ASceneCaptureSensor : public ASensor return bEnablePostProcessingEffects; } + UFUNCTION(BlueprintCallable) + void Enable16BitFormat(bool Enable = false) + { + bEnable16BitFormat = Enable; + } + + UFUNCTION(BlueprintCallable) + bool Is16BitFormatEnabled() const + { + return bEnable16BitFormat; + } + UFUNCTION(BlueprintCallable) void SetFOVAngle(float FOVAngle); @@ -320,6 +332,10 @@ class CARLA_API ASceneCaptureSensor : public ASensor UPROPERTY(EditAnywhere) bool bEnablePostProcessingEffects = true; + /// Whether to change render target format to PF_A16B16G16R16, offering 16bit / channel + UPROPERTY(EditAnywhere) + bool bEnable16BitFormat = false; + FRenderCommandFence RenderFence; }; From 10a311d07829ba2028a67bfe25d5c4c212c010db Mon Sep 17 00:00:00 2001 From: Shashank Singh Date: Mon, 19 Apr 2021 18:40:58 +0200 Subject: [PATCH 2/9] added VelocityMaterial.uasset and updated CHANGELOG --- CHANGELOG.md | 1 + .../VelocityMaterial.uasset | Bin 0 -> 103111 bytes 2 files changed, 1 insertion(+) create mode 100644 Unreal/CarlaUE4/Plugins/Carla/Content/PostProcessingMaterials/VelocityMaterial.uasset diff --git a/CHANGELOG.md b/CHANGELOG.md index 9481ee0c2a6..afb7ea22757 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,7 @@ * Exposed tire parameters for longitudinal and lateral stiffness in the PhysicsControl. * When setting a global plan at the LocalPlanner, it is now optional to stop the automatic fill of the waypoint buffer * Improved agent's vehicle detection to also take into account the actor bounding boxes + * Added Optical Flow camera * API extensions: - Added `set_wheel_steer_direction()` function to change the bone angle of each wheel of a vehicle - Added `get_wheel_steer_angle()` function to get the steer angle of a vehicle whee diff --git a/Unreal/CarlaUE4/Plugins/Carla/Content/PostProcessingMaterials/VelocityMaterial.uasset b/Unreal/CarlaUE4/Plugins/Carla/Content/PostProcessingMaterials/VelocityMaterial.uasset new file mode 100644 index 0000000000000000000000000000000000000000..6d22f1fc2e40abcd55743fd46fc4096e2a750ff7 GIT binary patch literal 103111 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 literal 0 HcmV?d00001 From 602357c0d482fb35c960f1c8bbae01ba44c5dd30 Mon Sep 17 00:00:00 2001 From: Shashank Singh Date: Tue, 20 Apr 2021 19:04:19 +0200 Subject: [PATCH 3/9] removed unused code and added optical flow processing explanation+example to manual_control.py --- LibCarla/source/carla/sensor/data/Color.h | 6 +----- PythonAPI/examples/manual_control.py | 12 ++++++++++-- .../Carla/Source/Carla/Sensor/OpticalFlowCamera.cpp | 7 ------- 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/LibCarla/source/carla/sensor/data/Color.h b/LibCarla/source/carla/sensor/data/Color.h index 4073c432866..477e43ce7e9 100644 --- a/LibCarla/source/carla/sensor/data/Color.h +++ b/LibCarla/source/carla/sensor/data/Color.h @@ -47,7 +47,7 @@ namespace data { static_assert(sizeof(Color) == sizeof(uint32_t), "Invalid color size!"); #pragma pack(push, 1) - /// A 64-bit PF_FloatRGBA color [16bit / channel]. (still uses uint16 types to transport 16bit floats) + /// A 64-bit color [16 bits per channel (R, G, B, and A each)] struct Color16bit { Color16bit() = default; Color16bit(const Color16bit &) = default; @@ -65,10 +65,6 @@ namespace data { return !(*this == rhs); } -// operator rpc::Color16bit() const { -// return {r, g, b}; -// } - uint16_t b = 0u; uint16_t g = 0u; uint16_t r = 0u; diff --git a/PythonAPI/examples/manual_control.py b/PythonAPI/examples/manual_control.py index 2686b818b6f..ef839a4d34c 100755 --- a/PythonAPI/examples/manual_control.py +++ b/PythonAPI/examples/manual_control.py @@ -1009,7 +1009,6 @@ def __init__(self, parent_actor, hud, gamma_correction): self.transform_index = 1 self.sensors = [ ['sensor.camera.rgb', cc.Raw, 'Camera RGB', {}], - ['sensor.camera.optical_flow', cc.Raw, 'Optical Flow', {}], ['sensor.camera.depth', cc.Raw, 'Camera Depth (Raw)', {}], ['sensor.camera.depth', cc.Depth, 'Camera Depth (Gray Scale)', {}], ['sensor.camera.depth', cc.LogarithmicDepth, 'Camera Depth (Logarithmic Gray Scale)', {}], @@ -1022,7 +1021,9 @@ def __init__(self, parent_actor, hud, gamma_correction): {'lens_circle_multiplier': '3.0', 'lens_circle_falloff': '3.0', 'chromatic_aberration_intensity': '0.5', - 'chromatic_aberration_offset': '0'}]] + 'chromatic_aberration_offset': '0'}], + ['sensor.camera.optical_flow', cc.Raw, 'Optical Flow', {}], + ] world = self._parent.get_world() bp_library = world.get_blueprint_library() for item in self.sensors: @@ -1113,6 +1114,13 @@ def _parse_image(weak_self, image): array = np.frombuffer(image.raw_data, dtype=np.uint16) array = np.reshape(array, (image.height, image.width, 4)) if OPENCV_INSTALLED: + # The x and y optical flow values are stored as `uint16`s each + # which maps the integer range of [0, 65535] to represent a floating-point range of [0, 1] + # The code below converts this range of [0, 1] to the originally computed optical flow range of [-2, 2] + # where the units are in terms of the viewport's dimensions. + # For example for a viewport of size 800x600, the maximum optical flow that can be represented is: + # [-1600, 1600] in the x axis and + # [-1200, 1200] in the y axis data_array = np.array(array[:, :, 0:2], dtype=np.float32) data_array[:, :, 0] = (data_array[:, :, 0] - 32767) * (2 * image.width / 65535) data_array[:, :, 1] = (32767 - data_array[:, :, 1]) * (2 * image.height / 65535) diff --git a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/OpticalFlowCamera.cpp b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/OpticalFlowCamera.cpp index c8c9c04f261..884db12965f 100644 --- a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/OpticalFlowCamera.cpp +++ b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/OpticalFlowCamera.cpp @@ -14,13 +14,6 @@ AOpticalFlowCamera::AOpticalFlowCamera(const FObjectInitializer &ObjectInitializ Enable16BitFormat(true); AddPostProcessingMaterial( TEXT("Material'/Carla/PostProcessingMaterials/PhysicLensDistortion.PhysicLensDistortion'")); -// AddPostProcessingMaterial( -//#if PLATFORM_LINUX -// TEXT("Material'/Carla/PostProcessingMaterials/DepthEffectMaterial_GLSL.DepthEffectMaterial_GLSL'") -//#else -// TEXT("Material'/Carla/PostProcessingMaterials/DepthEffectMaterial.DepthEffectMaterial'") -//#endif -// ); AddPostProcessingMaterial( TEXT("Material'/Carla/PostProcessingMaterials/VelocityMaterial.VelocityMaterial'")); } From b8a0cef6652fa3792460586e56bf6d28ec0486a9 Mon Sep 17 00:00:00 2001 From: Shashank Singh Date: Sun, 30 May 2021 19:07:55 +0200 Subject: [PATCH 4/9] Going back to initial approach for uint16/float16 Optical Flow but need to do conversion on C++/Client side --- PythonAPI/examples/manual_control.py | 5 ++++- Unreal/CarlaUE4/.ignore | 9 +++++++++ Unreal/CarlaUE4/Config/OptionalModules.ini | 1 + .../Plugins/Carla/Source/Carla/Sensor/PixelReader.cpp | 9 ++++++++- 4 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 Unreal/CarlaUE4/.ignore create mode 100644 Unreal/CarlaUE4/Config/OptionalModules.ini diff --git a/PythonAPI/examples/manual_control.py b/PythonAPI/examples/manual_control.py index ef839a4d34c..9469bd40633 100755 --- a/PythonAPI/examples/manual_control.py +++ b/PythonAPI/examples/manual_control.py @@ -423,7 +423,10 @@ def parse_events(self, client, world, clock): world.constant_velocity_enabled = True world.hud.notification("Enabled Constant Velocity Mode at 60 km/h") elif event.key > K_0 and event.key <= K_9: - world.camera_manager.set_sensor(event.key - 1 - K_0) + index_ctrl = 0 + if pygame.key.get_mods() & KMOD_CTRL: + index_ctrl = 9 + world.camera_manager.set_sensor(event.key - 1 - K_0 + index_ctrl) elif event.key == K_r and not (pygame.key.get_mods() & KMOD_CTRL): world.camera_manager.toggle_recording() elif event.key == K_r and (pygame.key.get_mods() & KMOD_CTRL): diff --git a/Unreal/CarlaUE4/.ignore b/Unreal/CarlaUE4/.ignore new file mode 100644 index 00000000000..1aab3d8264b --- /dev/null +++ b/Unreal/CarlaUE4/.ignore @@ -0,0 +1,9 @@ +.kdev4 +.vscode +Content +Intermediate +Saved +Plugins/Carla/CarlaDependencies +Plugins/Carla/Content +Plugins/Carla/Intermediate +Plugins/CarlaExporter/Intermediate diff --git a/Unreal/CarlaUE4/Config/OptionalModules.ini b/Unreal/CarlaUE4/Config/OptionalModules.ini new file mode 100644 index 00000000000..c901676037e --- /dev/null +++ b/Unreal/CarlaUE4/Config/OptionalModules.ini @@ -0,0 +1 @@ +Chrono OFF CarSim OFF diff --git a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/PixelReader.cpp b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/PixelReader.cpp index 19bf220bbce..0876264f3c5 100644 --- a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/PixelReader.cpp +++ b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/PixelReader.cpp @@ -100,7 +100,14 @@ static void WriteFloatPixelsToBuffer_Vulkan( FIntRect(0, 0, Rect.X, Rect.Y), gFloatPixels, FReadSurfaceDataFlags(RCM_UNorm, CubeFace_MAX)); - Buffer.copy_from(Offset, gFloatPixels); + + TArray IntermediateBuffer; + IntermediateBuffer.Reserve(gFloatPixels.Num() * 2); + for (FFloat16Color& color : gFloatPixels) { + IntermediateBuffer.Add((color.R.GetFloat() - 32767) * (2.0 / 65535)); + IntermediateBuffer.Add((32767 - color.G.GetFloat()) * (2.0 / 65535)); + } + Buffer.copy_from(Offset, IntermediateBuffer); } // ============================================================================= From 4b2286cfa8b47df398d3edafae0986a82d2cb5cb Mon Sep 17 00:00:00 2001 From: Axel Date: Mon, 31 May 2021 18:11:06 +0200 Subject: [PATCH 5/9] Fixed float texture format. Added method to convert optical flow to a color visualization. --- LibCarla/source/carla/sensor/SensorRegistry.h | 4 +- LibCarla/source/carla/sensor/data/Color.h | 26 ++-- LibCarla/source/carla/sensor/data/Image.h | 2 +- LibCarla/source/carla/sensor/data/ImageTmpl.h | 6 +- .../sensor/s11n/Image16bitSerializer.cpp | 21 --- .../s11n/OpticalFlowImageSerializer.cpp | 21 +++ ...ializer.h => OpticalFlowImageSerializer.h} | 4 +- PythonAPI/carla/setup.py | 8 +- .../carla/source/libcarla/SensorData.cpp | 146 ++++++++++++++++-- PythonAPI/carla/source/libcarla/libcarla.cpp | 3 + PythonAPI/examples/manual_control.py | 55 +------ .../VelocityMaterial.uasset | Bin 103111 -> 81954 bytes .../Carla/Source/Carla/Sensor/PixelReader.cpp | 12 +- .../Carla/Sensor/SceneCaptureSensor.cpp | 2 +- 14 files changed, 196 insertions(+), 114 deletions(-) delete mode 100644 LibCarla/source/carla/sensor/s11n/Image16bitSerializer.cpp create mode 100644 LibCarla/source/carla/sensor/s11n/OpticalFlowImageSerializer.cpp rename LibCarla/source/carla/sensor/s11n/{Image16bitSerializer.h => OpticalFlowImageSerializer.h} (90%) diff --git a/LibCarla/source/carla/sensor/SensorRegistry.h b/LibCarla/source/carla/sensor/SensorRegistry.h index accba7e0319..a0443ba7eff 100644 --- a/LibCarla/source/carla/sensor/SensorRegistry.h +++ b/LibCarla/source/carla/sensor/SensorRegistry.h @@ -19,7 +19,7 @@ #include "carla/sensor/s11n/EpisodeStateSerializer.h" #include "carla/sensor/s11n/GnssSerializer.h" #include "carla/sensor/s11n/ImageSerializer.h" -#include "carla/sensor/s11n/Image16bitSerializer.h" +#include "carla/sensor/s11n/OpticalFlowImageSerializer.h" #include "carla/sensor/s11n/IMUSerializer.h" #include "carla/sensor/s11n/LidarSerializer.h" #include "carla/sensor/s11n/NoopSerializer.h" @@ -62,7 +62,7 @@ namespace sensor { std::pair, std::pair, std::pair, - std::pair, + std::pair, std::pair, std::pair, std::pair, diff --git a/LibCarla/source/carla/sensor/data/Color.h b/LibCarla/source/carla/sensor/data/Color.h index 477e43ce7e9..8bade12741c 100644 --- a/LibCarla/source/carla/sensor/data/Color.h +++ b/LibCarla/source/carla/sensor/data/Color.h @@ -48,32 +48,28 @@ namespace data { #pragma pack(push, 1) /// A 64-bit color [16 bits per channel (R, G, B, and A each)] - struct Color16bit { - Color16bit() = default; - Color16bit(const Color16bit &) = default; + struct OpticalFlowPixel { + OpticalFlowPixel() = default; + OpticalFlowPixel(const OpticalFlowPixel &) = default; - Color16bit(uint16_t r, uint16_t g, uint16_t b, uint16_t a = 255u) - : b(b), g(g), r(r), a(a) {} + OpticalFlowPixel(float x, float y) + : x(x), y(y) {} - Color16bit &operator=(const Color16bit &) = default; + OpticalFlowPixel &operator=(const OpticalFlowPixel &) = default; - bool operator==(const Color16bit &rhs) const { - return (r == rhs.r) && (g == rhs.g) && (b == rhs.b) && (a == rhs.a); + bool operator==(const OpticalFlowPixel &rhs) const { + return (x == rhs.x) && (y == rhs.y); } - bool operator!=(const Color16bit &rhs) const { + bool operator!=(const OpticalFlowPixel &rhs) const { return !(*this == rhs); } - uint16_t b = 0u; - uint16_t g = 0u; - uint16_t r = 0u; - uint16_t a = 0u; + float x = 0; + float y = 0; }; #pragma pack(pop) - static_assert(sizeof(Color16bit) == sizeof(uint64_t), "Invalid 16bit color size!"); - } // namespace data } // namespace sensor } // namespace carla diff --git a/LibCarla/source/carla/sensor/data/Image.h b/LibCarla/source/carla/sensor/data/Image.h index ca7705484ce..6e8c7a63be6 100644 --- a/LibCarla/source/carla/sensor/data/Image.h +++ b/LibCarla/source/carla/sensor/data/Image.h @@ -17,7 +17,7 @@ namespace data { using Image = ImageTmpl; /// An image of 64-bit BGRA colors (16-bit channels) - using Image16bit = ImageTmpl; + using OpticalFlowImage = ImageTmpl; } // namespace data } // namespace sensor diff --git a/LibCarla/source/carla/sensor/data/ImageTmpl.h b/LibCarla/source/carla/sensor/data/ImageTmpl.h index deb41dc64cc..4d72c04ffd9 100644 --- a/LibCarla/source/carla/sensor/data/ImageTmpl.h +++ b/LibCarla/source/carla/sensor/data/ImageTmpl.h @@ -9,7 +9,7 @@ #include "carla/Debug.h" #include "carla/sensor/data/Array.h" #include "carla/sensor/s11n/ImageSerializer.h" -#include "carla/sensor/s11n/Image16bitSerializer.h" +#include "carla/sensor/s11n/OpticalFlowImageSerializer.h" namespace carla { namespace sensor { @@ -22,10 +22,10 @@ namespace data { protected: using Serializer = s11n::ImageSerializer; - using Serializer16bit = s11n::Image16bitSerializer; + using SerializerOpticalFlow = s11n::OpticalFlowImageSerializer; friend Serializer; - friend Serializer16bit; + friend SerializerOpticalFlow; explicit ImageTmpl(RawData &&data) : Super(Serializer::header_offset, std::move(data)) { diff --git a/LibCarla/source/carla/sensor/s11n/Image16bitSerializer.cpp b/LibCarla/source/carla/sensor/s11n/Image16bitSerializer.cpp deleted file mode 100644 index 97793e90288..00000000000 --- a/LibCarla/source/carla/sensor/s11n/Image16bitSerializer.cpp +++ /dev/null @@ -1,21 +0,0 @@ -// -// Created by flo on 09.11.20. -// - -#include "Image16bitSerializer.h" -#include "carla/sensor/s11n/Image16bitSerializer.h" - -#include "carla/sensor/data/Image.h" - -namespace carla { - namespace sensor { - namespace s11n { - - SharedPtr Image16bitSerializer::Deserialize(RawData &&data) { - auto image = SharedPtr(new data::Image16bit{std::move(data)}); - return image; - } - - } // namespace s11n - } // namespace sensor -} // namespace carla diff --git a/LibCarla/source/carla/sensor/s11n/OpticalFlowImageSerializer.cpp b/LibCarla/source/carla/sensor/s11n/OpticalFlowImageSerializer.cpp new file mode 100644 index 00000000000..543f94dd209 --- /dev/null +++ b/LibCarla/source/carla/sensor/s11n/OpticalFlowImageSerializer.cpp @@ -0,0 +1,21 @@ +// +// Created by flo on 09.11.20. +// + +#include "OpticalFlowImageSerializer.h" +#include "carla/sensor/s11n/OpticalFlowImageSerializer.h" + +#include "carla/sensor/data/Image.h" + +namespace carla { + namespace sensor { + namespace s11n { + + SharedPtr OpticalFlowImageSerializer::Deserialize(RawData &&data) { + auto image = SharedPtr(new data::OpticalFlowImage{std::move(data)}); + return image; + } + + } // namespace s11n + } // namespace sensor +} // namespace carla diff --git a/LibCarla/source/carla/sensor/s11n/Image16bitSerializer.h b/LibCarla/source/carla/sensor/s11n/OpticalFlowImageSerializer.h similarity index 90% rename from LibCarla/source/carla/sensor/s11n/Image16bitSerializer.h rename to LibCarla/source/carla/sensor/s11n/OpticalFlowImageSerializer.h index 621700e1b09..655360e48f2 100644 --- a/LibCarla/source/carla/sensor/s11n/Image16bitSerializer.h +++ b/LibCarla/source/carla/sensor/s11n/OpticalFlowImageSerializer.h @@ -18,7 +18,7 @@ namespace carla { namespace s11n { /// Serializes image buffers generated by camera sensors. - class Image16bitSerializer { + class OpticalFlowImageSerializer { public: #pragma pack(push, 1) @@ -42,7 +42,7 @@ namespace carla { }; template - inline Buffer Image16bitSerializer::Serialize(const Sensor &sensor, Buffer &&bitmap) { + inline Buffer OpticalFlowImageSerializer::Serialize(const Sensor &sensor, Buffer &&bitmap) { DEBUG_ASSERT(bitmap.size() > sizeof(ImageHeader)); ImageHeader header = { sensor.GetImageWidth(), diff --git a/PythonAPI/carla/setup.py b/PythonAPI/carla/setup.py index 2dd2889a5ef..b967f5da55b 100755 --- a/PythonAPI/carla/setup.py +++ b/PythonAPI/carla/setup.py @@ -39,6 +39,8 @@ def walk(folder, file_filter='*'): pwd = os.path.dirname(os.path.realpath(__file__)) pylib = "libboost_python%d%d.a" % (sys.version_info.major, sys.version_info.minor) + numpylib = 'libboost_numpy%d%d.a' % (sys.version_info.major, + sys.version_info.minor) if is_rss_variant_enabled(): print('Building AD RSS variant.') extra_link_args = [ os.path.join(pwd, 'dependencies/lib/libcarla_client_rss.a') ] @@ -84,6 +86,7 @@ def walk(folder, file_filter='*'): extra_link_args += ['-ltbb'] extra_link_args += [os.path.join(pwd, 'dependencies/lib', pylib)] + extra_link_args += [os.path.join(pwd, 'dependencies/lib', numpylib)] if 'TRAVIS' in os.environ and os.environ['TRAVIS'] == 'true': print('Travis CI build detected: disabling PNG support.') @@ -104,11 +107,14 @@ def walk(folder, file_filter='*'): pylib = 'libboost_python%d%d' % ( sys.version_info.major, sys.version_info.minor) + numpylib = 'libboost_numpy%d%d' % ( + sys.version_info.major, + sys.version_info.minor) extra_link_args = ['shlwapi.lib', 'Advapi32.lib', 'ole32.lib', 'shell32.lib'] required_libs = [ - pylib, 'libboost_filesystem', + pylib, numpylib, 'libboost_filesystem', 'rpc.lib', 'carla_client.lib', 'libpng.lib', 'zlib.lib', 'Recast.lib', 'Detour.lib', 'DetourCrowd.lib', diff --git a/PythonAPI/carla/source/libcarla/SensorData.cpp b/PythonAPI/carla/source/libcarla/SensorData.cpp index 74d512c946c..dfd1f3127a1 100644 --- a/PythonAPI/carla/source/libcarla/SensorData.cpp +++ b/PythonAPI/carla/source/libcarla/SensorData.cpp @@ -27,6 +27,10 @@ #include #include +#include +#include +#include +#include namespace carla { namespace sensor { @@ -40,8 +44,8 @@ namespace data { return out; } - std::ostream &operator<<(std::ostream &out, const Image16bit &image) { - out << "Image16bit(frame=" << std::to_string(image.GetFrame()) + std::ostream &operator<<(std::ostream &out, const OpticalFlowImage &image) { + out << "OpticalFlowImage(frame=" << std::to_string(image.GetFrame()) << ", timestamp=" << std::to_string(image.GetTimestamp()) << ", size=" << std::to_string(image.GetWidth()) << 'x' << std::to_string(image.GetHeight()) << ')'; @@ -207,6 +211,123 @@ static void ConvertImage(T &self, EColorConverter cc) { } } +static boost::python::numpy::ndarray ColorCodedFlow ( + carla::sensor::data::OpticalFlowImage& image) { + namespace bp = boost::python; + namespace bn = boost::python::numpy; + namespace csd = carla::sensor::data; + constexpr float pi = 3.1415f; + // constexpr float pi2 = pi*0.5f; + constexpr float rad2ang = 360.f/(2.f*pi); + // const unsigned int width4 = 4*image.GetWidth(); + // const unsigned int height4 = 4*image.GetHeight(); + std::vector result; + result.resize(image.GetHeight()*image.GetWidth()* 4); + + // lambda for computing batches of pixels + auto command = [&] (size_t min_index, size_t max_index) { + for (size_t index = min_index; index < max_index; index++) { + const csd::OpticalFlowPixel& pixel = image[index]; + float vx = pixel.x * image.GetWidth(); + float vy = pixel.y * image.GetHeight(); + + float angle = 180.f + std::atan2(vy, vx)*rad2ang; + if (angle < 0) angle = 360.f + angle; + angle = std::fmod(angle, 360.f); + + float norm = std::sqrt(vx*vx + vy*vy)*0.0001f; + norm = std::min(norm, 0.99f); + constexpr float basis = 100; + constexpr float overlogbasis = 1.f/3.401197382f; + // constexpr float scale = 3.f; + float intensity = std::log((basis - 1) * norm + 1)*overlogbasis; + // float intensity = norm; + + float& H = angle; + float S = 1.f; + float V = std::min(intensity, 1.f); + float H_60 = H*(1.f/60.f); + + float C = V * S; + float X = C*(1.f - std::abs(std::fmod(H_60, 2.f) - 1.f)); + float m = V - C; + // float C = (1.f - std::abs(2*V - 1)) * S; + // float X = C*(1.f - std::abs(std::fmod(H_60, 2.f) - 1.f)); + // float m = V - 0.5f*C; + + + float r = 0,g = 0,b = 0; + unsigned int angle_case = static_cast(H_60); + switch (angle_case) { + case 0: + r = C; + g = X; + b = 0; + break; + case 1: + r = X; + g = C; + b = 0; + break; + case 2: + r = 0; + g = C; + b = X; + break; + case 3: + r = 0; + g = X; + b = C; + break; + case 4: + r = X; + g = 0; + b = C; + break; + case 5: + r = C; + g = 0; + b = X; + break; + default: + r = 1; + g = 1; + b = 1; + break; + } + + uint8_t R = static_cast((r+m)*255.f); + uint8_t G = static_cast((g+m)*255.f); + uint8_t B = static_cast((b+m)*255.f); + result[4*index] = B; + result[4*index + 1] = G; + result[4*index + 2] = R; + result[4*index + 3] = 0; + } + }; + size_t num_threads = std::max(8u, std::thread::hardware_concurrency()); + size_t batch_size = image.size() / num_threads; + std::vector t(num_threads+1); + + for(size_t n = 0; n < num_threads; n++) { + t[n] = new std::thread(command, n * batch_size, (n+1) * batch_size); + } + t[num_threads] = new std::thread(command, num_threads * batch_size, image.size()); + + for(size_t n = 0; n <= num_threads; n++) { + if(t[n]->joinable()){ + t[n]->join(); + } + delete t[n]; + } + + bp::tuple shape = bp::make_tuple(result.size()); + bp::tuple stride = bp::make_tuple(sizeof(uint8_t)); + bn::dtype type = bn::dtype::get_builtin(); + return bn::from_data(&result[0], type, shape, stride, bp::object()).copy(); + // return StdVectorToPyList(result); +} + template static std::string SaveImageToDisk(T &self, std::string path, EColorConverter cc) { carla::PythonUtil::ReleaseGIL unlock; @@ -280,19 +401,18 @@ void export_sensor_data() { .def(self_ns::str(self_ns::self)) ; - class_, boost::noncopyable, boost::shared_ptr>("Image16bit", no_init) - .add_property("width", &csd::Image16bit::GetWidth) - .add_property("height", &csd::Image16bit::GetHeight) - .add_property("fov", &csd::Image16bit::GetFOVAngle) - .add_property("raw_data", &GetRawDataAsBuffer) - // .def("convert", &ConvertImage, (arg("color_converter"))) unimplemented - // .def("save_to_disk", &SaveImageToDisk, (arg("path"), arg("color_converter")=EColorConverter::Raw)) unimplemented - .def("__len__", &csd::Image16bit::size) - .def("__iter__", iterator()) - .def("__getitem__", +[](const csd::Image16bit &self, size_t pos) -> csd::Color16bit { + class_, boost::noncopyable, boost::shared_ptr>("OpticalFlowImage", no_init) + .add_property("width", &csd::OpticalFlowImage::GetWidth) + .add_property("height", &csd::OpticalFlowImage::GetHeight) + .add_property("fov", &csd::OpticalFlowImage::GetFOVAngle) + .add_property("raw_data", &GetRawDataAsBuffer) + .def("get_color_coded_flow", &ColorCodedFlow) + .def("__len__", &csd::OpticalFlowImage::size) + .def("__iter__", iterator()) + .def("__getitem__", +[](const csd::OpticalFlowImage &self, size_t pos) -> csd::OpticalFlowPixel { return self.at(pos); }) - .def("__setitem__", +[](csd::Image16bit &self, size_t pos, csd::Color16bit color) { + .def("__setitem__", +[](csd::OpticalFlowImage &self, size_t pos, csd::OpticalFlowPixel color) { self.at(pos) = color; }) .def(self_ns::str(self_ns::self)) diff --git a/PythonAPI/carla/source/libcarla/libcarla.cpp b/PythonAPI/carla/source/libcarla/libcarla.cpp index 83b344b5940..f9a05d6b871 100644 --- a/PythonAPI/carla/source/libcarla/libcarla.cpp +++ b/PythonAPI/carla/source/libcarla/libcarla.cpp @@ -210,6 +210,8 @@ static auto MakeCallback(boost::python::object callback) { }; } +#include + #include "Geom.cpp" #include "Actor.cpp" #include "Blueprint.cpp" @@ -236,6 +238,7 @@ BOOST_PYTHON_MODULE(libcarla) { #if PY_MAJOR_VERSION < 3 || PY_MINOR_VERSION < 7 PyEval_InitThreads(); #endif + boost::python::numpy::initialize(); scope().attr("__path__") = "libcarla"; export_geom(); export_control(); diff --git a/PythonAPI/examples/manual_control.py b/PythonAPI/examples/manual_control.py index 9469bd40633..2ac233493ae 100755 --- a/PythonAPI/examples/manual_control.py +++ b/PythonAPI/examples/manual_control.py @@ -63,13 +63,6 @@ import os import sys -OPENCV_INSTALLED = True -try: - import cv2 -except ImportError: - OPENCV_INSTALLED = False - pass - try: sys.path.append(glob.glob('../carla/dist/carla-*%d.%d-%s.egg' % ( sys.version_info.major, @@ -161,28 +154,6 @@ def get_actor_display_name(actor, truncate=250): name = ' '.join(actor.type_id.replace('_', '.').title().split('.')[1:]) return (name[:truncate - 1] + u'\u2026') if len(name) > truncate else name - -def render_optical_flow_data(data): - intensity = np.linalg.norm(data, axis=2) - angle = np.arctan2(data[:, :, 0], data[:, :, 1]) - max_intensity = 100 - # N.B.: an intensity of exactly 1.0 makes the output black (perhaps showing the over-saturation), so keep it < 1 - intensity = np.clip(intensity, 0, max_intensity - 1) / max_intensity - # log scaling - basis = 30 - intensity = np.log1p((basis - 1) * intensity) / np.log1p(basis - 1) - # for the angle they use 360° scale, see https://stackoverflow.com/a/57203497/14467327 - angle = (np.pi + angle) * 360 / (2 * np.pi) - # print(F"Ranges, angle: [{np.min(angle)}, {np.max(angle)}], " - # F"intensity: [{np.min(intensity)}, {np.max(intensity)}]") - intensity = intensity[:, :, np.newaxis] - angle = angle[:, :, np.newaxis] - hsv_img = np.concatenate((angle, np.ones_like(intensity), intensity), axis=2) - img_out = np.array(cv2.cvtColor(np.array(hsv_img, dtype=np.float32), cv2.COLOR_HSV2RGB) * 256, - dtype=np.dtype("uint8")) - return img_out - - # ============================================================================== # -- World --------------------------------------------------------------------- # ============================================================================== @@ -1113,28 +1084,12 @@ def _parse_image(weak_self, image): dvs_img[dvs_events[:]['y'], dvs_events[:]['x'], dvs_events[:]['pol'] * 2] = 255 self.surface = pygame.surfarray.make_surface(dvs_img.swapaxes(0, 1)) elif self.sensors[self.index][0].startswith('sensor.camera.optical_flow'): - # print(image) - array = np.frombuffer(image.raw_data, dtype=np.uint16) + array = image.get_color_coded_flow() + array = np.frombuffer(array, dtype=np.dtype("uint8")) array = np.reshape(array, (image.height, image.width, 4)) - if OPENCV_INSTALLED: - # The x and y optical flow values are stored as `uint16`s each - # which maps the integer range of [0, 65535] to represent a floating-point range of [0, 1] - # The code below converts this range of [0, 1] to the originally computed optical flow range of [-2, 2] - # where the units are in terms of the viewport's dimensions. - # For example for a viewport of size 800x600, the maximum optical flow that can be represented is: - # [-1600, 1600] in the x axis and - # [-1200, 1200] in the y axis - data_array = np.array(array[:, :, 0:2], dtype=np.float32) - data_array[:, :, 0] = (data_array[:, :, 0] - 32767) * (2 * image.width / 65535) - data_array[:, :, 1] = (32767 - data_array[:, :, 1]) * (2 * image.height / 65535) - - img_out = render_optical_flow_data(data_array) - - self.surface = pygame.surfarray.make_surface(img_out.swapaxes(0, 1)) - else: - array = array[:, :, :3] - array = array[:, :, ::-1] - self.surface = pygame.surfarray.make_surface(array.swapaxes(0, 1)) + array = array[:, :, :3] + array = array[:, :, ::-1] + self.surface = pygame.surfarray.make_surface(array.swapaxes(0, 1)) else: image.convert(self.sensors[self.index][1]) array = np.frombuffer(image.raw_data, dtype=np.dtype("uint8")) diff --git a/Unreal/CarlaUE4/Plugins/Carla/Content/PostProcessingMaterials/VelocityMaterial.uasset b/Unreal/CarlaUE4/Plugins/Carla/Content/PostProcessingMaterials/VelocityMaterial.uasset index 6d22f1fc2e40abcd55743fd46fc4096e2a750ff7..c92e139538b7ddb5222bdfcd1c8cadd251b215f6 100644 GIT binary patch literal 81954 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%0A$eWN+KobC`h1?}|2fz> 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 literal 103111 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 diff --git a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/PixelReader.cpp b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/PixelReader.cpp index 0876264f3c5..9698b466d69 100644 --- a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/PixelReader.cpp +++ b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/PixelReader.cpp @@ -73,8 +73,7 @@ static void WritePixelsToBuffer_Vulkan( } } -// Temporal; this avoid allocating the array each time and also avoids checking -// for a bigger texture, ReadSurfaceData will allocate the space needed. +// Temporal; this avoid allocating the array each time TArray gFloatPixels; static void WriteFloatPixelsToBuffer_Vulkan( @@ -84,6 +83,7 @@ static void WriteFloatPixelsToBuffer_Vulkan( FRHICommandListImmediate &InRHICmdList) { check(IsInRenderingThread()); + gFloatPixels.Empty(); auto RenderResource = static_cast(RenderTarget.Resource); FTexture2DRHIRef Texture = RenderResource->GetRenderTargetTexture(); @@ -99,13 +99,15 @@ static void WriteFloatPixelsToBuffer_Vulkan( Texture, FIntRect(0, 0, Rect.X, Rect.Y), gFloatPixels, - FReadSurfaceDataFlags(RCM_UNorm, CubeFace_MAX)); + CubeFace_PosX,0,0); TArray IntermediateBuffer; IntermediateBuffer.Reserve(gFloatPixels.Num() * 2); for (FFloat16Color& color : gFloatPixels) { - IntermediateBuffer.Add((color.R.GetFloat() - 32767) * (2.0 / 65535)); - IntermediateBuffer.Add((32767 - color.G.GetFloat()) * (2.0 / 65535)); + float x = (color.R.GetFloat() - 0.5f)*4.f; + float y = (color.G.GetFloat() - 0.5f)*4.f; + IntermediateBuffer.Add(x); + IntermediateBuffer.Add(y); } Buffer.copy_from(Offset, IntermediateBuffer); } diff --git a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/SceneCaptureSensor.cpp b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/SceneCaptureSensor.cpp index 2dd6cb9accd..1ef1bc33b4a 100644 --- a/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/SceneCaptureSensor.cpp +++ b/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/SceneCaptureSensor.cpp @@ -467,7 +467,7 @@ void ASceneCaptureSensor::BeginPlay() // Determine the gamma of the player. const bool bInForceLinearGamma = !bEnablePostProcessingEffects; - CaptureRenderTarget->InitCustomFormat(ImageWidth, ImageHeight, bEnable16BitFormat ? PF_A16B16G16R16 : PF_B8G8R8A8, + CaptureRenderTarget->InitCustomFormat(ImageWidth, ImageHeight, bEnable16BitFormat ? PF_FloatRGBA : PF_B8G8R8A8, bInForceLinearGamma); if (bEnablePostProcessingEffects) From 88c67048a15ce03f831e89a2a7efd8528a0233eb Mon Sep 17 00:00:00 2001 From: Axel Date: Tue, 1 Jun 2021 10:34:19 +0200 Subject: [PATCH 6/9] Added optical flow to rgb conversion for visualization. --- .../carla/source/libcarla/SensorData.cpp | 26 ++++++------------- 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/PythonAPI/carla/source/libcarla/SensorData.cpp b/PythonAPI/carla/source/libcarla/SensorData.cpp index dfd1f3127a1..f3fad9c3dfc 100644 --- a/PythonAPI/carla/source/libcarla/SensorData.cpp +++ b/PythonAPI/carla/source/libcarla/SensorData.cpp @@ -211,16 +211,14 @@ static void ConvertImage(T &self, EColorConverter cc) { } } +// method to convert optical flow images to rgb static boost::python::numpy::ndarray ColorCodedFlow ( carla::sensor::data::OpticalFlowImage& image) { namespace bp = boost::python; namespace bn = boost::python::numpy; namespace csd = carla::sensor::data; constexpr float pi = 3.1415f; - // constexpr float pi2 = pi*0.5f; constexpr float rad2ang = 360.f/(2.f*pi); - // const unsigned int width4 = 4*image.GetWidth(); - // const unsigned int height4 = 4*image.GetHeight(); std::vector result; result.resize(image.GetHeight()*image.GetWidth()* 4); @@ -228,33 +226,26 @@ static boost::python::numpy::ndarray ColorCodedFlow ( auto command = [&] (size_t min_index, size_t max_index) { for (size_t index = min_index; index < max_index; index++) { const csd::OpticalFlowPixel& pixel = image[index]; - float vx = pixel.x * image.GetWidth(); - float vy = pixel.y * image.GetHeight(); + float vx = pixel.x; + float vy = pixel.y; float angle = 180.f + std::atan2(vy, vx)*rad2ang; if (angle < 0) angle = 360.f + angle; angle = std::fmod(angle, 360.f); - float norm = std::sqrt(vx*vx + vy*vy)*0.0001f; - norm = std::min(norm, 0.99f); - constexpr float basis = 100; - constexpr float overlogbasis = 1.f/3.401197382f; - // constexpr float scale = 3.f; - float intensity = std::log((basis - 1) * norm + 1)*overlogbasis; - // float intensity = norm; + float norm = std::sqrt(vx*vx + vy*vy); + const float shift = 0.999f; + const float a = 1.f/std::log(0.1f + shift); + float intensity = carla::geom::Math::Clamp(a*std::log(norm + shift), 0.f, 1.f); float& H = angle; float S = 1.f; - float V = std::min(intensity, 1.f); + float V = intensity; float H_60 = H*(1.f/60.f); float C = V * S; float X = C*(1.f - std::abs(std::fmod(H_60, 2.f) - 1.f)); float m = V - C; - // float C = (1.f - std::abs(2*V - 1)) * S; - // float X = C*(1.f - std::abs(std::fmod(H_60, 2.f) - 1.f)); - // float m = V - 0.5f*C; - float r = 0,g = 0,b = 0; unsigned int angle_case = static_cast(H_60); @@ -325,7 +316,6 @@ static boost::python::numpy::ndarray ColorCodedFlow ( bp::tuple stride = bp::make_tuple(sizeof(uint8_t)); bn::dtype type = bn::dtype::get_builtin(); return bn::from_data(&result[0], type, shape, stride, bp::object()).copy(); - // return StdVectorToPyList(result); } template From 3d152050a9050274f26b48b3a0540e00d9007dc5 Mon Sep 17 00:00:00 2001 From: Axel Date: Tue, 1 Jun 2021 10:52:29 +0200 Subject: [PATCH 7/9] Fixed inacurate class description. Removed unused files. --- LibCarla/source/carla/sensor/data/Color.h | 2 +- Unreal/CarlaUE4/.ignore | 9 --------- Unreal/CarlaUE4/Config/OptionalModules.ini | 1 - 3 files changed, 1 insertion(+), 11 deletions(-) delete mode 100644 Unreal/CarlaUE4/.ignore delete mode 100644 Unreal/CarlaUE4/Config/OptionalModules.ini diff --git a/LibCarla/source/carla/sensor/data/Color.h b/LibCarla/source/carla/sensor/data/Color.h index 8bade12741c..f9133d29c1d 100644 --- a/LibCarla/source/carla/sensor/data/Color.h +++ b/LibCarla/source/carla/sensor/data/Color.h @@ -47,7 +47,7 @@ namespace data { static_assert(sizeof(Color) == sizeof(uint32_t), "Invalid color size!"); #pragma pack(push, 1) - /// A 64-bit color [16 bits per channel (R, G, B, and A each)] + /// Optical flow pixel format. 2 channel float data. struct OpticalFlowPixel { OpticalFlowPixel() = default; OpticalFlowPixel(const OpticalFlowPixel &) = default; diff --git a/Unreal/CarlaUE4/.ignore b/Unreal/CarlaUE4/.ignore deleted file mode 100644 index 1aab3d8264b..00000000000 --- a/Unreal/CarlaUE4/.ignore +++ /dev/null @@ -1,9 +0,0 @@ -.kdev4 -.vscode -Content -Intermediate -Saved -Plugins/Carla/CarlaDependencies -Plugins/Carla/Content -Plugins/Carla/Intermediate -Plugins/CarlaExporter/Intermediate diff --git a/Unreal/CarlaUE4/Config/OptionalModules.ini b/Unreal/CarlaUE4/Config/OptionalModules.ini deleted file mode 100644 index c901676037e..00000000000 --- a/Unreal/CarlaUE4/Config/OptionalModules.ini +++ /dev/null @@ -1 +0,0 @@ -Chrono OFF CarSim OFF From 0d751265a9986da34be6245cf60db620113291be Mon Sep 17 00:00:00 2001 From: Axel1092 Date: Tue, 1 Jun 2021 17:02:45 +0200 Subject: [PATCH 8/9] Temporary fix for windows link errors. --- PythonAPI/carla/source/libcarla/SensorData.cpp | 5 ++++- PythonAPI/carla/source/libcarla/libcarla.cpp | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/PythonAPI/carla/source/libcarla/SensorData.cpp b/PythonAPI/carla/source/libcarla/SensorData.cpp index f3fad9c3dfc..e36835d663e 100644 --- a/PythonAPI/carla/source/libcarla/SensorData.cpp +++ b/PythonAPI/carla/source/libcarla/SensorData.cpp @@ -210,7 +210,7 @@ static void ConvertImage(T &self, EColorConverter cc) { throw std::invalid_argument("invalid color converter!"); } } - +#ifndef _WIN32 // method to convert optical flow images to rgb static boost::python::numpy::ndarray ColorCodedFlow ( carla::sensor::data::OpticalFlowImage& image) { @@ -317,6 +317,7 @@ static boost::python::numpy::ndarray ColorCodedFlow ( bn::dtype type = bn::dtype::get_builtin(); return bn::from_data(&result[0], type, shape, stride, bp::object()).copy(); } +#endif template static std::string SaveImageToDisk(T &self, std::string path, EColorConverter cc) { @@ -396,7 +397,9 @@ void export_sensor_data() { .add_property("height", &csd::OpticalFlowImage::GetHeight) .add_property("fov", &csd::OpticalFlowImage::GetFOVAngle) .add_property("raw_data", &GetRawDataAsBuffer) + #ifndef _WIN32 .def("get_color_coded_flow", &ColorCodedFlow) + #endif .def("__len__", &csd::OpticalFlowImage::size) .def("__iter__", iterator()) .def("__getitem__", +[](const csd::OpticalFlowImage &self, size_t pos) -> csd::OpticalFlowPixel { diff --git a/PythonAPI/carla/source/libcarla/libcarla.cpp b/PythonAPI/carla/source/libcarla/libcarla.cpp index f9a05d6b871..3174af5fa36 100644 --- a/PythonAPI/carla/source/libcarla/libcarla.cpp +++ b/PythonAPI/carla/source/libcarla/libcarla.cpp @@ -209,8 +209,9 @@ static auto MakeCallback(boost::python::object callback) { } }; } - +#ifndef _WIN32 #include +#endif #include "Geom.cpp" #include "Actor.cpp" @@ -238,7 +239,9 @@ BOOST_PYTHON_MODULE(libcarla) { #if PY_MAJOR_VERSION < 3 || PY_MINOR_VERSION < 7 PyEval_InitThreads(); #endif +#ifndef _WIN32 boost::python::numpy::initialize(); +#endif scope().attr("__path__") = "libcarla"; export_geom(); export_control(); From fc9fde7c1cf723b050bba024f42be5e7ac2a22f3 Mon Sep 17 00:00:00 2001 From: Axel Date: Wed, 2 Jun 2021 09:46:15 +0200 Subject: [PATCH 9/9] Fixed sensor tick time test. --- PythonAPI/test/smoke/test_sensor_tick_time.py | 1 + 1 file changed, 1 insertion(+) diff --git a/PythonAPI/test/smoke/test_sensor_tick_time.py b/PythonAPI/test/smoke/test_sensor_tick_time.py index 72ea20efd17..f7a71f2b79e 100644 --- a/PythonAPI/test/smoke/test_sensor_tick_time.py +++ b/PythonAPI/test/smoke/test_sensor_tick_time.py @@ -32,6 +32,7 @@ def test_sensor_tick_time(self): sensor_exception = { "sensor.camera.depth", + "sensor.camera.optical_flow", "sensor.camera.rgb", "sensor.camera.semantic_segmentation", "sensor.camera.dvs",