Currently, this page is being used only as a means to submit my ME 115a Final Project, a graphic simulator of an elbow manipulator.
I have written a series of four Mathematica notebooks
to graphically simulate the
manipulator shown to the left (image courtesy of Murray, Li and Sastry,
"A Mathematical
Introduction to Robotic Manipulation", p.147)
The fourth notebook (which I wrote first but call it fourth for the sake of the numbering scheme), matrices.nb, establishes the SE(3) representations of coordinate transformations between very basic reference frames that I have defined and specified in the table below.
From this notebook, it is easy to pick out the points in space at the end of each link.
These appear in the last column of the appropriate product of homogeneous matrices.
The transformation from stationary frame to tool frame is most intuitively represented by a product of individual rotation or translation matrices. For the two link elbow manipulator, I define six coordinate frames.
The first notebook, first.nb, computes and draws the links of the manipulator for any specified array of theta values over an arbitrary number of time steps. In Mathematica, after these are drawn, double-clicking one of these will animate the graphic over successive time steps. Note: With the default 50 frame setting at the top of the notebook, it took about 15 seconds to render the entire animation on a Dell OptiPlex GX1p.
In first.nb, I chose the theta values such that theta1 increases at a constant rate, theta2 is zero at all times, and theta3 exhibits periodic (cosine) behavior with amplitude Pi/4. The origin is specified by the largest of the dots, the second largest dot represents the joint between link #1 and link #2, and the smallest dot represents the end-effector.
The second notebook, second.nb, is
the same as the first except all three thetas display periodic behavior. Note: The
periodicities that I chose for this example have an interesting result. One can imagine,
especially from watching a long animation, that the effector is doing a task alternately
directly below the origin and directly above the origin.
The third notebook, inverse.nb solves the inverse kinematics problem for this manipuator. In other words, given a desired position of the end-effector, xT, yT and zT, inverse.nb will find the values of theta1, theta2 and theta3 that will achieve this condition.
Note that there is not a unique solution to this equation. There are "up elbow" and "down elbow" solutions for a particular value of theta1 (=theta1*), and two corresponding solutions for theta1 = theta1* + Pi. There exist four solutions, but two are plotted in the notebook; because of symmetry it appears that only two are distinct.
Note also that there are obviously sets of (xT, yT, zT) that we cannot reach with our end-effector. If we define the length of link #1 to be "a" and the length of link #2 to be "b", then we are constrained such that
.
Further areas of study could include workspace definition, adding physical (modeled) limitation to the manipulator (so that, say, it doesn't try to travel through its supporting table), extension of the forward and inverse kinematics to more complex manipulators, and simulation of manipulator control using sensing and actuation.