I took many interesting courses here at Illinois that covered a wide variety of topics such as dynamics, control, modeling, computational methods, simulation, and robotics. These courses helped me learn about these topics in more detail as well as develop a lot of important skills related to these fields. Below, I will give a brief summary of the courses that I found to be most interesting and I will include any project work I have done for these courses.

Fall 2024

This courses focuses on teaching you how to make interactive computer graphics, as in images on the computer screen that are generated quickly enough to respond to user input. In order to do this the following topics are covered in detail:
  • How 3D graphics work, which includes raseterization and raytracing
  • WebGL2, which is a popular GPU API for creating interactive 3D graphics
  • Generating your own 3D geometry, with all of the underlying math and algorithms
  • Rendering, texture mapping, 3D motion, and cameras
Since the main purpose of this class is to teach you how to implement your own interactive computer graphics, the course has many challenging machine problems (MPs) to teach you the different class concepts. Some MPs would focus on the computer graphics part (like the raseterizer and raytracer MPs) while others paid more attention to the interactive part by teaching you how to use html with Javascript to take user input.
The cliffs MP where you had to generate a terrain based on the user input and texture it based on the slope.
This class proved immensely useful for me because a lot of my research work involves simulating complex physical system, and having the ability to make interactive renders of these systems helps greatly when communicating results to other people. You can take a look at the interactive renders I made of some my simulations right here!

Professor: Joohyung Kim

Fall 2021

This course was a comprehensive introduction to humanoid robotics. The course included a bi-weekly paper reviews on recent publications, lectures on humanoid robotics, assignments on a given ROBOTIS MINI kit, and a project. The course covered many topics such as kinematics, dynamics, control, legged and biped locomotion, and simulation tools. The project is usually done with the ROBOTIS MINI kit, but one team got to work with a full sized humanoid robot THORMANG. I was fortune to be a part of the team that worked on THORMANG.
Our project team posing with THORMANG.
Our project focused on figuring out how to automate household tasks using a humanoid robot. The task we focused on was picking up a cup from a table and putting it in a dish washer. This simple task involved many steps for the robot to take:
  • Use the robot camera to locate the cup in the camera image
  • Convert the camera pixel coordinates to world coordinates
  • Use the world camera to generate a path for the robot arm to grasp the cup
  • Convert the path into signals for the motors on the robot arm
The part that I worked on the most was using image processing to locate the cup in the camera image. For this I used OpenCV2 with some image processing knowledge I learned while working on Iris to create a simple but robust program that can locate the cup and publish its world position using ROS.
My code for locating the cup running on THORMANG.
You can take a look at our final project presentation to learn more. Overall, I learned a lot from this project about working with real humanoid robots from the sensors and actuators used, to the software and algorithms involved. It also improved my computer vision and ROS developement skills and helped me understand the class topics even better.
THORMANG picking a cup and placing it in a dishwasher.

Professor: Joao Ramos

Spring 2021

This course offered an depth dive into robot dynamics and control. Some of the topics it covered are:
  • Rigid robot dynamics modeling
  • Local (joint) or task space (end-effector) control strategies
  • Typical types of actuators and sensors for robots
  • Design considerations for building robots
The lectures were augmented by MATLAB simulation assignments and control labs on a Thermo Scientific CRS Arm. The course materials were designed to be done together which enhanced the learning experience, and everything culminates with the final lab project where most of the course material is applied. In the final lab, you have to program your arm to do the following tasks:
  • Implement task space PD control to make the robot follow straight lines.
  • Implement simple impedance control to allow the robot to insert a peg in a hole and move through a zig-zag path.
  • Implement feedforward control to apply a force in the range of 5-10N for 2 seconds on a real egg.
The robot arm I programmed performing the final lab project tasks successfully.
This course was an enjoyable experience, and I learned many new robotics concepts (especially in control) from it.

Spring 2020

This course was a fast-paced comprehensive introduction to robotics. The following are some of the topics it covered:
  • Mechanism design.
  • Rigid body motion & transformations.
  • Screw theory.
  • Forward, inverse and velocity Kinematics.
  • Motion Planning.
  • Sensing and Perception.
In addition to the lectures, the course had a lab component where you learned how to use ROS to control a UR3 robot arm. Along with them was final project where you used the robotics simulator CoppeliaSim to simulate a robot system performing a challenging task.
The task I decided to do was book sorting because it was a task that I do a lot but I do not find that entertaining. I made a system of robots and conveyor belts (which I called Book Worm) that sort books based on two criteria: color (which represents the topic of the book), and size (the length of the longest edge of the book). A color sorting UR3 robot separates the books based on the RGB color data from a vision sensor. It can sort any set of colored books into stacks, with a maximum of 3 stacks (3 colors) with 3 books each. Then a size sorting UR3 robot sorts the books in descending order where the largest book is placed on the bottom, based on data from two parallel opposite proximity sensors. Although the system was made for books it can be adapted to sort any rectangular prism shaped object such as packages. You can learn more about this system from the project report I wrote.
The book sorting robot system I simulated using CoppeliaSim.
This course taught me a lot of new concepts that I still use to this day such as homogeneous coordinates and transformations, forward and inverse kinematics, and particle filters. It also introduced me to new software such as OpenCV2, ROS, and CoppeliaSim.

GitHub GitHub LinkedIn LinkedIn YouTube YouTube Google Scholar Google Scholar