04/19/18
Joe Chartouni: TCP Connection
This week, I finished setting up an TCP Connection server between devices. We plan to use this to communicate between HTC Vive and Compute Stick.
04/05/18
Joe Chartouni: Realsense Work
This week, I finished setting up the ZR300-Realsense and worked to start creating applications to work with our device. Currently, I've figured out how to extract depth-data from the camera and am creating a subscribe node in ROS such that we could message-pass the information we gather from the Realsense forward.
The work to set up the Realsense took longer than expected because of some issues that weren't documented online, such as the most recent ZR300 patch pullable from Github not having any correct samples within in. We've submitted our findings to Intel Help to hopefully help others with the same issue.
04/05/18
Joe Doyle: Ray-OctTree carving
Step 1: Get the visualization software to generate depth maps from OpenGL to simulate the RealSense's depth images.

Step 2: Extract rays from depth images, then build an oct-tree of these rays. Any oct-tree nodes without any rays intersecting them get drawn. This lets you reconstruct the model more precisely with more pictures.
Finally, we get:
Step 3: Implement a thread pool to make this fast. This happened, and it's now way faster, but I don't have good pictures of it.
03/26/18
Joe Doyle: Visualization
Since we decided to start focusing on an oct-tree-based system for doing the 3D scanning, I began work on visualization tools for this oct-tree.
An oct-tree is a spatial partitioning datastructure where you take some region of 3D space and recursively divide it into 8 octants at a time. It's often used for physical simulation and collision detection, and similar datastructures are used for raytracing. The raytracing usage is especially interesting, because oct-trees let you have variable scan resolution, and we can use raytracing directed by the depth camera to "carve" the outline of a 3D model.
OpenVR uses OpenGL bindings for rendering, so if the rendering works in OpenGL, it should be a quick modification (obviously, with tweaking) to incorporate VR. However, I haven't worked with OpenVR directly before, so I wanted to bite off a doable portion. I took an existing OpenGL project of mine and adapted it to demonstrate multi-resolution rendering with oct-trees. You control the camera to fly around the space, and an oct-tree approximation of a 3D model is displayed in the center of the scene -- in this case, I used Professor Keenan Crane's model of the toplogically-spherical cow Spot. When you press up or down, the visualizer generates the next level of tesselation -- with 1/2 the length on each side. It lags a bit on my laptop at more recognizable resolutions, but there are plenty of optimization opportunities that I haven't followed through with yet.
Joe Chartouni: Realsense Setup
This week, I worked to install all of the required drivers and dependencies sorted out to use the Intel Realsense ZR300. There have been a few more serious issues with the setup, but basic functionality has for the most part been setup, and I'll be moving onto gathering the data be early on this week.
I also looked into utilizing rtabmap_ros and cartographer. However, as the camera the group decided on doesn't have DLL support (which functionality we wanted required), and the recent build of Cartographer's most recent update has left it unpullable, those were not practical options. This led into the decision to begin working on an oct-tree based system for 3D scanning.