|
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)
- 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.
- Attach something (like a marker) to the end effector so that
its position can be easily determined.
- 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.
- 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
- 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.
- 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.
- 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.
 |
|
More details about the arm
|
Part 2: Path Planning (With an Obstacle)
-
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.
- Move from the reference configuration to the start
position (inputed by the user) and wait for user input (for example, a button press).
- Move from the start position to an end position (inputed
by the user) and wait for user input.
- Go back to the start position and stop there.
- If the robot ever touches the obstacle, no credit will be
given for any more points the robot moves to in that run.
- 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:
 |
|
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.
- 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.
- 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.)
- At this point, you should be able to complete Part 1.
- Convert the obstacle into c-space.
- Add a path planner to handle the obstacle. We recommend your
planner from lab 5.
- Use that inverse kinematics function to get good C-Space
angles for the given start and end positions.
- 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:
 |
|
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:
- 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.
- Make sure to handle special cases while writing the atan2
function.
- Make your robot as rigid as possible, and gear down the
arm motors to increase precision.
- 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.
- 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.
- 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.
- 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.
- For part 2, touching the obstacle ends your current try.
Positions reached before contact will still count towards your
score for that try.
- 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
|
|