Master's Thesis - Object Detection from a drone using a Fisheye Camera Lens

Individual, Supervised, 2022-2023

Researched and implemented data augmentation methods to convert existing datasets to appear as if their images have been distorted by the effect of a fisheye lens. These along with the same distorted annotations were used to train an object detection model using YOLOv7 such that it becomes accustomed to distortions caused by fisheye lenses in real time. Several models were tested with scripts created to evaluate their regional performance.

Languages and Softwares involved:
- Python
- YOLOv7

Digital Systems Design Coursework

2-Person, Spring 2022

Configuring an FPGA on a DE10-SOC board to use a NIOS II processor and custom IP blocks to maximise speed when evaluating a target function whilst also minimising resource usages.

Languages and Softwares involved:
- Verilog
- Quartus Prime

Online Portfolio

Individual, Summer 2021

Taught myself HTML and CSS to put together this website.

Languages and Softwares involved:
- HTML, CSS

Countdown

Individual, Summer 2021

After following an online tutorial on how to make a simple memory game app, I went on to build a countdown app consisting of stopwatch and timer features.

Languages and Softwares involved:
- Kotlin
- Android Studio

Percy the Mars Rover

6-person, Summer 2021

End of year coursework to create a rover capable of autonomous and manual motion with object detection where the target objects are 5 different coloured balls.

Personally worked on the Vision subsystem using a D8M-Camera module connected to a DE10-Lite board holding an FPGA which was used to configure a NIOS II processor and other components on; made the rover capable of detecting ping pong balls, identifying the different colour and calculating the distance of the ball from the camera.

Languages and Softwares involved:
- C, C++, Verilog
- Quartus Prime, Arduino IDE

World of DE10s

6-person, Spring 2021

Developed a 1v1 tank game established through an IoT system using 2 FPGAs, which act as controllers, are connected to PCs which act as nodes which communicate with a TCP server hosted on an AWS client.
Personally worked on configuring the FPGA and making the program to run on the instantiated NIOS II processor to convert metrics from the accelerometer into WASD movements. Also established the data flow from the FPGA to a host PC.

Languages and Softwares involved:
- C, Python
- Quartus Prime

C-to-MIPS compiler

2-person, Spring 2021

Worked towards writing a compiler capable of converting C code to MIPS assembly code. Wrote a lexer using Flex to break down input streams of text into its tokens. We then wrote a parser to identify constructs such as if statements, while loops, variable assignments etc. Formed an AST using a series of header files written in C++ to handle compilation of the parsed information.

Languages and Softwares involved:
- C++, Yacc, Flex, Shell

Verilog MIPS CPU

6-person, Spring 2021

Created a working synthesizable 32-bit instructions MIPS multicycle processor using Verilog capable of executing 48 given instructions.
Personally worked on creating the testbench for the CPU using shell scripts. Also wrote many of the test cases.

Languages and Softwares involved:
- Verilog, C++, Shell

MU0 CPU

3-person, Summer 2020

Designed a MU0 optimised for the following algorithms:
- Calculating Fibonacci numbers using recursion,
- Calculate pseudo-random integers with a linear congruential generator (LCG),
- Traverse a linked list to find an item.

I worked on optimising the CPU for the task of calculating Fibonacci numbers using recursion. This task introduced me to stack memory which uses the 'last in, first out' data structure which we were directed to use to implement this task. The section of the report detailing the process I underwent and the final product for the Fibonacci number generator can be found here.

Languages and Softwares involved:
- Verilog
- Quartus Prime