Boris Lipchin's 16-264 Page
HW1: Dance Competition
Video: http://ru.youtube.com/watch?v=fdGIJKqufQc
Description:
I decided that rather than letting the robot run open-loop and synchronizing it with the music by iteratively testing it over and over again, I ran the control loop the other direction and decided to play the music myself. I've never played any flamenco before, so it took me a couple of weeks to get familiar with the music. Then I programmed an appropriate move for each of the song's 5 phrases, and made sure that they more or less fit within the time measure. Having the robot walk as one of the moves proved more work than anything, not to mention the battery drain necessary to test the piece of code. Many portions of the API also seemed somewhat buggy, and it required a lot of hacking for the robot to produce the desired behavior. Aside from that, having a closed loop for the dance number saved a lot of time.
HW2: Hockey
Video: http://uk.youtube.com/watch?v=K-a2lL7oA2g
Description:
Here the robot is attempting to hit a target designated by the gray square. At the beginning of the video he gets erroneous input and diverges quickly from the solution. Then he re-converges over the course of several hits, which is somewhat impressive. The robot's complicated joints and unpredictable manipulation made it difficult to use all the available servos to accomplish a task. Rather I chose a few orthogonal joints that would essentially created a polar coordinate system with respect to the ball's trajectory. Although the two joints did not form a perfect polar coordinate system (I.e. there were probably values in the minor diagonal of the Jacobian), it was too difficult to ascertain what those values would be. In either case, since they were small and the robot servos work on a very roughly discretized level, small floating point values would add little accuracy to the system. Rather, simplifying the coordinate translation aided the robot in converging on the correct target. I used the waist and shoulder arm. The waist was essentially mapped into the angle of the polar coordinates, and the speed of the waist servo as well as the final destination of the shoulder servo served as a magnitude. At either extreme of the shoulder, it would affect the theta of the produced ball trajectory as well, however, in the middle it was more or less an acceptable simplification to assume complete orthogonality between the joints. This robot does not really lend itself to exact calculations and high fidelity KDC models, as its own movements are very rough and have a very high variance.
HW3: Face recognition
Videos:
http://uk.youtube.com/watch?v=MD7NNCZRVds
http://uk.youtube.com/watch?v=pr_HX1FPDuQ
Description:
I used the openCV libraries to help me detect the face on the picture in order to make my algorithms that much more robust, and easier to test. After detecting the face I extract a rectangle that is hardcoded to be the size of my face. This simplifies the later template match and also makes the algorithm more robust to my particular face. After I resize the template to match the size of the extracted face, and then do a correlative match. If the match is above a certain threshold, the rectangle becomes green, notifying that my face has been recognized. Extensive testing shows that in specific configurations of the face, false positives do appear. However, it is important to note that my face appears to be most stable out of the positives. Here is some graphed data that shows correlations for a few different subjects.

The dark green and blue data sets are my face, and the turquoise and red are different subjects. Both notably tend to correlate much lower.