ME 469 Project 1: "Pick and Place" and "Teach and Repeat"

In manufacturing assembly operations, robots often perform what is called pick and place operations. As the name suggests, the robot picks up a part and places it somewhere else. For example, the robot may pick up a computer chip and insert it in the appropriate location on a circuit board. The way to program the robot to do this procedure is called teach and repeat. You teach the robot the required moves one time, and then it should be able to repeat the maneuver indefinitely. This project is an simple introduction into the programming required to make the Puma 260 in the robotics lab do this. This project should be very easy, and is an illustration of the types of robotics concepts that are necessary for industrial application.

Project objectives:

After completing this project, each group will be able to This lab description is intentionally incomplete. To get the robot to even move at all, at least one member of the group will have to study the instruction manuals for the robot before you attempt to program the robot to complete the project. Where appropriate, this project summary indicates which chapters in which manual are relevant.

The VAL Programming Language:

The Puma 260 robot was manufactured in 1983, and as such, is somewhat dated. VAL is a lot like many computer programming languages from that time: not necessarily cutting edge anymore, but it is the evolutionary basis for robotic programming languages today (such as V+), and as such, is good to know. A user can control the Puma 260 in the lab five ways:
  1. direct control with the teach pendant;
  2. issue individual commands to the robot using a terminal interface;
  3. write and store a program for the robot to execute using the terminal interface and the built-in editor in the robot controller;
  4. issue individual commands to the robot using the GUI; and,
  5. write a program on a work station using your favorite editor, e.g., emacs, xemacs, textedit, xedit, etc., and transfer the program to the robot through the GUI.
The first three methods are the traditional means for controlling the robot and the last two are part of an on-going development project for this class. This project will utilize each of these methods.

You are encouraged to program the robot using any of the VAL commands that you wish, but most likely you will use some of the following:

See Chapters 4 and 5 of the Programming manual (in the lab near the Puma) for details of each of these commands. Feel free to use other commands as well. You may also wish to consult Chapter 6 of the Programming manual for an example program.

Terminal Interface:

The computer communicates with the robot through its serial port. To establish communication with the robot, start a terminal emulation program, such as


The terminal must be configured with the following transfer protocol:

    baud: 9600
    parity: none
    stop bits: 1
    bits: 8
    device: /dev/ttyS0

Minicom should have these for the default settings; however, if you do have to change them, hit

    control-a z
to pull up a menu. From there you can set the transfer protocol. See the man pages for each program or ask the instructor for more details (in that order).

To exit minicom, type

    control-a x

Power-up, Initialization and Calibration Procedure

Once you have started the terminal emulation program, it is time to start the robot (see section 3-5, page 3-26 of the Equipment and Programming Manual for the step-by-step details). In summary, you need to "initialize," "limp," "calibrate" and "ready" the robot.


  1. do not turn on the robot until after starting the terminal emulation program as instructed in the initialization procedure in the programming manual;
  2. make sure the the arm is supported, i.e. someone is holding it or it is in the nest position, before running the
    command; and,
  3. never set the speed dial on the teach pendant above 10:


The GUI walks you through the initialization procedure by way of a series of pop-up windows after you choose "initialize" from the File pull-down menu. After the robot is initialized, you can issue single commands from the Action pull-down menu, or transfer a VAL program from the Program menu. To start the GUI program, type
at the prompt on the computer. Unfortunately, the GUI is not completely debugged, so occasionally things may go awry.

Important: do not turn on the robot until the GUI tells you to.

To download a program to the robot controller using the GUI, under the "Program" menu you will find "Transfer" which allows you to download a program from the PC to the robot controller.

Under the same menu, you will find "Execute" which executes the program that is downloaded.

What you must do:

In the lab (357C Fitzpatrick) you will find the robot and the computer. If you have not already done so, you must get an account on the computer for your group. There is a small "fork-lift" end effector attached to the end of the robot. Using that, you are going to program the robot to lift the small "pallets" from some starting position and place it in some final position.
  1. The first task is to program the robot to "swap" two pallets as illustrated in the following figure.

    There are markings on a sheet of paper taped to the base that indicate the initial positions of the two pallets.

    Outline: using the manual control pendant, you will be able to manually direct the robot through the steps necessary to swap the pallets. Using the

          HERE point_name
    command, (where point_name is something like "p1" "p2" etc.) you will be able to name or define the various points, which then could be used in a program with the
          MOVE point_name
    command to have the robot automatically go through the sequence of steps necessary to swap the pallets. The program must start and end in the "ready" position.

    Hint: sections 2-4 and 2-5 of the Programming Manual contain an example program which will be very helpful. Also, near those sections is a description of how to use the editor used to program the robot.

    Hint: there are "program commands" and "monitor commands." To execute a program command directly from the terminal, prepend the command with "DO," e.g.

           DO MOVE POINT2
    will make the robot move to POINT2. You cannot just type "MOVE POINT2."

    Once you have defined the points, written the program and successfully swapped the pallets one time, you should see how many times in a row you can repeatedly swap the two pallets without interfering. Part of the grade depends upon how many times you can swap the pallets in a 5 minute period.

    Use the command

        EXECUTE program_name
    to execute the program. To run a program repeatedly, use the command
        EXECUTE program_name,n
    where n is the number of times you want it to repeat.

    To stop an executing program, type

    and the robot will stop at the end of the current command.
  2. The second task is to use the GUI to download a program written with a text editor to the robot and then execute the program. The program may be the same as the program which swaps the pallets, or a different one.

    All the commands are the same for the GUI except the addition of one more command, which allows you to numerically define points. The new command is

    and its use is illustrated in a sample program.


The total grade the project is 100 points. 80 points will be based upon the results presented in a report written consistent whit the report guidelines. The allocation for the final 20 points is based upon the following 2 considerations:

  1. 10 points will be given to the group that is able to swap the pallets the most number of times in a 5 minute period, 0 points will be given to the group that swaps them the least number of times and the score for all the other groups will be linearly interpolated between the two extremes. Important: the maximum speed setting in the program is 50 and the procedure must start and end in the READY position. Using faster speeds can damage the robot.
  2. 10 points will be given to the group that writes the shortest program that is able to swap the pallets at least once, 0 points to the group with the longest program and the score for all the other groups will be linearly interpolated between the two extremes. Again, the robot must start and end in the READY position.

Return to the ME 469 Homepage.

Bill Goodwine (
Last updated: January 25, 1999.