ifm3d
struct_calibration.hpp
1 // -*- c++ -*-
2 /*
3  * Copyright 2022-present ifm electronic, gmbh
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #ifndef IFM3D_DESERIALIZE_STRUCT_CALIBRATION_HPP
8 #define IFM3D_DESERIALIZE_STRUCT_CALIBRATION_HPP
9 
10 #include <array>
11 #include <ifm3d/deserialize/deserialize_utils.hpp>
12 #include <ifm3d/fg/organizer_utils.h>
13 
14 namespace ifm3d::calibration
15 {
23  {
24  using Ptr = std::shared_ptr<struct ExtrinsicOpticToUser>;
25  float trans_x; // value in meter
26  float trans_y; // value in meter
27  float trans_z; // value in meter
28  float rot_x; // value in radians
29  float rot_y; // value in radians
30  float rot_z; // value in radians
31 
32  void
33  Read(const uint8_t* data)
34  {
35  trans_x = mkval<float>(data + (sizeof(float) * 0));
36  trans_y = mkval<float>(data + (sizeof(float) * 1));
37  trans_z = mkval<float>(data + (sizeof(float) * 2));
38  rot_x = mkval<float>(data + (sizeof(float) * 3));
39  rot_y = mkval<float>(data + (sizeof(float) * 4));
40  rot_z = mkval<float>(data + (sizeof(float) * 5));
41  }
42  };
43 
58  struct Calibration
59  {
60  using Ptr = std::shared_ptr<struct Calibration>;
61  uint32_t model_id;
62  std::array<float, 32> model_parameters;
63  void
64  Read(const uint8_t* data)
65  {
66  model_id = mkval<uint32_t>(data);
67  mkarray<float, 32>(data + sizeof(uint32_t), model_parameters);
68  }
69  };
70  /*@brief Intrisnsic parameter model for the device/head*/
71  using IntrinsicCalibration = struct Calibration;
72  /*@brief Inverse intrisnsic parameter model for the device/head*/
74 } // end namespace calibration
75 
76 // end namespace ifm3d
77 
78 #endif // IFM3D_DESERIALIZE_STRUCT_CALIBRATION_HPP
ifm3d::calibration::ExtrinsicOpticToUser
All items are given in SI units, i.e. transXYZ are in [m] and rotXYZ are in [rad].
Definition: struct_calibration.hpp:22
ifm3d::calibration::Calibration
Definition: struct_calibration.hpp:58