28#include <pcl/io/pcd_io.h>
35#include <Calibration/Calibration.h>
36#include <Image/ImageProcessor.h>
104 device_->startVideo();
105 device_->startDepth();
112 ARMARX_INFO <<
"Stopping KinectV1 Grabber Interface";
113 device_->stopVideo();
114 device_->stopDepth();
115 ARMARX_INFO <<
"Stopped KinectV1 Grabber Interface";
124 delete rgbImages_[0];
125 delete rgbImages_[1];
137 rgbImages_ =
new CByteImage*[2];
138 size_ = width_ * height_;
139 rgbImages_[0] =
new CByteImage(width_, height_, CByteImage::eRGB24);
140 rgbImages_[1] =
new CByteImage(width_, height_, CByteImage::eRGB24);
141 ::ImageProcessor::Zero(rgbImages_[0]);
142 ::ImageProcessor::Zero(rgbImages_[1]);
143 Eigen::Vector2i dimensions = Eigen::Vector2i(width_, height_);
144 setImageFormat(visionx::ImageDimension(dimensions(0), dimensions(1)), visionx::eRgb);
151 static std::vector<uint8_t> rgb(size_ * 3);
152 static std::vector<uint16_t> depth(size_);
154 if (!device_->getRGB(rgb) || device_->getDepth(depth))
158 pcl::PointCloud<PointT>::Ptr outputCloud =
159 pcl::PointCloud<PointT>::Ptr(
new pcl::PointCloud<PointT>());
160 outputCloud->resize(size_);
161 for (
int i = 0; i < size_; i++)
165 for (
int j = 0; j < 3; j++)
167 rgbImages_[0]->pixels[
index + j] = rgb[
index + j];
170 rgbImages_[1]->pixels[
index + 0],
171 rgbImages_[1]->pixels[
index + 1],
172 rgbImages_[1]->pixels[
index + 2],
180 outputCloud->points[i].x = (i % width_ - cx_ + 0.5) * depth[i] / fx_;
181 outputCloud->points[i].y = (i / width_ - cy_ + 0.5) * depth[i] / fy_;
182 outputCloud->points[i].z = depth[i];
183 outputCloud->points[i].r = rgb[
index];
184 outputCloud->points[i].g = rgb[
index + 1];
185 outputCloud->points[i].b = rgb[
index + 2];
187 IceUtil::Time ts = IceUtil::Time::now();
188 outputCloud->header.stamp = ts.toMicroSeconds();
std::string getConfigIdentifier()
Retrieve config identifier for this component as set in constructor.
virtual void onExitComponent()
Hook for subclass.
virtual void onDisconnectComponent()
Hook for subclass.
virtual void onConnectComponent()=0
Pure virtual hook for the subclass.
virtual void onInitComponent()=0
Pure virtual hook for the subclass.
float frameRate
Required frame rate.
std::atomic_bool captureEnabled
Indicates that capturing is enabled and running.
void onInitComponent() override
void onDisconnectComponent() override
Hook for subclass.
void setImageFormat(ImageDimension imageDimension, ImageType imageType, BayerPatternType bayerPatternType=visionx::eBayerPatternRg)
Sets the image basic format data.
void provideImages(void **inputBuffers, const IceUtil::Time &imageTimestamp=IceUtil::Time())
send images raw.
void onConnectComponent() override
void setNumberImages(int numberImages)
Sets the number of images on each capture.
void onExitComponent() override
void onInitComponent() override
Pure virtual hook for the subclass.
bool doCapture() override
void onExitCapturingPointCloudProvider() override
void onDisconnectComponent() override
Hook for subclass.
void onStartCapture(float frameRate) override
void onInitCapturingPointCloudProvider() override
void onConnectComponent() override
Pure virtual hook for the subclass.
StereoCalibration getStereoCalibration(const Ice::Current &c=Ice::emptyCurrent) override
void onStopCapture() override
armarx::PropertyDefinitionsPtr createPropertyDefinitions() override
void onInitImageProvider() override
void onExitComponent() override
Hook for subclass.
void providePointCloud(PointCloudPtrT pointCloudPtr)
offer the new point cloud.
#define ARMARX_INFO
The normal logging level.
#define ARMARX_VERBOSE
The logging level for verbose information.
This file offers overloads of toIce() and fromIce() functions for STL container types.
IceUtil::Handle< class PropertyDefinitionContainer > PropertyDefinitionsPtr
PropertyDefinitions smart pointer type.