Archive for the ‘School Project’ Category

Tentacle Arm

This project was my senior thesis for my undergraduate degree in Computer Science at Carnegie Mellon University. I was advised by professor David S. Touretzky. I came up with a novel approach to solving inverse kinematics for high degree-of-freedom planar arms, and was responsible for all algorithm development, implementation, and maintenance. This project was the culmination of my undergraduate education: working in a team environment, stretching my abilities as a programmer, working with real-world hardware and deadlines, and assuming all responsibility for the success or failure of the project. Due to lots of hard work, the project was a success.

Inverse Kinematics + Path Planning

This is a video of a dynamically computed path. The orange objects are perceived as obstacles and the green tape is perceived as the goal location of the end effector. The inverse kinematics algorithm generated an arm configuration that avoided all obstacles and placed the end effector at the green tape. Then the path planner generated a trajectory of configurations to iterate to the generated configuration. The original video can be found here.



Manipulation

I implemented a strategy for manipulating objects in the tentacle’s environment. Unfortunately, the method of applying a contact constraint to the path planner over-constrained the search space. However, for minimally constrained environments, the algorithms successfully found a path. The original video can be found here.



Abstract

Effective control of a high degree-of-freedom [DOF] manipulator increases in computational complexity with the number of joints. A controller for a many-joint arm must include algorithms for an inverse kinematics solver, a path planner, and object manipulation strategies. These algorithms have been developed for a planar “tentacle” arm composed of eight Robotis Dynamixel AX-12 servos in series. The goal is to be able to manipulate objects in real time. With the algorithms in place, a variety of operations are demonstrated on objects of different sizes using an actual tentacle arm. The work will be incorporated into the Tekkotsu robot programming framework.

Operating Systems

During the Fall ‘07 semester, I took the Operating Systems class at Carnegie Mellon University. It was a partner project to write a full operating systems kernel from scratch that I completed with Will Constable (CMU ECE ‘09). Using simics, we designed and implemented the kernel in C to run on x86 hardware. We went from a specification document to a documented implementation by the deadline. The project was managed by source control.

We implemented all basic aspects of a kernel: managing virtual memory, forking and executing processes, managing interrupts, our own scheduler with context switching, and a basic display driver. In the end, the system had a handful of known issues, but was as robust as we could make it in the given time constraints.

A floppy image of the final system can be found here. NOTE: By downloading and flashing the image you assume all responsibility for any damage caused by the image or the data within the image. In particular, if you have hardware that requires specific OS support to handle system fans, this OS will fry your system.

Tank Hunter

Download the source here.

Tank Hunter was a personal project amongst friends that turned into a high school independent study project. I worked with my high school friends Erich Wolodzko (Stanford CS ‘09) and Eric Iverson (UIUC EE ‘09) to create a video game engine from scratch.

Looking back on the code after my undergraduate education, I see many spots for improvement, but the lessons learned were invaluable. It was my first real experience designing, developing, and iterating all pieces of a larger code-base structure. To this day, this is the furthest completed independent project I have taken on. After developing the entire system, we spent over a month hashing out bugs, redesigning the game to be more entertaining, and attempted to port it to Mac. I still show the finalized game to peers and interviewers.

Please view in-game footage here.