OSVR Framework (Internal Development Docs)  0.6-1962-g59773924
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
HDKData.cpp
Go to the documentation of this file.
1 
11 // Copyright 2015 Sensics, Inc.
12 //
13 // Licensed under the Apache License, Version 2.0 (the "License");
14 // you may not use this file except in compliance with the License.
15 // You may obtain a copy of the License at
16 //
17 // http://www.apache.org/licenses/LICENSE-2.0
18 //
19 // Unless required by applicable law or agreed to in writing, software
20 // distributed under the License is distributed on an "AS IS" BASIS,
21 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22 // See the License for the specific language governing permissions and
23 // limitations under the License.
24 
25 // Internal Includes
26 #include "HDKData.h"
27 
28 // Library/third-party includes
29 // - none
30 
31 // Standard includes
32 // - none
33 
34 namespace osvr {
35 namespace vbtracker {
36 
37  // clang-format off
38  // Default 3D locations for the beacons on an OSVR HDK face plate, in
39  // millimeters
40  // LED9, LED10, LED14, and LED15 had their Z spec originally at 13.09,
41  // but the data here was changed during development with the comment
42  // "new position works better"
43 
44  const Point3Vector OsvrHdkLedLocations_SENSOR0 = {
45  cv::Point3f{-84.93f, 2.65f, 23.59f}, // LED7
46  cv::Point3f{-83.27f, -14.33f, 13.89f}, // LED8
47  cv::Point3f{-47.00f, 51.00f, 24.09f}, // LED9
48  cv::Point3f{ 47.00f, 51.00f, 24.09f}, // LED10
49  cv::Point3f{ 84.93f, 2.65f, 23.59f}, // LED11
50  cv::Point3f{ 83.27f, -14.33f, 13.89f}, // LED12
51  cv::Point3f{ 84.10f, 19.76f, 13.89f}, // LED13
52  cv::Point3f{ 21.00f, 51.00f, 24.09f}, // LED14
53  cv::Point3f{-21.00f, 51.00f, 24.09f}, // LED15
54  cv::Point3f{-84.10f, 19.76f, 13.89f}, // LED16
55  cv::Point3f{-60.41f, 47.55f, 44.60f}, // LED17
56  cv::Point3f{-80.42f, 20.48f, 42.90f}, // LED18
57  cv::Point3f{-82.01f, 2.74f, 42.40f}, // LED19
58  cv::Point3f{-80.42f, -14.99f, 42.90f}, // LED20
59  cv::Point3f{-60.41f, -10.25f, 48.10f}, // LED21
60  cv::Point3f{-60.41f, 15.75f, 48.10f}, // LED22
61  cv::Point3f{-30.41f, 32.75f, 50.50f}, // LED23
62  cv::Point3f{-31.41f, 47.34f, 47.00f}, // LED24
63  cv::Point3f{ -0.41f, -15.25f, 51.30f}, // LED25
64  cv::Point3f{-30.41f, -27.25f, 50.50f}, // LED26
65  cv::Point3f{-60.44f, -41.65f, 45.10f}, // LED27
66  cv::Point3f{-22.41f, -41.65f, 47.80f}, // LED28
67  cv::Point3f{ 21.59f, -41.65f, 47.80f}, // LED29
68  cv::Point3f{ 59.59f, -41.65f, 45.10f}, // LED30
69  cv::Point3f{ 79.63f, -14.98f, 42.90f}, // LED31
70  cv::Point3f{ 29.59f, -27.25f, 50.50f}, // LED32
71  cv::Point3f{ 81.19f, 2.74f, 42.40f}, // LED33
72  cv::Point3f{ 79.61f, 20.48f, 42.90f}, // LED34
73  cv::Point3f{ 59.59f, 47.55f, 44.60f}, // LED35
74  cv::Point3f{ 30.59f, 47.55f, 47.00f}, // LED36
75  cv::Point3f{ 29.59f, 32.75f, 50.50f}, // LED37
76  cv::Point3f{ -0.41f, 20.75f, 51.30f}, // LED38
77  cv::Point3f{ 59.59f, 15.75f, 48.10f}, // LED39
78  cv::Point3f{ 59.59f, -10.25f, 48.10f} // LED40
79  };
80 
81  // Default 3D locations for the beacons on an OSVR HDK back plate, in
82  // millimeters
83  // the first and fourth LEDs do not actually exist in production
84  const Point3Vector OsvrHdkLedLocations_SENSOR1 = {
85  cv::Point3f{ 1.00f, 23.80f, 0.00f}, // LED1
86  cv::Point3f{ 11.00f, 5.80f, 0.00f}, // LED2
87  cv::Point3f{ 9.00f, -23.80f, 0.00f}, // LED3
88  cv::Point3f{ 0.00f, -8.80f, 0.00f}, // LED4
89  cv::Point3f{ -9.00f, -23.80f, 0.00f}, // LED5
90  cv::Point3f{-12.00f, 5.80f, 0.00f} // LED6
91  };
92 
95  const Point3Vector OsvrHdk2LedLocations_SENSOR0 = {
96  cv::Point3f{-86.62f, 0.00f, 24.10f}, // LED7
97  cv::Point3f{-85.52f, -17.23f, 13.90f}, // LED8
98  cv::Point3f{-47.00f, 48.23f, 24.10f}, // LED9
99  cv::Point3f{ 47.00f, 48.23f, 24.10f}, // LED10
100  cv::Point3f{ 84.82f, 0.00f, 23.60f}, // LED11
101  cv::Point3f{ 83.24f, -17.23f, 13.90f}, // LED12
102  cv::Point3f{ 84.12f, 17.11f, 13.90f}, // LED13
103  cv::Point3f{ 21.00f, 48.23f, 24.15f}, // LED14
104  cv::Point3f{-21.00f, 48.23f, 24.15f}, // LED15
105  cv::Point3f{-85.22f, 17.06f, 13.90f}, // LED16
106  cv::Point3f{-60.04f, 44.91f, 43.74f}, // LED17
107  cv::Point3f{-80.42f, 20.48f, 42.90f}, // LED18
108  cv::Point3f{-82.01f, 2.74f, 42.40f}, // LED19
109  cv::Point3f{-80.42f, -14.99f, 42.90f}, // LED20
110  cv::Point3f{-60.19f, -14.35f, 47.80f}, // LED21
111  cv::Point3f{-60.17f, 11.65f, 47.70f}, // LED22
112  cv::Point3f{-30.09f, 28.65f, 50.04f}, // LED23
113  cv::Point3f{-31.33f, 44.81f, 46.03f}, // LED24
114  cv::Point3f{ 0.00f, -19.35f, 50.81f}, // LED25
115  cv::Point3f{-30.12f, -31.35f, 50.06f}, // LED26
116  cv::Point3f{-60.08f, -47.00f, 44.32f}, // LED27
117  cv::Point3f{-22.00f, -47.11f, 46.89f}, // LED28
118  cv::Point3f{ 22.06f, -47.06f, 47.06f}, // LED29
119  cv::Point3f{ 60.08f, -47.20f, 44.13f}, // LED30
120  cv::Point3f{ 79.63f, -14.98f, 42.90f}, // LED31
121  cv::Point3f{ 30.10f, -31.35f, 50.01f}, // LED32
122  cv::Point3f{ 81.19f, 2.74f, 42.40f}, // LED33
123  cv::Point3f{ 79.61f, 20.48f, 42.90f}, // LED34
124  cv::Point3f{ 60.31f, 45.05f, 43.53f}, // LED35
125  cv::Point3f{ 31.05f, 44.89f, 45.99f}, // LED36
126  cv::Point3f{ 30.13f, 28.65f, 50.04f}, // LED37
127  cv::Point3f{ 0.00f, 16.65f, 50.81f}, // LED38
128  cv::Point3f{ 60.19f, 11.65f, 47.72f}, // LED39
129  cv::Point3f{ 60.20f, -14.35f, 47.71f} // LED40
130  };
131  const Point3Vector OsvrHdk2LedLocations_SENSOR1 = {
132  cv::Point3f{ 1.00f, 23.80f, 0.00f}, // LED1
133  cv::Point3f{ 11.00f, 5.80f, 0.00f}, // LED2
134  cv::Point3f{ 9.00f, -23.80f, 0.00f}, // LED3
135  cv::Point3f{ 0.00f, -8.80f, 0.00f}, // LED4
136  cv::Point3f{ -9.00f, -23.80f, 0.00f}, // LED5
137  cv::Point3f{-12.00f, 5.80f, 0.00f} // LED6
138  };
139  // clang-format on
140 
141  const Vec3Vector OsvrHdkLedDirections_SENSOR0 = {
142  cv::Vec3d{-1, 0, 0},
143  cv::Vec3d{-1, 0, 0},
144  cv::Vec3d{0, 1, 0},
145  cv::Vec3d{0, 1, 0},
146  cv::Vec3d{1, 0, 0},
147  cv::Vec3d{1, 0, 0},
148  cv::Vec3d{1, 0, 0},
149  cv::Vec3d{0, 1, 0},
150  cv::Vec3d{0, 1, 0},
151  cv::Vec3d{-1, 0, 0},
152  cv::Vec3d{0, 0.7071067812, 0.7071067812},
153  cv::Vec3d{-0.7071067812, 0, 0.7071067812},
154  cv::Vec3d{-0.7071067812, 0, 0.7071067812},
155  cv::Vec3d{-0.7071067812, 0, 0.7071067812},
156  cv::Vec3d{-0.7071067812, 0, 0.7071067812},
157  cv::Vec3d{0, 0, 1},
158  cv::Vec3d{0, 0, 1},
159  cv::Vec3d{0, 0.7071067812, 0.7071067812},
160  cv::Vec3d{0, 0, 1},
161  cv::Vec3d{0, 0, 1},
162  cv::Vec3d{0, -0.7071067812, 0.7071067812},
163  cv::Vec3d{0, -0.7071067812, 0.7071067812},
164  cv::Vec3d{0, -0.7071067812, 0.7071067812},
165  cv::Vec3d{0, -0.7071067812, 0.7071067812},
166  cv::Vec3d{0.7071067812, 0, 0.7071067812},
167  cv::Vec3d{0, 0, 1},
168  cv::Vec3d{0.7071067812, 0, 0.7071067812},
169  cv::Vec3d{0.7071067812, 0, 0.7071067812},
170  cv::Vec3d{0, 0.7071067812, 0.7071067812},
171  cv::Vec3d{0, 0.7071067812, 0.7071067812},
172  cv::Vec3d{0, 0, 1},
173  cv::Vec3d{0, 0, 1},
174  cv::Vec3d{0, 0, 1},
175  cv::Vec3d{0, 0, 1}};
176 
177  const Vec3Vector OsvrHdkLedDirections_SENSOR1 = {
178  cv::Vec3d{0, 0, 1}, cv::Vec3d{0, 0, 1}, cv::Vec3d{0, 0, 1},
179  cv::Vec3d{0, 0, 1}, cv::Vec3d{0, 0, 1}, cv::Vec3d{0, 0, 1}};
180 
182  const std::vector<double> OsvrHdkLedVariances_SENSOR0 = {
183  5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 3.0, 8.0,
184  8.0, 8.0, 8.0, 3.0, 3.0, 8.0, 3.0, 3.0, 8.0, 8.0, 8.0, 8.0,
185  8.0, 3.0, 8.0, 8.0, 8.0, 8.0, 3.0, 3.0, 3.0, 3.0};
186 
187  static const std::initializer_list<std::size_t> HDK2_Missing_Beacons = {
188  12, 13, 14, 25, 26, 28};
189  std::initializer_list<std::size_t> getOneBasedIDsOfMissingBeaconsHDK2() {
190  return HDK2_Missing_Beacons;
191  }
192 
193 } // namespace vbtracker
194 } // namespace osvr
Header.