The document describes three sessions of a robotics lab where students programmed a robot to transfer blocks between input and output pallets. In session one, the robot picked and placed a single block. In session two, it rotated, stamped, and inspected four blocks. Session three used palletizing commands to transfer six blocks between pallets. Problems included block size variations, palletizing point errors, and forgetting wait commands when running at full speed. Improvements could include a more informative manual and using a computer for coding.
1. Robotics and Industrial Automation
(Introduction to Robotics)
Lab Group – 3
Conestoga College
Submittedto – J. Wilson Pranav Sharma (7157118)
NitinBhardwaj (7145139)
2. Table of Contents
Robotics and Industrial Automation ...................................................................................................1
1. Equipment List............................................................................................................................3
2. Work cell task description...........................................................................................................3
3. Program Listing...........................................................................................................................4
4. Problems Encountered................................................................................................................7
5. Discussion on Improvements.......................................................................................................7
3. 1.Equipment List
1.1.LR-Mate 200iC robot
1.2.Robot controller
1.3.Air supply
1.4.Pendant
1.5.Shuttle, Cylinder, Clamp, Short Stroke, Rotary Actuator, Input tray, Output tray
2.Work cell task description
2.1.Session One
In session one, we developed a simple program which included teaching the pick and
drop points for a single block. This program allowed the robot to move the block from
the input pallet to the rotary actuator.
2.2.Session Two
During this session, 4 blocks were placed into the 4 corners of the input pallet with the
letter side facing the check tray. The robot moved one block to the rotary actuator and
the block’s orientation was changed as a result of the rotation of the rotary actuator.
When the rotation got completed, robot picked up the block again and placed it in the
stamping station. After this, the clamp actuator was extended to hold the block in
position after which stamping cylinder was pushed forward to imply that the block has
been stamped. In the next step, the robot picked up the block again and placed it on
the check tray which was to be transferred to the operator for inspection. After
inspection, the robot held the block and placed it on one of the output pallet with the
letters’ side facing up. We just had to teach separate pick and drop points for each
block. The whole process in between was put in a separate program which was called
again and again for each block.
2.3.Session Three
In this session, we had to create new programs in order to palletize 6 blocks from the
input pallet to the output pallet. Instead of calling the sub-program 4 times in session 2,
we used the palletize command to empty the input pallet and fill the output pallet with
the 6 blocks. We also needed to add a register to count the number of blocks placed.
Once the output tray was filled with 6 blocks, it was extended and the robot was asked
to get back to the home position. In order to carry out another cycle, the output tray
was required to retract which could be done by pressing the button beside the
operator.
4. 3.ProgramListing
3.1.SessionOne
1:J PR[1:HOME] 100% FINE ;Start at home position
2: DO[101:OUT_CYL]=OFF ;Tray to operatorfor inspection
3: WAIT DI[105]=OFF ;Wait until operatorpushbuttonreleased
4: DO[101:OUT_CYL]=ON ;Tray to robot
5:J P[2:ABV_TRY] 100% FINE ;Move to positionabv_try
6: WAIT DI[102]=ON ;Wait fortray @ robotsensorison
7:L P[1:TRAY] 100mm/sec FINE ;Move to pick position
8: DO[102:VAC]=ON ;Turn on vacuum
9: DO[103:InputSimulated]=OFF ;Ensure rotary at correct position
10:L P[2:ABV_TRY] 100mm/sec FINE ;Move to positionabv_try
11: DO[101:OUT_CYL]=OFF ;Move tray back to operator
12:J P[4:ABV_RTRY] 100% FINE ;Move to positionabv_rotary
13:L P[3:ROTARY] 100mm/sec FINE ;Move to positionrotary
14: DO[102:VAC]=OFF ;Turn off vacuum
15:L P[4:ABV_RTRY] 100mm/sec FINE ;Move to positionabv_rotary
16: WAIT .50(sec) ;Wait for0.5 second
17:J PR[1:HOME] 100% FINE ;Finishhome position
3.2.Session Two
/Program: KMNP1, to rotate, emboss and inspect the block
1:J P[3:ABV_ROT] 100% FINE ;Move to positionabove rotary
2: DO[107:ROTARY]=OFF ;Ensure rotary at correct position
3:L P[4:ROT] 100mm/sec FINE ;Move to positionrotaryto dropthe block;
4: DO[102:VAC]=OFF ;Turn off the vacuum
5:L P[3:ABV_ROT] 100mm/secFINE ;Move back to positionabove rotary
6: DO[107:ROTARY]=ON ;Rotate the rotary to make the letterside face up
7:L P[5:ROT1] 100mm/sec FINE ;Move to positionrotaryto pickthe blockup
8: DO[102:VAC]=ON ;Turn on the vacuum
9:L P[3:ABV_ROT] 100mm/secFINE ;Move to positionabove the rotary
10:J P[6:ABV_SS] 100% FINE ;Move to positionabove stampstation
11:L P[7:SS] 100mm/sec FINE ;Move to positionstampstationtodrop the block
12: DO[102:VAC]=OFF ;Turn off the vacuum
13:L P[6:ABV_SS] 100mm/secFINE ;Move back to positionabove stampstation
14: DO[105:CLMP]=ON ;Extendthe clampto pushthe blockintoposition
5. 15: DO[104]=ON ;Extendthe stampingcylinderto embossthe block
16: WAIT .50(sec) ;Wait for0.5 second
17: DO[104]=OFF ;Retract the stampingcylinder
18: DO[105:CLMP]=OFF ;Retract the clamp
19:L P[8:SS1] 100mm/sec FINE ;Move to positionnew stampstation
20: DO[102:VAC]=ON ;Turn on the vacuumto pickup the block
21:L P[6:ABV_SS] 100mm/secFINE ;Move to positionabove stampstation
22: DO[101:OUT_CYL]=ON ;Turn on the inputcylindertomove it@ robot
23: WAIT DI[102]=ON ;Wait until inputcylinder@robotsensoris on
24:J P[9:ABV_TTY] 100% FINE ;Move to positionabove tray
25:L P[10:TY] 100mm/sec FINE ;Move to positiontrayto drop the block
26: DO[102:VAC]=OFF ;Turn off the vacuum
27:L P[9:ABV_TTY] 100mm/sec FINE ;Move backto positionabove tray
28: DO[101:OUT_CYL]=OFF ;Turn off the inputcylindertomove it@ operator
29: WAIT DI[105]=ON ;Wait until the operatorpushbuttonispressed
30: DO[101:OUT_CYL]=ON ;Move the inputcylinderbacktorobot
31: WAIT DI[102]=ON ;Wait until inputcylinder@robotsensoris on
32: L P[10:TY] 100mm/sec FINE ;Move to positiontrayto pickthe blockup
33: DO[102:VAC]=ON ;Turn on the vacuum
34:L P[9:ABV_TTY] 100mm/sec FINE ;Move topositionabove tray
/Program: MAIN_KMN (Mainprogram)
1:J PR[1:HOME] 100% FINE ;Start at home position
2:J P[1:ABV_B1] 100% FINE ;Move to positionabove block_1
3:L P[2:B1] 100mm/sec FINE ;Move to positionblock_1
4: DO[102:VAC]=ON ;Turn on the vacuumto pickthe blockup
5:L P[1:ABV_B1] 100mm/sec FINE ;Move back to positionabove block_1
6: CALL KMNP1 ;Call programKMNP1
7:J P[3:A_D1] 100% FINE ;Move to positionabove drop_1
8:L P[4:D1] 100mm/sec FINE ;Move to positiondrop_1
9: DO[102:VAC]=OFF ;Turn off the vacuum todrop the block
10:L P[3:A_D1] 100mm/sec FINE ;Move back to positionabove drop_1
11:J P[5:AB2] 100% FINE ;Move to positionabove block_2
12:L P[6:B2] 100mm/sec FINE ;Move to position block_2
13: DO[102:VAC]=ON ;Turn on the vacuumto pickthe blockup
14:L P[5:AB2] 100mm/sec FINE ;Move to positionabove block_2
15: CALL KMNP1 ;Call programKMNP1
16:J P[7:AD2] 100% FINE ;Move to positionabove drop_2
17:L P[8:D2] 100mm/sec FINE ;Move to positiondrop_2
18: DO[102:VAC]=OFF ;Turn off the vacuum todrop the block
19:L P[7:AD2] 100mm/sec FINE ;Move to positionabove drop_2
20:J P[9:AB3] 100% FINE ;Move to positionabove block_3
21:L P[10:B3] 100mm/sec FINE ;Move to positionblock_3
6. 22: DO[102:VAC]=ON ;Turn on the vacuumto pickthe blockup
23:L P[9:AB3] 100mm/sec FINE ;Move to positionabove block_3
24: CALL KMNP1 ;Call programKMNP1
25:J P[11:AD3] 100% FINE ;Move to positionabove drop_3
26:L P[12:D3] 100mm/sec FINE ;Move to positiondrop_3
27: DO[102:VAC]=OFF ;Turn off the vacuum
28:L P[11:AD3] 100mm/sec FINE ;Move to positionabove drop_3
29:J P[13:AB4] 100% FINE ;Move to positionabove block_4
30:L P[14:B4] 100mm/sec FINE ;Move to positionblock_4
31: DO[102:VAC]=ON ;Turn on the vacuumto pickthe blockup
32:L P[13:AB4] 100mm/sec FINE ;Move to positionabove block_4
33: CALL KMNP1 ;Call programKMNP1
34:J P[15:AD4] 100% FINE ;Move to positionabove drop_4
35:L P[16:D4] 100mm/sec FINE ;Move to positiondrop_4
36: DO[102:VAC]=OFF ;Turn off the vacuum todrop the block
37:L P[15:AD4] 100mm/sec FINE ;Move to positionabove drop_4
38:J PR[1:HOME] 100% FINE ;Finishathome position
3.3.Session Three
/Program KMNP1 insession2 is still usedinthis session
/Program: P_KMNP (PALLETIZING FORINPUTTRAY)
1: PALLETIZING-B_1 ;palletizingstart
2:J PAL_1[A_1] 30% FINE ;Move to positionabove the pick-uplocation
3:J PAL_1[BTM] 30% FINE ;Move to the actual locationinwhichthe blockwill be
pickedup
4: DO[102:VAC]=ON ;Turn on the vacuum
5:J PAL_1[R_1] 30% FINE ;Move to positionabove the pick-uplocation
6: PALLETIZING-END_1 ;palletizingend
/Program: D_KMNP (PALLETIZING FOROUTPUTTRAY)
1: PALLETIZING-B_1 ;palletizingstart
2:J PAL_1[A_1] 30% FINE ;Move to positionabove the droplocation
3:J PAL_1[BTM] 30% FINE ;Move to the actual locationinwhichthe blockwill be
dropped
4: DO[102:VAC]=OFF ;Turn off the vacuum
5:J PAL_1[R_1] 30% FINE ;Move to positionabove the droplocation
6: PALLETIZING-END_1 ;palletizingend
/Program: MAIN_KDP (Mainprogram)
1: PL[1]=[1,1,1] ;Resetthe registertothe firstlocation
2: R[1:x]=1 ;A registertocountthe numberof blocksplaced
3: LBL[1:LP] ;Setlabel 1
4:J PR[1:HOME] 100% FINE ;Start at home position
7. 5: CALL P_KMNP ;Call programP_KMNP
6: CALL KMNP1 ;Call programKMNP1
7: CALL D_KMNP ;Call programD_KMNP
8: R[1:x]=R[1:x]+1 ;Increase the value of registerby1
9: IF R[1:x]>6,JMPLBL[2] ;If the 6 blockshave beenplaced,jumptolabel 2
10: JMP LBL[1] ;Jumpto label 1
11: LBL[2] ;setlabel 2
12: DO[106:OUT_CYL]=ON ;Afterall 6 blocksare placed,turnon to extendthe
outputtray
13: WAIT DI[105]=OFF ;Wait until the operatorpushbuttonispressed
14: DO[106:OUT_CYL]=ON ;Turn off to retract the outputtray
15:J PR[1:HOME] 100% FINE ;Finishathome position
4.Problems Encountered
All of the code had to be typed on the teach pendant which took considerable amount
of time to get familiarized with.
There were different sized blocks which were posing issues when we had to judge a safe
position for a block to be picked and placed at different positions.
The specific blocks which were a little bigger were not getting fit exactly on the shuttle
as well as on the pallets. A couple of them also got stuck during the process of placing
the block on the rotary actuator. This also made the end effector twist a little as it was
moving downwards.
The palletize command made the robot judge the pick and place points slightly different
than the ones we actually taught.
Also, when the robot was running on the palletize command in session 3 and was
undergoing the process of placing parts on the output pallet, it was dropping the part as
it was moving upwards which could have been an internal error within the software.
When robot was made to run on full speed, it was just throwing the parts at all of the
drop positions as we forgot to include some wait commands at critical junctures.
5.Discussion on Improvements
The manual could have been more informative about session 3.
All the blocks should have been identical in size.
It would have been an asset if the coding could have been done on the computer. This
would have helped to get the tasks done faster than usual.