picture of myself

About Me

Iím a high school senior who enjoys programming and robotics.

Iím passionate about computer science and its applications. More specifically, I enjoy writing algorithms and low level programming (im a big fan of c++!). I enjoy programming the nitty gritty aspects of a project. For example, writing code to handshake and synchronize communication over serial or radios. I always find it so exciting to put the concepts of calculus, physics, or even cs algorithms to practical use.

Computer science is a concrete bridge between abstract concepts and ideas and their practical applications. Generally, robotics gives the most tangible representation of these concepts by directly linking cs with the physical world.

Computer science is finding its way into almost all fields in an increasingly technology driven society, and I want to help bridge the gap to non-invasively make everyone's lives easier. CS is such a powerful tool, and I genuinely believe its a skillset that can help everyone. Thatís why I dedicate so much of my time teaching programming to kids from elementary, to highschool.


Projects

AWS Zero Robotics auto-simulator
AWS - s3, route 53, python lambda function, api, and SES for automated ZR simulations
Zero Robotics - ISS
Second Place internationally - Neural Networks, State Machines, Path Planning and Physics
Created custom control system from scratch
a control system which includes a large circuit for buttons, switches, knobs, screens etc. all wired to multiple arduinos and raspberry piís which communicated with each other.
Stronghold Championship robot
Final Round of International FRC tournament - Pneumatic catapult shooter with autonomous vision targeting
Implemented object targeting w/ OpenCV on NVIDIA Jetson
Pick up object with OpenCV vision recognition linked with network tables.
1d and 2d rotational lidar interface with RoboRio
A Library to interface with either 2d or 1d lidar with the RoboRio
ROS Turtlebot maze navigation
Turtlebot navigation of maze using AMCL and SLAM with ROS
IR reflector tracker
An IR camera surrounded by IR LEDs to track a Universal Studios Harry Potter World Wand. Ultimately to turn off and on lights(not yet implemented)
Washing machine alert system
Vibration sensor that tracks when the washing machine is done and alerts your phone
This website!
This website was designed and created entirely from scratch
Wrote novel localization using vision and lidar with ROS
Used ROS to estimate robot position using lidar with linear regression and novel vision estimation algorithm. (Click to see code on Github)

Zero Robotics ISS finals - 2nd place (2017) & 4th place (2019)

Djikstras Algorithm

Djikstras algorithm used for path planning. Debris approximated using polygons and vertices used as nodes for djikstras. Other attempts used gridded nodes.

Weights for paths determined by estimated time to reach destination node, and damage paths would pose on SPHERE

Physics and math

Physics and Linear Algebra to move and rotate SPHERE in space. Use of quaternions and/or Euler angles for 3D rotation.

In hooking phase, relative translational and rotational velocities maintained to reduce imparted forces.

Machine Learning

Neural network used to determine optimal PID values based on distance to move

State Machines

States and transitions to control the flow of the program. Transition from each phase of the game to complete tasks and movement.


Control system made entirely from scratch

Laser printed board anodized and assembled with 80-20. Contains numerous switches sliders and buttons wired to an arduino which emulates a joystick and communicates with two raspberry pi's which take input in from the touchscreens

Zero Robotics auto simulation website using AWS

automating the Zero Robotics simulation process

checkout the talk I gave on making this portal

Overall flow diagram


Process breakdown:

Static Website - S3

Static website created as a front-end for users to set up the simulations they want to test.
Users input options such as their code, the options for simulating, the variables they want to track, and the number of times they want to simulate
These options are packed into JSON data and Javascript and Jquery is used to send an http post with the payload
This static website is uploaded to AWS S3 storage system

Now it can be accessed publicly and is stored securely on Amazon Servers

Two buckets are made for the website to be accessed.
1) the name of the website address (zr-autosim.tk)
2) the name of the website address preceded by www (www.zr-sim.tk) which points to the first bucket.

Domain name - route53

Route53 was used to redirect a domain name (with and without www.) to the website hosted on the s3 bucket.

Nameservers were used to route domain to server ip

HTTP post JSON- API gateway

The simulation request is handled by Amazons API gateway.
When the API is deployed, the gateway provides a link for the HTTP posts

The JSON data from the HTTP Post is then linked to the lambda function

Lambda Function

The lambda function is first fed the JSON data from the API.

First by weeding through the network traffic, a simple simulation was mirrored using the python requests library
Then I made a general class to run any Zero Robotics simulation

Next I used the Google sheets API and the Google drive API to create a public sheet which will fill in the results of each simulation in real time
Finally an email will be sent to the user with a link to the Google sheet

Return email - AWS SES

SES was set up to allow emails to be sent to any user with any email address.
In the lambda function boto3 was included to take advantage of the SES and send emails from thequarkcharm@gmail.com


Localization and target movement for 2019 FRC competition

ROS used to localize the robot and to drive up to the goal. Below are images of possible goals and environments.



Code breakdown:

Check out the code on Github for reference.

Lidar

Lidar data used to estimate a line in region of interest. Angle of line is used to adjust the camera (which is mounted on a servo) such that the camera is always facing the target.

Vision

OpenCV was used to find the correct markers on the target.

Novel Vision Estimation Algorithm

Using pinhole camera model, created an overdetermined system with the live data returned by OpenCV and least mean squares filter to estimate distance and offset to target.

Transforms

Simple linear algebra used to convert the transform from the camera and the target (distance and offset determined by estimator) to the transform from the robot to the target.

Move base