6 #include "../src/ds5/ds5-private.h" 70 #define UPDC32(octet, crc) (crc_32_tab[((crc) ^ (octet)) & 0xff] ^ ((crc) >> 8)) 73 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
74 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
75 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,
76 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
77 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
78 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
79 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,
80 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
81 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,
82 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
83 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,
84 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
85 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,
86 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
87 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
88 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
89 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,
90 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
91 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,
92 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
93 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,
94 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
95 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,
96 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
97 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
98 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
99 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,
100 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
101 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,
102 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
103 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,
104 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
105 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,
106 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
107 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
108 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
109 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,
110 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
111 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,
112 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
113 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,
114 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
115 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
123 oldcrc32 =
UPDC32(*buf, oldcrc32);
130 const auto window_name =
"Calibration Window";
140 catch(std::exception
e)
142 error_message = e.what();
149 bool changed =
false;
153 const float x0 = std::max(window.
width() -
w, 0.f) / 2;
154 const float y0 = std::max(window.
height() -
h, 0.f) / 2;
190 table->baseline = cf.
get(
"baseline");
206 load_float3x4(
"intrinsic_left",
table->intrinsic_left);
207 load_float3x4(
"intrinsic_right",
table->intrinsic_right);
208 load_float3x4(
"world2left_rot",
table->world2left_rot);
209 load_float3x4(
"world2right_rot",
table->world2right_rot);
223 catch (
const std::exception& ex)
225 error_message = ex.what();
242 cf.
set(
"baseline",
table->baseline);
258 save_float3x4(
"intrinsic_left",
table->intrinsic_left);
259 save_float3x4(
"intrinsic_right",
table->intrinsic_right);
260 save_float3x4(
"world2left_rot",
table->world2left_rot);
261 save_float3x4(
"world2right_rot",
table->world2right_rot);
266 int w = xy.x;
int h = xy.y;
279 catch (
const std::exception& ex)
281 error_message = ex.what();
302 catch(
const std::exception& ex)
304 error_message = ex.what();
322 ImGui::SetTooltip(
"%s",
"Write selected calibration table to the device. For advanced users");
339 draw_float(
"Baseline",
table->baseline, orig_table->baseline, changed);
343 draw_float4x4(
"Left Intrinsics",
table->intrinsic_left, orig_table->intrinsic_left, changed);
344 draw_float4x4(
"Right Intrinsics",
table->intrinsic_right, orig_table->intrinsic_right, changed);
345 draw_float4x4(
"World to Left Rotation",
table->world2left_rot, orig_table->world2left_rot, changed);
346 draw_float4x4(
"World to Right Rotation",
table->world2right_rot, orig_table->world2right_rot, changed);
354 std::vector<std::string> resolution_names;
355 std::vector<const char*> resolution_names_char;
356 std::vector<int> resolution_offset;
360 int w = xy.x;
int h = xy.y;
362 resolution_offset.push_back(
i);
364 resolution_names.push_back(name);
367 for (
size_t i = 0;
i < resolution_offset.size();
i++)
369 resolution_names_char.push_back(resolution_names[
i].c_str());
409 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");
435 table->header.crc32 = crc;
441 catch (
const std::exception& ex)
443 error_message = ex.what();
461 ImGui::SetTooltip(
"%s",
"Write selected calibration table to the device. For advanced users");
473 catch (
const std::exception&)
481 catch (
const std::exception& ex)
483 error_message = ex.what();
IMGUI_API void PushStyleVar(ImGuiStyleVar idx, float val)
std::vector< uint8_t > _calibration
static const ImVec4 white
def get_calibration_table(d435_imu_calib_table)
IMGUI_API void SetTooltip(const char *fmt,...) IM_PRINTFARGS(1)
GLuint const GLchar * name
std::vector< sensor > query_sensors() const
static const uint32_t crc_32_tab[]
static const ImVec4 light_grey
static config_file & instance()
uint32_t calc_crc32(const uint8_t *buf, size_t bufsize)
Calculate CRC code for arbitrary characters buffer.
IMGUI_API void SetNextWindowPos(const ImVec2 &pos, ImGuiSetCond cond=0)
IMGUI_API bool BeginChild(const char *str_id, const ImVec2 &size=ImVec2(0, 0), bool border=false, ImGuiWindowFlags extra_flags=0)
GLenum GLuint GLsizei bufsize
GLdouble GLdouble GLdouble w
static std::map< ds5_rect_resolutions, int2 > resolutions_list
GLsizei const GLchar *const * string
void draw_float4x4(std::string name, librealsense::float3x3 &feild, const librealsense::float3x3 &original, bool &changed)
IMGUI_API bool IsWindowHovered()
GLfloat GLfloat GLfloat GLfloat h
void draw_float(std::string name, float &x, const float &orig, bool &changed)
GLenum GLuint GLenum GLsizei const GLchar * buf
T get_or_default(const char *key, T def) const
IMGUI_API void SameLine(float pos_x=0.0f, float spacing_w=-1.0f)
IMGUI_API void PopStyleVar(int count=1)
IMGUI_API ImVec2 CalcTextSize(const char *text, const char *text_end=NULL, bool hide_text_after_double_hash=false, float wrap_width=-1.0f)
static const ImVec4 regular_blue
std::string get(const char *key, const char *def) const
const char * get_info(rs2_camera_info info) const
IMGUI_API void SetNextWindowSize(const ImVec2 &size, ImGuiSetCond cond=0)
static const ImVec4 sensor_bg
IMGUI_API void SetCursorPosX(float x)
IMGUI_API void PushItemWidth(float item_width)
IMGUI_API void Text(const char *fmt,...) IM_PRINTFARGS(1)
IMGUI_API bool Button(const char *label, const ImVec2 &size=ImVec2(0, 0))
const char * file_dialog_open(file_dialog_mode flags, const char *filters, const char *default_path, const char *default_name)
calibration_model(rs2::device dev)
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)
IMGUI_API void EndPopup()
IMGUI_API void PushStyleColor(ImGuiCol idx, const ImVec4 &col)
static const ImVec4 black
bool supports(rs2_camera_info info) const
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)
IMGUI_API void PushFont(ImFont *font)
IMGUI_API void EndChild()
GLenum GLenum GLsizei void * table
std::vector< uint8_t > _original
void set(const char *key, const char *value)
IMGUI_API void PopItemWidth()
static const char * enable_writing
void set_hovered_over_input()
IMGUI_API bool BeginPopupModal(const char *name, bool *p_open=NULL, ImGuiWindowFlags extra_flags=0)
GLuint GLfloat GLfloat y0
IMGUI_API bool Checkbox(const char *label, bool *v)
IMGUI_API void SetCursorScreenPos(const ImVec2 &pos)
void update(ux_window &window, std::string &error_message)
IMGUI_API void CloseCurrentPopup()
ImFont * get_large_font() const
IMGUI_API void OpenPopup(const char *str_id)
IMGUI_API void SetCursorPosY(float y)
#define UPDC32(octet, crc)
static const ImVec4 dark_sensor_bg
IMGUI_API float GetCursorPosY()
IMGUI_API bool IsItemHovered()
IMGUI_API void PopStyleColor(int count=1)
std::string to_string(T value)