calibration-model.cpp
Go to the documentation of this file.
1 // License: Apache 2.0. See LICENSE file in root directory.
2 // Copyright(c) 2023 Intel Corporation. All Rights Reserved.
3 
4 #include <rs-config.h>
5 #include "calibration-model.h"
6 #include "device-model.h"
7 #include "os.h"
8 #include "ux-window.h"
9 
10 #include "../src/ds/d400/d400-private.h"
11 
12 
13 using namespace rs2;
14 
15 calibration_model::calibration_model(rs2::device dev, std::shared_ptr<notifications_model> not_model)
16  : dev(dev), _not_model(not_model)
17 {
19 }
20 
22 {
25 
27 }
28 
29 void calibration_model::draw_float(std::string name, float& x, const float& orig, bool& changed)
30 {
31  if( std::abs( x - orig ) > 0.00001 )
34  if (ImGui::DragFloat(std::string( rsutils::string::from() << "##" << name).c_str(), &x, 0.001f))
35  {
36  changed = true;
37  }
39 }
40 
42  const float3x3& original, bool& changed)
43 {
45  ImGui::Text("%s:", name.c_str()); ImGui::SameLine();
47 
50  draw_float(name + "_XX", feild.x.x, original.x.x, changed);
52  draw_float(name + "_XY", feild.x.y, original.x.y, changed);
54  draw_float(name + "_XZ", feild.x.z, original.x.z, changed);
55 
57  draw_float(name + "_YX", feild.y.x, original.y.x, changed);
59  draw_float(name + "_YY", feild.y.y, original.y.y, changed);
61  draw_float(name + "_YZ", feild.y.z, original.y.z, changed);
62 
64  draw_float(name + "_ZX", feild.z.x, original.z.x, changed);
66  draw_float(name + "_ZY", feild.z.y, original.z.y, changed);
68  draw_float(name + "_ZZ", feild.z.z, original.z.z, changed);
69 
71 
73 }
74 
76 {
77  const auto window_name = "Calibration Window";
78 
79  if (to_open)
80  {
81  try
82  {
85  ImGui::OpenPopup(window_name);
86  }
87  catch(std::exception e)
88  {
89  error_message = e.what();
90  }
91  to_open = false;
92  }
93 
95  auto orig_table = (librealsense::ds::d400_coefficients_table*)_original.data();
96  bool changed = false;
97 
98  const float w = 620;
99  const float h = 500;
100  const float x0 = std::max(window.width() - w, 0.f) / 2;
101  const float y0 = std::max(window.height() - h, 0.f) / 2;
104 
107 
113 
114  if (ImGui::BeginPopupModal(window_name, nullptr, flags))
115  {
116  if (error_message != "") ImGui::CloseCurrentPopup();
117 
118  std::string title_message = "CAMERA CALIBRATION";
119  auto title_size = ImGui::CalcTextSize(title_message.c_str());
120  ImGui::SetCursorPosX(w / 2 - title_size.x / 2);
122  ImGui::PushFont(window.get_large_font());
124  ImGui::Text("%s", title_message.c_str());
126  ImGui::PopFont();
128 
129  ImGui::SetCursorPosX(w / 2 - 260 / 2);
130  if (ImGui::Button(u8"\uF07C Load...", ImVec2(70, 30)))
131  {
132  try
133  {
134  if (auto fn = file_dialog_open(file_dialog_mode::open_file, "Calibration JSON\0*.json\0", nullptr, nullptr))
135  {
136  config_file cf(fn);
137  table->baseline = cf.get("baseline");
138 
139  auto load_float3x4 = [&](std::string name, librealsense::float3x3& m){
140  m.x.x = cf.get(std::string( rsutils::string::from() << name << ".x.x").c_str());
141  m.x.y = cf.get(std::string( rsutils::string::from() << name << ".x.y").c_str());
142  m.x.z = cf.get(std::string( rsutils::string::from() << name << ".x.z").c_str());
143 
144  m.y.x = cf.get(std::string( rsutils::string::from() << name << ".y.x").c_str());
145  m.y.y = cf.get(std::string( rsutils::string::from() << name << ".y.y").c_str());
146  m.y.z = cf.get(std::string( rsutils::string::from() << name << ".y.z").c_str());
147 
148  m.z.x = cf.get(std::string( rsutils::string::from() << name << ".z.x").c_str());
149  m.z.y = cf.get(std::string( rsutils::string::from() << name << ".z.y").c_str());
150  m.z.z = cf.get(std::string( rsutils::string::from() << name << ".z.z").c_str());
151  };
152 
153  load_float3x4("intrinsic_left", table->intrinsic_left);
154  load_float3x4("intrinsic_right", table->intrinsic_right);
155  load_float3x4("world2left_rot", table->world2left_rot);
156  load_float3x4("world2right_rot", table->world2right_rot);
157 
158  for (int i = 0; i < librealsense::ds::max_ds_rect_resolutions; i++)
159  {
160  table->rect_params[i].x = cf.get(std::string( rsutils::string::from() << "rectified." << i << ".fx").c_str());
161  table->rect_params[i].y = cf.get(std::string( rsutils::string::from() << "rectified." << i << ".fy").c_str());
162 
163  table->rect_params[i].z = cf.get(std::string( rsutils::string::from() << "rectified." << i << ".ppx").c_str());
164  table->rect_params[i].w = cf.get(std::string( rsutils::string::from() << "rectified." << i << ".ppy").c_str());
165  }
166  }
167 
168  changed = true;
169  }
170  catch (const std::exception& ex)
171  {
172  error_message = ex.what();
174  }
175  }
176  if (ImGui::IsItemHovered())
177  {
178  window.link_hovered();
179  ImGui::SetTooltip("%s", "Load calibration from file");
180  }
181  ImGui::SameLine();
182  if (ImGui::Button(u8"\uF0C7 Save As...", ImVec2(100, 30)))
183  {
184  try
185  {
186  if (auto fn = file_dialog_open(file_dialog_mode::save_file, "Calibration JSON\0*.json\0", nullptr, nullptr))
187  {
188  config_file cf(fn);
189  cf.set("baseline", table->baseline);
190 
191  auto save_float3x4 = [&](std::string name, librealsense::float3x3& m){
192  cf.set(std::string( rsutils::string::from() << name << ".x.x").c_str(), m.x.x);
193  cf.set(std::string( rsutils::string::from() << name << ".x.y").c_str(), m.x.y);
194  cf.set(std::string( rsutils::string::from() << name << ".x.z").c_str(), m.x.z);
195 
196  cf.set(std::string( rsutils::string::from() << name << ".y.x").c_str(), m.y.x);
197  cf.set(std::string( rsutils::string::from() << name << ".y.y").c_str(), m.y.y);
198  cf.set(std::string( rsutils::string::from() << name << ".y.z").c_str(), m.y.z);
199 
200  cf.set(std::string( rsutils::string::from() << name << ".z.x").c_str(), m.z.x);
201  cf.set(std::string( rsutils::string::from() << name << ".z.y").c_str(), m.z.y);
202  cf.set(std::string( rsutils::string::from() << name << ".z.z").c_str(), m.z.z);
203  };
204 
205  save_float3x4("intrinsic_left", table->intrinsic_left);
206  save_float3x4("intrinsic_right", table->intrinsic_right);
207  save_float3x4("world2left_rot", table->world2left_rot);
208  save_float3x4("world2right_rot", table->world2right_rot);
209 
210  for (int i = 0; i < librealsense::ds::max_ds_rect_resolutions; i++)
211  {
213  int w = xy.x; int h = xy.y;
214 
215  cf.set(std::string( rsutils::string::from() << "rectified." << i << ".width").c_str(), w);
216  cf.set(std::string( rsutils::string::from() << "rectified." << i << ".height").c_str(), h);
217 
218  cf.set(std::string( rsutils::string::from() << "rectified." << i << ".fx").c_str(), table->rect_params[i].x);
219  cf.set(std::string( rsutils::string::from() << "rectified." << i << ".fy").c_str(), table->rect_params[i].y);
220 
221  cf.set(std::string( rsutils::string::from() << "rectified." << i << ".ppx").c_str(), table->rect_params[i].z);
222  cf.set(std::string( rsutils::string::from() << "rectified." << i << ".ppy").c_str(), table->rect_params[i].w);
223  }
224  }
225  }
226  catch (const std::exception& ex)
227  {
228  error_message = ex.what();
230  }
231  }
232  if (ImGui::IsItemHovered())
233  {
234  window.link_hovered();
235  ImGui::SetTooltip("%s", "Save calibration image to file");
236  }
237  ImGui::SameLine();
238  if (_accept)
239  {
240  if (ImGui::Button(u8"\uF275 Restore Factory", ImVec2(115, 30)))
241  {
242  try
243  {
244  dev.as<rs2::auto_calibrated_device>().reset_to_factory_calibration();
247  table = reinterpret_cast< librealsense::ds::d400_coefficients_table * >( _calibration.data() );
248  orig_table = reinterpret_cast< librealsense::ds::d400_coefficients_table * >( _original.data() );
249  changed = true;
250 
251  if (auto nm = _not_model.lock())
252  {
253  nm->add_notification({ rsutils::string::from() << "Depth Calibration is reset to Factory Settings",
255  }
256  }
257  catch(const std::exception& ex)
258  {
259  error_message = ex.what();
261  }
262  }
263  if (ImGui::IsItemHovered())
264  {
265  window.link_hovered();
266  ImGui::SetTooltip("%s", "Restore calibration in flash to factory settings");
267  }
268  }
269  else
270  {
273 
274  ImGui::Button(u8"\uF275 Restore Factory", ImVec2(115, 30));
275  if (ImGui::IsItemHovered())
276  {
277  ImGui::SetTooltip("%s", "Write selected calibration table to the device. For advanced users");
278  }
279 
281  }
282 
284 
285  ImGui::BeginChild("##CalibData",ImVec2(w - 15, h - 110), true);
286 
289 
290  ImGui::Text("Stereo Baseline(mm):"); ImGui::SameLine();
292 
294  draw_float("Baseline", table->baseline, orig_table->baseline, changed);
297 
298  draw_float4x4("Left Intrinsics", table->intrinsic_left, orig_table->intrinsic_left, changed);
299  draw_float4x4("Right Intrinsics", table->intrinsic_right, orig_table->intrinsic_right, changed);
300  draw_float4x4("World to Left Rotation", table->world2left_rot, orig_table->world2left_rot, changed);
301  draw_float4x4("World to Right Rotation", table->world2right_rot, orig_table->world2right_rot, changed);
302 
305 
306  ImGui::Text("Rectified Resolution:"); ImGui::SameLine();
308 
309  std::vector<std::string> resolution_names;
310  std::vector<const char*> resolution_names_char;
311  std::vector<int> resolution_offset;
312  for (int i = 0; i < librealsense::ds::max_ds_rect_resolutions; i++)
313  {
315  int w = xy.x; int h = xy.y;
316  if (w != 0) {
317  resolution_offset.push_back(i);
318  std::string name = rsutils::string::from() << w << " x " << h;
319  resolution_names.push_back(name);
320  }
321  }
322  for (size_t i = 0; i < resolution_offset.size(); i++)
323  {
324  resolution_names_char.push_back(resolution_names[i].c_str());
325  }
326 
328  ImGui::Combo("##RectifiedResolutions", &selected_resolution, resolution_names_char.data(), int(resolution_names_char.size()));
329 
332 
333  ImGui::Text("Focal Length:"); ImGui::SameLine();
335 
336  draw_float("FocalX", table->rect_params[selected_resolution].x, orig_table->rect_params[selected_resolution].x, changed);
337  ImGui::SameLine();
338  draw_float("FocalY", table->rect_params[selected_resolution].y, orig_table->rect_params[selected_resolution].y, changed);
339 
341  ImGui::Text("Principal Point:"); ImGui::SameLine();
343 
344  draw_float("PPX", table->rect_params[selected_resolution].z, orig_table->rect_params[selected_resolution].z, changed);
345  ImGui::SameLine();
346  draw_float("PPY", table->rect_params[selected_resolution].w, orig_table->rect_params[selected_resolution].w, changed);
347 
349 
351 
352  if (ImGui::IsWindowHovered()) window.set_hovered_over_input();
353 
354  ImGui::EndChild();
356 
357  ImGui::SetCursorScreenPos({ (float)(x0 + 10), (float)(y0 + h - 30) });
358  if (ImGui::Checkbox("I know what I'm doing", &_accept))
359  {
361  }
362  if (ImGui::IsItemHovered())
363  {
364  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");
365  }
366 
367  ImGui::SetCursorScreenPos({ (float)(x0 + w - 230), (float)(y0 + h - 30) });
368 
369  if (ImGui::Button("Cancel", ImVec2(100, 25)))
370  {
372  }
373  if (ImGui::IsItemHovered())
374  {
375  window.link_hovered();
376  ImGui::SetTooltip("%s", "Close without saving any changes");
377  }
378  ImGui::SameLine();
379 
380  auto streams = dev.query_sensors()[0].get_active_streams();
381  if (_accept && streams.size())
382  {
383  if (ImGui::Button(u8"\uF2DB Write Table", ImVec2(120, 25)))
384  {
385  try
386  {
387  auto actual_data = _calibration.data() + sizeof(librealsense::ds::table_header);
388  auto actual_data_size = _calibration.size() - sizeof(librealsense::ds::table_header);
389  auto crc = rsutils::number::calc_crc32( actual_data, actual_data_size );
390  table->header.crc32 = crc;
391  dev.as<rs2::auto_calibrated_device>().set_calibration_table(_calibration);
392  dev.as<rs2::auto_calibrated_device>().write_calibration();
394  orig_table = reinterpret_cast< librealsense::ds::d400_coefficients_table * >( _original.data() );
396  }
397  catch (const std::exception& ex)
398  {
399  error_message = ex.what();
401  }
402  }
403  if (ImGui::IsItemHovered())
404  {
405  window.link_hovered();
406  ImGui::SetTooltip("%s", "Write selected calibration table to the device");
407  }
408  }
409  else
410  {
413 
414  ImGui::Button(u8"\uF2DB Write Table", ImVec2(120, 25));
415  if (ImGui::IsItemHovered())
416  {
417  ImGui::SetTooltip("%s", "Write selected calibration table to the device. For advanced users");
418  }
419 
421  }
422 
423  if (changed && streams.size())
424  {
425  try
426  {
427  dev.as<rs2::auto_calibrated_device>().set_calibration_table(_calibration);
428  }
429  catch (const std::exception&)
430  {
431  try
432  {
433  dev.query_sensors()[0].close();
434  dev.query_sensors()[0].open(streams);
435  dev.as<rs2::auto_calibrated_device>().set_calibration_table(_calibration);
436  }
437  catch (const std::exception& ex)
438  {
439  error_message = ex.what();
441  }
442  }
443  }
444 
445  if (ImGui::IsWindowHovered()) window.set_hovered_over_input();
446 
447  ImGui::EndPopup();
448  }
451 }
rs2::device
Definition: rs_device.hpp:19
device-model.h
ImGuiCol_ChildWindowBg
@ ImGuiCol_ChildWindowBg
Definition: imgui.h:645
ImGui::PushItemWidth
IMGUI_API void PushItemWidth(float item_width)
Definition: imgui.cpp:4486
rs2::calibration_model::_accept
bool _accept
Definition: calibration-model.h:33
rs2::config_file::instance
static config_file & instance()
Definition: rs-config.cpp:80
rs2::calibration_model::_original
std::vector< uint8_t > _original
Definition: calibration-model.h:36
RS2_NOTIFICATION_CATEGORY_HARDWARE_EVENT
@ RS2_NOTIFICATION_CATEGORY_HARDWARE_EVENT
Definition: rs_types.h:21
test-stream-sensor-bridge.streams
dictionary streams
Definition: test-stream-sensor-bridge.py:91
rs2::config_file
Definition: rs-config.h:40
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
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:31
rsutils::number::float3::y
float y
Definition: third-party/rsutils/include/rsutils/number/float3.h:37
ImGui::SetNextWindowSize
IMGUI_API void SetNextWindowSize(const ImVec2 &size, ImGuiSetCond cond=0)
Definition: imgui.cpp:4937
light_grey
static const ImVec4 light_grey
Definition: device-model.h:20
dark_sensor_bg
static const ImVec4 dark_sensor_bg
Definition: device-model.h:43
ImGui::PopStyleColor
IMGUI_API void PopStyleColor(int count=1)
Definition: imgui.cpp:4609
librealsense::ds::table_header
Definition: ds-private.h:259
string
GLsizei const GLchar *const * string
Definition: glad/glad/glad.h:2861
rs2::device::is
bool is() const
Definition: rs_device.hpp:181
ImGui::SetNextWindowPos
IMGUI_API void SetNextWindowPos(const ImVec2 &pos, ImGuiSetCond cond=0)
Definition: imgui.cpp:4923
librealsense::ds::resolutions_list
static std::map< ds_rect_resolutions, int2 > resolutions_list
Definition: ds-private.h:545
ImGui::PushFont
IMGUI_API void PushFont(ImFont *font)
Definition: imgui.cpp:4539
rs2::calibration_model::selected_resolution
int selected_resolution
Definition: calibration-model.h:38
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
ImGuiWindowFlags_NoSavedSettings
@ ImGuiWindowFlags_NoSavedSettings
Definition: imgui.h:543
rs2::device::supports
bool supports(rs2_camera_info info) const
Definition: rs_device.hpp:109
ImGui::IsWindowHovered
IMGUI_API bool IsWindowHovered()
Definition: imgui.cpp:4743
rs2::save_file
@ save_file
Definition: common/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
rsutils::number::float3x3::x
float3 x
Definition: third-party/rsutils/include/rsutils/number/float3.h:59
grey
static const ImVec4 grey
Definition: device-model.h:28
m
std::mutex m
Definition: test-waiting-on.cpp:126
rs2::calibration_model::draw_float
void draw_float(std::string name, float &x, const float &orig, bool &changed)
Definition: calibration-model.cpp:29
rs2::config_file::get_or_default
T get_or_default(const char *key, T def) const
Definition: rs-config.h:66
rs-config.h
calibration-model.h
sensor_bg
static const ImVec4 sensor_bg
Definition: device-model.h:31
white
static const ImVec4 white
Definition: device-model.h:25
rsutils::number::float3::x
float x
Definition: third-party/rsutils/include/rsutils/number/float3.h:37
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
rsutils::number::float3x3::y
float3 y
Definition: third-party/rsutils/include/rsutils/number/float3.h:59
ImGui::SetTooltip
IMGUI_API void SetTooltip(const char *fmt,...) IM_PRINTFARGS(1)
Definition: imgui.cpp:3288
regular_blue
static const ImVec4 regular_blue
Definition: device-model.h:19
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:40
rsutils::number::calc_crc32
uint32_t calc_crc32(const uint8_t *buf, size_t bufsize)
Calculate CRC code for arbitrary characters buffer.
Definition: crc32.cpp:47
rsutils::number::float3x3
Definition: third-party/rsutils/include/rsutils/number/float3.h:57
test-got-playback-frames.is_d400
bool is_d400
Definition: test-got-playback-frames.py:26
rmse.x0
int x0
Definition: rmse.py:48
test-projection-from-recording.dev
dev
Definition: test-projection-from-recording.py:17
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:123
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:188
rs2::open_file
@ open_file
Definition: common/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:32
window
Definition: example.hpp:513
rs2::calibration_model::_calibration
std::vector< uint8_t > _calibration
Definition: calibration-model.h:35
ImGuiStyleVar_WindowRounding
@ ImGuiStyleVar_WindowRounding
Definition: imgui.h:694
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:14
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:15
ImGui::PopItemWidth
IMGUI_API void PopItemWidth()
Definition: imgui.cpp:4507
rs2::calibration_model::supports
bool supports()
Definition: calibration-model.cpp:21
rsutils::string::from
Definition: from.h:19
ImGui::GetCursorPosY
IMGUI_API float GetCursorPosY()
Definition: imgui.cpp:5088
os.h
ImGuiCol_PopupBg
@ ImGuiCol_PopupBg
Definition: imgui.h:646
rs2::configurations::calibration::enable_writing
static const char * enable_writing
Definition: device-model.h:109
ImGui::PushStyleVar
IMGUI_API void PushStyleVar(ImGuiStyleVar idx, float val)
Definition: imgui.cpp:4650
rmse.y0
int y0
Definition: rmse.py:49
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:383
rmse.e
e
Definition: rmse.py:177
rsutils::number::float3x3::z
float3 z
Definition: third-party/rsutils/include/rsutils/number/float3.h:59
ImGuiStyleVar_WindowPadding
@ ImGuiStyleVar_WindowPadding
Definition: imgui.h:693
librealsense::ds::ds_rect_resolutions
ds_rect_resolutions
Definition: ds-private.h:268
x
GLdouble x
Definition: glad/glad/glad.h:2279
rmse.orig
list orig
Definition: rmse.py:46
librealsense::ds::max_ds_rect_resolutions
@ max_ds_rect_resolutions
Definition: ds-private.h:287
rs2::device::get_info
const char * get_info(rs2_camera_info info) const
Definition: rs_device.hpp:122
ImGui::CloseCurrentPopup
IMGUI_API void CloseCurrentPopup()
Definition: imgui.cpp:3408
ImGuiWindowFlags_NoTitleBar
@ ImGuiWindowFlags_NoTitleBar
Definition: imgui.h:535
librealsense::ds::d400_coefficients_table
Definition: d400-private.h:219
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
rsutils::number::float3::z
float z
Definition: third-party/rsutils/include/rsutils/number/float3.h:37
rs2::device::query_sensors
std::vector< sensor > query_sensors() const
Definition: rs_device.hpp:26
RS2_CAMERA_INFO_PRODUCT_LINE
@ RS2_CAMERA_INFO_PRODUCT_LINE
Definition: rs_sensor.h:33
rs2::ux_window
Definition: ux-window.h:35
rs2::config_file::get
std::string get(const char *key, const char *def) const
Definition: rs-config.cpp:38
ImGui::PopFont
IMGUI_API void PopFont()
Definition: imgui.cpp:4549
ImGui::EndPopup
IMGUI_API void EndPopup()
Definition: imgui.cpp:3489
rs2::calibration_model::update
void update(ux_window &window, std::string &error_message)
Definition: calibration-model.cpp:75
ImGui::SetCursorPosX
IMGUI_API void SetCursorPosX(float x)
Definition: imgui.cpp:5101
black
static const ImVec4 black
Definition: device-model.h:23
rs-imu-calibration.get_calibration_table
def get_calibration_table(d435_imu_calib_table)
Definition: rs-imu-calibration.py:360
rs2::calibration_model::draw_float4x4
void draw_float4x4(std::string name, float3x3 &feild, const float3x3 &original, bool &changed)
Definition: calibration-model.cpp:41
sw.h
int h
Definition: sw-dev/sw.py:11
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: common/os.cpp:172


librealsense2
Author(s): LibRealSense ROS Team
autogenerated on Mon Apr 22 2024 02:12:55