Projects


A Simple MQTT Client/Server Scaffold

This is a basic implementation of a Mosquitto based MQTT pipeline. MQTT is a lightweight M2M protocol designed with IoT applications in mind. For example, if we want to read the state of an assembly line and trigger changes to the system, we might use an MQTT based pipeline to do this.


2D Physics Engine (Pikuma Course)

Note: all demos in this section are built using vanilla C++17 and SDL2

Impulse Collision Resolution: This demo showcases collision detection and resolution using a penetration and impulse calculation of circular objects of different masses at a different coefficients of resitution. In the showcased demo, one object is maintained in a static position (invMass = 0) while new objects are dynamically spawned in the environment, showcasing multiple simultaneous collisions. You can find the code for this specific demo in this commit.


CUNY Emerging Scholars Program (ESP): 6 DoF SCARA Robotic Arm

In 2022, as a part-time student at CUNY, I was awarded the ESP Scholarship to showcase a 6 degree-of-freedom SCARA robotic arm that could perform a simple pick-and-place action (self-studying the Angela Sodemann Robotics 1 course and kit) and writing a short paper summarizing the approach. This project was performed as a practical demonstration of linear transformations in the physical domain. The manipulator was made up of a Raspberry Pi that actuated 2 revolute servo joints and a prismatic joint (a rack-and-pinion controlled by a motor-encoder assembly).


Here is a summary of the perception and control logic:

  1. A calibration measurement is performed to determine the pixel-to-cm mapping from image plane to world coordinates
  2. A monocular camera is used to perform background subtraction to determine the location of the target in the image coordinates
  3. A transformation is then used to convert these coordinates to 3D world coordinates
  4. An inverse kinematics operation is then used to determine the requisite revolute joint angles
  5. Finally, an RPi GPIO control signal is dispatched to the servos and motor-encoder to position the marker at the target

I also put together a couple of demo videos to showcase this approach during the process of building the system.