Computer Vision and Robotics
Robotic Scout Navigation and Position Control System
Senior Design Project (undergraduate level): It is comprised of a mapping and localization system for planetary rovers - featuring a novel system for localization, based on fusion of data from a digital compass and optical flow motion estimation. A Kinect is used for 3D terrain mapping.
This project was partially sponsored by Toradex AG, and was selected to compete in it's Embedded Design Challenge. (only 71 projects were selected worldwide) |
|
Improvised Particle Filter for Monte Carlo Localization
An OpenGL based simulation of a modified particle filter algorithm for robot localization. The robot (black dot) follows a unicycle kinematic model. The task was to implement a particle filter to estimate (yellow circle) the position of the robot in the given soccer field, with a limited field of view (green lines). The primary modification was the regeneration of particles under a certain set of conditions, thus serving as a failsafe and a means to solve the kidnapped robot problem. The secondary change was a different means of computing when to resample the particles.
|
Image and Video Processing
Block Overlap Minimization for Motion EstimationAn implementation and improvisation of Block Overlap Minimization presented in “Joint Framework for Motion Validity and Estimation using Block Overlap”, M. Santoro, G. AlRegib, Y. Altunbasak, I.E.E.E. Transactions on Image Processing, 2013.
Library: OpenCV |
Object Sensitive Motion EstimationThe algorithm designed in this project tracks foreground objects, and implements selective block matching across frames of video, thus constituting a computationally inexpensive, yet accurate approach to motion estimation. Library: OpenCV
This algorithm is 15x faster than a full search. |
LK-Optical Flow Motion Estimation
An implementation of Lucas-Kanade Optical Flow Motion Estimation algorithm.
Library: OpenCV
Library: OpenCV
Parallel Programming
Tiled Matrix Multiplication
A CUDA implementation of a highly parallelized, tiled matrix multiplication algorithm. A speedup of >300x is achieved.
Tiled Image Convolution
A CUDA implementation of tiled image convolution.
Tiled Block Matching
A set of CUDA kernels for block matching, that searches for a Minimum SAD (Sum of Absolute Differences) block within the 8-connected neighborhood of an NxN pixel block. This was further integrated with OpenCV to parallelize the 'Object Sensitive Motion Estimation' algorithm (shown above).
Artificial Intelligence
Triangular Peg Solitaire Solver
Given a start state and goal state, an uninformed search (Depth First Search) is used to find a viable set of moves (if they exist), to solve a peg solitaire problem with fifteen holes.
Language: Scheme
Language: Scheme
Genetic Algorithm
An implementation of the Genetic Algorithm.
Language: Scheme
Language: Scheme
Automated Theorem Prover
An automated theorem prover that accepts and resolves a set of arguments in CNF (conjunctive normal form) and makes inferences that are implied by the arguments. It can then verify inferences that it is asked about (returns True/False/Unknown).
Language: Scheme
Language: Scheme
Additional Projects
Verification of MightyALU using UVM
Designed a 16-bit ALU which performs Gray Code conversion and CRC generation for USB 2.0, in addition to basic arithmetic and logic operations. UVM tests were written for all operations performed in a pseudo-random order, and for specific operation sequences.
Pulse DetectorA pulse detector circuit whose output depends on the amount of infrared light allowed to pass through the tip of the index finger, depending on the flow of blood.
|
|