Update on this, I remastered the robot and performed the RTU setup from scratch and now its working properly.
Posts by SXJ1988
-
-
Hi PnsStarter,
Yes, I am jogging under S/WORLD.
The jog keys under the Config-menu are setup the following:
(J7 Group: 1 , J7 Axis: 7)
As for the Robot config (Ctrl Start) is set as an Integrated Rail and NOT the Auxiliary Linear Axis. -
Hi everyone,
Added an RTU to a robot and when I jog it in JOINT (J7) only the RTU moves (as expected), however, when I jog J7 in the WORLD coordinate system, all the axes moves together.
Other robot units on the floor with an RTU when jogging on the WORLD coordinate system, J7 moves independently (J1-J6 stays the same and does not move). However, this one robot unit, it moves all the axes together.. is there a step or setting that I missed?
-
Hi PnsStarter,
Thanks for the reply, I tried your suggested method on setting the part with an asterisk but the animation still looks off. Perhaps the animation on the simulator is not capable of compensating the vision offsets?
-
Hi everyone,
I am simulating a robot with a 2D vision system mounted on the robot's EOAT, the animation on the simulation when its picking the part after a vision (run_find) when the offsets are all 0 (XYR), picks it up perfectly fine, however, when I shift the part in X or Y, the vision offsets are being applied correctly and the robot moves where its supposed to, but the animation when picking the part is off.
I was wondering if there is a method to compensate the vision offset on the animation for the simulation program?
-
-
Hi,
I have 2 robot units of the same model (2000iB/200T) with R30iB controllers (V8.30). From the previous team, controller (A) had corrupted files and had to re-imaged from another controller (C) which its no longer in the production floor but from what I heard its the same robot model. When they finished commissioning controller (A), they just re-imaged controller (B) from controller (C) just like they did on controller (A).
When the robot units was handed off to our team, they provided only 1 USB Software Card for both controllers (A & B).
I had to install the password protection option on both of the controllers, and they took the same PAC code for both. Installation was successful for both, however, upon starting up the robots, both of them started to give me errors on SRVO-050 (Collision Detection on Axis 3). I reduced the collision detection sensitivity and currently they are running.. (Coll Detect was 150% and reduced to 100% - previously it was running fine at 150% Coll Detect sensitivity) but my question is why? nothing was modified on controller A and controller B when installing the password protection option. I called Fanuc and they could not provide a straight answer on this, they just told me to check the maintenance data to see if the robot was setup to be on the floor, side wall or upside down. I checked the Maintenance settings (CTRL Start --> MENU --> MAINTENANCE --> MANUAL) but nothing was changed.
-
Hi,
I am trying to create a karel log file in order to store the vision register 1 through 5 (X,Y,Z,w,p,r) into a file. I am new to Karel and I have been digging through the karel programming manual to make this program. I am trying to output a file (VisionOffsetData.dg) that will contain Vision Registers 1, 2, 3, 4, 5, 6 offsets on x,y,z,w,p,r.I was wondering if you guys have created a vision register log in the past? If so, could you guide me of what I need on this program.
This is what I got so far:
%NOLOCKGROUP
%ALPHABETIZE
%NOPAUSE = ERROR + COMMAND + TPENABLE
%NOABORT = ERROR + COMMAND + TPENABLEPROGRAM VISIONDATA
VAREnableVisionOffsetData: BOOLEAN
STATUS : INTEGER
visprocess : STRING[8]
int_value : INTEGER
real_value: REAL
OffsetValueVR1: XYZWPR
OffsetValueVR2: XYZWPR
OffsetValueVR3: XYZWPR
OffsetValueVR4: XYZWPR
OffsetValueVR5: XYZWPR
OffsetValueVR6: XYZWPRGetVisionOffset : REAL
VisionOffsetData: FILEBEGIN
EnableVisionOffsetData = FALSE
IF UNINIT(VISIONDATA)THEN VISIONDATA=FALSE;ENDIF
IF VISIONDATA=TRUE THEN
OPEN FILE VISIONOFFSETDATA ('AP', 'VISIONOFFSETDATA.dg')
WRITE VISIONOFFSETDATA (CR,CR, '---------------------------------------',CR)
ENDIF--If Enable VIsion Offset Data is TRUE
-- then start populating data into the file
IF EnableVisionOffsetData = TRUE
GET V_GET_OFFSET (OffsetValueVR1, 1, STATUS)
WRITE VisionOffsetData ('X', CR) -
Just modified those changes and its working perfectly!
Thank you again! -
One question that I have is that currently the vision application that I have right now, detects 1 part at a time and loops back to the main program.
"Program running to detect 1 part at a time"
1: LBL[9999] ;
2: WAIT DI[101]=ON ;
3: CALL REDOFF ;
4: R[5]=0 ;
5: LBL[2] ;
6: ;
7: ;
8: UFRAME_NUM=9 ;
9: UTOOL_NUM=1 ;
10: R[1]=0 ;
11:J P[1] 100% CNT0 ;
12: ;
13: VISION RUN_FIND 'SUNAC' ;
14: VISION GET_OFFSET 'SUNAC' VR[1] JMP LBL[1000] ;
15: R[1]=VR[1].MODELID ;
16:J P[2] 100% FINE VOFFSET,VR[1] ;
17: CALL VACON ;
18:J P[3] 100% FINE VOFFSET,VR[1] ;
19:J P[2] 100% FINE VOFFSET,VR[1] ;
20: ;
21: IF (R[1]=1),CALL D1 ;
22: IF (R[1]=2),CALL D2 ;
23: IF (R[1]=3),CALL D3 ;
24: IF (R[1]=4),CALL D4 ;
25: IF R[1]=0,JMP LBL[1000] ;
26: ;
27: JMP LBL[2] ;
28: LBL[1000] ;
29: R[5]=R[5]+1 ;
30: JMP LBL[1001] ;
31: LBL[1001] ;
32: IF (R[5]>=10),JMP LBL[102] ;
33: IF (R[5]=3),JMP LBL[101] ;
34: JMP LBL[2] ;
35: ;
36: LBL[101] ;
37: CALL VMOTORON ;
38: WAIT 1.00(sec) ;
39: CALL VMOTOROF ;
40: JMP LBL[2] ;
41: ;
42: LBL[102] ;
43: CALL REDON ;
44: JMP LBL[9999] ;I would like to run the vision application, detect how many parts are there total, location and model id. So the robot/controller remembers the location for all the parts in a single run, to help on the cycle time on pick/place those parts. Would I need to use the VISION GETNFOUND(vision process name) R[a] or the VISION INIT_QUEUE[a]?
-
That was exactly I was looking to do in the program! Thank you for guiding me to the right direction!
-
Oh okay, I can see how the VR[1] Model ID gets stored to the Register.
In the program I have stated the following:
R[1]=1 (Part 1) Model ID1 on VR[1]
R[2]=2 (Part 2) Model ID2 on VR[1]
R[3]=3 (Part 3) Model ID3 on VR[1]
R[4]=4 (Part 4) Model ID4 on VR[1]Here I have added a small demo program on it to test it out (sorry for the confusing labels - I have added a small description of what each label does). The program is kind of working.. the only problem that I am facing is that whenever I start the program it stores a value 1 in Registers (R1 to R5).
Lets say I put Part 4 on the area of detection. First it stores a value of 1 on registers 1 to 5 when I start the program, then the robot goes to Part 4, picks it up and the Register is still at 1, so it drops it at location 1, even though its a Part 4 (to drop off at location 4). Then when the program cycles back again, it registers with a value of 4 and drops it off at its designated location, however, when I throw in Part 3 in the area, it will register it at 4 and after it cycles through the program, later it will register it as 3.
Here is my demo program:
1: LBL[2] ;
2: ;
3: R[1]=0 ;
4: R[2]=0 ;
5: R[3]=0 ;
6: R[4]=0 ;
7: R[1]=VR[1].MODELID ;
8: R[2]=VR[1].MODELID ;
9: R[3]=VR[1].MODELID ;
10: R[4]=VR[1].MODELID ;
11: ;
12: UFRAME_NUM=9 ;
13: UTOOL_NUM=1 ;
14: ;
15:J P[1] 100% FINE ;
16: ;
17: ;
18: VISION RUN_FIND 'SUNAC' ;
19: VISION GET_OFFSET 'SUNAC' VR[1] JMP LBL[1000] ;
20: ;
21:J P[2] 100% FINE ;
22:J P[3] 100% FINE VOFFSET,VR[1] ;
23:J P[2] 100% FINE VOFFSET,VR[1] ;
24: ;
25: ;
26: IF (R[1]=1),CALL D1 ; (Subprogram D1 to drop at location 1)
27: IF (R[2]=2),CALL D2 ; (Subprogram D2 to drop at location 2)
28: IF (R[3]=3),CALL D3 ; (Subprogram D3 to drop at location 3)
29: IF (R[4]=4),CALL D4 ; (Subprogram D4 to drop at location 4)
30: IF R[5]=0,JMP LBL[1000] ;
31: IF (R[5]=5),JMP LBL[101] ;
32: JMP LBL[2] ;
33: LBL[1000] ; (Adds R5+1 whenever it does not detect anything)
34: R[5]=R[5]+1 ;
35: IF (R[5]=5),JMP LBL[101] ;
36: ;
37: JMP LBL[1] ;
38: ;
39: LBL[101] ; (When R5=5, it resets R5=0 and aborts program)
40: R[5]=0 ;
41: ABORT ;
42: ;
43: ;
44: LBL[1] ; (When parts are not detected R[5]<=3 Turns ON Light)
45: IF (R[5]<=3),CALL BLUEON ;
46: WAIT 1.00(sec) ;
47: CALL BLUEOFF ;
48: JMP LBL[2] ; -
Sorry for the questions since I have barely used any registers in the past..so I am struggling a bit with this.. I just dont see how the vision register VR[1] can store the model ID to the register..and use it indirectly to the PR to determine which location to drop off the part.. could I use a R[a]=V[b]. MODELID to store it to the register? and use IF R[#]=#call PROGRAM or LABEL.
-
I was wondering if you could give me an example of a value of the register to indirectly address the position register for each drop off location?
I got the vision process with model ID 1,2,3,4 and I can see it is recognizing it correctly through the vision register. I wanted to use the IRVFIND command but my controller is only version 7.30P/29.
-
Thanks for the suggestion, I will be trying that out, I can see how the register would come in place for the loop, however as for dropping off the part (CALL PLACE), how will I have to program it to drop it off in different locations (since I have 4 drop off locations)?
-
Hello everybody,
I have four circular parts (5, 10, 15, 20 - mm diameter) and currently using the 2D application (iRVision) to pick up these items. The application involves in just picking up these circular parts on a tray and the robot will sort them out by size and drop it off in different bins. (The circular part quantities will vary, some batches have 30+ or 50+ units - combination of all those sizes)I already have the vision all setup, I have only tried it with one part and its working but my question is.. by creating just one Vision Process Tool with 4 GPM (Model ID 1,2,3,4), how should my program look like when identifying which model ID it is and dropping it off at a location by its model ID? or should I just create 4 Vision Process Tools and do a Vision Run_Find for each circular part?
This is what I had in mind by using 4 Vision Process Tools:
1. UFRAME_NUM=9
2. UTOOL_NUM=1
3. J P[1] 100% FINE
4. VISION RUN_FIND '20mm'
5. JMP LBL [101]
6. VISION RUN_FIND '15mm"
7. JMP LBL [102]
8. VISION RUN_FIND '10mm'
9. JMP [103]
10. VISION RUN_FIND '5mm'
11. JMP [104]
12. LBL [101]
13. CALL PICK20MM
14. LBL [102]
15. CALL PICK15MM
16. LBL [103]
17. CALL PICK10MM
18. LBL [104]
19. CALL PICK5MMPlease let me know if there is a better approach for this.
-
Oh okay, I will look it up in the forums. I have taught the UFRAME grid (by touching the middle point of the circle with the tool on it). As for the UTOOL I have never taught anything in it.
-
Oh okay, I have used the 4 point method to calibrate the grid and followed those steps as mentioned on dmbj's post. I will try out the 3 point method and see from there. As for the version, I am not in front of the equipment at the moment but its definitely version 7.
I have used the wait 1 sec on line 8 just because I was testing the vision camera but I will definitely change the CNT0 to FINE for my approach points.Also quick question on the Tool frame (UTOOL=1 in this case), what are the appropriate steps to calibrate it? I know I do need a pointer tool fixture, jog the robot's TCP on the pointer fixture and use yaw, pitch, roll at the center of the pointer fixture (by jogging it through the JOINT COORD - axis 4, 5, 6).
-
Update:
It seemed that I had calibrated the grid wrong but now it seems to be fine. However, I am trying to use the PR to get the offset of the part but it seems that the PR is on the world coordinate system (NUT 0,0,0) and not the user frame = 9 (in which I am using for my program).
1. UFRAME_NUM=9
2. UTOOL_NUM=1
3. J P[1] 100% FINE
4. VISION RUN_FIND 'A'
5. VISION GET_OFFSET 'A' VR[1] JUMP LBL 100
6. L P[2] 500MM/SEC FINE TOOL_OFFSET, PR[1] VOFFSET, VR[1]
7. L P[2] 500MM/SEC FINE VOFFSET, VR[1]
8. WAIT 1 SEC
9. L P[2] 500MM/SEC FINE TOOL_OFFSET, PR[10] VOFFSET, VR[1]
10. LBL [100]
11. J P[1] 100% FINEThe PR[1] I have taught to be the approach point to pick up the part but looking at the position details, it is at UF:F, UT:F.
Please let me know if you guys have any suggestions. -
Just checked the current requirements (0.291A)
Sent from my SAMSUNG-SM-G935A using Tapatalk