Robert A. MacLachlan

6616 Dalzell Place
Pittsburgh, PA 15217
ram@ri.cmu.edu
412-445-8113 (cellphone)
412-521-0846 (home)
http://www.cs.cmu.edu/~ram


Mission:
To develop innovative research systems that address meaningful problems where a practical solution  would lead to either a beneficial technology or the advancement of science.  My idea of fun is to work on a problem that no one knows how to solve, a problem where I can apply my broad knowledge, my intuition and my persistence.
Specialties:
Proficiencies:
Matlab (simulink, control systems and signal processing toolboxes), electronic prototyping and troubleshooting, machine shop skills, Spice, PC board CAD (P-CAD), Verilog FPGA synthesis, Programming in C++, assembler, Java and many other languages. Implementation of hardware and software for embedded microcontrollers (AVR, PIC.) Development of embedded PC software under VXworks and Linux.  I am also skilled at technical writing and technical consensus-building in multi-institution projects where collaborators have differing goals and incompatible favored approaches.
Education:
Carnegie Mellon University, Pittsburgh, Pennsylvania: B.S. in Applied Mathematics (Computer Science), 1987. Since graduation I have taken courses in sensor technology, control systems and analog IC design, and also attended the IEEE EMBS summer school for Biomedical Instrumentation in 2002.
Experience:
I have 22 years experience implementing research ideas as high-quality software.  I have also designed and constructed entire electronic systems, including assignment of functions to hardware or software, hardware design, prototype fabrication, and development of software and control algorithms.
 
I have been on the technical staff at Carnegie Mellon University for my entire professional career (since 1983.) My title at CMU has been "project supervisor" since 1993. My responsiblities have included technical management of small project teams as well as technical design/implementation.
2006-present:
Working in the Medical Instrumentation Lab, primarily on the Micron stabilized microsurgical instrument.
2001-2006:
Designed and built control electronics and software for automation of the NAVLAB 11 autonomous jeep. This is a safety critical system which controls the steering, throttle and brake. Created three microcontroller subsystems with associated analog and digital interface electronics and power drivers. Participated in the electro-mechanical aspects of actuator design such as motor selection. Designed and constructed the safety subsystem which is responsible for safely returning the vehicle to manual control in event of a hardware fault or software malfunction. Developed interface to acquire high-resolution 4-wheel odometry. Created software to determine the position and orientation of a vehicle using inputs from inertial sensors, odometry and GPS.
2003-2006:
Created tracking software for the Bus Side Collision Warning System project that uses laser scanner data to estimate the motion of vehicles and pedestrians.
2003:
Developed hardware and software for multi-channel capacitive proximity sensor with 10 atto-Farad sensitivity intended for use in as a low-cost people detector for collision warning systems on cars and buses. I developed this sensor on my own time as a demonstration of my hardware design skills.
Fall 2001:
Implemented a map-based navigation module using a Markov Chain Monte-Carlo approach (particle filter) which can determine the position of a vehicle using road or elevation map data. This was designed to run on a memory-limited VxWorks embedded target.
Created software to track targets in the extremely noisy output of a prototype automotive radar using a Kalman filter and statistical signal detection.
Fall 1999-Fall 2001:
Carnegie Mellon University, Robotics Institute. Technical staff for the Tactical Mobile Robotics project. Contributed to the successful development and demonstration of a complete mobile robot system by developing mobile robot software and hardware. My main contributions were navigation, motion planning and software integration.
Summer 1997-Fall 1998:
Carnegie Mellon University, Computer Science Department. Technical staff for the Gwydion Project. A developer of the Sheets Hypercode environment for Java written in Java. Major contributions were the support for history browsing, revision control and undo.
Summer 1993 - Spring 1997:
Developed the concept of Hypercode and designed frameworks to manipulate it. Worked on proposals and gave presentations in support of Gwydion project funding. Co-designed and was an implementor for d2c, a Dylan-to-C compiler written in Dylan and compiled with itself.
1988-1993:
Carnegie Mellon University, Computer Science Department. Senior Research Programmer. Design and implementation of the Python compiler for CMU Common Lisp. Revision of the CMU CL runtime for portability, performance and ANSI compliance. Wrote several chapters in the User's manual, and was the overall editor.
1983-1987:
Carnegie Mellon University, Computer Science Department. Research Programmer for the Spice Lisp project. Primary developer of the Hemlock editor and Common Lisp programming environment. Contributed to the design and standardization of Common Lisp, which was a collaboration between many diverse academic and industrial partners.
Prior to 1983:
Carnegie Mellon University, Computer Science Department. Part time programmer for the Spice project.
Representative publications: