Lab 8: Forward Kinematics

Lead TAs: Joey Gannon, Seunghwan Hong, Jason Winters


The goal of this lab, and the next lab, is to introduce you to some of the mathematics in planning motion for arms and snake robots.


P. J. McKerrow, Introduction to Robotics, pp175-200.

Challenge Statement:

Step 1:
Build a 2 degree of freedom, planar, jointed (i.e. not Cartesian) robot arm with angle feedback at both joints and mount a marker to the end. You may use potentiometers or the rotational encoders. Servos are NOT allowed for arm movement since they have feedback already builtin. You may optionally add a third degree of freedom by using a motor or servo (here its OK to use one) to raise and lower the marker, instead of the TA doing it manually.
The requirements page lists all of the measurements you will need.

Step 2:
Write software functions that can take as input Theta 1 (shoulder angle) and Theta 2 (elbow angle) from the keyboard (note that this will be called multiple times at the demo to input several sets of angles). I would suggest using floats or doubles to store the angle values, if only because it is good practice not to limit yourself to the discretezation introduced by ints. If you motorize your marker, also add a third function that causes the arm to mark the paper and immediately retract the marker; you'll need this during evaluation.

Step 3:
Use these functions in a program that does the following:

  • Takes Theta1 and Theta2 angle inputs through the keyboard.
  • Waits for start button to be pressed to begin.
  • Drives arm to the inputted point.
  • Waits so user can manually press marker down to make a dot. If you have added the 3rd DOF by motorizing the pen, you can replace this step with "automatically presses marker down, then retracts marker".
  • Take new Theta1 and Theta2 angle inputs and drive arm to next point, WITHOUT ZEROING THE ARM, wait (or mark), etc.

Positions of the points

  • All points will be within the range of motion of the two links.

Initial Arm Position

Arm Angles


Demonstrate that your robot can place a dot at the points from the table in the grading sheet. We'll also have a set of points at the evaluation that you haven't seen before, and will ask you to move your arm to them via the functions you wrote in Step 2. You have reached the point successfully if you are within 1/4" of the destination. You will get partial credit if you are between 1/4" and 1/2" of the destination. If you have a significant amount of error, being able to explain what the problem is may help you (hey, it can't hurt :).

See the Grading Sheet for more details on scoring.

Construction Tips:

Things to think about: