Publications and Development for Hardware, Software, and Undergraduate Courses


Raspberry Pi Peripherals Library

I co-developed a minimalistic Raspberry Pi Peripherals library with Sarah Lichtman. This library provides a memory-mapped alternative to the traditional Wiring library, enabling PIC-like programming with direct access to bitfields. This library serves as the back bone behind a number of textbook examples in the third edition of Digital Design and Computer Architecture by Harris and Harris.


Underwater Field Robotics: The Malta Cistern Mapping Project

Towards Three-Dimensional Underwater Mapping Without Odometry
Dobke, A., Vasquez, J., Lieu, L., Chasnov, B., Clark, C., Dunn, I., Wood, Z. PDF Received by the Unmanned Untethered Submersible Technology Conference (UUST 2013).
This paper details the LatticeMap Algorithm, an algorithm developed for fitting sequential ROV sonar scans using a iterative least-squares fitting technique. Scans were taken from ancient Cisterns in Malta during the Spring of 2013. The International Computer Engineering Experience (ICEX) Program is a multi-disciplinary, multi-year project focused on the three-dimensional mapping of submerged archaeological sites. Within this program, students build upon sensor-based map-making techniques, such as particle filtering and SLAM, to construct 3D maps of underwater cisterns. The task itself combines both field robot deployments and data analysis. Ths past summer, the ICEX team collected scans from numerous cisterns in Malta to construct maps using a new scan-matching algorithm.

Underwater Field Robotics: ROV hardware additions through the CAN Bus interface

Following the most recent data-collection deployment in Malta in the Spring of 2013, I have been developing a rotating mount for performing underwater sonar scans at various angles. This mount is an independent embedded system attached to the robot underwater and driven by a software link over the ROV's CAN Bus interface.

The Combat Robotics Experimental Learning Project

Beginning in fall 2012 and concluding the following spring, the HMC combat robotics club designed and fabricated a competitve combat robot with the final goal of participating in Robogames, 2013 in San Mateo, California. From this experience, our team designed and built Robespierre, a 220 [lb]. combat robot featuring novel competitive techniques. Robespierre features several hundred components, most of which were machined by a handful of students over three months during the spring semester. Chiefly, Robespierre's fabrication represents one of the student body's proudest achievements as an entirely student-driven design project. Through a combination of research, design, fabrication, testing, and management, we have augmented motivation for pursuing a deep understanding of the process in what most of us consider to be a "side-project" apart from our school work.

A brief video demoing a spinner weapon field test
At the competition, Robespierre stood out as one of the first new competitors in years in Robogames' 220 [lb.] weight category. This project is featured in HMC's Bulletin of Experimental Learning, and progess pictures are documented on the Robespierre Webpage.


Open Source MEMs Sensor Driver Development under a ROS Framework

Developed at the Bosch Research and Technology Center
MEMs sensors offer the robotics community the benefit of their small form-factor and fairly high-precision measurements for state-estimation algorithms. Nevertheless, the protocols necessary to retrieve the data are often chip-specific, necessitating a software driver to communicate in the correct manner. Furthermore, these MEMs sensors cannot be directly connected to the computer operating the robot. Rather, they must first be connected to an embedded development board that serves as the hardware interface between raw sensor and computer. However, software drivers must also be written to interface with these boards as well. To simplify the hassle of retreiving data from these sensors and bringing it cleanly into a high-level algorithm, I developed a software framework that formed a hardware abstraction layer for these sensors under Robot Operating System (ROS). Thus, a roboticist could simply setup the physical cables to the chip, enter the hardware configuration as parameters, and retrieve fresh sensor data from the chips without needing to understand the specific protocol details needed to extract the data from these chips. The current set of C++ drivers supports two development boards, an Arduino Uno and a Sub-20, as well as three of Bosch's MEMs sensors: the BMP085 pressure sensor, the BMA180 accelerometer, and the BMC050 accelerometer/magnetometer. Maximum throughput of sensor data is limited by the latency of the computer's USB connection and currently tested at speeds up to 500 [Hz]. The entire software package can be downloaded from the bosch-ros-pkg and is currently maintained by my project advisor, Philip Roan.


Development of the framework for the Robotics Choice Lab Course

The Robotics Choice Lab course at Harvey Mudd College began in the Spring of 2012. During the prior summer, I co-developed the hardware platform and setup the first implementation of the Robot drivers in ROS. Furthermore, I developed the layout for the initial layout for the first few Lab assignments listed on the class homepage. In the following spring, I was given the chance to actually take this class. For the team final project, Jake Low and I developed a control system for the Parrot AR Drone using the angular displacements of a flat board as seen by a Kinect Depth Sensor. The final results of this project are documented in the video below and a brief writeup about the preliminary development is documented here

Redesign of the Autonomous Vehicles Course

E11: Autonomous Vehicles, is a freshmen introductory course to circuits, programming, and controls. The course features a broad introduction to software tools, such as Solidworks; embedded programming tools, such as the Arduino; and machine shop experience. Students build a robot base from a starter kit and develop software to interpret binary sequences, known as gold codes, emitted from IR emitting beacons. Following this stage, they then develop algorithms to compete in an autonomous game of capture-the-flag by programming their robots to read specific gold codes and respond by tagging beacons for points. Following the course's first run in Fall 2010, I joined a team of students under Professor Harris to redesign the course for the following year. Within this semester, we produced several revisions to streamline the course in its coming years. Namely, we redeveloped the robot starter kit, produced a second revision of the robot's printed circuit board to eliminate hardware bugs discovered in the first year, and redesigned the lab exercises to promote a better understanding of the material. Since this relaunching of the course, I have served as a member of the student teaching team for the three following years. Within this time, I have served as head tutor for two years and currently act as a lab proctor. I have written the example solutions to the programming assignments written in Arduino, and I have also independently revised the robot pcb for the course's fourth year, further reducing the number of design errors.