{"id":68,"date":"2025-07-26T05:28:32","date_gmt":"2025-07-26T05:28:32","guid":{"rendered":"http:\/\/louis.rotech.nz\/?page_id=68"},"modified":"2025-09-23T11:00:16","modified_gmt":"2025-09-23T11:00:16","slug":"university-projects","status":"publish","type":"page","link":"http:\/\/louis.rotech.nz\/?page_id=68","title":{"rendered":"University Projects"},"content":{"rendered":"\n<p>I worked on various different projects throughout my undergraduate. Here are a few notable ones:<\/p>\n\n\n\n<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-8 wp-block-group-is-layout-flex\">\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-2 wp-block-group-is-layout-flex\">\n<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-1 wp-block-group-is-layout-flex\">\n<p><strong><em>Teaching agents to play video games<\/em><\/strong><\/p>\n\n\n\n<p>I created an expert agent capable of playing Super Mario Land, by creating a perception system (from which the agent obtains key components for understanding the game state), and a behavioural control system for reacting appropriately to the game surroundings and progressing through the game.<\/p>\n\n\n\n<p>I also created a reinforcement learning agent capable of playing the Pok\u00e9mon Red game and attempting to defeat the first gym leader Brock. This involved defining appropriate <em>states<\/em>, <em>actions<\/em>, and <em>rewards<\/em> for the reinforcement learning agent to train and progress towards defeating the first gym leader.<\/p>\n\n\n\n<p>GitHub Link for Mario project: <a href=\"https:\/\/github.com\/llee789\/COMPSYS-726-Project-1.git\"><strong><em><mark style=\"background-color:rgba(0, 0, 0, 0);color:#215f9a\" class=\"has-inline-color\">[LINK]<\/mark><\/em><\/strong><\/a><br>GitHub Link for Pok\u00e9mon project: <a href=\"https:\/\/github.com\/llee789\/COMPSYS-726-Project-2.git\"><strong><em><mark style=\"background-color:rgba(0, 0, 0, 0);color:#215f9a\" class=\"has-inline-color\">[LINK]<\/mark><\/em><\/strong><\/a><\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-3 wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-video\"><video controls src=\"http:\/\/louis.rotech.nz\/wp-content\/uploads\/2025\/07\/Mario-Video.mp4\"><\/video><\/figure>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"http:\/\/louis.rotech.nz\/wp-content\/uploads\/2025\/07\/Pokemon-Video.mp4\"><\/video><\/figure>\n<\/div>\n\n\n\n<div style=\"height:0px\" aria-hidden=\"true\" class=\"wp-block-spacer wp-container-content-1\"><\/div>\n\n\n\n<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-5 wp-block-group-is-layout-flex\">\n<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-4 wp-block-group-is-layout-flex\">\n<p><strong><em>Weld gap detection algorithm in Python<\/em><\/strong><\/p>\n\n\n\n<p>I worked in a team to develop a computer vision algorithm in Python to detect weld gap positions in spiral weld pipes (which would then assist in automating pipe welding procedures).<\/p>\n\n\n\n<p>Computer vision techniques used include cropping, applying greyscale, thresholding, gaussian blur, truncation, linear mapping, inverting, morphological opening and closing, and edge detection.<\/p>\n\n\n\n<p>GitHub Link: <a href=\"https:\/\/github.com\/llee789\/MECHENG-709-CV-Assignment.git\"><strong><em><mark style=\"background-color:rgba(0, 0, 0, 0);color:#215f9a\" class=\"has-inline-color\">[LINK]<\/mark><\/em><\/strong><\/a><\/p>\n<\/div>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-2 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"831\" height=\"140\" src=\"http:\/\/louis.rotech.nz\/wp-content\/uploads\/2025\/07\/Weld-Gap-Example-Interim-Result-1.jpg\" alt=\"\" class=\"wp-image-85\" srcset=\"http:\/\/louis.rotech.nz\/wp-content\/uploads\/2025\/07\/Weld-Gap-Example-Interim-Result-1.jpg 831w, http:\/\/louis.rotech.nz\/wp-content\/uploads\/2025\/07\/Weld-Gap-Example-Interim-Result-1-300x51.jpg 300w, http:\/\/louis.rotech.nz\/wp-content\/uploads\/2025\/07\/Weld-Gap-Example-Interim-Result-1-768x129.jpg 768w\" sizes=\"auto, (max-width: 831px) 100vw, 831px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"831\" height=\"140\" src=\"http:\/\/louis.rotech.nz\/wp-content\/uploads\/2025\/07\/Weld-Gap-Example-Interim-Result-2.jpg\" alt=\"\" class=\"wp-image-86\" srcset=\"http:\/\/louis.rotech.nz\/wp-content\/uploads\/2025\/07\/Weld-Gap-Example-Interim-Result-2.jpg 831w, http:\/\/louis.rotech.nz\/wp-content\/uploads\/2025\/07\/Weld-Gap-Example-Interim-Result-2-300x51.jpg 300w, http:\/\/louis.rotech.nz\/wp-content\/uploads\/2025\/07\/Weld-Gap-Example-Interim-Result-2-768x129.jpg 768w\" sizes=\"auto, (max-width: 831px) 100vw, 831px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"831\" height=\"140\" src=\"http:\/\/louis.rotech.nz\/wp-content\/uploads\/2025\/07\/Weld-Gap-Example-Interim-Result-3.jpg\" alt=\"\" class=\"wp-image-87\" srcset=\"http:\/\/louis.rotech.nz\/wp-content\/uploads\/2025\/07\/Weld-Gap-Example-Interim-Result-3.jpg 831w, http:\/\/louis.rotech.nz\/wp-content\/uploads\/2025\/07\/Weld-Gap-Example-Interim-Result-3-300x51.jpg 300w, http:\/\/louis.rotech.nz\/wp-content\/uploads\/2025\/07\/Weld-Gap-Example-Interim-Result-3-768x129.jpg 768w\" sizes=\"auto, (max-width: 831px) 100vw, 831px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"831\" height=\"140\" src=\"http:\/\/louis.rotech.nz\/wp-content\/uploads\/2025\/07\/Weld-Gap-Example-Final-Position.jpg\" alt=\"\" class=\"wp-image-84\" srcset=\"http:\/\/louis.rotech.nz\/wp-content\/uploads\/2025\/07\/Weld-Gap-Example-Final-Position.jpg 831w, http:\/\/louis.rotech.nz\/wp-content\/uploads\/2025\/07\/Weld-Gap-Example-Final-Position-300x51.jpg 300w, http:\/\/louis.rotech.nz\/wp-content\/uploads\/2025\/07\/Weld-Gap-Example-Final-Position-768x129.jpg 768w\" sizes=\"auto, (max-width: 831px) 100vw, 831px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"455\" src=\"http:\/\/louis.rotech.nz\/wp-content\/uploads\/2025\/07\/Weld-Gap-Example-Original-1024x455.jpg\" alt=\"\" class=\"wp-image-88\" srcset=\"http:\/\/louis.rotech.nz\/wp-content\/uploads\/2025\/07\/Weld-Gap-Example-Original-1024x455.jpg 1024w, http:\/\/louis.rotech.nz\/wp-content\/uploads\/2025\/07\/Weld-Gap-Example-Original-300x133.jpg 300w, http:\/\/louis.rotech.nz\/wp-content\/uploads\/2025\/07\/Weld-Gap-Example-Original-768x342.jpg 768w, http:\/\/louis.rotech.nz\/wp-content\/uploads\/2025\/07\/Weld-Gap-Example-Original-1536x683.jpg 1536w, http:\/\/louis.rotech.nz\/wp-content\/uploads\/2025\/07\/Weld-Gap-Example-Original-2048x911.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/figure>\n<\/div>\n\n\n\n<div style=\"height:0px\" aria-hidden=\"true\" class=\"wp-block-spacer wp-container-content-2\"><\/div>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-7 wp-block-group-is-layout-flex\">\n<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-6 wp-block-group-is-layout-flex\">\n<p><strong><em>Building a 4-wheeled robot for performing tasks<\/em><\/strong><\/p>\n\n\n\n<p>I worked in a team to build a 4-wheeled robot to perform a ground tilling task (building a robot to move across a large area without missing spots). This involved using ultrasonic and IR sensors, gyroscopes and Mechanum wheels, as well as encoding appropriate control logic into an Arduino Uno, including PID for maintaining straight robot movement and accurate rotation amounts, to achieve the desired robot behaviour.<\/p>\n\n\n\n<p>We also used built the robot to perform a fire-fighting operation, by using additional sensors such as phototransitors to detect heat spots in an arena and activating a fan mounted on a rotating servo to track and blow out the fire, and encoding behavioural control as a finite state machine for avoiding obstacles and setting up the fire-fighting decision-making behaviour.<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"http:\/\/louis.rotech.nz\/wp-content\/uploads\/2025\/07\/Tilling-Robot-Video-Short-2x-Sped-Up-Muted.mp4\"><\/video><\/figure>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>I worked on various different projects throughout my undergraduate. Here are a few notable ones: Teaching agents to play video games I created an expert agent capable of playing Super Mario Land, by creating a perception system (from which the agent obtains key components for understanding the game state), and a behavioural control system for [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-68","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"http:\/\/louis.rotech.nz\/index.php?rest_route=\/wp\/v2\/pages\/68","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/louis.rotech.nz\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/louis.rotech.nz\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/louis.rotech.nz\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/louis.rotech.nz\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=68"}],"version-history":[{"count":20,"href":"http:\/\/louis.rotech.nz\/index.php?rest_route=\/wp\/v2\/pages\/68\/revisions"}],"predecessor-version":[{"id":184,"href":"http:\/\/louis.rotech.nz\/index.php?rest_route=\/wp\/v2\/pages\/68\/revisions\/184"}],"wp:attachment":[{"href":"http:\/\/louis.rotech.nz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=68"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}