@@ -169,6 +169,70 @@ std::unordered_map<std::string, Sophus::SE3d> constructCadForDvtmAria() {
169169
170170 return cadMapT_Device_Sensor;
171171}
172+
173+ // A helper function for constructing CAD extrinsics for EVT-S
174+ std::unordered_map<std::string, Sophus::SE3d> constructCadForEvtSmall () {
175+ std::unordered_map<std::string, Sophus::SE3d> cadMapT_Device_Sensor;
176+
177+ const std::vector<std::string> cadCsvLines = {
178+ " camera-slam-left, 0.069051, 0.002372, 0.009254, 0.793353, 0.000000, -0.608761, 0.607927, -0.052336, 0.792266" ,
179+ " camera-slam-right, -0.069051, 0.002372, 0.009254, 0.793353, 0.000000, 0.608761, -0.607927, -0.052336, 0.792266" ,
180+ " camera-et-left, 0.054298, -0.018500, 0.006210, 0.034478, -0.508118, -0.860597, -0.674245, 0.623794, -0.395316" ,
181+ " camera-et-right, -0.054298, -0.018500, 0.006210, -0.034478, -0.508118, -0.860597, 0.674245, 0.623794, -0.395316" ,
182+ " camera-rgb, 0.056000, 0.007121, 0.012883, 1.000000, 0.000000, 0.000000, 0.000000, -0.130526, 0.991445" ,
183+ " imu-left, 0.064799, 0.001997, 0.003152, 0.790027, 0.000000, -0.613072, -0.607365, 0.136127, -0.782673" ,
184+ " imu-right, -0.065182, 0.001893, 0.002645, -0.793353, 0.000000, -0.608761, 0.595593, 0.206874, -0.776191" ,
185+ " baro0, -0.009258, 0.010842, 0.017200, 0.000000, 0.000000, -1.000000, 0.173648, 0.984808, 0.000000" ,
186+ " mag0, 0.064411, -0.004813, 0.000723, 0.588329, 0.006506, -0.808595, -0.808020, 0.043280, -0.587563" ,
187+ " mic0, -0.045906 ,-0.027938 ,0.006667 ,0.97508224 ,-0.160939007 ,0.152686805 ,-0.14019156 ,-0.980440 ,-0.138144" ,
188+ " mic1, 0.009161 ,0.010231 ,0.017250 ,-0.984808 ,-0.173648 ,0.000000 ,-0.173648 ,0.984808 ,0.000000" ,
189+ " mic2, 0.045905 ,-0.027931 ,0.006668 ,-0.975082 ,-0.160938 ,0.152687 ,0.140190 ,-0.980440 ,-0.138146" ,
190+ " mic3, 0.063471 ,0.012034 ,0.005566 ,-0.017386 ,0.001521 ,0.999848 ,0.087156 ,0.996195 ,0.000000" ,
191+ " mic4, -0.052398 ,0.013200 ,0.012160 ,0.965337 ,0.033710 ,0.258819 ,-0.034899 ,0.999391 ,0.000000" ,
192+ " mic5, 0.069856 ,0.008270 ,-0.093105 ,0.002466 ,-0.996176 ,0.087334 ,0.990147 ,-0.009795 ,-0.139689" ,
193+ " mic6, -0.069822 ,0.008268 ,-0.093138 ,-0.002487 ,-0.996176 ,0.087333 ,-0.990081 ,-0.009815 ,-0.140151" };
194+
195+ for (const auto & line : cadCsvLines) {
196+ const auto maybeLabelAndPose = readSingleCsvLine (line);
197+ XR_CHECK (maybeLabelAndPose.has_value (), " Reading csv line has failed: {}" , line);
198+ cadMapT_Device_Sensor.emplace (
199+ maybeLabelAndPose.value ().first , maybeLabelAndPose.value ().second );
200+ }
201+
202+ return cadMapT_Device_Sensor;
203+ }
204+
205+ // A helper function for constructing CAD extrinsics for EVT-L
206+ std::unordered_map<std::string, Sophus::SE3d> constructCadForEvtLarge () {
207+ std::unordered_map<std::string, Sophus::SE3d> cadMapT_Device_Sensor;
208+
209+ const std::vector<std::string> cadCsvLines = {
210+ " camera-slam-left, 0.071351, 0.002372, 0.008454, 0.793353, 0.000000, -0.608761, 0.607927, -0.052336, 0.792266" ,
211+ " camera-slam-right, -0.071351, 0.002372, 0.008454, 0.793353, 0.000000, 0.608761, -0.607927, -0.052336, 0.792266" ,
212+ " camera-et-left, 0.055753, -0.019589, 0.004786, 0.034096, -0.508436, -0.860424, -0.674299, 0.623745, -0.395300" ,
213+ " camera-et-right, -0.055753, -0.019589, 0.004786, -0.034096, -0.508436, -0.860424, 0.674299, 0.623745, -0.395300" ,
214+ " camera-rgb, 0.058250, 0.007186, 0.012096, 1.000000, 0.000000, 0.000000, 0.000000, -0.130526, 0.991445" ,
215+ " imu-left, 0.067042, 0.002160, 0.002413, 0.790027, 0.000000, -0.613072, -0.607365, 0.136127, -0.782673" ,
216+ " imu-right, -0.067482, 0.001893, 0.001845, -0.793353, 0.000000, -0.608761, 0.595593, 0.206874, -0.776191" ,
217+ " baro0, -0.009258, 0.010842, 0.017200, 0.000000, 0.000000, -1.000000, 0.173648, 0.984808, 0.000000" ,
218+ " mag0, 0.066568, -0.004813, -0.001498, 0.587782, -0.008810, -0.808971, -0.808020, 0.043280, -0.587563" ,
219+ " mic0, -0.04613750996 ,-0.02929690419 ,0.006233332458 ,0.981006 ,-0.109790 ,0.159915 ,-0.087780 ,-0.986430 ,-0.138744" ,
220+ " mic1, 0.009200472201 ,0.01030418902 ,0.01725 ,-0.984807753 ,-0.173648178 ,0 ,-0.173648178 ,0.984807753 ,0" ,
221+ " mic2, 0.046138 ,-0.029297 ,0.006233 ,-0.981006 ,-0.109790 ,0.159915 ,0.087780 ,-0.986430 ,-0.138744" ,
222+ " mic3, 0.065925 ,0.011961 ,0.004305 ,-0.017386 ,0.001521 ,0.999848 ,0.087156 ,0.996195 ,0.000000" ,
223+ " mic4, -0.054800 ,0.013142 ,0.010960 ,0.965337 ,0.033710 ,0.258819 ,-0.034899 ,0.999391 ,0.000000" ,
224+ " mic5, 0.072318 ,0.008272 ,-0.094955 ,0.002477 ,-0.996176 ,0.087334 ,0.990114 ,-0.009805 ,-0.139920" ,
225+ " mic6, -0.072319 ,0.008271 ,-0.094955 ,-0.002477 ,-0.996176 ,0.087334 ,-0.990114 ,-0.009805 ,-0.139920" };
226+
227+ for (const auto & line : cadCsvLines) {
228+ const auto maybeLabelAndPose = readSingleCsvLine (line);
229+ XR_CHECK (maybeLabelAndPose.has_value (), " Reading csv line has failed: {}" , line);
230+ cadMapT_Device_Sensor.emplace (
231+ maybeLabelAndPose.value ().first , maybeLabelAndPose.value ().second );
232+ }
233+
234+ return cadMapT_Device_Sensor;
235+ }
172236} // namespace
173237
174238DeviceCadExtrinsics::DeviceCadExtrinsics (
@@ -183,6 +247,12 @@ DeviceCadExtrinsics::DeviceCadExtrinsics(
183247 labelToT_Cpf_Sensor_ = constructCadForDvtLarge ();
184248 } else if (deviceSubType == " DVT-MARIA" ) {
185249 labelToT_Cpf_Sensor_ = constructCadForDvtmAria ();
250+ }
251+ // Add support for legacy EVT devices
252+ else if (deviceSubType == " EVT-S" ) {
253+ labelToT_Cpf_Sensor_ = constructCadForEvtSmall ();
254+ } else if (deviceSubType == " EVT-L" ) {
255+ labelToT_Cpf_Sensor_ = constructCadForEvtLarge ();
186256 } else if (simulatedDeviceSubtypes.find (deviceSubType) != simulatedDeviceSubtypes.end ()) {
187257 XR_LOGW (" No CAD available for simulated device" );
188258 return ;
0 commit comments