Robotics
Intro to Robotics - MEAM 520
I had the opportunity to complete several projects using 3 different robotic manipulator arms while taking MEAM 520. This course was taught by Professor Katherine Kuchenbecker at the University of Pennsylvania in Fall 2016. All projects were completed in MATLAB.
Virtual Haptics
The SensAble Phantom Premium 1.0 is a parallel serial kinematic robot arm with three actuated rotational joints. "Designed to be lightweight, stiff, smooth, and easily backdrivable, this type of robotic device enables a human user to interact with a virtual environment or control the movement of a remote robot through the movement of their fingertip while simultaneously feeling force feedback."
The Phantom has a thimble at its end effector. The user places their finger in the thimble to feel forces generated by the Phantom or control the Phantom's movements.
This haptic environment consists of various surfaces and objects including a flat "wall-like" surface, a viscous friction surface, a textured surface, a button, a movable sphere, and an attractive point.
Our 3 member team designed a virtual environment that can be felt and interacted with through the Phantom. We coded various forces, including repulsive, attractive, and viscous, which were generated by the end effector of the Phantom arm. These forces generated the "feel" of the Phantom.
Virtual Environment Demo
My teammate interacts with the virtual environment using the Phantom.
Light Painting
The PUMA is a 6 DOF robotic arm consisting of an articulated manipulator and a spherical wrist. This configurations allows the PUMA to reach a large workspace with a wide range of end effector orientations. This capability made the PUMA an ideal choice for the light painting project, which requires the PUMA to traverse an arbitrary path and orientation while remaining within a plane. This project was completed in a 3 member team.
PUMA 260
The PUMA has an LED on its end effector, which when lit at the correct time and location, can produce a light painting when captured with a long exposure photograph. To accomplish this, we computed all 8 possible inverse kinematic solutions of the PUMA, which allow us translate from a location in the global frame to the 6 individual joint angles of the robot.
Using the inverse kinematic solution, an arbitrary trajectory can be translated into a sequence of joint angle commands. By combining this trajectory with a sequence of LED brightness values, we were able to draw our own desired image, which in our case was the Rubin's vase optical illusion. Watch the simulation to see this in action.
Before running our code on the real PUMA, we verified our light painting trajectory and inverse kinematic solution using a provided simulation script.
Simulation
Result
The resulting light painting did not match our expectation based on the simulation. The error is possibly due to some combination of motor imprecision, unaccounted for dynamics of the robot arm, age of the robot (it was built in the 80s), poor interpolation, inaccurate sensing, and noise, among other issues. Without reconfiguring the code's hardware or control software, the best way to mitigate this issue may have been to increase the size of the painting to decrease the impact of fixed precision errors.
So unfortunately, this light painting is definitely a vase.
Dance
Lynxmotion AL5D
The Lynx is a 5 degree of freedom RRRRR manipulator. I coded the ability to perform linear, cubic, quintic, and LSBP (Linear Segments and Parabolic Blends) trajectories. Using these trajectory interpolation methods, I choreographed a music-synched robot dance routine, tested it in a simulation, and executed the performance with the Lynx.
Choreography
The dance is defined by a set of way points through which the robot's joints pass through. Rather than hand creating a small set of way points, I devised a method to control all of the joints using the mouse positioning. I mapped the 2 dimensions of the mouse to the 5 degrees of the robot to create reasonable response to mouse movements. While this restricted the possible motions the robot could execute, it made designing a dance significantly easier and faster, while allowing more complex motions.
Performance
Expectation vs Reality:
While the simulation helped confirm the validity of the code, the Lynx's movements were shaky and jerky. This is potentially due to imprecise motors or lack of compensation for the robot's dynamics within the control system.
Sources
Phantom
Lynx
All images of the PUMA robot were obtained from Katherine Kuckenbecker's MEAM 520 lecture slides