ENPH 353 2023 Final Report (2023)

<< click to return to front page

<< click to return to content page

Project Photos:\text{Project Photos:}




Practicing:\text{Practicing:}

  1. Project Management + Advanced Problem Solving
  1. ROS (Robot Operating System) + Gazebo Simulation
  1. Data Classification and Dataset Generation (Python)
  1. Machine Learning (Deep Learning, Convolutional Neural Networks) with Keras

Project:\text{Project:}


ENPH 353 is Engineering Physics’ second project course + competition, focused on practicing some recent techniques in machine learning and data classification. In this year’s competition, our task was to control a robot (using ROS/rospy) within the Gazebo simulation environment.

Using only information from the incoming camera feed, the robot had to autonomously drive within course limits, read the blue signs around the track, and avoid all moving obstacles.

A video of our robot was graciously posted by the UBC Engineering Physics Twitter (right). In the competition, we obtained maximum points and came 3rd overall due to time.

In the course, I:

  1. Learned how to use ROS and Gazebo
    1. configured .urdf (unified robot descriptor format) to
  1. Built a simple neural network from scratch, trained with gradient descent.
  1. Assembled a character dataset and trained a CNN to recognize license plate characters
  1. Taught a robot how to follow a line with Q-Learning (reinforcement learning)
  1. Taught a cart how to balance a pole with Deep Q-Learning

Then, for the competition, my partner Howard and I:

  1. Implemented specific masking and filtering algorithms to obtain road lines from a variety of terrain.
  1. Added motion and object detection to understand recognize when it is safe for the robot to cross the road
  1. Created a network of ROS nodes to read incoming camera data, track robot state, run CNN inference, and publish to a score tracker.
  1. Generated thousands of character samples with a high degree of augmentation to train a robust letter-recognition CNN
  1. Utilized homography and perspective transforms to obtain sign photos for inference.
  1. Built a debugging GUI in PyQt5 to view all robot sign captures, different camera frames, etc.

Here is our final report we submitted that outlines our design and architecture in detail:
























Best,

Ebrahim