Lab 9: Robot Arm Inverse Kinematics and Path Planning


Lead TAs: Wes Myers (wmyers@andrew), Franklin Ditzler (fgd@andrew)

Due Date: Tuesday, April 24th, 2012

Challenge Statement:

Build a 2 link RR robot arm and demonstrate inverse kinematics and path planing.

Part 1: Basic Arm Movement (No Obstacle)

  1. Build a two link robotic arm that has two revolute joints on the same plane with link lengths 3.75 inches and 2.5 inches respectively.
  2. Attach something (like a marker) to the end effector so that its position can be easily determined.
  3. Build a base in order to keep the arm fixed and place the arm in the appropriate position on the map (this will be specified by the TAs) in the reference configuration.
  4. Then, given a start and end position in cartesian coordinates (X and Y in inches) make the end effector of the arm move from the reference position to the start position. These can be entered using some input device, or they can be hard-coded
  5. Wait for the position of the end effector to be recorded and then press a button that makes to arm move from the start position to the end position and stop there.
  6. Note that not all positions given in the map below are reachable but only reachable configurations will tested. Also note that for this part, there will be no obstacle.
  7. Three tries will be given in order to improve your score if needed. All tries are independent of each other. Progressively easier positions can be requested, each for a 10 point penalty and only once per try. A request cannot be made on the first try.

arm1
More details about the arm

Part 2: Path Planning (With an Obstacle)

  1. Using the same arm from Part 1, perform the following tasks while avoiding the obstacle shown in the map below. The end effector cannot leave the map.

    1. Move from the reference configuration to the start position (inputed by the user) and wait for user input (for example, a button press).
    2. Move from the start position to an end position (inputed by the user) and wait for user input.
    3. Go back to the start position and stop there.
    4. If the robot ever touches the obstacle, no credit will be given for any more points the robot moves to in that run.
    5. Three tries will be given in order to improve your score if needed. All tries are independent of each other. Progressively easier positions can be requested, each for a 10 point penalty and only once per try. A request cannot be made on the first try.

Map:

map1
Map in cartesian space. Red indicates an obstacle, Blue represents the arm in its reference configuration.
The obstacle will not be present during part 1 evaluation. All numbers are in inches.

How to:

Note that the way point based planner is only suggested. Feel free to implement any other planner to solve this task.

  1. Start by writing a function that will perform inverse kinematic calculations. Such a function would probably take a desired 2D position and return a set of joint angles.
  2. Write a function that given the current configuration and desired configuration, moves the joints such that the robot ends up in the desired configuration. This can be done by setting the desired encoder value and spinning the motors in the correct direction. (Be careful of overshoot! You can get better results if you like by using a PID controller.)
  3. At this point, you should be able to complete Part 1.
  4. Convert the obstacle into c-space.
  5. Add a path planner to handle the obstacle. We recommend your planner from lab 5.
  6. Use that inverse kinematics function to get good C-Space angles for the given start and end positions.
  7. Run the planner using these positions to reach the goal position. Make sure the planner is working on C-Space angles and not X-Y positions.

C-Space Map Example:

map2
A representation of the cartesian map with the obstacle in the robot's configuration space. Note that your map may look different. Red : Obstacle, Blue : Approximation of the obstacle as a parallelogram, Black : Outside the map.

Other tips:

  1. The encoders are accurate only up to 1 degree. So make sure you round off the value to the closest degree before setting the desired encoder counts.
  2. Make sure to handle special cases while writing the atan2 function.
  3. Make your robot as rigid as possible, and gear down the arm motors to increase precision.
  4. Remember to check all configurations generated by inverse kinematics. It is not necessary that all configurations will be reachable under the constraints of the obstacle.
  5. As the trajectory taken by the robot is important and it is bad form to first move one joint and then the next, you may want to write a basic trajectory planner or set relative speeds using motor teaming.

Evaluation:

Error will be calculated using the L2 distance metric.

  1. Since part 2 is basically a harder version of part 1, if you can successfully do part 2, then we will assume you can do part 1. To this end, on demo day, you need only show us that you can do part 2 to get full credit. If you cannot do part 2, then showing us part 1 will get you partial credit.
  2. Credit is dependent on how close your end effector is to the given positions. Make sure you specify before your run what point on your arm you would like us to measure from. For the complete breakdown and more details, see the grading sheet.
  3. For part 2, touching the obstacle ends your current try. Positions reached before contact will still count towards your score for that try.
  4. Your arm should come to a complete stop at each position, and should not continue until your grader is finished measuring and recording that point.
Grading Sheet

World Map (NOTE: 11x17 paper) : World Map

Keywords : ArcTan2, Inverse Kinematics


Last Updated : 03/18/12 by Franklin Ditzler
(c) 1999-2010: Howie Choset, Carnegie Mellon