Image of a Tello EDU drone. Image of a drone computer vision system detecting a pattern. Image of virtual portfolio home page. Image of AlienX. Image of Minecraft. Image of path planning lines. Image of an E-ssue class page. Image of Rcar's chat feature.

Image of a Tello EDU drone blurred. Image of a Tello EDU drone.
Image of Tello EDU drones Jovan is working with blurred. Image of Tello EDU drones Jovan is working with blurred.
Image of Tello EDU drawing.

Drone Fleet

Python, OpenCV, TensorFlow, TelloSDK

Summer 2020 - Present

The Drone Fleet is a long-term project. The ultimate goal is to practice programming devices. I envision three phases: Premade, Build, and Connect.

I am currently in the Premade phase, learning and coding premade drones called Tello EDUs sold by DJI, a technology company that sells "aerial photography systems." I will utilize the swarm functionality and programmability to create a fleet that can individually perform actions, e.g., follow, elevate, etc., based on the body gestures of a designated commander through computer vision using OpenCV and TensorFlow, coded in Python.

In the Build phase, I will attempt to construct, program, and fly my own drones. I will use electronics like gyroscopes and accelerometers, and implement PIDs in order to have steady and reliable flight.

In the Connect phase, I will apply my computer vision algorithms from the Premade phase to my personally built drones, expanding on the code for any potentially new hardware components, e.g., additional sensors.

View Code

Image of a drone computer vision system detecting a pattern blurred. Image of a drone computer vision system detecting a pattern.
Image of Tello EDU drawing.

Hopfield Drone

Python, OpenCV, TelloSDK

Spring 2023

The Hopfield Drone uses Hopfield neural networks (HNNs) to implement a pattern-based computer vision system for autonomous drone flight. It demonstrates the feasibility of lightweight, accessible alternatives to current resource-intensive computer vision algorithms for real-time applications.

The general workflow involves (1) retrieving a video stream from the Tello EDU drone, (2) executing image processing to detect the pattern, (3) feeding the detected pattern into the HNN to retrieve any lost parts of the pattern (using the HNN's associative memory capabilities), (4) correlating the recognized pattern to a pre-defined drone command, and (5) sending the command to the drone.

Please feel free to check out the Hopfield Drone poster, which I presented at a biologically-inspired computing class symposium. For a more in-depth exploration, please read the Hopfield Drone paper.

View Code

Image of virtual portfolio home page blurred. Image of virtual portfolio home page.
Image of Jovan's logo.

Virtual Portfolio

HTML5, CSS3, JavaScript

Summer 2020 - Spring 2021

Wanting to compile my projects, experiences, and awards in a creative way, I decided to conceptualize, design, code, and publish my very own virtual portfolio website. What you are browsing right now is the product of that decision; I hope you like it.

Not only was this a fun project to work on, but it served as a great learning and development opportunity for me during the extended break from school I received due to COVID-19. By coding this completely from scratch, and without the use of coding frameworks or libraries, I greatly improved my HTML, CSS, and especially JavaScript skills. I branched out of my comfort zone and tried coding a JavaScript canvas animation for the first time, and I am pleased with the outcome, both with the physical product and the knowledge I have gained. I also improved my coding skills in general, commenting more often, making better use of whitespace, and focusing on code-reusability and modularity.

If you have any comments, questions, or suggestions, please feel free to reach out to me; I would love to hear from you.

View Code

Image of AlienX blurred. Image of AlienX.
Image of AlienX button design.

AlienX Robot Code

Java, WPILib

Spring 2020

AlienX was my team's robot for the FIRST Robotics Competition 2020 game, Infinite Recharge. Watch the game animation here. The objective of the game was to launch yellow balls, into a goal, climb onto a teetering bar, and spin a color wheel. As Robot Driver, I controlled AlienX's movement on the field.

AlienX required sophisticated control systems. PIDs (controlling output to meet a certain setpoint) were used to control the powercell launcher wheels' RPMs. Image processing (tracking reflective tape) was used to aim towards the goal. Spline trajectories were implemented for smoother movement during the autonomous period of the game. A sonar sensor (measures distance through sound waves) algorithm was made to automatically index the powercells in the chamber. RGB LEDs were coded to turn either red, blue, or purple signifying if the robot was correctly connected to the field. Additionally, the LEDs would toggle between red and green when launching to signify if all control systems were ready for launch (launcher wheels were up to speed, angle of launcher was at its setpoint, and chassis was turned towards the goal by image processing).

View Code

Image of commands implemented by assassin plugin blurred. Image of commands implemented by assassin plugin.
Image of a Minecraft Sword.

Minecraft Assassin Plugin

Java, Spigot API

Spring 2020

In early 2020, FIRST, an organization that hosts several robotics competitions, had officially suspended all competitions due to COVID-19. My team and I were devastated after spending almost 8 weeks working tirelessly on our robot.

With no school, and therefore no homework, and many businesses closing, leaving many jobless, my team needed a way to stay connected and keep ourselves occupied. With this, we decided to start our own team Minecraft multiplayer server. Minecraft is a sandbox video game where you can explore, gather resources, build, and fight monsters and other players.

To make the server more enjoyable for those who got bored of standard Minecraft, I decided to create a plugin that allowed people to place public bounties and hire assassins to take out specific targets for in-game monetary rewards. This added a thrilling factor to the game for when someone hired an assassin, it would simply announce to everyone "A new assassination contract has been activated! Watch out." without disclosing who the target was. The paranoia created a new level of excitement for everyone keeping our server alive.

View Code

Image of path planning lines blurred. Image of path planning lines.
Image of generic path arrows.

Path Following Code

Java, WPILib, Pathfinder

Winter 2019

In order to be better prepared for the upcoming robotics season, I took the initiative of bringing a team robot home with me over winter break and programmed it in my garage.

The objective was to integrate autonomous path following where one can draw trajectories on a map of the field and have the robot automatically follow that path based on auto-generated kinematic values. These values would consist of an x and y position relative to the bottom left of the field map, position, instantaneous velocity, and instantaneous acceleration values of the robot, and heading in radians. To ensure the robot was consistent with these values, encoders were mounted on the wheels of the robot to measure the number of wheel revolutions and therefore be able to tell its position, velocity, or acceleration. A gyro was also used to determine the robot's heading.

I was successful in implementing autonomous path following, and was able to essentially program a set of commands that would place two game pieces in the goals where most teams' robots could only place one.

View Code

Image of E-ssue home page blurred. Image of E-ssue home page.
Image of a E-ssue's logo.

E-ssue

HTML5, CSS3, JavaScript, PHP, MySQL

Summer 2019

E-ssue was a web application designed to manage the issuance of E-books to students. E-ssue's main feature was its ability to create different class pages for instructors to add students to, create a list of E-books, and assign those E-books to the added students. In addition, users can track students' class grades, view weekly reports of all E-books assigned, interact with E-BOT, E-ssue's custom-made artificial intelligence Q&A bot, and view a thirteen page user manual. There are also two different user interfaces to choose from to improve the user experience: tables and modals, and drag and drop.

This web application was created for the Future Business Leaders of America (FBLA) Coding and Programming Competitive Event. I ended up receiving first place in the state of Tennessee and first place in the nation as well. I designed, coded, and tested the state competition version in three days and added a week worth of additions for the national competition version.

This was the first web application I created both the front end and back end solely by myself from scratch without any code frameworks or libraries.

View Code

Image of Rcar home page blurred. Image of Rcar home page.
Image of chat feature of Rcar blurred. Image of chat feature of Rcar.
Image of Rcar logo.

Rcar

HTML5, CSS3, JavaScript, jQuery, PHP, MySQL

Spring 2019

Rcar was a web application that served as a ride-sharing service that allowed those going to the same destination or event to connect with each other, socialize, and carpool. Rcar's main feature was its group chat functionality where individuals looking to carpool could get to know each other and coordinate what time and place to be picked up at. I created a custom-built emoticons system that would allow users to select facial expressions, and a color, to send to the group chat. In order to achieve this, I developed an algorithm that would encode the selected emoticon, send that encoded emoticon to the database, and when retrieved, parse the emoticon. Other features of Rcar included a list of nearby events, a list of individuals going to nearby events that a user could possibly connect with, and a contacts list.

By promoting socializing and carpooling, Rcar would ultimately create a more closely bonded community and would help the environment by reducing car exhaust pollution.

This web application was created by myself and three other individuals for the CodeTN Competition and won second place.