calibration-model.cpp
Go to the documentation of this file.
1 #include "calibration-model.h"
2 #include "model-views.h"
3 #include "os.h"
4 #include "ux-window.h"
5 
6 #include "../src/ds5/ds5-private.h"
7 
8 
9 using namespace rs2;
10 
11 calibration_model::calibration_model(rs2::device dev, std::shared_ptr<notifications_model> not_model)
12  : dev(dev), _not_model(not_model)
13 {
15 }
16 
18 {
20  std::string(dev.get_info(RS2_CAMERA_INFO_PRODUCT_LINE)) == "D400" : false;
21 
23 }
24 
25 void calibration_model::draw_float(std::string name, float& x, const float& orig, bool& changed)
26 {
29  if (ImGui::DragFloat(std::string(to_string() << "##" << name).c_str(), &x, 0.001f))
30  {
31  changed = true;
32  }
34 }
35 
37  const librealsense::float3x3& original, bool& changed)
38 {
40  ImGui::Text("%s:", name.c_str()); ImGui::SameLine();
42 
45  draw_float(name + "_XX", feild.x.x, original.x.x, changed);
47  draw_float(name + "_XY", feild.x.y, original.x.y, changed);
49  draw_float(name + "_XZ", feild.x.z, original.x.z, changed);
50 
52  draw_float(name + "_YX", feild.y.x, original.y.x, changed);
54  draw_float(name + "_YY", feild.y.y, original.y.y, changed);
56  draw_float(name + "_YZ", feild.y.z, original.y.z, changed);
57 
59  draw_float(name + "_ZX", feild.z.x, original.z.x, changed);
61  draw_float(name + "_ZY", feild.z.y, original.z.y, changed);
63  draw_float(name + "_ZZ", feild.z.z, original.z.z, changed);
64 
66 
68 }
69 
70 namespace helpers
71 {
72  #define UPDC32(octet, crc) (crc_32_tab[((crc) ^ (octet)) & 0xff] ^ ((crc) >> 8))
73 
74  static const uint32_t crc_32_tab[] = { /* CRC polynomial 0xedb88320 */
75  0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
76  0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
77  0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,
78  0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
79  0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
80  0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
81  0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,
82  0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
83  0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,
84  0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
85  0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,
86  0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
87  0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,
88  0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
89  0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
90  0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
91  0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,
92  0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
93  0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,
94  0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
95  0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,
96  0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
97  0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,
98  0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
99  0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
100  0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
101  0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,
102  0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
103  0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,
104  0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
105  0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,
106  0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
107  0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,
108  0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
109  0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
110  0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
111  0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,
112  0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
113  0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,
114  0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
115  0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,
116  0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
117  0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
118  };
119 
121  uint32_t calc_crc32(const uint8_t *buf, size_t bufsize)
122  {
123  uint32_t oldcrc32 = 0xFFFFFFFF;
124  for (; bufsize; --bufsize, ++buf)
125  oldcrc32 = UPDC32(*buf, oldcrc32);
126  return ~oldcrc32;
127  }
128 }
129 
130 void calibration_model::update(ux_window& window, std::string& error_message)
131 {
132  const auto window_name = "Calibration Window";
133 
134  if (to_open)
135  {
136  try
137  {
140  ImGui::OpenPopup(window_name);
141  }
142  catch(std::exception e)
143  {
144  error_message = e.what();
145  }
146  to_open = false;
147  }
148 
150  auto orig_table = (librealsense::ds::coefficients_table*)_original.data();
151  bool changed = false;
152 
153  const float w = 620;
154  const float h = 500;
155  const float x0 = std::max(window.width() - w, 0.f) / 2;
156  const float y0 = std::max(window.height() - h, 0.f) / 2;
159 
162 
168 
169  if (ImGui::BeginPopupModal(window_name, nullptr, flags))
170  {
171  if (error_message != "") ImGui::CloseCurrentPopup();
172 
173  std::string title_message = "CAMERA CALIBRATION";
174  auto title_size = ImGui::CalcTextSize(title_message.c_str());
175  ImGui::SetCursorPosX(w / 2 - title_size.x / 2);
177  ImGui::PushFont(window.get_large_font());
179  ImGui::Text("%s", title_message.c_str());
181  ImGui::PopFont();
183 
184  ImGui::SetCursorPosX(w / 2 - 260 / 2);
185  if (ImGui::Button(u8"\uF07C Load...", ImVec2(70, 30)))
186  {
187  try
188  {
189  if (auto fn = file_dialog_open(file_dialog_mode::open_file, "Calibration JSON\0*.json\0", nullptr, nullptr))
190  {
191  config_file cf(fn);
192  table->baseline = cf.get("baseline");
193 
194  auto load_float3x4 = [&](std::string name, librealsense::float3x3& m){
195  m.x.x = cf.get(std::string(to_string() << name << ".x.x").c_str());
196  m.x.y = cf.get(std::string(to_string() << name << ".x.y").c_str());
197  m.x.z = cf.get(std::string(to_string() << name << ".x.z").c_str());
198 
199  m.y.x = cf.get(std::string(to_string() << name << ".y.x").c_str());
200  m.y.y = cf.get(std::string(to_string() << name << ".y.y").c_str());
201  m.y.z = cf.get(std::string(to_string() << name << ".y.z").c_str());
202 
203  m.z.x = cf.get(std::string(to_string() << name << ".z.x").c_str());
204  m.z.y = cf.get(std::string(to_string() << name << ".z.y").c_str());
205  m.z.z = cf.get(std::string(to_string() << name << ".z.z").c_str());
206  };
207 
208  load_float3x4("intrinsic_left", table->intrinsic_left);
209  load_float3x4("intrinsic_right", table->intrinsic_right);
210  load_float3x4("world2left_rot", table->world2left_rot);
211  load_float3x4("world2right_rot", table->world2right_rot);
212 
213  for (int i = 0; i < librealsense::ds::max_ds5_rect_resolutions; i++)
214  {
215  table->rect_params[i].x = cf.get(std::string(to_string() << "rectified." << i << ".fx").c_str());
216  table->rect_params[i].y = cf.get(std::string(to_string() << "rectified." << i << ".fy").c_str());
217 
218  table->rect_params[i].z = cf.get(std::string(to_string() << "rectified." << i << ".ppx").c_str());
219  table->rect_params[i].w = cf.get(std::string(to_string() << "rectified." << i << ".ppy").c_str());
220  }
221  }
222 
223  changed = true;
224  }
225  catch (const std::exception& ex)
226  {
227  error_message = ex.what();
229  }
230  }
231  if (ImGui::IsItemHovered())
232  {
233  window.link_hovered();
234  ImGui::SetTooltip("%s", "Load calibration from file");
235  }
236  ImGui::SameLine();
237  if (ImGui::Button(u8"\uF0C7 Save As...", ImVec2(100, 30)))
238  {
239  try
240  {
241  if (auto fn = file_dialog_open(file_dialog_mode::save_file, "Calibration JSON\0*.json\0", nullptr, nullptr))
242  {
243  config_file cf(fn);
244  cf.set("baseline", table->baseline);
245 
246  auto save_float3x4 = [&](std::string name, librealsense::float3x3& m){
247  cf.set(std::string(to_string() << name << ".x.x").c_str(), m.x.x);
248  cf.set(std::string(to_string() << name << ".x.y").c_str(), m.x.y);
249  cf.set(std::string(to_string() << name << ".x.z").c_str(), m.x.z);
250 
251  cf.set(std::string(to_string() << name << ".y.x").c_str(), m.y.x);
252  cf.set(std::string(to_string() << name << ".y.y").c_str(), m.y.y);
253  cf.set(std::string(to_string() << name << ".y.z").c_str(), m.y.z);
254 
255  cf.set(std::string(to_string() << name << ".z.x").c_str(), m.z.x);
256  cf.set(std::string(to_string() << name << ".z.y").c_str(), m.z.y);
257  cf.set(std::string(to_string() << name << ".z.z").c_str(), m.z.z);
258  };
259 
260  save_float3x4("intrinsic_left", table->intrinsic_left);
261  save_float3x4("intrinsic_right", table->intrinsic_right);
262  save_float3x4("world2left_rot", table->world2left_rot);
263  save_float3x4("world2right_rot", table->world2right_rot);
264 
265  for (int i = 0; i < librealsense::ds::max_ds5_rect_resolutions; i++)
266  {
268  int w = xy.x; int h = xy.y;
269 
270  cf.set(std::string(to_string() << "rectified." << i << ".width").c_str(), w);
271  cf.set(std::string(to_string() << "rectified." << i << ".height").c_str(), h);
272 
273  cf.set(std::string(to_string() << "rectified." << i << ".fx").c_str(), table->rect_params[i].x);
274  cf.set(std::string(to_string() << "rectified." << i << ".fy").c_str(), table->rect_params[i].y);
275 
276  cf.set(std::string(to_string() << "rectified." << i << ".ppx").c_str(), table->rect_params[i].z);
277  cf.set(std::string(to_string() << "rectified." << i << ".ppy").c_str(), table->rect_params[i].w);
278  }
279  }
280  }
281  catch (const std::exception& ex)
282  {
283  error_message = ex.what();
285  }
286  }
287  if (ImGui::IsItemHovered())
288  {
289  window.link_hovered();
290  ImGui::SetTooltip("%s", "Save calibration image to file");
291  }
292  ImGui::SameLine();
293  if (_accept)
294  {
295  if (ImGui::Button(u8"\uF275 Restore Factory", ImVec2(115, 30)))
296  {
297  try
298  {
299  dev.as<rs2::auto_calibrated_device>().reset_to_factory_calibration();
302  changed = true;
303 
304  if (auto nm = _not_model.lock())
305  {
306  nm->add_notification({ to_string() << "Depth Calibration is reset to Factory Settings",
308  }
309  }
310  catch(const std::exception& ex)
311  {
312  error_message = ex.what();
314  }
315  }
316  if (ImGui::IsItemHovered())
317  {
318  window.link_hovered();
319  ImGui::SetTooltip("%s", "Restore calibration in flash to factory settings");
320  }
321  }
322  else
323  {
326 
327  ImGui::Button(u8"\uF275 Restore Factory", ImVec2(115, 30));
328  if (ImGui::IsItemHovered())
329  {
330  ImGui::SetTooltip("%s", "Write selected calibration table to the device. For advanced users");
331  }
332 
334  }
335 
337 
338  ImGui::BeginChild("##CalibData",ImVec2(w - 15, h - 110), true);
339 
342 
343  ImGui::Text("Stereo Baseline(mm):"); ImGui::SameLine();
345 
347  draw_float("Baseline", table->baseline, orig_table->baseline, changed);
350 
351  draw_float4x4("Left Intrinsics", table->intrinsic_left, orig_table->intrinsic_left, changed);
352  draw_float4x4("Right Intrinsics", table->intrinsic_right, orig_table->intrinsic_right, changed);
353  draw_float4x4("World to Left Rotation", table->world2left_rot, orig_table->world2left_rot, changed);
354  draw_float4x4("World to Right Rotation", table->world2right_rot, orig_table->world2right_rot, changed);
355 
358 
359  ImGui::Text("Rectified Resolution:"); ImGui::SameLine();
361 
362  std::vector<std::string> resolution_names;
363  std::vector<const char*> resolution_names_char;
364  std::vector<int> resolution_offset;
365  for (int i = 0; i < librealsense::ds::max_ds5_rect_resolutions; i++)
366  {
368  int w = xy.x; int h = xy.y;
369  if (w != 0) {
370  resolution_offset.push_back(i);
371  std::string name = to_string() << w <<" x "<<h;
372  resolution_names.push_back(name);
373  }
374  }
375  for (size_t i = 0; i < resolution_offset.size(); i++)
376  {
377  resolution_names_char.push_back(resolution_names[i].c_str());
378  }
379 
381  ImGui::Combo("##RectifiedResolutions", &selected_resolution, resolution_names_char.data(), int(resolution_names_char.size()));
382 
385 
386  ImGui::Text("Focal Length:"); ImGui::SameLine();
388 
389  draw_float("FocalX", table->rect_params[selected_resolution].x, orig_table->rect_params[selected_resolution].x, changed);
390  ImGui::SameLine();
391  draw_float("FocalY", table->rect_params[selected_resolution].y, orig_table->rect_params[selected_resolution].y, changed);
392 
394  ImGui::Text("Principal Point:"); ImGui::SameLine();
396 
397  draw_float("PPX", table->rect_params[selected_resolution].z, orig_table->rect_params[selected_resolution].z, changed);
398  ImGui::SameLine();
399  draw_float("PPY", table->rect_params[selected_resolution].w, orig_table->rect_params[selected_resolution].w, changed);
400 
402 
404 
405  if (ImGui::IsWindowHovered()) window.set_hovered_over_input();
406 
407  ImGui::EndChild();
409 
410  ImGui::SetCursorScreenPos({ (float)(x0 + 10), (float)(y0 + h - 30) });
411  if (ImGui::Checkbox("I know what I'm doing", &_accept))
412  {
414  }
415  if (ImGui::IsItemHovered())
416  {
417  ImGui::SetTooltip("%s", "Changing calibration will affect depth quality. Changes are persistent.\nThere is an option to get back to factory calibration, but it maybe worse than current calibration\nBefore writing to flash, we strongly recommend to make a file backup");
418  }
419 
420  ImGui::SetCursorScreenPos({ (float)(x0 + w - 230), (float)(y0 + h - 30) });
421 
422  if (ImGui::Button("Cancel", ImVec2(100, 25)))
423  {
425  }
426  if (ImGui::IsItemHovered())
427  {
428  window.link_hovered();
429  ImGui::SetTooltip("%s", "Close without saving any changes");
430  }
431  ImGui::SameLine();
432 
433  auto streams = dev.query_sensors()[0].get_active_streams();
434  if (_accept && streams.size())
435  {
436  if (ImGui::Button(u8"\uF2DB Write Table", ImVec2(120, 25)))
437  {
438  try
439  {
440  auto actual_data = _calibration.data() + sizeof(librealsense::ds::table_header);
441  auto actual_data_size = _calibration.size() - sizeof(librealsense::ds::table_header);
442  auto crc = helpers::calc_crc32(actual_data, actual_data_size);
443  table->header.crc32 = crc;
444  dev.as<rs2::auto_calibrated_device>().set_calibration_table(_calibration);
445  dev.as<rs2::auto_calibrated_device>().write_calibration();
448  }
449  catch (const std::exception& ex)
450  {
451  error_message = ex.what();
453  }
454  }
455  if (ImGui::IsItemHovered())
456  {
457  window.link_hovered();
458  ImGui::SetTooltip("%s", "Write selected calibration table to the device");
459  }
460  }
461  else
462  {
465 
466  ImGui::Button(u8"\uF2DB Write Table", ImVec2(120, 25));
467  if (ImGui::IsItemHovered())
468  {
469  ImGui::SetTooltip("%s", "Write selected calibration table to the device. For advanced users");
470  }
471 
473  }
474 
475  if (changed && streams.size())
476  {
477  try
478  {
479  dev.as<rs2::auto_calibrated_device>().set_calibration_table(_calibration);
480  }
481  catch (const std::exception&)
482  {
483  try
484  {
485  dev.query_sensors()[0].close();
486  dev.query_sensors()[0].open(streams);
487  dev.as<rs2::auto_calibrated_device>().set_calibration_table(_calibration);
488  }
489  catch (const std::exception& ex)
490  {
491  error_message = ex.what();
493  }
494  }
495  }
496 
497  if (ImGui::IsWindowHovered()) window.set_hovered_over_input();
498 
499  ImGui::EndPopup();
500  }
503 }
rs2::device
Definition: rs_device.hpp:18
os.h
ImGuiCol_ChildWindowBg
@ ImGuiCol_ChildWindowBg
Definition: imgui.h:645
ImGui::PushItemWidth
IMGUI_API void PushItemWidth(float item_width)
Definition: imgui.cpp:4486
uint8_t
unsigned char uint8_t
Definition: stdint.h:78
librealsense::float3x3::x
float3 x
Definition: src/types.h:444
rs2::calibration_model::_accept
bool _accept
Definition: calibration-model.h:41
rs2::config_file::instance
static config_file & instance()
Definition: rs-config.cpp:86
light_grey
static const ImVec4 light_grey
Definition: model-views.h:40
std::to_string
std::string to_string(T value)
Definition: android_helpers.h:16
rs2::calibration_model::_original
std::vector< uint8_t > _original
Definition: calibration-model.h:44
test-d405-calibration-stream.dev
dev
Definition: test-d405-calibration-stream.py:11
RS2_NOTIFICATION_CATEGORY_HARDWARE_EVENT
@ RS2_NOTIFICATION_CATEGORY_HARDWARE_EVENT
Definition: rs_types.h:21
librealsense::ds::ds5_rect_resolutions
ds5_rect_resolutions
Definition: ds5-private.h:353
rs2::config_file
Definition: rs-config.h:39
librealsense::float3::x
float x
Definition: src/types.h:424
window::height
float height() const
Definition: example.hpp:643
ImGuiCol_TextSelectedBg
@ ImGuiCol_TextSelectedBg
Definition: imgui.h:683
ImGui::Button
IMGUI_API bool Button(const char *label, const ImVec2 &size=ImVec2(0, 0))
Definition: imgui.cpp:5573
black
static const ImVec4 black
Definition: model-views.h:43
librealsense::float3::y
float y
Definition: src/types.h:424
ImGui::SameLine
IMGUI_API void SameLine(float pos_x=0.0f, float spacing_w=-1.0f)
Definition: imgui.cpp:9249
rs2::calibration_model::dev
rs2::device dev
Definition: calibration-model.h:39
ImGui::SetNextWindowSize
IMGUI_API void SetNextWindowSize(const ImVec2 &size, ImGuiSetCond cond=0)
Definition: imgui.cpp:4937
sw.h
int h
Definition: sw.py:17
ImGui::PopStyleColor
IMGUI_API void PopStyleColor(int count=1)
Definition: imgui.cpp:4609
UPDC32
#define UPDC32(octet, crc)
Definition: calibration-model.cpp:72
librealsense::ds::table_header
Definition: ds5-private.h:344
librealsense::float3x3
Definition: src/types.h:442
rs2::device::is
bool is() const
Definition: rs_device.hpp:122
librealsense::ds::resolutions_list
static std::map< ds5_rect_resolutions, int2 > resolutions_list
Definition: ds5-private.h:697
ImGui::SetNextWindowPos
IMGUI_API void SetNextWindowPos(const ImVec2 &pos, ImGuiSetCond cond=0)
Definition: imgui.cpp:4923
ImGui::PushFont
IMGUI_API void PushFont(ImFont *font)
Definition: imgui.cpp:4539
rs2::calibration_model::selected_resolution
int selected_resolution
Definition: calibration-model.h:46
ImGui::DragFloat
IMGUI_API bool DragFloat(const char *label, float *v, float v_speed=1.0f, float v_min=0.0f, float v_max=0.0f, const char *display_format="%.3f", float power=1.0f)
Definition: imgui.cpp:6887
ImVec2
Definition: imgui.h:88
table
GLenum GLenum GLsizei void * table
Definition: glad/glad/glad.h:3584
u8
UINT8_TYPE u8
Definition: sqlite3.c:11450
ImGuiWindowFlags_NoSavedSettings
@ ImGuiWindowFlags_NoSavedSettings
Definition: imgui.h:543
rs2::device::supports
bool supports(rs2_camera_info info) const
Definition: rs_device.hpp:66
ImGui::IsWindowHovered
IMGUI_API bool IsWindowHovered()
Definition: imgui.cpp:4743
rs2::save_file
@ save_file
Definition: os.h:43
rs2::config_file::set
void set(const char *key, const char *value)
Definition: rs-config.cpp:15
ImGui::SetCursorPosY
IMGUI_API void SetCursorPosY(float y)
Definition: imgui.cpp:5108
ImGui::BeginPopupModal
IMGUI_API bool BeginPopupModal(const char *name, bool *p_open=NULL, ImGuiWindowFlags extra_flags=0)
Definition: imgui.cpp:3465
ImGui::IsItemHovered
IMGUI_API bool IsItemHovered()
Definition: imgui.cpp:3200
m
std::mutex m
Definition: test-waiting-on.cpp:124
rs2::calibration_model::draw_float
void draw_float(std::string name, float &x, const float &orig, bool &changed)
Definition: calibration-model.cpp:25
rs2::config_file::get_or_default
T get_or_default(const char *key, T def) const
Definition: rs-config.h:65
grey
static const ImVec4 grey
Definition: model-views.h:48
helpers::crc_32_tab
static const uint32_t crc_32_tab[]
Definition: calibration-model.cpp:74
helpers::calc_crc32
uint32_t calc_crc32(const uint8_t *buf, size_t bufsize)
Calculate CRC code for arbitrary characters buffer.
Definition: calibration-model.cpp:121
calibration-model.h
uint32_t
unsigned int uint32_t
Definition: stdint.h:80
dark_sensor_bg
static const ImVec4 dark_sensor_bg
Definition: model-views.h:63
t265_stereo.streams
dictionary streams
Definition: t265_stereo.py:140
flags
GLbitfield flags
Definition: glad/glad/glad.h:3375
f
GLdouble f
Definition: glad/glad/glad.h:1517
i
int i
Definition: rs-pcl-color.cpp:54
librealsense::float3::z
float z
Definition: src/types.h:424
ImGui::SetTooltip
IMGUI_API void SetTooltip(const char *fmt,...) IM_PRINTFARGS(1)
Definition: imgui.cpp:3288
ImGuiCol_Text
@ ImGuiCol_Text
Definition: imgui.h:642
rs2
Definition: animated.h:9
w
GLdouble GLdouble GLdouble w
Definition: glad/glad/glad.h:1757
rs2::calibration_model::_not_model
std::weak_ptr< notifications_model > _not_model
Definition: calibration-model.h:48
test-got-playback-frames.is_d400
bool is_d400
Definition: test-got-playback-frames.py:27
model-views.h
rmse.x0
int x0
Definition: rmse.py:48
helpers
Definition: calibration-model.cpp:70
ImGui::Checkbox
IMGUI_API bool Checkbox(const char *label, bool *v)
Definition: imgui.cpp:7272
ImGui::Text
IMGUI_API void Text(const char *fmt,...) IM_PRINTFARGS(1)
Definition: imgui.cpp:5223
RS2_LOG_SEVERITY_INFO
@ RS2_LOG_SEVERITY_INFO
Definition: rs_types.h:155
ImGui::BeginChild
IMGUI_API bool BeginChild(const char *str_id, const ImVec2 &size=ImVec2(0, 0), bool border=false, ImGuiWindowFlags extra_flags=0)
Definition: imgui.cpp:3531
rs2::device::as
T as() const
Definition: rs_device.hpp:129
rs2::open_file
@ open_file
Definition: os.h:42
name
GLuint const GLchar * name
Definition: glad/glad/glad.h:2777
ImGui::SetCursorScreenPos
IMGUI_API void SetCursorScreenPos(const ImVec2 &pos)
Definition: imgui.cpp:5127
rs2::calibration_model::to_open
bool to_open
Definition: calibration-model.h:40
window
Definition: example.hpp:513
rs2::calibration_model::_calibration
std::vector< uint8_t > _calibration
Definition: calibration-model.h:43
ImGuiStyleVar_WindowRounding
@ ImGuiStyleVar_WindowRounding
Definition: imgui.h:694
librealsense::float3x3::z
float3 z
Definition: src/types.h:444
ImGui::PopStyleVar
IMGUI_API void PopStyleVar(int count=1)
Definition: imgui.cpp:4675
ImGui::PushStyleColor
IMGUI_API void PushStyleColor(ImGuiCol idx, const ImVec4 &col)
Definition: imgui.cpp:4599
window::width
float width() const
Definition: example.hpp:642
ImGui::CalcTextSize
IMGUI_API ImVec2 CalcTextSize(const char *text, const char *text_end=NULL, bool hide_text_after_double_hash=false, float wrap_width=-1.0f)
Definition: test-wrap.cpp:13
white
static const ImVec4 white
Definition: model-views.h:45
ImGui::Combo
IMGUI_API bool Combo(const char *label, int *current_item, const char **items, int items_count, int height_in_items=-1, bool show_arrow_down=true)
Definition: imgui.cpp:8421
rs2::calibration_model::calibration_model
calibration_model(rs2::device dev, std::shared_ptr< notifications_model > not_model)
Definition: calibration-model.cpp:11
ImGui::PopItemWidth
IMGUI_API void PopItemWidth()
Definition: imgui.cpp:4507
rs2::calibration_model::supports
bool supports()
Definition: calibration-model.cpp:17
librealsense::float3x3::y
float3 y
Definition: src/types.h:444
sensor_bg
static const ImVec4 sensor_bg
Definition: model-views.h:51
ImGui::GetCursorPosY
IMGUI_API float GetCursorPosY()
Definition: imgui.cpp:5088
rs2::calibration_model::draw_float4x4
void draw_float4x4(std::string name, librealsense::float3x3 &feild, const librealsense::float3x3 &original, bool &changed)
Definition: calibration-model.cpp:36
ImGuiCol_PopupBg
@ ImGuiCol_PopupBg
Definition: imgui.h:646
rs2::configurations::calibration::enable_writing
static const char * enable_writing
Definition: model-views.h:144
ImGui::PushStyleVar
IMGUI_API void PushStyleVar(ImGuiStyleVar idx, float val)
Definition: imgui.cpp:4650
rmse.y0
int y0
Definition: rmse.py:49
regular_blue
static const ImVec4 regular_blue
Definition: model-views.h:39
ux-window.h
ImGuiWindowFlags_NoCollapse
@ ImGuiWindowFlags_NoCollapse
Definition: imgui.h:540
ImGuiCol_FrameBg
@ ImGuiCol_FrameBg
Definition: imgui.h:649
rs2::auto_calibrated_device
Definition: rs_device.hpp:324
rmse.e
e
Definition: rmse.py:177
ImGuiStyleVar_WindowPadding
@ ImGuiStyleVar_WindowPadding
Definition: imgui.h:693
x
GLdouble x
Definition: glad/glad/glad.h:2279
rmse.orig
list orig
Definition: rmse.py:46
rs2::device::get_info
const char * get_info(rs2_camera_info info) const
Definition: rs_device.hpp:79
ImGui::CloseCurrentPopup
IMGUI_API void CloseCurrentPopup()
Definition: imgui.cpp:3408
librealsense::ds::coefficients_table
Definition: ds5-private.h:375
ImGuiWindowFlags_NoTitleBar
@ ImGuiWindowFlags_NoTitleBar
Definition: imgui.h:535
ImGuiWindowFlags_NoResize
@ ImGuiWindowFlags_NoResize
Definition: imgui.h:536
ImGui::EndChild
IMGUI_API void EndChild()
Definition: imgui.cpp:3573
ImGui::OpenPopup
IMGUI_API void OpenPopup(const char *str_id)
Definition: imgui.cpp:3343
rs2::device::query_sensors
std::vector< sensor > query_sensors() const
Definition: rs_device.hpp:25
RS2_CAMERA_INFO_PRODUCT_LINE
@ RS2_CAMERA_INFO_PRODUCT_LINE
Definition: rs_sensor.h:33
rs2::ux_window
Definition: ux-window.h:32
rs2::config_file::get
std::string get(const char *key, const char *def) const
Definition: rs-config.cpp:38
librealsense::ds::max_ds5_rect_resolutions
@ max_ds5_rect_resolutions
Definition: ds5-private.h:372
ImGui::PopFont
IMGUI_API void PopFont()
Definition: imgui.cpp:4549
ImGui::EndPopup
IMGUI_API void EndPopup()
Definition: imgui.cpp:3489
buf
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glad/glad/glad.h:3610
rs2::calibration_model::update
void update(ux_window &window, std::string &error_message)
Definition: calibration-model.cpp:130
ImGui::SetCursorPosX
IMGUI_API void SetCursorPosX(float x)
Definition: imgui.cpp:5101
rs-imu-calibration.get_calibration_table
def get_calibration_table(d435_imu_calib_table)
Definition: rs-imu-calibration.py:371
rs2::file_dialog_open
const char * file_dialog_open(file_dialog_mode flags, const char *filters, const char *default_path, const char *default_name)
Definition: os.cpp:171


librealsense2
Author(s): LibRealSense ROS Team
autogenerated on Thu Dec 22 2022 03:13:14