Mechatronics Projects
Sudoku Robot
Just for fun, I designed and built a robot out of Legos to solve a sudoku puzzle on a touchscreen cell phone app. I started by writing a Python script to figure out the solution to any sudoku puzzle. I then built a lego carriage system capable of moving a set of touchscreen styluses to any location on the phone screen. To drive the lateral motion of the carriage and the vertical motion of the styluses, I used three Lego Mindstorms motors, one for each axis. Using an Arduino, I programmed and tuned a PD controller to provide positional control of the motors using their built-in digital encoders as a feedback signal. Upon startup, the robot determines its absolute position by moving each axis in one direction until it contacts a limit switch, indicating that it has reached a known position. After this initialization, the Python script sends touchscreen commands to the Arduino, which in turn moves the robot to enter the puzzle solution on the cell phone.
Inverted Pedulum
A group of fellow students and I designed a controller to balance an inverted pendulum, stabilizing an unstable system. The controller has two modes of operation: swing-up and balance. When the pendulum is below horizontal, the swing up controller activates to swing the pendulum into the unstable equilibrium position. When the pendulum is above the horizontal, the balance controller takes over to balance the pendulum in the vertical position. The controller was designed using full state feedback control and tuned to improve disturbance rejection and stability.
Magnetic Levitation

A group of classmates and I designed a lead controller to magnetically levitate a steel marble. The position of the marble was detected using an infared sensing scheme. On one side of the marble a diode emitted infared light, while on the other side of the marble, a photosensor detected the intensity of the infared light reaching the sensor. The higher the marble was, the more light was blocked from reaching the detector, allowing for the position of the ball to be measured. The open loop system is unstable, but by using feedback control, we were able to stabilize the system to keep the marble floating, even when disturbances were applied to the system.
Marble Sorting Robot
I led a group of three classmates in creating a mechatronic four-bar linkage to autonomously sort marbles based on color using an Arduino. The blue and yellow marbles were to be deposited into the clear bucket, while the white and red marbles were to be thrown into the net. A photosensor was used to detect the color of the marbles and an optical encoder was used to keep track of the position of the mechanism. A PID controller was designed to control the motion of the motor.
