Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5

Fanuc External Axis Configuration and Program Generation

#1
Hello, 
 
I am having trouble generating an accurate .LS file with my external axis is synchronized to the robot arm. Any movement of the turn table registers as movement of the target's location, as if the reference frame for the targets was attached to the turn table flange. 
 
The mystery becomes clearer when I observe the .LS file following post processing. The coordinates for the reference frame which the targets are referencing, indicates that the global reference point is not centered on the robot base, but rather, the turn table flange. 

To simulate this I have created a simple program for following the edges of a cube that is mounted onto the turntable. The "Booth 3 - 9MB - Cube Test V1" simulation shows the correct path that the robot should take on the cube. However, when exporting the program to an LS File (Zone_1_2.txt), my coordinates do not match up with the robot's simulated movement. I suspect this is because the robot base that is being referenced is the Motoman flange (which rotates) instead of it being the "Fanuc M-710iC/70 Base" (which would remain static). 

I have also attached versions 2 and 3 where I try changing the linked reference frames for the targets. In the LS files you can see the the cartesian targets do not match the targets specified in RoboDK simulation. 

Any help here would be appreciated. I am not sure if this is how the synchronization is supposed to be configured or if this could be done without synchronizing the robot and turntable. Note that our actual turntable is set up as an auxiliar axis (E1 and E2 under GP1) so the Fanuc_R30i post processor is set to TURNTABLE_GROUP = None


Attached Files
.txt   Zone_1_2.txt (Size: 4.78 KB / Downloads: 178)
.rdk   Booth 3 - 9MB - Cube Test V1.rdk (Size: 1.61 MB / Downloads: 168)
.txt   Version 2.txt (Size: 1.67 KB / Downloads: 171)
.rdk   Booth 3 - 9MB - Cube Test V2.rdk (Size: 1.61 MB / Downloads: 184)
.rdk   Booth 3 - 9MB - Cube Test V3.rdk (Size: 1.61 MB / Downloads: 190)
.txt   Version 3.txt (Size: 1.67 KB / Downloads: 166)
#2
Hello,

Just checking to see if somebody has taken a look at this yet? Any help or direction would be greatly appreciated.

Thank you.
#3
A quick workaround to achieve the correct result is to export all your targets as joint targets. You can follow these steps to do so:
  1. Select Tools-Options
  2. Select the Program tab
  3. Set the Output for Joint movements: Joint data
  4. Set the Output for Linear movements: Joint data
This will place the robot at the right location regardless of how you have configured your system (such as the reference frame, turntable position).

If you want the targets and reference frames to be exported with respect to the robot base it is better if you remove the synchronization between the robot arm and the turntable. I attached a sample project that shows this proof of concept.


Attached Files
.rdk   Painting-and-Spraying-with-ABB-IRB-2600-12-1-85.rdk (Size: 2.06 MB / Downloads: 173)
#4
Unfortunately, we do require the use of reference frames and being able to adjust those frames in the robot without making changes to the program path so outputting the joint data would give us very limited functional use. 

Is there a way to generate an .LS file that includes the turntable axis as E1 and E2 under GP1 without synchronizing the robot? That would definitely fix our problems. I attached a station that has been de-synchronized and also a copy of the post processor. I am currently using the Fanuc_R30i post processor but I have not been able to generate a usable program.


Attached Files
.rdk   Booth 3 - 9MB - Cube Test V4.rdk (Size: 1.61 MB / Downloads: 172)
.py   Fanuc_R30i.py (Size: 6.01 KB / Downloads: 148)
#5
If you want to output all axes under the same motion group should then synchronize the robot with your turntable and change the flags USE_VAR_AXES_MOTION_GROUP and AXES_MOTION_GROUP of your Fanuc post processor as follows:
Code:
    # Disables motion group heuristics and uses user defnined mapping
    USE_VAR_AXES_MOTION_GROUP = True

    # Motion group for each axis, default first 8 axes in group 1, then next axes in group 2
    AXES_MOTION_GROUP = [1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2]
You should then see an output like this:
Code:
P[1]{
  GP1:
    UF : 9, UT : 9,        CONFIG : 'N U T, 0, 0, 0',
X =  -191.806  mm, Y =  -428.912  mm, Z =  524.970  mm,
W =    90.000 deg, P =    0.000 deg, R =    90.000 deg
J1=    0.000 deg, J2=    0.000 deg
};
Let us know if you need more help to customize further. It should not be complicated to change the J1 and J2 by E1 and E2.
#6
So we are able to generate the code with the external axis as E1 and E2 by setting the 'TURNTABLE_GROUP = None' in the post processor. The problem that arises when synchronizing the robot however, is the turn table flange becoming the main robot base. So when generating the code, the reference frame that is made is based off of the turn table flange.

Code:
4:  PR[9,1]=0.000 ;
   5:  PR[9,2]=0.000 ;
   6:  PR[9,3]=100.000 ;
   7:  PR[9,4]=0.000 ;
   8:  PR[9,5]=0.000 ;
   9:  PR[9,6]=0.000 ;
  10:  UFRAME[9]=PR[9] ;
  11:  UFRAME_NUM=9 ;

I am not too concerned about the reference frame being out of position since we could set that reference manually on the actual robot when setting up a part. However the biggest problem is that any movement of the turn table flange, and the entire coordinate system moves with it. The following code shows the steps where only the turn table should have moved. Changing E2 = 0 to E2 = 90. However, when the robot makes the move to E2=90, robots' coordinates also move. 

Code:
P[7]{
   GP1:
    UF : 9, UT : 9,        CONFIG : 'N U T, 0, 0, 0',
    X =  -266.244  mm,    Y =  -445.225  mm,    Z =   604.625  mm,
    W =    90.000 deg,    P =     0.000 deg,    R =    90.000 deg,
    E1=     0.000  deg,    E2=     0.000  deg
};
P[8]{
   GP1:
    UF : 9, UT : 9,        CONFIG : 'N U T, 0, 0, 0',
    X =   445.257  mm,    Y =  -266.303  mm,    Z =   604.651  mm,
    W =    90.000 deg,    P =     0.000 deg,    R =   180.000 deg,
    E1=     0.000  deg,    E2=    90.000  deg


Attached Files
.rdk   Booth 3 - 9MB - Cube Test V1.rdk (Size: 1.61 MB / Downloads: 165)
#7
Is there a way to keep the robot base to stay on the robot and not have it switch over to the turn table flange when it is synchronized? 

Thank you.
#8
Thank you for your feedback. One option is to remove the synchronization between the robot arm and the turntable so you can use the turntable as a positioner without synchronized motion. This example shows the concept:
https://robodk.com/example/Painting-and-...00-12-1-85

This will allow you to use the robot base as the coordinate system.

Also, another workaround to generate your programs would be to generate all movements as small joint movements. This should work regardless of how you place your coordinate systembase, tool or even robot kinematics:
  1. Select Tool-Options
  2. Select the Program tab
  3. Set Output for linear movements: Joint data
  4. Set Maximum step size in mm to 1 mm
  5. Set Maximum step size in deg to 0.2 deg
  




Users browsing this thread:
1 Guest(s)