Hi! My name is Maegan Tucker. I am a first year graduate student at California Institute of Technology (Caltech) in the Mechanical and Civil Engineering (MCE) PhD program. In May 2017, I graduated Summa Cum Laude from Georgia Institute of Technology with a Bachelor of Science in Mechanical Engineering. At Georgia Tech, I conducted undergraduate research designing and evaluating a powered transfemoral prosthesis as a part of both Dr. Ames' AMBER Lab and Dr. Young's EPIC Lab. During my undergraduate studies, I also conducted research for Dr. Julie Linsey and Dr. Raghu Pucha. Please read about my research and industry experiences below or contact me using any of the following methods.
My resume can also be viewed HERE or downloaded HERE
Email
Email me at mtucker@caltech.edu or tucker.maegan@gmail.com
The following are some projects that I've been involved with.
Prosthetic Foot Design 1
Design, Modeling, Machining
Prosthetic Foot Design 2
Prosthetic Design, Modeling
Metabolic Cost Experiment
Human Subject Testing, Data Analysis
S.U.R.E Research Symposium
Poster and Oral Presentation Skills
NCR Product Design
Product Design, Design for Manufacturing, Documentation
Makerspace People Counter
Data Analysis, Human Experiment
Carbon Nanotubule Analysis
MATLAB Coding, Nanotubule Analysis
Bowser Mario Kart
Hand Sketches, AutoCad, Inventor
Serial Chain Robots Program
MATLAB GUI, Forward Kinematics
Path Planning Algorithm
MATLAB GUI, Bug Algorithm
Balance Module
Product Design
Creative Interests
Photography
Experiences Timeline
Some of my academic and industrial experiences can be seen in the following timeline.
Summer 2013
GT Oxford Study Abroad
The first summer of my undergraduate career I had the amazing opportunity to explore Europe.
Summer 2014
Research Assistant for Dr. Pucha
During the Summer of 2014, I conducted research for Dr. Pucha exploring the electrical resistance and capacitance of 3D-generated Carbon Nanotubule matrices.
Fall 2014
NCR Co-op Term 1
My first co-op semester with NCR focused on product design in which I contributed to the beginning stage of a new Point of Sale (POS) terminal. I addressed the project deliverables and created several design concepts to help create viable designs.
Spring 2015
GT Lorraine Study Abroad
Study abroad experience at GT's satellite campus in Lorraine, France
Summer 2015
NCR Co-op Term 2
During my second semester co-oping at NCR I facilitated prototype builds and product testing. I worked closely with a team of three electrical engineers, 2 mechanical engineers, and 2 lab technicians to build, test, and optimize 3 different POS terminals being developed.
Fall 2015
IDREEM Lab
During the Fall 2015 semester, I was a Research Assistant for Dr. Linsey's IDREEM Lab exploring idea generation and the effect of makerspaces on student efficacy and success.
Spring 2016
NCR Co-op Term 3
My third co-op semester at NCR was focused on releasing three new POS terminals. This included lots of testing and documentation.
Summer 2016-December 2016
AMBER Lab
As a member of the Georgia Tech S.U.R.E. Program, I worked in Dr. Ames' AMBER Lab investigating the implementation of bipedal robotic controllers on a prosthetic device to obtain safe, stable, efficient walking.
December 2016-September 2017
EPIC Lab
After the AMBER Lab moved to Caltech, I continued working with Dr. Young and officially joined his new lab, the EPIC lab. I obtained my own funding through the Georgia Tech President's Undergraduate Research Award (PURA). For my research project, I assisted in machining a new lower limb prosthesis. After graduating from Georgia Tech in May 2017, I continued conducting research with the lab over the summer and contributed to developing and implementing an impedance-based controller on the device.
September 2017-Current
Caltech / AMBER Lab
I am currently a graduate student in the Caltech Mechanical Engineering PhD program as a part of the Mechanical and Civil Engineering (MCE) department. I am a member of the AMBER Lab under the advisement of Dr. Aaron Ames.
To Be
Continued!
Prosthetic Foot Design 1
Design to allow for Multi-Contact Walking
The first prosthetic foot I designed aimed to enable multi-contact 3D prosthetic walking. There were three primary design changes.
1. Side Profile
The profile of the new design is shaped in a way that will allow for toe/ground contact throughout the toe-roll during push-off. This enables for a higher torque push off and thus has the potential to decrease metabolic cost. The new design can be seen in the top image, the old design can be seen in the bottom image.
2. Top Profile
The contoured shape of the new design allows the foot to be placed inside of a sneaker. The new design also includes features to secure the force sensor voltage converter boards.The new design can be seen in the top image, the old design can be seen in the bottom image.
3. Force Sensor Mounting Features
The bottom of the new design includes features to mount flat force sensors. These force sensors allow the prosthetic to sense which phase of the gait it is in (stance verse swing). The new design can be seen in the top image, the old design can be seen in the bottom image.
In order to machine the new prosthetic foot I became certified to use the Georgia Tech Machining mall.
Date: Summer 2016
Category: Prosthetic Design
Prosthetic Foot Design for Energy Capture
Design to allow for energy capture throughout the walking gate
A second design was created to enable energy to be captured during the heel strike phase of the walking gait and then transfered into energy during toe push off. The design objectives for this new foot were the following:
Low profile to avoid adding height to AMPRO3
Use of a spring to add compliance and to capture energy
A toe that can pivot to maintain contact with the ground during the "push-off” phase of the walking gait
Designs that are easy to manufacture and low cost
Curved heel to assist in the heel contact phase of the walking gait
The old design can be seen below.
Date: Summer 2016
Category: Prosthetic Design
Human Metabolic Cost Expenditure Experiment
To compare the cost of transportation for different forms of prosthetic walking (flat-foot versus multi-contact) I designed and ran a preliminary human metabolic expenditure experiment.
The results of the preliminary experiment can be seen below. The data indicates that the gate controller for multi-contact walking is not yet optimized due to it's decreased performance compared to flat foot walking. The data is not representative of subjects with an amputation either since the test subject was able-bodied using a bi-pass.
Date: Summer 2016
Category: Human Subject Testing
S.U.R.E Research Symposium
I gave both a poster and oral presentation showcasing my research progress made as a part of the Summer Undergraduate Research Experience (S.U.R.E.). This summer research program was a paid reserach position funded by sponsers including Intel and NSF. Among all 40 people that participated in the summer research program I won 1st place for "Best Overall Presentation". Images from the event can be seen below.
My poster on "Evaluating the mechanical design of a transfemoral powered prosthesis through metabolic cost" can be seen HERE
Date: Summer 2016
Category: Research Presentation
NCR Corporation Co-op
I completed the co-operative program with NCR Corporation. This program was comprised of three semesters of full-time work as a Mechanical Engineering co-op mainly working in product design.
I worked closely with a team of 2 Mechanical Engineers and 3 Electrical Engineers. As a part of the engineering team, I also completed many smaller projects and tasks including electrical technical work such as soldering and creating cables, part modification using machining equipment, creating manufacturing and customer documents, and certification testing.
The main design project that I worked on was the design, prototyping, testing, and manufacturing of the P1535/P1235 Point of Sale Terminals. Images of this product can be seen below.
I worked as a part of the IDREEM lab to investigate the amount of students who used the Georgia Tech Makerspace as part of a longitudinal study.
I contributed to the research project by collecting data about the amount of students who used the 3D printer room at the Georgia Tech Invention Studio. I also analyzed this data and helped create a "people counter" system to use a security camera to automatically count the amount of students who used the room.
Date: Fall 2015
Category: Human Subject Testing, Data Collection, Data Analysis
Carbon Nanotube (CNT)/Polymer Nanocomposite
Under the guidance of Dr. Pucha, I contributed to creating and verifying a MATLAB code that analytically creates a Carbon Nanotube Matrix and uses various known nanocomposite properties to calculate the material resistance and capacitance of the randomly generated sample. The diagram of the code can be seen below.
Over the course of a summer semester, I modified the code to correctly calculate the electrical capacitance of the CNT matricies as well as fix errors in the code logic. The comparison of the old and new code outputs can be seen below.
Date: Summer 2014
Category: MATLAB Coding, Electrical Resistance and Capacitance Calculations, Nanocomposite Research
3D Creation of Bowser's Mario Kart
Introduction to Engineering Graphics and Visualization Final Project
This complete 3D model was created by me and a team of 3 other Georgia Tech Students. First each part was designed using technical hand sketches. Then these sketches were converted into 2D drawings using AutoCad. These 2D sketches were then transformed into 3D models using Inventor. After all of the parts were created, they were then assembled and properly constrained.
The following images show the design process for one of the parts. This part was the head frame for the Mario Kart.
Hand Sketch
2D AutoCad Drawing
3D Inventor Model
Some final assembly model drawings and renderings can be seen below.
Date: Spring 2013
Category: Technical Hand Sketches, 2D Drawing, 3D Modeling, Assembly Modeling
Visualizing Serial Chain Robots Using Denavit-Hartenberg Parameters in a MATLAB GUI
This project was my final project for the Caltech robotics course, ME 133a.
Denavit-Hartenberg parameters are commonly used to define robotic mechanisms. The parameters follow a strict set of rules that specify the location and orientation of each link frame for a rigid robotic device. Each frame corresponds to one of the joint axes. Once the Denavit-Hartenberg (D-H) parameters are defined, the transformation between each frame can be calculated using the D-H parameters. The forward kinematics of the mechanism can then be calculated using all of the frame transformations. The Guided User Interface (GUI) outlined in this report visualizes a robot as defined by its D-H parameters and calculates the forward kinematics and spatial manipulator Jacobian of the robot given the final joint variables.
Project Summary
The main outcome of this project is a kinematics abd visualization software. The inputs of the software are the Denavit-Hartenberg parameteres as defined by the user. Then using these Denavit-Hartenberg parameters, the software creates a visual representation of the specified robot and calculates the forward kinematics and spatial manipulator Jacobian. A figure of the initial GUI screen can be seen below.
Initial GUI Output
The motivation for this project was to create a software that made it easier to visualize the relationship between Denavit-Hartenverg parameters and the associated robotic mechanism. The software can also be used to erify the validity of Denavit-Hartenberg parameters derived for a specific robot with known geometry. The software also makes it faster to obtain the forward kinematics and spatial manipulator Jacobian for different final configurations of robotic mechanisms.
The scope of this project covers Denavit-Hartenberg parameters, the modified transformmation matrix, forward kinematics, and the spatial manipulator Jacobian. These principles are implemented into software using MATLAB and guided user interface.
Project Details
The visualization of the robotic mechanism was obtained from the transformation matrix of each frame individually. The calculation of all of the transformation matrices occurs in the subfunction "modtransform". The function uses the modified Denavit-Hartenberg frame transformation equation as shown below.
\begin{equation}
g_{i/i+1} = \begin{bmatrix}
cos{\theta_{i+1}} & -sin{\theta_{i+1}} & 0 & a_i \\
sin{\theta_{i+1}}cos{\alpha_i} & cos{\theta_{i+1}}cos{\alpha_i} & -sin{\alpha_{i}} & -d_isin{\alpha_i} \\
sin{\theta_{i+1}}sin{\alpha_i} & cos{\theta_{i+1}}sin{\alpha_i} & cos{\alpha_{i}} & d_icos{\alpha_i} \\
0 & 0 & 0 & 1
\end{bmatrix}
\end{equation}
The values for $\alpha$ and $\theta$ are both entered in degrees for ease of use with the GUI. For a robot with N Degrees of Freedom, the modtransform function would output N+1 transformation matrices. The first N transformation matrices are for each of the joint frames from the stationary frame. The last transformation matrix is the total transformation matrix from the stationary frame to the tool frame. A transformation matrix is defined in general as the following.
\begin{equation}
g_{AB} = \begin{bmatrix}
R_{AB} & \overline{d_{AB}} \\
\overline{0}^T & 1
\end{bmatrix}
\end{equation}
Thus, for the $i^{th}$ transformation matrix of the first N transformation matrices, the transformation matrix gives us the location and orientation of the $i^{th}$ frame. The location of the frame is given by $\overline{d_{AB}}$ and the rotation of the frame coordinates are given by the columns of $R_{AB}$ where each column is a vector for each frame coordinate.
Forward Kinematics
The forward kinematics of the entire mechanism was calculated using the transformation matrix of each frame as shown in the following equation.
\begin{equation}
g_{st}(\theta) = g_{l_0l_1}(\theta_1)g_{l_1l_2}(\theta_2) \dots g_{l_5l_6}(\theta_6)g_{l_6l_t}
\end{equation}
For the purposes of this software, the tool frame was assumed to be the same as the last frame.This multiplication results in a final matrix as shown below.
\begin{equation}
g_{st} = \begin{bmatrix}
R_{st} & \overline{d_{st}} \\
\overline{0}^T & 1
\end{bmatrix}
\end{equation}
Where $R_{st}$ is the rotation matrix of the tool frame coordinates from the stationary frame coordinates and $\overline{d_{st}}$ is the displacement of the tool frame from the stationary frame. This matrix was output to the GUI in the "Forward Kinematics" panel. The user can vary the inputs for the joint variables and analyze how each change in joint variable effects the forward kinematics of the entire mechanism. The forward kinematics can be verified in the following software screenshot.
Verification of Forward Kinematics of SCARA manipulator at Zero Position
The forward kinematics indicates that the tool frame has zero rotation and a displacement of 15 units in the x-direction, 0 in the y-direction, and 13 in the z-direction.This results can be visually verified from the visual representation of the manipulator.
Spatial Manipulator Jacobian
The spatial manipulator Jacobian illustrates the twist for each joint axis in the mechanism. The $i^{th}$ column of the Jacobian corresponds to the $i^{th}$ joint axis twist. For a revolute joint, the joint twist was calculated as follows.
\begin{equation}
\xi_i = \begin{bmatrix}
-\omega_i \times q_i \\
\omega_i
\end{bmatrix}
\end{equation}
Where $\omega_i$ is the direction of the $i^{th}$ joint axis and $q_i$ is the location of the $i^{th}$ joint frame from the stationary frame. Both $\omega_i$ and $q_i$ are in reference to the stationary frame.
For a prismatic joint, since the pitch of the joint is infinite, the joint twist is calculated as follows.
\begin{equation}
\xi_i = \begin{bmatrix}
\omega_i \\
\overline{0}
\end{bmatrix}
\end{equation}
The Jacobian for the entire mechanism is output to the GUI in the "Spatial Manipulator Jacobian" panel. This output also allows users to investigate how different joint parameters influence the Jacobian.
Example 1: Elbow Manipulator
The first example of a robotic mechanism is the Elbow Manipulator. A diagram of this device, can be seen in the following figure. All of the following mechanisms were based off of robotic mechanisms discussed in "A Mathematical Introduction to Robotic Manipulation" [1].
Elbow Manipulator at Zero Position
This same mechanism can be illustrated using the software by inputing the Denavit-Hartenberg parameters of the elbow manipulator shown in the diagram. The screenshot of the output of the software can be seen in the figure below.
Elbow Manipulator at Zero Position
The joint variables can be adjusted for each frame to explore the forward kinematics and spatial manipulator Jacobian. A screenshot of the output of the software for a specific variation of the joint variables can be seen in the following figure.
Elbow Manipulator for Arbitrary Joint Variables
Example 2: SCARA Manipulator
Another example of a robotic mechanism is the SCARA Manipulator. The following figure shows a diagram of this mechanism (MLS,p.88).
The output of the software for the SCARA manipulator D-H parameters can be seen in the figure below.
SCARA Manipulator at Zero Position
The constant parameters for the scara manipulator in the software, corresponding to the variables in the diagram, are $l_1$=5, $l_2$=10, $l_0$=13. In the digram of the SCARA manipulator, the robot clearly has a horizontal connection between joint axes 1 and 2 with a vertical offset between frames. However, the software has no way of knowing the geometry of the links connecting joint frames, and thus the software connects the frames with a straight line. This is one drawback of using visualization software. However, the kinematics of the mechanism will still be the same regardless of the connecting link geometry.
A variation of the SCARA manipulator can be seen in the following figure for arbitrary joint variables.
SCARA Manipulator for Arbitrary Joint Variables
The SCARA manipulator demonstrates the use of a prismatic joint in a robotic mechanism and how that influences the Jacobian.
Stanford Manipulator
A third example of a robotic mechanism is the Stanford Manipulator, shown in Figure 8 (MLS, p.119).
Stanford Manipulator at Zero Position
The output of the software for the Standford Manipulator and its corresponding D-H parameters can be seen in the figure below.
GUI Stanford Manipulator at Zero Position
The constant parameters for the Stanford manipulator in the software, corresponding to the variables in the diagram, are $l_0$=10 and $l_1$=5. A variation of the Stanford manipulator can be seen in the figure below for arbitrary joint variables.
Stanford Manipulator for Arbitrary Joint Variables
In this specific example, $\theta_1=30^{\circ}$, $\theta_2=-20^{\circ}$, $\theta_3=5$ (displacement in d), $\theta_4=-30^{\circ}$, $\theta_5=40^{\circ}$. Each of these joint variables defines the change in joint angle (or displacement for prismatic joints) from the defined zero position.
Take-Away
Overall, this software provides a graphical representation of robotic mechanisms and illustrates how Denavit-Hartenberg parameters influence the geometry of robot mechanism as well as the forward kinematics and spatial manipulator Jacobian. It also demonstrates how changes to the mechanism's joint variables changes the location and orientation of the tool frame as well as the Jacobian. Future iterations of the software could include adding more options for types of joints as well as implementing inverse kinematics.
\begin{equation}
h = d(x,O_i) + d(O_i,q_{goal})
\end{equation}
where $O_i$ is an edge point of a continuous segment of an obstacle as obtained from LIDAR data. A visual representation of these endpoints can be seen below.
References
[1] R. M. Murray, Z. Li, and S. S. Sastry, \A mathematical introduction to robotic manipulation," 1994.
Tangent Bug Algorithm Simulation in MATLAB
This project was my final project for the Caltech robotics course 133b.
Bug algorithms are very effective strategies for robotic path planning when the robot has a global goal but only local information about the environment is known. The benefits of bug algorithms is that the behaviors are simple and they are straightforward to implement. A disadvantage of bug algorithms is that it assumes perfect positioning and sensing. This problem could be diminished by using LIDAR data to keep track of the robots position instead of relying on wheel odometry and IMU sensors. As shown in Lab 3, odometry obtained from LIDAR data is much more accurate than wheel odometry or IMU integration.
In class, we learned about three bug algorithms: Bug I, Bug II, and Tangent Bug. For this project, I chose to implement the Tangent Bug algorithm in a MATLAB simulation environment.The Tangent Bug algorithm uses a finite range sensor to collect information about obstacles in the environment. In my simulation, the range sensor was assumed to be a LIDAR sensor. The Tangent Bug algorithm was selected because it provides the most "natural" and "intuitive" path to the goal. However, it is slightly more complicated than both Bug I and Bug II.
Project Summary
The main outcome of this project is a a graphical user interface (GUI) that demonstrates the Tangent Bug algorithm for seven different environments. Several supporting codes are used in this GUI.
The motivation for this project was to implement the Tangent Bug algorithm using LIDAR data. Even though this implementation is in a simulation environment. The algorithm does not use any information about the obstacles other than their intersection points with the simulated LIDAR beams. Thus, in theory this code could be used seamlessly with hardware to obtain the same results. However, the MATLAB simulation assumes that the robot is a point robot, so the desired [x,y] coordinates of the robot are directly commanded in simulation. In practice, an additional code would be needed to translate the desired coordinates into wheel velocities.
Project Details
The basic idea of the Tangent Bug algorithm is that it uses both motion-to-goal and boundary following behaviors to reach a desired goal. The motion-to-goal behavior is commanded as long as there is no blocking obstacle or if the blocking obstacle does not increase the heuristic distance. The heuristic distance is calculated using the following equation.
\begin{equation}
h = d(x,O_i) + d(O_i,q_{goal})
\end{equation}
where $O_i$ is an edge point of a continuous segment of an obstacle as obtained from LIDAR data. A visual representation of these endpoints can be seen below.
Intervals of Continuity
Boundary following mode is commanded when the heuristic distance increases. The bug them remains in Boundary following mode until $d_{reach} < d_{followed}$. The value $d_{followed}$ is the shortest distance between the sensed boundary and the goal. The value $d_{reach}$ is the shortest distance between the blocking obstacle and the goal.If there is no blocking obstacle, $d_{reach}$ is the distance between the robot and the goal.
A breakdown of the entire algorithm is as follows.
Motion to Goal
While the heuristic distance is decreasing or remaining the same
Compute Lidar Data
Move toward the obstacle
Terminate if the goal is reached
Boundary Following
While $d_{reach} \geq d_{followed}$
Update the Lidar data, $d_{reach}$, and $d_{followed}$
Terminate if a complete cycle is completed (goal is unreachable)
Terminate if the goal is reached
Example Environments
The Tangent Bug algorithm can be used with any environment. To best demonstrate this implementation of the algorithm, seven different environments were created and included as options in the GUI.
Conclusion
In conclusion, the Tangent Bug algorithm is an extremely effective and natural bug algorithm. It is definitely much more time effective as compared to the Bug I and Bug II algorithms. The next step for this algorithm would be to implement the MATLAB code on real hardware.
If you would like a copy of the MATLAB code, please contact me at mtucker@caltech.edu
Balance Module
The Balance Module is a patent-pending assistive device that I developed as part of a Caltech course. The device is currently being prototyped and tested at a local rehabilitation hospital. The module uses an inertial measurement unit (IMU) to detect the angle of the module, and activates a vibration motor when the position is deemed "unsafe". The module also includes a custom clamp to attach the device to a cane.
More information on this device can be seen on the website