Simulation, Search, Visualization, and Controls
Despite being a Mechanical engineer by degree, I have a great breadth of experience in a variety of software applications. Through the process of completing a 9 course CS minor, the simulation and analysis requirements of a mechanical engineering major, and three years intensive robotics research I have acquired experience in control theory, kinematics, dynamic simulation, GUI development, search or machine learning, robotic behavioral development, computer architecture, basic vision processing, and more. This experience has spanned languages such as Python, Matlab, Java, PHP, Html, C99, C++, simplified assembly language, and Verilog HDL in order of familiarity.
Forward and Inverse Kinematic Visualizations
During my time as an undergraduate, I avidly pursued the study of manipulators and the kinematic and dynamic methods that accompany them. At left and bottom you can see pictured examples from two particular projects, one using the PUMA260 6-DOF manipulator and the other the 3-DOF Phantom haptic device. Each project was highly team based and, besides generally leading both teams' coding efforts, I was responsible for the openGL visualizations you see here (constructed entirely in matlab) and C99 optimization of the forward and inverse kinematic solutions used.
Tele-Operation of Tethered Manipulators
The final phase of the project included tethering two manipulators electronically. The Phantom haptic device would be virtually confined within a box and its movements actively damped. The movements of the Phantom are then converted to desired positions for the PUMA arm in real time. The system was used to draw on a white board with the PUMA arm.
Coursework in graduate level control theory was also an integral part of my senior undergraduate experience. The work of the course was extensive, covering topics such as frequency response, signal processing, local linearization of high order systems, reduction in degrees of freedom, interpreting and constructing root locii and bode plots, and controller discretization. The final project in the course provided an opportunity to go through the process of designing a robust position controller for a compliant pendulum with friction, dampening, and sensor noise. The response characteristics of the controller were then fully analyzed for frequency response and the stability costs of discretizing the analog prototype controller.
While performing preliminary analysis of various projects, I wrote several dynamic simulations. These included the modeling of actuated compliant members (like carbon composite spines), rockets, vertical wind turbines, and most notably: A 2D simulation of our senior design project's powered parafoil. The model included a full aerodynamic characterization of the parafoil using 150 separate CFD analyses as well as full propellar thrust and motor models.
Games and Search
As a junior, in an attempt to improve the breadth of my CS experience, I took a graduate level course in AI search and machine learning. During the course we focused on methods used by big data search organizations to discern useful information. We covered principles such as separating hyperplanes, alpha-beta minimax, hidden Markov models as applied to natural language processing, simulated annealing, and much more. The final project was self selected, for which I combined several aspects of the course. The chess player I constructed could search fully to a depth of 16 moves and a capture only depth of 22 moves in only ~10 min time. A separate Java GUI for the human player was coupled with over 2700 lines of C99 code for calculating the AI move. This code was carefully optimized to conserve memory and utilized many advanced features such as a mutagen (to keep games unique and unpredictable), and opening book, and selective move pruning from the game tree.
For three years, beginning as an undergraduate in the summer of 2009, I worked as a research assistant in the Kod*lab; a subsidiary of the G.R.A.S.P. robotics laboratory at the University of Pennsylvania. While there, I was mentored by Kevin Galloway through the process of creating X-RHex, a complete mechanical redesign of an existing platform, and proceeded to independently execute the mechanical design and development of two more platforms. The X-RHex Light and Canid robots were designed in late 2010 then reviewed and prototyped in early 2011.
GUI for Behavior Planning
While working on the Canid project, I was responsible for behavior development on the first prototype of the system. Initially all gaits were clocked open-loop gaits. In order to plan and visualize these gaits easily (specified by 24 separate parameters around ~8 of which are usually symmetric) I put together a GUI in matlab which would enable the user to modify major gait parameters while simultaneously viewing an animation of the resulting movement and full cycle toe path. The results could then easily be written through the network to a temporary file on the robot's internal CPU with the press of a button.
GUI for Set Point Editing
This work was continued later when we switch to open-loop gait development using set points. The GUI I developed for this purpose would allow users to easily drag, drop, and delete set-points as well as storing them, loading them, and writing them to the robot all form one simple interface. While dragging, the GUI would always maintain the property of monotonically increasing position with the exception of spine positions. The visual representation of the set-points was highly effective at clearly displaying different phases of the gait.
Laboratory on Legs:
An Architecture for Adjustable Morphology with Legged Robots
G. C. Haynes, Jason Pusey, Ryan Knopf, Aaron M. Johnson, and D. E. Koditschek
Proceedings of the SPIE Defense, Security, and Sensing Conference, Unmanned Systems Technology XIV (8387), April 2012.
X-RHex: A Highly Mobile Hexapedal Robot for Sensorimotor Tasks
Kevin C. Galloway, G. C. Haynes, B. Deniz Ilhan, Aaron M. Johnson, Ryan Knopf, Goran Lynch, Benjamin Plotnick, Mackenzie White, D. E. Koditschek
University of Pennsylvania Technical Report, 2010.