calibration_pattern.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <vector>
4 
5 #include "nxLib.h"
6 
7 #include <ensenso_camera_msgs/CalibrationPattern.h>
8 #include <ensenso_camera_msgs/ImagePoint.h>
9 
11 {
12  double thickness = 0;
13  int gridSizeX = 0;
14  int gridSizeY = 0;
15  double gridSpacing = 0;
16 
17  std::vector<ensenso_camera_msgs::ImagePoint> leftPoints;
18  std::vector<ensenso_camera_msgs::ImagePoint> rightPoints;
19 
21  {
22  }
23 
24  explicit CalibrationPattern(NxLibItem const& node)
25  {
26  // NxLib patterns are specified in millimeters, output is in meters.
27  thickness = node[itmThickness].asDouble() / 1000.0f;
28  gridSpacing = node[itmGridSpacing].asDouble() / 1000.0f;
29  gridSizeX = node[itmGridSize][0].asInt();
30  gridSizeY = node[itmGridSize][1].asInt();
31  }
32 
33  explicit CalibrationPattern(ensenso_camera_msgs::CalibrationPattern const& message)
34  {
35  readFromMessage(message);
36  }
37 
38  void writeToMessage(ensenso_camera_msgs::CalibrationPattern* message) const
39  {
40  message->thickness = thickness;
41  message->grid_spacing = gridSpacing;
42  message->grid_size_x = gridSizeX;
43  message->grid_size_y = gridSizeY;
44 
45  message->left_points.clear();
46  message->left_points.insert(message->left_points.begin(), leftPoints.begin(), leftPoints.end());
47  message->right_points.clear();
48  message->right_points.insert(message->right_points.begin(), rightPoints.begin(), rightPoints.end());
49  }
50 
51  void readFromMessage(ensenso_camera_msgs::CalibrationPattern const& message)
52  {
53  thickness = message.thickness;
54  gridSpacing = message.grid_spacing;
55  gridSizeX = message.grid_size_x;
56  gridSizeY = message.grid_size_y;
57 
58  leftPoints.clear();
59  leftPoints.insert(leftPoints.begin(), message.left_points.begin(), message.left_points.end());
60  rightPoints.clear();
61  rightPoints.insert(rightPoints.begin(), message.right_points.begin(), message.right_points.end());
62  }
63 
64  void writeToNxLib(NxLibItem const& node, bool right = false)
65  {
66  node[itmPattern][itmThickness] = thickness * 1000; // Data is in meters, NxLib expects it to be in millimeters.
67  node[itmPattern][itmGridSpacing] = gridSpacing * 1000;
68  node[itmPattern][itmGridSize][0] = gridSizeX;
69  node[itmPattern][itmGridSize][1] = gridSizeY;
70 
71  auto& points = leftPoints;
72  if (right)
73  {
74  points = rightPoints;
75  }
76 
77  for (size_t i = 0; i < points.size(); i++)
78  {
79  node[itmPoints][i][0] = points[i].x;
80  node[itmPoints][i][1] = points[i].y;
81  }
82  }
83 };
void writeToNxLib(NxLibItem const &node, bool right=false)
void readFromMessage(ensenso_camera_msgs::CalibrationPattern const &message)
std::vector< ensenso_camera_msgs::ImagePoint > rightPoints
void writeToMessage(ensenso_camera_msgs::CalibrationPattern *message) const
std::vector< ensenso_camera_msgs::ImagePoint > leftPoints
CalibrationPattern(NxLibItem const &node)
CalibrationPattern(ensenso_camera_msgs::CalibrationPattern const &message)


ensenso_camera
Author(s): Ensenso
autogenerated on Thu May 16 2019 02:44:22