Industrial Robots are difficult to control, they are made for specially trained personal and hardly accessible to anybody else.
For our semester project at the HfG Schwäbisch Gmünd we used a Fanuc 200ic/5h. This tutorial will show teach you the basics of the TeachPendant – a remote control by Fanuc to program their robots.
Originally we planned to control the robot externally via tools such as Processing or Arduino. We were however not able to do that. If you have a solution to externally control the robot, feel free to fork this repo and add it to it.
Your help would be hugely appreciated.
In order to control the robot you have to diactivate his safety mechanism – the dead man's switch:
After power up, the robot's speed will be slow by default. Current speed is shown as percentage with a green background in the top right corner. You can control the maximum speed on the TeachPendant:
Note: The robot's speed in manual mode is only a fraction of what it will in automatic mode. Be careful!
There are multiple ways to control the robot. However, we only used the movement types "JOINT" and "WORLD". They can be cycled through by pressing COORD on the TeachPendant. The current mode will be shown in the top right with a black background. These settings affect the functions of the blue buttons (on the right of the TeachPendant) which control the robots movement:
The movement type "JOINT" controls every joint individually.
J1 = base joint:
J2 = lower arm joint:
J3 = upper arm joint:
J4 = "hand" joint:
J5 = tool mount joint:
J6 is not assigned in our robot (because it is only euqipped with five axis). Normally it would control the arm's rotation itself.
The movement type "WORLD" defines one point, where the robot points to. This point is the tip of the tool mount. This means, that you just set where the tool mount's tip should be located and the robot will move all necessary joints to reach that position.
J1 = x-axis:
J2 = y-axis:
J3 = z-axis:
J4 = "hand" joint:
J5 = tool mount joint:
J6 is not assigned in our robot (because it is only euqipped with five axis). Normally it would control the arm's rotation itself.
Note: "CNT100" is normally used as an intermediate point. It is faster than "FINE", because will approach that coordinate just roughly.
Example: If you want to move from Point A to B via Point C (e.g. to avoid collision with something), Point C should be set to "CNT100".
Hold dead man switch, the press the FWD (forwards) button to run the program. Pressing BWD (backwards) will do the opposite.
Pressing the STEP button on the TeachPendant will cycle between two differend modes. It is shown in the top left corner labeled "step".
Using the arrow keys you navigate from top to bottom and also from left to right
Set new coordinate for point: Select the line number of the point you want to change. Pressing F5 ("TOUCHUP") will overwrite the previous coordinates with the current one
Change movement type: Select the letter after the line number (C, J or L) and press F4 ("CHOICE") to switch to a different motion type.
Change movement precision: Select "CNT100"/"FINE" press F4 ("CHOICE") to select a different precision.
Set speed to point: Select the type of speed (either %, sec or msec) and press F4 ("CHOICE") to change it. You can also change the value by typing numbers on the TeachPendant (confirm by pressing ENTER).
As you might have noticed, the robot will only run the program once. You have to loop a program for that reason. This happens by creating a "label" and using a command to jump to that label.
1: LBL[12]
2:J @P[1] 100% FINE
3:J P[2] 100% FINE
4: JMP LBL[12]
This means that the robot will read line 1 (won't do anything though), move to the coordinates specified in line 2, afterwards move to the coordinates from line 3 then he reads in line 4 that he has to continue from the label with the number 12 (which is in line 1), so he will jump back to line 1 and therefore do the same procedure again.
You can now loop this action in the automatic mode.
Switch into automatic mode by:
Switch it on Press "CYCLE START"-button (Green button next to the emergency stop on the base station)
If it doesn't start: