Project 1

This project has two components, forward kinematics, and inverse kinematics. Both programs should be submitted once as KinematicsProject, for each group. Be sure to include the group members' names in the comments. Due date February 11, 2013.

Forward Kinematics

  1. Draw a diagram of the robotic arms we are using in class, in neutral position (as they are when they first get power). Draw the coordinate frames of each joint.
  2. On your diagram, for each link, label your four parameters \(\theta, l, d, \alpha\), including the setting of the joint \(\phi\).
  3. Write a program that takes an angle from the user for each joint, and moves the arm accordingly.
  4. The program should then print out the parameters \(\theta\), \(l\), \(d\), and \(\alpha\) for each joint.
  5. Finally, the program should print out the pose of the gripper, as an (x, y, z, roll, pitch, yaw) tuple. The origin of the reference frame should be in the center of the first joint, with the y axis running along the first link when in neutral position.
  6. If your program is run with any command-line argument, the arm should be moved. If it is run without an argument, it shouldn't try to connect (so the math can be tested without the arm swinging around).

Inverse Kinematics

For this portion, assume only servos 1, 3, and 5 can be manipulated, while 2 and 4 remain in their default position. This simplifies your arm to have one horizontal elbow, one vertical elbow, and one wrist, as well as only one possible solution for the inverse kinematics problem.

Your program should request the X, Y, Z, roll, pitch, and yaw of the tool at the end of the arm, and print out the angle of the three joints needed to reach that location and orientation.

As with the forward kinematics portion, if any command-line argument is included when run, the arm should be moved to that position.