top of page

Protect: An Active Gaming Experience

Every engineer's most anticipated, stressful, and rewarding project is their fourth-year Capstone. It is a culimination of all the knowledge (or lack of knoweldge) we have gained through school and work over the past five years. I was lucky enough to work with three incredibly talented Mechatronics Engineers who, with the help of our industry sponsor Activate, made this incredible project a reality. 

​

We decided to create a game room proof of concept for Activate based on a variation of dodgeball. The player's task is to interact with the back wall by clicking the tiles that light up blue before they disappear while avoiding those which light up red. Whilst doing that, they must protect the back wall from flying projectiles launched by our custom built ball launcher. 

​

​

image.png

​

I was responsible for creating the communication system between the various Raspberry Pis which controlled different parts of the system and the main PC client which showed points and life information. Quick communication is crucial for players to receive the feedback that they lost a life or gained points. I also created the game mechanics for the all game modes using PyGame. A custom JSON file format was used to create the various different tasks that each level of the game required. The format was modular to allow for varying degrees of difficulty to be added and tested without having to rewrite the main code. 

​

The launcher was complete with two high speed, PID controlled flywheel motors to launch the balls, three stepper motors for 2 axes of movement freedom, and a DC motor to push the balls through the launcher. 

​

For more details on the struggles of creating this project please check out our Capstone design log: HOME | Fydp (4chealsie9.wixsite.com)

Miniature Autonomous Vehicle

For my third-year design project, I rejoined with some of the members of my first-year design project team and included some new people. We were given a very open-ended project. Design a robot or vehicle that could traverse this obstacle course in a spiral pattern. There were various obstacles like gaps to climb over, sand, and rocks. We decided that as a team with a lot of software-focused people, we would try to use an STM32 and C to develop this project. That may have been a mistake looking back because of the huge complexity of this system with all the various sensors and control algorithms that needed to be developed, but I do not regret taking this route. It helped us learn so much about sensor integration and control and allowed us to develop a lot of things from scratch. We decided for this project that we would use a very simple design: four wheels, four electric motors, four encoders, one IMU, and two ToF sensors. I was in charge of integrating the IMU among other things. That proved to be a very daunting challenge. There were a lot of libraries available for sensor fusion etc., however, each one was fraught with its own problems. I experimented with MATLAB, with various filters, and still came up empty handed. I eventually succeeded in using the MPU-9250's built-in Digital Motion Processor to get the Euler angles that we required to get this project going. The IMU formed the basis of the robot's ability to travel in a straight line, and the ability to orient itself throughout the spiral course. 

​

Another notable feature of this vehicle was a self-developed PID module. This PID module was used for everything, including controlling the exact linear speed of every motor, the straight line correction, the turning control, and the distance to wall control. We definitely went a little crazy trying to tune all these controllers AND get them to work in tandem with each other. 

​

The final result was decent, however, we definitely wanted the robot to perform more smoothly. The following is an excerpt of the robot travelling through the course. 

​

​

​

​

Unfortunately, during our final evaluation, our front ToF sensor stopped functioning. Given the ridiculous hours we spent debugging this robot, and all the hours we spent tuning all the controllers, this was a huge setback. We quickly removed the second ToF on the side of the robot that we were originally using to help control the straight line correction, and placed it in the front. That allowed us to get the run that is shown above. 

​

Ultimately, with some more time, the robot's operation could have been smoother. But, I am still proud of our ability to make something nearly from scratch to accomplish this rather difficult assignment. I cannot wait to apply the skills and knowledge learned to future projects. 

​

Chess Robot

For my first-year design project, I worked with three other aspiring engineers to tackle a hugely ambitious project: creating a chess-playing robot. 

The robot is based on LEGO EV3 (programmed using C++ and C) and is able to detect user's moves.

First, the user makes a move. Then, the robot, armed with a list of possible moves that the user can make (provided by StockFish), checks various positions using touch and colour sensors.

​

IMG_3204.JPG

After determining the user's move, the robot will then get its next instruction from StockFish and it will accurately move its piece to that location.

​

The robot has various safeguards in place such as checking whether or not it has properly moved a piece by using its touch sensor after "placing" the piece. 

If it fails to place the piece, the robot will attempt the move again. 

bottom of page