From a3b1e302df47ed6e143c832f11710249a6af8f17 Mon Sep 17 00:00:00 2001 From: tejalbarnwal Date: Fri, 24 Mar 2023 19:27:23 +0530 Subject: [PATCH 1/4] Add: support for simulation of RGGB bayer images Signed-off-by: tejalbarnwal --- src/CameraSensor.cc | 50 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/src/CameraSensor.cc b/src/CameraSensor.cc index ff422656..5797fc7c 100644 --- a/src/CameraSensor.cc +++ b/src/CameraSensor.cc @@ -43,6 +43,12 @@ #include "gz/rendering/Utils.hh" + +//teju +#include +//teju + + using namespace gz; using namespace sensors; @@ -278,6 +284,9 @@ bool CameraSensor::CreateCamera() case sdf::PixelFormatType::L_INT16: this->dataPtr->camera->SetImageFormat(rendering::PF_L16); break; + case sdf::PixelFormatType::BAYER_RGGB8: + this->dataPtr->camera->SetImageFormat(rendering::PF_BAYER_RGGB8); + break; default: gzerr << "Unsupported pixel format [" << static_cast(pixelFormat) << "]\n"; @@ -571,21 +580,36 @@ bool CameraSensor::Update(const std::chrono::steady_clock::duration &_now) if (this->HasImageConnections() || this->dataPtr->saveImage) { // generate sensor data + //teju + std::cout << "check1\n"; + //teju this->Render(); { GZ_PROFILE("CameraSensor::Update Copy image"); + // teju + std::cout << "check2\n"; + //teju this->dataPtr->camera->Copy(this->dataPtr->image); } + //teju + std::cout << "check 3\n"; + //teju unsigned int width = this->dataPtr->camera->ImageWidth(); unsigned int height = this->dataPtr->camera->ImageHeight(); unsigned char *data = this->dataPtr->image.Data(); + //teju + std::cout << "check4\n"; + //teju gz::common::Image::PixelFormatType format{common::Image::UNKNOWN_PIXEL_FORMAT}; msgs::PixelFormatType msgsPixelFormat = msgs::PixelFormatType::UNKNOWN_PIXEL_FORMAT; + //teju + std::cout << "check5\n"; + //teju switch (this->dataPtr->camera->ImageFormat()) { case rendering::PF_R8G8B8: @@ -600,15 +624,24 @@ bool CameraSensor::Update(const std::chrono::steady_clock::duration &_now) format = common::Image::L_INT16; msgsPixelFormat = msgs::PixelFormatType::L_INT16; break; + case rendering::PF_BAYER_RGGB8: + format = common::Image::BAYER_RGGB8; + msgsPixelFormat = msgs::PixelFormatType::BAYER_RGGB8; + break; default: gzerr << "Unsupported pixel format [" << this->dataPtr->camera->ImageFormat() << "]\n"; break; } + //teju + std::cout << "check6\n"; + //teju // create message msgs::Image msg; { + //teju + std::cout << "check7\n"; GZ_PROFILE("CameraSensor::Update Message"); msg.set_width(width); msg.set_height(height); @@ -620,21 +653,35 @@ bool CameraSensor::Update(const std::chrono::steady_clock::duration &_now) frame->set_key("frame_id"); frame->add_value(this->dataPtr->opticalFrameId); msg.set_data(data, this->dataPtr->camera->ImageMemorySize()); + //teju + std::cout << "check8\n"; } // publish the image message { + //teju + std::cout << "check9\n"; + //teju this->AddSequence(msg.mutable_header()); GZ_PROFILE("CameraSensor::Update Publish"); this->dataPtr->pub.Publish(msg); + //teju + std::cout << "check10\n"; + //teju } + //teju + std::cout << "check11\n"; + //teju // Trigger callbacks. if (this->dataPtr->imageEvent.ConnectionCount() > 0) { try { this->dataPtr->imageEvent(msg); + //teju + std::cout << "check12\n"; + //teju } catch(...) { @@ -646,6 +693,9 @@ bool CameraSensor::Update(const std::chrono::steady_clock::duration &_now) if (this->dataPtr->saveImage) { this->dataPtr->SaveImage(data, width, height, format); + //teju + std::cout << "check13\n"; + //teju } } From 4a97f9bf4841090f217778cba626a059c8df3b5a Mon Sep 17 00:00:00 2001 From: tejalbarnwal Date: Fri, 24 Mar 2023 23:24:43 +0530 Subject: [PATCH 2/4] Remove: cout statements Signed-off-by: tejalbarnwal --- src/CameraSensor.cc | 42 ------------------------------------------ 1 file changed, 42 deletions(-) diff --git a/src/CameraSensor.cc b/src/CameraSensor.cc index 5797fc7c..03d9edf5 100644 --- a/src/CameraSensor.cc +++ b/src/CameraSensor.cc @@ -44,11 +44,6 @@ #include "gz/rendering/Utils.hh" -//teju -#include -//teju - - using namespace gz; using namespace sensors; @@ -580,36 +575,21 @@ bool CameraSensor::Update(const std::chrono::steady_clock::duration &_now) if (this->HasImageConnections() || this->dataPtr->saveImage) { // generate sensor data - //teju - std::cout << "check1\n"; - //teju this->Render(); { GZ_PROFILE("CameraSensor::Update Copy image"); - // teju - std::cout << "check2\n"; - //teju this->dataPtr->camera->Copy(this->dataPtr->image); } - //teju - std::cout << "check 3\n"; - //teju unsigned int width = this->dataPtr->camera->ImageWidth(); unsigned int height = this->dataPtr->camera->ImageHeight(); unsigned char *data = this->dataPtr->image.Data(); - //teju - std::cout << "check4\n"; - //teju gz::common::Image::PixelFormatType format{common::Image::UNKNOWN_PIXEL_FORMAT}; msgs::PixelFormatType msgsPixelFormat = msgs::PixelFormatType::UNKNOWN_PIXEL_FORMAT; - //teju - std::cout << "check5\n"; - //teju switch (this->dataPtr->camera->ImageFormat()) { case rendering::PF_R8G8B8: @@ -634,14 +614,9 @@ bool CameraSensor::Update(const std::chrono::steady_clock::duration &_now) break; } - //teju - std::cout << "check6\n"; - //teju // create message msgs::Image msg; { - //teju - std::cout << "check7\n"; GZ_PROFILE("CameraSensor::Update Message"); msg.set_width(width); msg.set_height(height); @@ -653,35 +628,21 @@ bool CameraSensor::Update(const std::chrono::steady_clock::duration &_now) frame->set_key("frame_id"); frame->add_value(this->dataPtr->opticalFrameId); msg.set_data(data, this->dataPtr->camera->ImageMemorySize()); - //teju - std::cout << "check8\n"; } // publish the image message { - //teju - std::cout << "check9\n"; - //teju this->AddSequence(msg.mutable_header()); GZ_PROFILE("CameraSensor::Update Publish"); this->dataPtr->pub.Publish(msg); - //teju - std::cout << "check10\n"; - //teju } - //teju - std::cout << "check11\n"; - //teju // Trigger callbacks. if (this->dataPtr->imageEvent.ConnectionCount() > 0) { try { this->dataPtr->imageEvent(msg); - //teju - std::cout << "check12\n"; - //teju } catch(...) { @@ -693,9 +654,6 @@ bool CameraSensor::Update(const std::chrono::steady_clock::duration &_now) if (this->dataPtr->saveImage) { this->dataPtr->SaveImage(data, width, height, format); - //teju - std::cout << "check13\n"; - //teju } } From 5effbe38dcac686c21cddafb9009e3bd0d223f05 Mon Sep 17 00:00:00 2001 From: tejalbarnwal Date: Tue, 28 Mar 2023 15:07:21 +0530 Subject: [PATCH 3/4] remove white-space Signed-off-by: tejalbarnwal --- src/CameraSensor.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/src/CameraSensor.cc b/src/CameraSensor.cc index 03d9edf5..1b2454f3 100644 --- a/src/CameraSensor.cc +++ b/src/CameraSensor.cc @@ -43,7 +43,6 @@ #include "gz/rendering/Utils.hh" - using namespace gz; using namespace sensors; From 20413594cc275406f0ce7c1e402ff8b6b91e952d Mon Sep 17 00:00:00 2001 From: tejalbarnwal Date: Wed, 29 Mar 2023 21:16:35 +0530 Subject: [PATCH 4/4] Add support for all bayer formats Signed-off-by: tejalbarnwal --- src/CameraSensor.cc | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/CameraSensor.cc b/src/CameraSensor.cc index 1b2454f3..f24d6836 100644 --- a/src/CameraSensor.cc +++ b/src/CameraSensor.cc @@ -281,6 +281,15 @@ bool CameraSensor::CreateCamera() case sdf::PixelFormatType::BAYER_RGGB8: this->dataPtr->camera->SetImageFormat(rendering::PF_BAYER_RGGB8); break; + case sdf::PixelFormatType::BAYER_BGGR8: + this->dataPtr->camera->SetImageFormat(rendering::PF_BAYER_BGGR8); + break; + case sdf::PixelFormatType::BAYER_GBRG8: + this->dataPtr->camera->SetImageFormat(rendering::PF_BAYER_GBRG8); + break; + case sdf::PixelFormatType::BAYER_GRBG8: + this->dataPtr->camera->SetImageFormat(rendering::PF_BAYER_GRBG8); + break; default: gzerr << "Unsupported pixel format [" << static_cast(pixelFormat) << "]\n"; @@ -607,6 +616,18 @@ bool CameraSensor::Update(const std::chrono::steady_clock::duration &_now) format = common::Image::BAYER_RGGB8; msgsPixelFormat = msgs::PixelFormatType::BAYER_RGGB8; break; + case rendering::PF_BAYER_BGGR8: + format = common::Image::BAYER_BGGR8; + msgsPixelFormat = msgs::PixelFormatType::BAYER_BGGR8; + break; + case rendering::PF_BAYER_GBRG8: + format = common::Image::BAYER_GBRG8; + msgsPixelFormat = msgs::PixelFormatType::BAYER_GBRG8; + break; + case rendering::PF_BAYER_GRBG8: + format = common::Image::BAYER_GRBG8; + msgsPixelFormat = msgs::PixelFormatType::BAYER_GRBG8; + break; default: gzerr << "Unsupported pixel format [" << this->dataPtr->camera->ImageFormat() << "]\n";