From 3b14a5c876f2d7a8b8e17ed5b283edaa36bef778 Mon Sep 17 00:00:00 2001 From: Phillip Schmidt Date: Fri, 28 Jun 2019 12:19:12 -0700 Subject: [PATCH] added tracking + depth sample --- examples/CMakeLists.txt | 1 + examples/example.hpp | 93 +++++++++ examples/tracking-and-depth/CMakeLists.txt | 20 ++ examples/tracking-and-depth/H_t265_d400.cfg | 4 + .../bracket_t265nd435_external.stl | Bin 0 -> 413084 bytes examples/tracking-and-depth/readme.md | 179 ++++++++++++++++++ .../rs-tracking-and-depth.cpp | 140 ++++++++++++++ 7 files changed, 437 insertions(+) create mode 100644 examples/tracking-and-depth/CMakeLists.txt create mode 100644 examples/tracking-and-depth/H_t265_d400.cfg create mode 100644 examples/tracking-and-depth/bracket_t265nd435_external.stl create mode 100644 examples/tracking-and-depth/readme.md create mode 100644 examples/tracking-and-depth/rs-tracking-and-depth.cpp diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 750eb3fd11..64a0ca6bbc 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -45,3 +45,4 @@ add_subdirectory(pose-and-image) add_subdirectory(trajectory) add_subdirectory(ar-basic) add_subdirectory(pose-apriltag) +add_subdirectory(tracking-and-depth) diff --git a/examples/example.hpp b/examples/example.hpp index e2ff8df752..ac0f24a1b3 100644 --- a/examples/example.hpp +++ b/examples/example.hpp @@ -813,6 +813,99 @@ void draw_pointcloud(float width, float height, glfw_state& app_state, rs2::poin glPopAttrib(); } +void quat2mat(rs2_quaternion& q, GLfloat H[16]) // to column-major matrix +{ + H[0] = 1 - 2*q.y*q.y - 2*q.z*q.z; H[4] = 2*q.x*q.y - 2*q.z*q.w; H[8] = 2*q.x*q.z + 2*q.y*q.w; H[12] = 0.0f; + H[1] = 2*q.x*q.y + 2*q.z*q.w; H[5] = 1 - 2*q.x*q.x - 2*q.z*q.z; H[9] = 2*q.y*q.z - 2*q.x*q.w; H[13] = 0.0f; + H[2] = 2*q.x*q.z - 2*q.y*q.w; H[6] = 2*q.y*q.z + 2*q.x*q.w; H[10] = 1 - 2*q.x*q.x - 2*q.y*q.y; H[14] = 0.0f; + H[3] = 0.0f; H[7] = 0.0f; H[11] = 0.0f; H[15] = 1.0f; +} + +// Handles all the OpenGL calls needed to display the point cloud w.r.t. static reference frame +void draw_pointcloud_wrt_world(float width, float height, glfw_state& app_state, rs2::points& points, rs2_pose& pose, float H_t265_d400[16], std::vector& trajectory) +{ + if (!points) + return; + + // OpenGL commands that prep screen for the pointcloud + glLoadIdentity(); + glPushAttrib(GL_ALL_ATTRIB_BITS); + + glClearColor(153.f / 255, 153.f / 255, 153.f / 255, 1); + glClear(GL_DEPTH_BUFFER_BIT); + + glMatrixMode(GL_PROJECTION); + glPushMatrix(); + gluPerspective(60, width / height, 0.01f, 10.0f); + + + // viewing matrix + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + + // rotated from depth to world frame: z => -z, y => -y + glTranslatef(0, 0, -0.75f-app_state.offset_y*0.05f); + glRotated(app_state.pitch, 1, 0, 0); + glRotated(app_state.yaw, 0, -1, 0); + glTranslatef(0, 0, 0.5f); + + // draw trajectory + glEnable(GL_DEPTH_TEST); + glLineWidth(2.0f); + glBegin(GL_LINE_STRIP); + for (auto&& v : trajectory) + { + glColor3f(0.0f, 1.0f, 0.0f); + glVertex3f(v.x, v.y, v.z); + } + glEnd(); + glLineWidth(0.5f); + glColor3f(1.0f, 1.0f, 1.0f); + + // T265 pose + GLfloat H_world_t265[16]; + quat2mat(pose.rotation, H_world_t265); + H_world_t265[12] = pose.translation.x; + H_world_t265[13] = pose.translation.y; + H_world_t265[14] = pose.translation.z; + + glMultMatrixf(H_world_t265); + + // T265 to D4xx extrinsics + glMultMatrixf(H_t265_d400); + + + glPointSize(width / 640); + glEnable(GL_DEPTH_TEST); + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, app_state.tex.get_gl_handle()); + float tex_border_color[] = { 0.8f, 0.8f, 0.8f, 0.8f }; + glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, tex_border_color); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, 0x812F); // GL_CLAMP_TO_EDGE + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, 0x812F); // GL_CLAMP_TO_EDGE + glBegin(GL_POINTS); + + /* this segment actually prints the pointcloud */ + auto vertices = points.get_vertices(); // get vertices + auto tex_coords = points.get_texture_coordinates(); // and texture coordinates + for (int i = 0; i < points.size(); i++) + { + if (vertices[i].z) + { + // upload the point and texture coordinates only for points we have depth data for + glVertex3fv(vertices[i]); + glTexCoord2fv(tex_coords[i]); + } + } + + // OpenGL cleanup + glEnd(); + glPopMatrix(); + glMatrixMode(GL_PROJECTION); + glPopMatrix(); + glPopAttrib(); +} + // Registers the state variable and callbacks to allow mouse control of the pointcloud void register_glfw_callbacks(window& app, glfw_state& app_state) { diff --git a/examples/tracking-and-depth/CMakeLists.txt b/examples/tracking-and-depth/CMakeLists.txt new file mode 100644 index 0000000000..5ce02195b1 --- /dev/null +++ b/examples/tracking-and-depth/CMakeLists.txt @@ -0,0 +1,20 @@ +# License: Apache 2.0. See LICENSE file in root directory. +# Copyright(c) 2019 Intel Corporation. All Rights Reserved. +# minimum required cmake version: 3.1.0 +cmake_minimum_required(VERSION 3.1.0) + +project(RealsenseExamplesTrackingAndDepth) + +if(BUILD_GRAPHICAL_EXAMPLES) + add_executable(rs-tracking-and-depth rs-tracking-and-depth.cpp ../example.hpp) + set_property(TARGET rs-tracking-and-depth PROPERTY CXX_STANDARD 11) + target_link_libraries(rs-tracking-and-depth ${DEPENDENCIES}) + include_directories(rs-tracking-and-depth ../) + set_target_properties (rs-tracking-and-depth PROPERTIES FOLDER Examples) + install(TARGETS rs-tracking-and-depth RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + add_custom_command( + TARGET rs-tracking-and-depth POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy + ${CMAKE_CURRENT_SOURCE_DIR}/H_t265_d400.cfg + ${CMAKE_CURRENT_BINARY_DIR}/H_t265_d400.cfg) +endif() diff --git a/examples/tracking-and-depth/H_t265_d400.cfg b/examples/tracking-and-depth/H_t265_d400.cfg new file mode 100644 index 0000000000..1ed87b97ad --- /dev/null +++ b/examples/tracking-and-depth/H_t265_d400.cfg @@ -0,0 +1,4 @@ +0.999968402 -0.006753626 -0.004188075 -0.015890727 +-0.006685408 -0.999848172 0.016093893 0.028273059 +-0.004296131 -0.016065384 -0.999861654 -0.009375589 + diff --git a/examples/tracking-and-depth/bracket_t265nd435_external.stl b/examples/tracking-and-depth/bracket_t265nd435_external.stl new file mode 100644 index 0000000000000000000000000000000000000000..cfaafe4eb01dda00f1a8557beec6458a0cfbd3fe GIT binary patch literal 413084 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

gB`4++6^ocPxXFE#$-#asxc<{OQVJ@KLtOvj1t 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%0AubrtK0b5y@rgCc>#s? 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 + +## Mechanical Setup +The provided [STL](./bracket_t265nd435_external.stl) can be 3D-printed +and used to attach T265 and D435 +using **M3 screws, 10mm & 18mm**, respectively. +![snapshot00](https://user-images.githubusercontent.com/28366639/60457143-2b27dd80-9bf0-11e9-8286-757953d9013e.png) +If the mount is used in the depicted orientation with T265 below and D435 mounted above, +the provided [calibration](./H_t265_d400.txt) can be used to transform between point cloud and pose reference frame. + +In the depicted orientation a **ΒΌ-20 nut** can be inserted into the 3D-print in order to mount the assembly on a tripod. + +![IMG_1900_3](https://user-images.githubusercontent.com/28366639/61068929-1271b180-a3c0-11e9-9502-d30092c7506a.png) + +Please note that the homogeneous transformation is expected to be provided as row-major 3x4 matrix of the form `H = [R, t]` where `R` is the rotation matrix and `t` the translation vector of the depth, i.e. infrared 1, frame, with respect to the T265 body frame (see above). + + +## Code Overview + +This example is based on the [pointcloud example](../pointcloud/). Please also refer the respective documentation. + +Similar to the [first tutorial](../capture/) we include the Cross-Platform API: +```cpp +#include // Include RealSense Cross Platform API +``` + +Next, we prepared a [very short helper library](../example.hpp) encapsulating basic OpenGL rendering and window management: +```cpp +#include "example.hpp" // Include short list of convenience functions for rendering +``` + +We also include the STL `` header for `std::min` and `std::max`, +and `` for `std::ifstream` +to parse the homogeneous extrinsic matrix from a text file. + +Next, we define a `state` struct and two helper functions. `state` and `register_glfw_callbacks` handle the pointcloud's rotation in the application, and `draw_pointcloud_wrt_world` makes all the OpenGL calls necessary to display the pointcloud. +```cpp +// Struct for managing rotation of pointcloud view +struct state { double yaw, pitch, last_x, last_y; bool ml; float offset_x, offset_y; texture tex; }; + +// Helper functions +void register_glfw_callbacks(window& app, state& app_state); +draw_pointcloud_wrt_world(float width, float height, glfw_state& app_state, rs2::points& points, rs2_pose& pose, float H_t265_d400[16]); +``` + +The `example.hpp` header lets us easily open a new window and prepare textures for rendering. The `state` class (declared above) is used for interacting with the mouse, with the help of some callbacks registered through glfw. +```cpp +// Create a simple OpenGL window for rendering: +window app(1280, 720, "RealSense Tracking and Depth Example"); +// Construct an object to manage view state +state app_state = { 0, 0, 0, 0, false, 0, 0, 0 }; +// register callbacks to allow manipulation of the pointcloud +register_glfw_callbacks(app, app_state); +``` + +We are going to use classes within the `rs2` namespace: +```cpp +using namespace rs2; +``` + +As part of the API we offer the `pointcloud` class which calculates a pointcloud and corresponding texture mapping from depth and color frames. To make sure we always have something to display, we also make a `rs2::points` object to store the results of the pointcloud calculation. +```cpp +// Declare pointcloud object, for calculating pointclouds and texture mappings +pointcloud pc = rs2::context().create_pointcloud(); +// We want the points object to be persistent so we can display the last cloud when a frame drops +rs2::points points; +``` + +We declare a `rs2_pose` object to store the latest pose as reported by T265. +```cpp +rs2_pose pose; +``` + + +To stream from multiple device please also refer to the [multicam example](../multicam/). +First a common context is created and a (separate) pipeline is started for each of the queried devices. +```cpp +// Start a streaming pipe per each connected device +for (auto&& dev : ctx.query_devices()) +{ + rs2::pipeline pipe(ctx); + rs2::config cfg; + cfg.enable_device(dev.get_info(RS2_CAMERA_INFO_SERIAL_NUMBER)); + pipe.start(cfg); + pipelines.emplace_back(pipe); +} +``` + +The extrinsics between the streams, namely depth and pose, are loaded from a configuration file +that has to be provided in form of a *row-major* homogeneous 4-by-4 matrix. + +While the app is running, +we loop over the pipelines, wait for frames, before we collect the respective color, depth and pose frames: +```cpp +for (auto &&pipe : pipelines) // loop over pipelines + { + auto frames = pipe.wait_for_frames(); // Wait for the next set of frames from the camera +``` + +Using helper functions on the `frameset` object we check for new depth and color frames. We pass it to the `pointcloud` object to use as the texture, and also give it to OpenGL with the help of the `texture` class. We generate a new pointcloud. +```cpp +auto depth = frames.get_depth_frame(); + +// Generate the pointcloud and texture mappings +points = pc.calculate(depth); + +auto color = frames.get_color_frame(); + +// Tell pointcloud object to map to this color frame +pc.map_to(color); + +// Upload the color frame to OpenGL +app_state.tex.upload(color); + +``` + +In a similar way we get the pose data from the pose frame +```cpp +auto pose_frame = frames.get_pose_frame(); +if (pose_frame) { + pose = pose_frame.get_pose_data(); +} +``` + +Finally we call `draw_pointcloud_wrt_world` to draw the pointcloud with respect to a common (fixed) world frame. +This is done by moving the observing camera according to the transformation reported by T265 and extrinsics to the depth stream (instead of transforming the scene by the inverse which results in the same relative motion). +```cpp +draw_pointcloud_wrt_world(app.width(), app.height(), app_state, points, pose, H_t265_d400); +``` + +`draw_pointcloud_wrt_world` primarily calls OpenGL, but the critical portion iterates over all the points in the pointcloud, and where we have depth data, we upload the point's coordinates and texture mapping coordinates to OpenGL. +```cpp +/* this segment actually prints the pointcloud */ +auto vertices = points.get_vertices(); // get vertices +auto tex_coords = points.get_texture_coordinates(); // and texture coordinates +for (int i = 0; i < points.size(); i++) +{ + if (vertices[i].z) + { + // upload the point and texture coordinates only for points we have depth data for + glVertex3fv(vertices[i]); + glTexCoord2fv(tex_coords[i]); + } +} +``` + +The second critical portion changes the viewport according to the provided transformation. +```cpp +// viewing matrix +glMatrixMode(GL_MODELVIEW); +glPushMatrix(); + +GLfloat H_world_t265[16]; +quat2mat(pose.rotation, H_world_t265); +H_world_t265[12] = pose.translation.x; +H_world_t265[13] = pose.translation.y; +H_world_t265[14] = pose.translation.z; + +glMultMatrixf(H_world_t265); +glMultMatrixf(H_t265_d400); +``` + diff --git a/examples/tracking-and-depth/rs-tracking-and-depth.cpp b/examples/tracking-and-depth/rs-tracking-and-depth.cpp new file mode 100644 index 0000000000..b33f1a0109 --- /dev/null +++ b/examples/tracking-and-depth/rs-tracking-and-depth.cpp @@ -0,0 +1,140 @@ +// License: Apache 2.0. See LICENSE file in root directory. +// Copyright(c) 2015-2017 Intel Corporation. All Rights Reserved. + +#include // Include RealSense Cross Platform API +#include "example.hpp" // Include short list of convenience functions for rendering + +#include // std::min, std::max +#include // std::ifstream + +// Helper functions +void register_glfw_callbacks(window& app, glfw_state& app_state); + +float detR(float H[16]) { + return H[0]*(H[5]*H[10]-H[9]*H[6]) - H[4]*(H[1]*H[10]-H[2]*H[9]) + H[8]*(H[1]*H[6]-H[5]*H[2]); +} + +int main(int argc, char * argv[]) try +{ + // Create a simple OpenGL window for rendering: + window app(1280, 720, "RealSense Tracking and Depth Example"); + // Construct an object to manage view state + glfw_state app_state; + // register callbacks to allow manipulation of the pointcloud + register_glfw_callbacks(app, app_state); + + // Declare pointcloud object, for calculating pointclouds and texture mappings + rs2::pointcloud pc; + // We want the points object to be persistent so we can display the last cloud when a frame drops + rs2::points points; + // store pose and timestamp + rs2::pose_frame pose_frame(nullptr); + std::vector trajectory; + + rs2::context ctx; // Create librealsense context for managing devices + std::vector pipelines; + + // Start a streaming pipe per each connected device + for (auto&& dev : ctx.query_devices()) + { + rs2::pipeline pipe(ctx); + rs2::config cfg; + cfg.enable_device(dev.get_info(RS2_CAMERA_INFO_SERIAL_NUMBER)); + pipe.start(cfg); + pipelines.emplace_back(pipe); + } + + // extrinsics + // depth w.r.t. tracking (column-major) + float H_t265_d400[16] = {1, 0, 0, 0, + 0,-1, 0, 0, + 0, 0,-1, 0, + 0, 0, 0, 1}; + std::string fn = "./H_t265_d400.cfg"; + std::ifstream ifs(fn); + if (!ifs.is_open()) { + std::cerr << "Couldn't open " << fn << std::endl; + return -1; + } + else { + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 4; j++) { + ifs >> H_t265_d400[i+4*j]; // row-major to column-major + } + } + } + float det = detR(H_t265_d400); + if (fabs(1-det) > 1e-6) { + std::cerr << "Invalid homogeneous transformation matrix input (det != 1)" << std::endl; + return -1; + } + + while (app) // Application still alive? + { + for (auto &&pipe : pipelines) // loop over pipelines + { + // Wait for the next set of frames from the camera + auto frames = pipe.wait_for_frames(); + + + auto color = frames.get_color_frame(); + + // For cameras that don't have RGB sensor, we'll map the pointcloud to infrared instead of color + if (!color) + color = frames.get_infrared_frame(); + + // Tell pointcloud object to map to this color frame + if (color) + pc.map_to(color); + + auto depth = frames.get_depth_frame(); + + // Generate the pointcloud and texture mappings + if (depth) + points = pc.calculate(depth); + + // Upload the color frame to OpenGL + if (color) + app_state.tex.upload(color); + + + // pose + auto pose = frames.get_pose_frame(); + if (pose) { + pose_frame = pose; + + // Print the x, y, z values of the translation, relative to initial position + auto pose_data = pose.get_pose_data(); + std::cout << "\r" << "Device Position: " << std::setprecision(3) << std::fixed << pose_data.translation.x << " " << pose_data.translation.y << " " << pose_data.translation.z << " (meters)"; + + // add new point in the trajectory (if motion large enough to reduce size of traj. vector) + if (trajectory.size() == 0) + trajectory.push_back(pose_data.translation); + else { + rs2_vector prev = trajectory.back(); + rs2_vector curr = pose_data.translation; + if (sqrt(pow((curr.x - prev.x), 2) + pow((curr.y - prev.y), 2) + pow((curr.z - prev.z), 2)) > 0.002) + trajectory.push_back(pose_data.translation); + } + } + } + + // Draw the pointcloud + if (points && pose_frame) { + rs2_pose pose = pose_frame.get_pose_data(); + draw_pointcloud_wrt_world(app.width(), app.height(), app_state, points, pose, H_t265_d400, trajectory); + } + } + + return EXIT_SUCCESS; +} +catch (const rs2::error & e) +{ + std::cerr << "RealSense error calling " << e.get_failed_function() << "(" << e.get_failed_args() << "):\n " << e.what() << std::endl; + return EXIT_FAILURE; +} +catch (const std::exception & e) +{ + std::cerr << e.what() << std::endl; + return EXIT_FAILURE; +}