For my graduate capstone project we had the freedom to propose a relevant project that demonstrated skills and knowledge gained throughout the degree program. My partner and I decided to tackle a long standing project to create an affordable multi-robot system that could be used to test control algorithms through MatLab / Simulink. This involved designing the physical chassis of a robot to be as small form factor as possible, designing and fabricating all of the connecting circuit boards to fit inside the small enclosure, and creating the system which this robot would run.
In these projects I used Computer Vision and Machine Learning to detect and track lanes and vehicles.
In the lane tracking project (green overlay) I built a lane-finding algorithm that made use of distortion correction, color transforms, gradient thresholding, and image rectification. The algorithm proved to be robust enough to correctly detect the lanes even with rapidly changing pavement and shadows.
In the Vehicle Detection and Tracking Project (bounding boxes) I created a vehicle detection and tracking pipeline with OpenCV, histogram of oriented gradients, and support vector machines (SVM). Optimized and evaluated the model on video data from a dash cam taken during highway driving.
In my spare time I've been known to photograph weddings from time to time...
This project was my first foray into Self-Driving Car technology and was chosen to get my feet wet with Robot Operating System (ROS), LIDAR, and common Simultaneous Localization and Mapping (SLAM) algorithms.
After getting ROS onto the lab Pioneer wheeled robot I was able to implement a gmapping algorithm. Using the LIDAR, wheel encoder data, and the gmapping algorithm - I was able to create an accurate map of the floor plan.
The map was then used in conjunction with a SLAM algorithm and a navigation program I created to patrol the lab whilst avoiding obstacles.
Our Mechatronics II class asked us to create a system exhibiting a 4th-order dynamics control system. You can see a picture of it below. Our system was comprised of two 2nd-order systems: first, controlling the angle of the bar with two brushless DC electric motors, and second, to control the position of a free-sliding carrraige on the bar with an inner and outer loop PID control system. We designed all of the parts /assemblies in Solidworks and fabricated on either a 3D printer or laser cutter to be robust and safe. I developed the embedded software to control the system in C++ on an Arduino microcontroller.
No project goes completely smoothly: As we spec’d out our sensors and actuators, we ran into difficulty with a cheap IMU sensor. We tried tried to identify the root cause of sensor malfunction, and we ultimately discovered it was inherently imprecise and inaccurate in its measurements. We switched to an ultrasonic range sensor system, accurate to ~3 degrees, to extrapolate the angle of the bar.
Penny Arcade Machine
In my Mechatronics I class, we were given an assignment with a few simple guidelines and no creative limitations — create a game machine that was coin-activated, fully functional, and incorporating an electro-mechanical system. My partner and I disregarded the standard “single-player, high-score” concept and designed a two-player, head-to-head whack-a-mole game. Our classmates loved it; our machine was voted #1 in the class design competition.
At the start of our whack-a-mole concept, we first designed a discrete logic circuit. Mechatronics I focuses on designing and debugging analog/discrete circuits. We challenged ourselves to offboard as much game logic as possible into a discrete logic circuit for the game controls. The machine was comprised of three Arduino’s communicating via serial in real-time, and the embedded system was programmed in C/C++. We placed our carefully constructed logic circuts into a clear acryllic laser-cut box, robust enough to withstand overly enthusiastic graduate students.