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!
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.
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.