34 virtual ensenso::std::optional<double>
scaling()
const 39 virtual ensenso::std::optional<int>
sizeWidth()
const 49 virtual ensenso::std::optional<double>
far()
const 54 virtual ensenso::std::optional<double>
near()
const 64 virtual ensenso::std::optional<tf2::Transform>
transform()
const 83 , mPixelScale(pixelScale)
85 , mSizeWidth(sizeWidth)
86 , mSizeHeight(sizeHeight)
87 , mTransform(
std::
move(transform))
96 ensenso::std::optional<double>
scaling()
const override 111 ensenso::std::optional<tf2::Transform>
transform()
const override 127 ensenso::std::optional<double>
far()
const override 132 ensenso::std::optional<double>
near()
const override 145 cmdParams[itmUseOpenGL] = params->
useOpenGl();
148 cmdParams[itmPixelSize] = *params->
pixelScale();
152 cmdParams[itmScaling] = *params->
scaling();
160 cmdParams[itmSize][0] = *params->
sizeWidth();
164 cmdParams[itmSize][1] = *params->
sizeHeight();
174 cmdParams[itmFar] = *params->
far();
178 cmdParams[itmNear] = *params->
near();
182 std::unique_ptr<ensenso::pcl::PointCloud>
pointCloudFromNxLib(NxLibItem
const& node, std::string
const& frame,
183 bool isFileCamera =
false,
188 std::vector<float> data;
190 node.getBinaryDataInfo(&width, &height, 0, 0, 0, ×tamp);
191 node.getBinaryData(data, 0);
193 auto cloud = ensenso::std::make_unique<ensenso::pcl::PointCloud>();
197 cloud->header.frame_id = frame;
199 cloud->width = width;
200 cloud->height = height;
201 cloud->is_dense =
false;
202 cloud->points.resize(width * height);
204 for (
int i = 0; i < width * height; i++)
207 cloud->points[i].x = data[3 * i] / 1000.0f;
208 cloud->points[i].y = data[3 * i + 1] / 1000.0f;
209 cloud->points[i].z = data[3 * i + 2] / 1000.0f;
211 if (roi !=
nullptr && !roi->contains(cloud->points[i].x, cloud->points[i].y, cloud->points[i].z))
213 cloud->points[i].x = std::numeric_limits<float>::quiet_NaN();
214 cloud->points[i].y = std::numeric_limits<float>::quiet_NaN();
215 cloud->points[i].z = std::numeric_limits<float>::quiet_NaN();
223 NxLibItem
const& normalNode,
224 std::string
const& frame,
225 bool isFileCamera =
false,
230 std::vector<float> pointData;
231 std::vector<float> normalData;
233 pointMapNode.getBinaryDataInfo(&width, &height, 0, 0, 0, ×tamp);
234 pointMapNode.getBinaryData(pointData, 0);
235 normalNode.getBinaryData(normalData, 0);
237 auto cloud = ensenso::std::make_unique<ensenso::pcl::PointCloudNormals>();
241 cloud->header.frame_id = frame;
243 cloud->width = width;
244 cloud->height = height;
245 cloud->is_dense =
false;
246 cloud->points.resize(width * height);
248 for (
int i = 0; i < width * height; i++)
251 cloud->points[i].x = pointData[3 * i] / 1000.0f;
252 cloud->points[i].y = pointData[3 * i + 1] / 1000.0f;
253 cloud->points[i].z = pointData[3 * i + 2] / 1000.0f;
255 if (roi !=
nullptr && !roi->contains(cloud->points[i].x, cloud->points[i].y, cloud->points[i].z))
257 cloud->points[i].x = std::numeric_limits<float>::quiet_NaN();
258 cloud->points[i].y = std::numeric_limits<float>::quiet_NaN();
259 cloud->points[i].z = std::numeric_limits<float>::quiet_NaN();
263 cloud->points[i].normal_x = normalData[3 * i];
264 cloud->points[i].normal_y = normalData[3 * i + 1];
265 cloud->points[i].normal_z = normalData[3 * i + 2];
272 NxLibItem
const& pointsNode,
273 std::string
const& frame,
274 bool isFileCamera =
false,
279 std::vector<float> data;
280 std::vector<unsigned char> imageData;
282 pointsNode.getBinaryDataInfo(&width, &height, 0, 0, 0, 0);
283 pointsNode.getBinaryData(data, ×tamp);
284 imageNode.getBinaryData(imageData, 0);
286 auto cloud = ensenso::std::make_unique<ensenso::pcl::PointCloudColored>();
290 cloud->header.frame_id = frame;
292 cloud->width = width;
293 cloud->height = height;
294 cloud->is_dense =
false;
295 cloud->points.resize(width * height);
297 for (
int i = 0; i < width * height; i++)
300 cloud->points[i].x = data[3 * i] / 1000.0f;
301 cloud->points[i].y = data[3 * i + 1] / 1000.0f;
302 cloud->points[i].z = data[3 * i + 2] / 1000.0f;
304 cloud->points[i].r = imageData[4 * i];
305 cloud->points[i].g = imageData[4 * i + 1];
306 cloud->points[i].b = imageData[4 * i + 2];
307 cloud->points[i].a = imageData[4 * i + 3];
309 if (roi !=
nullptr && !roi->contains(cloud->points[i].x, cloud->points[i].y, cloud->points[i].z))
311 cloud->points[i].x = std::numeric_limits<float>::quiet_NaN();
312 cloud->points[i].y = std::numeric_limits<float>::quiet_NaN();
313 cloud->points[i].z = std::numeric_limits<float>::quiet_NaN();
321 std::string
const& frame,
322 bool isFileCamera =
false)
328 std::string
const& targetFrame,
329 bool isFileCamera =
false)
332 cmdResult[itmImages][itmRenderPointMap], targetFrame, isFileCamera);
virtual ensenso::std::optional< int > sizeWidth() const
void writeTransformToNxLib(Transform const &transform, NxLibItem const &node)
virtual ensenso::std::optional< bool > withTexture() const
ensenso::std::optional< double > far() const override
double nxLibToPclTimestamp(double const ×tamp, bool isFileCamera=false)
ensenso::std::optional< tf2::Transform > transform() const override
tf2::Transform mTransform
std::unique_ptr< ensenso::pcl::PointCloud > pointCloudFromNxLib(NxLibItem const &node, std::string const &frame, bool isFileCamera=false, PointCloudROI const *roi=nullptr)
RenderPointMapParams(bool _useOpenGl)
ensenso::std::optional< double > scaling() const override
virtual ensenso::std::optional< double > scaling() const
virtual ensenso::std::optional< tf2::Transform > transform() const
std::unique_ptr< ensenso::pcl::PointCloudColored > pointCloudTexturedFromNxLib(NxLibItem const &imageNode, NxLibItem const &pointsNode, std::string const &frame, bool isFileCamera=false, PointCloudROI const *roi=nullptr)
virtual ensenso::std::optional< double > near() const
std::unique_ptr< ensenso::pcl::PointCloudNormals > pointCloudWithNormalsFromNxLib(NxLibItem const &pointMapNode, NxLibItem const &normalNode, std::string const &frame, bool isFileCamera=false, PointCloudROI const *roi=nullptr)
ensenso::std::optional< int > sizeHeight() const override
ensenso::std::optional< bool > withTexture() const override
void setRenderParams(NxLibItem const &cmdParams, RenderPointMapParams const *params)
ensenso::std::optional< int > pixelScale() const override
ImagePtr depthImageFromNxLibNode(NxLibItem const &node, std::string const &frame, bool isFileCamera)
virtual ensenso::std::optional< double > far() const
std::unique_ptr< ensenso::pcl::PointCloud > retrieveRenderedPointCloud(NxLibItem const &cmdResult, std::string const &frame, bool isFileCamera=false)
ensenso::std::optional< int > sizeWidth() const override
void move(std::vector< T > &a, std::vector< T > &b)
ensenso::std::optional< double > near() const override
virtual ensenso::std::optional< int > pixelScale() const
virtual bool useOpenGl() const
sensor_msgs::msg::ImagePtr ImagePtr
virtual ensenso::std::optional< int > sizeHeight() const
RenderPointMapParamsProjection(bool useOpenGL, double far, double near, bool withTexture)
std::unique_ptr< ensenso::pcl::PointCloudColored > retrieveTexturedPointCloud(NxLibItem const &cmdResult, std::string const &targetFrame, bool isFileCamera=false)
RenderPointMapParamsTelecentric(bool useOpenGl, int pixelScale, double scaling, int sizeWidth, int sizeHeight, tf2::Transform transform)
sensor_msgs::msg::ImagePtr retrieveRenderedDepthMap(NxLibItem const &cmdResult, std::string const &frame, bool isFileCamera)