Porfolio

Cooperative Docking Control and Priority Scheduling for Multi-Robot Energy Autonomy

The objective of this research was to demonstrate the feasibility of an autonomous docking controller for multiple robots with a singular charging station based on ROS2 that allows each robot to charge without running out of power before reaching the dock by utilizing priority scheduler that uses a fuzzy-based ranking and queuing system. For this, the following were created:

  • A fuzzy-based priority ranking and queue system that considers multiple robots, a single charger, and that uses varying initial distances and battery percentage as requirements.

  • A docking controller that allows the robots and docking manager to communicate via ROS services and topics and provides autonomous navigation to the charger and waiting areas by using AprilTags and the ROS navigation2 package.

  • A docking determination algorithm based on distance, battery percentage, and queue​ length that calculates when charging is needed.

3-DOF Planar Parallel Manipulator

The objective of this project was to design of 3-PRR Planar Parallel Robot using given constraints. The design problem was then formulated into an optimization problem to maximize the workspace while keeping the manipulator as compact as possible. An Inverse and Direct Geometric model were calculated as well as the Kinematic Jacobian Matrix. The CAD model does not include motor components but was simulated using Catia V5. distance, battery percentage, and queue​ length that calculates when charging is needed.

Autonomous Robot Docking Station

My final project for my Bachelor’s degree was to create an autonomous docking station for a Ghost Robotics Vision 60 quadruped robot. The goal was to have the robot “dock” or sit on a platform then have a charger autonomously plug into the robot. It also had to “dispatch” or perform the opposite operation of the docking sequence.

I was the team leader of a group of 6 students. My other roles included the designing and testing of the computer vision system for the charger, the ROS sequences to control the robot’s movements, and the entire electrical system.

The computer vision system uses a Raspberry Pi and PiCam to detect an ArUco marker. The Raspberry Pi then sends the correct corresponding movement directions to an Arduino Uno that controls the 3-DOF charging system. The entire system starts automatically when the robot sits on the dock and ends when the charger correctly plugs by using current sensors.

The unfinished aspects of the project include the computer vision portion for the robot to locate the dock alone. However, camera calibration and code were created.

Lane Guided RC Car

This team project had the objective of creating a lane guided RC car using a Digilent Zybo Z7 ARM/FPGA SoC Development Board and Digilent PCam 5MP camera module.

My role in the project was the computer vision aspect for the lane detection and correction. The code created used OpenCV modules to detect the lanes. An algorithm was then used to propose the optimal angle for the RC car to move in.

After testing the computer vision system, the camera was connected to the development board where PWM was used to control the wheel base.

a man riding a skateboard down the side of a ramp
a man riding a skateboard down the side of a ramp
Convolutional Neural Network

This project was to aid the team at the University of Florida in future Maritime RobotX Challenges. My task was to use a convolutional neural network (CNN) in order to detect signal buoys in conjunction with the existing ROS code. Before this project I had never worked with CNNs. In order to become competent in their use, I practiced creating CNNs for preexisting libraries of images. I then designed a CNN for buoy detection but lacked all of the necessary images. To obtain the images, I linked my code with the live feed of the simulated camera in the Gazebo simulator. A script was made to create a dataset from sampling the live feed camera data. The last part of the project was to connect the CNN with a extrapolated Gaussian images to be able to detect distance. Due to lack of time, this portion was left uncompleted and will be finished by another team member.

a man riding a skateboard down the side of a ramp
a man riding a skateboard down the side of a ramp
Moisture Control System

This project was an extension of a previously unfinished project by another engineer. The objective of the final system to regulate the moisture inside of desiccator cabinets as quickly as possible.

My role was to finish any unfinished code and redesign the valve regulation system. Due to IP concerns, I cannot disclose what products were used. However, the functionality included using a microprocessor, various sensors, and a pressure regulator. Nitrogen gas was used to decrease the moisture and the regulation was controlled by a PID controller.

IMU and Virtual Piano

Using the Out of the Box uPad microprocessor, I performed various projects with the IMU and virtual piano being the two highlights. The uPad is an academic development which includes an ATxmega128A1U.

The goal of the IMU project was the visualize acceleration and gyroscopic data from an IMU. The uPad was connected to a STM LSM330 IMU using SPI. A driver was made to be able to read and write to the IMU. Then using UART, the acceleration and gyroscopic information was sent from the uPad to my local machine where it was plotted using a GUI named SerialPlot.

The virtual piano project was to turn the keyboard of my local machine into a piano keyboard. The music was played by a speaker connected to the uPad. In order to complete the project correctly, UART, DAC, and DMA modules were used.

Line Following Robot

This project is linked to my previous role as a robot workshop teaching assistant. I assembled a TI-Robotics System Learning Kit and created all the needed code to perform line following and control of the motors.