Showing posts with label Winter Break. Show all posts
Showing posts with label Winter Break. Show all posts

Saturday, January 7, 2012

Winter Progress

As a participant of last year’s ICEX team, I had the opportunity to continue working on our solutions over the summer. Towards the end of the summer, I was working on creating a function to determine confidence values for walls generated by the Hole Filling algorithm. Unfortunately, school started and I no longer had time to work on the solution. Over break, I completed the remaining parts of the algorithm and added confidence values to the input data. I then used these calculated confidence values to add more information to the visualization of the cisterns. Additionally, I tied up loose ends in the existing software to create a more stable and complete graphics pipeline. The existing Hole Filling software was not robust, as it would only run if certain sampling rules were followed. I found and fixed many bugs related to this problem, and the algorithm now runs as expected.

To the left is an image of a cistern mapped by last year’s team with the hole filled (there is no indication of a hole being filled). To the right is an image of the same cistern using transparency to illustrate the calculated confidence value of the filled hole (the confidence values used are a sample).

Robotics in SLO Update

Over break, I sent the ROV we have here at Cal Poly to VideoRay for repairs. Several parts needed to be replaced due to water leaking into the robot's hull. To my knowledge it is still under repair.

As for the software side of robotics, I worked on SLAM. I was able to get the scan matching algorithm working. This algorithm attempts to use SLAM to converge every possible pair of sonar scans of a cistern in order to localize the ROV for each scan's position.

Before we added the "Auto-converge" localization technique, we were manually mosaicking the sonar scans together and then measuring the displacement values between a reference scan and all the other scans. The displacement values for each scan were inputted into the code and used as the initial locations of the ROV when trying to add scans to a map. The code we have now does this mosaicking automatically.

The next step is to figure out how to prevent the particles from converging in the wrong location. I'm writing a paper on the Malta work from last year up till now, which is consuming most of my time.

Here are before and after images of merging two scans. Here I'm just using SLAM to add the second scan.



Using Scan Matching Algorithm w/ just 2 Scans




Friday, January 6, 2012

Winter Break Work:

Over break I implemented a bump map rendering system and researched stereo imaging. Both of these projects will be used to create more realistic, bumpy, cistern walls.

The bump map rendering system combines a surface texture, a bump map, and a mesh of vertices to create the illusion of surface deformations, or depth. The bump map is actually a map of normal vectors for each pixel in the map. The colors of each pixel in the bump map, red, green, and blue, determine the x, y, and z components of the normal vector at that pixel. Given the normal vector of a pixel, the position of a light, and some coordinate transformations, the amount of light that falls on any one pixel can be calculated. A grayscale mask can then be constructed to dim the desired pixels. The mask is then applied on top of the original texture to create the illusion of bumps. The following is a screenshot of a cylinder that has been textured with a yellow and blue checker grid and a bump map.







The renderer uses OpenGL and GLUT. I had never used either of these, so a good portion of my break was dedicated to setting up OpenGL and learning about the graphics pipeline. It was a great learning experience to be sure!

Stereo imaging will be used to create bump maps for the aforementioned renderer. The trick to stereo imaging is to capture two images simultaneously and then compare almost identical features in both images to compute the relative distance of those features using triangulation. I am currently planning on using the OpenCV libraries for camera calibrations and 3D map generation. After discussions, we are planning on mounting two GoPro cameras to the top of the Video Ray−as mentioned below.