RobotStudio event

What is causing a 'bump' in an IRB4600 linear movement?

I am having an issue with a MoveL Offs instruction not resulting in a linear tcp path. The tcp velocity is pretty slow, at 30 mm/sec.

I assumed this may be do to the robot's orientation, as I was told by the ABB salesman that the robots may not maintain perfectly consistent motion across its zero points, but I'm not sure he had not mixed this up with the robots singularities. Joints 2 and 3 are crossing over their zero points, and the bump does appear to happen at the time J2 moves from positive to negative, however I thought this may be coincidental. 

I planned on rotating the robot around the tcp 90 degrees, which would avoid going through any of the robots zero points. However before I spend the time reprogramming, I was curious if anyone could confirm or deny the effectiveness of doing so.

Thanks
-Mike

Best Answer

Answers

  • Can you give some sample code so I can repeat and analyze this problem?  
  • Hi John,
    Thanks for the reply. I have attached most of the procedure that is giving me problems, along with the robot positions. I have highlighted the instruction that is causing problems, and it tends to happen about halfway(just an estimate) through the 270 mm offset movement. Please let me know if you have any other questions for me or if you find anything out.
    Thanks again, Mike 

    CONST robtarget Home150:=[[917.90,-251.88,1452.12],[0.000420541,0.00160999,0.999998,0.00128043],[-1,0,-1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
    CONST robtarget CarouselstartPoint:=[[915.86,930.97,1529.01],[0.0433986,-0.000276874,0.999058,0.000334651],[0,-1,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
    CONST robtarget Carouselthroughpoint:=[[664.55,335.20,1596.70],[0.000352516,0.00158854,0.999998,0.00120339],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
    CONST robtarget Carouselthroughpoint2:=[[667.16,774.45,1671.14],[0.000359892,0.00158618,0.999998,0.00121007],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
    CONST robtarget Carouselthroughpoint40:=[[626.81,783.82,1343.28],[0.000364402,0.00160495,0.999998,0.00121949],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
    CONST robtarget Carouselthroughpoint50:=[[624.33,310.63,1342.12],[0.000360018,0.00160264,0.999998,0.00121656],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
    VAR robtarget tempstartpoint:=[[1007.84,672.12,1075.79],[0.000442879,0.00161264,0.999998,0.0013254],[0,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];

    PROC Carousel()
            PathAccLim TRUE\AccMax:=2,TRUE\DecelMax:=2; !Set acceleration limits
            numberOfCycles := 20;
            sprayDistance:=120;
            plumeangle:=-2;
            strokeLength := 270; ![mm]
            rasterSpeed.v_tcp:=30; ![mm/sec]
            pauseTime := 45; ![seconds]
            !
            !BEGINNING OF MOTION
            MoveL Home150, v500, z50, F4; 
            MoveL Carouselthroughpoint, v500, z50, F4;  
            presentCycle:=0;
            zoffset := (Tan(plumeangle + 5) * sprayDistance) - 50;  !Set offsets in Z axis to maintain overspray with spray angle -40 for semple HOLDER, -60
            sprayDistanceModify:= sprayDistance - 153;
            !
            WHILE presentCycle<numberOfCycles DO  
                    MoveL Carouselthroughpoint2, v500, z50, F4;
                    MoveL RelTool(CarouselstartPoint,sprayDistanceModify,-5,zoffset\Ry:=-plumeangle), v500, fine \Inpos:= inpos20, F4;  !Rotating to accomodate sprayangle
                    tempstartpoint := CRobT (\Tool:= F4, \WObj:= wobj0);                     !Setting start point
                    MoveL Offs(tempstartpoint, 0, 0, -strokeLength), rasterSpeed, z1, F4; !!*******THIS IS THE PROBLEMATIC MOVE INSTRUCION
                    MoveL Carouselthroughpoint40, v2000, z200, F4;
                    MoveL Carouselthroughpoint50, v500, z50, F4;
                    MoveL Carouselthroughpoint, v500, z50, F4; 
                    presentCycle:=presentCycle+1;
                    WaitTime \InPos, pauseTime;
            ENDWHILE
                    MoveL Carouselthroughpoint, v500, z50, F4; 
                    MoveL home150, v500, z50, F4;
    END PROC
  • Thank you for the code. I am only missing the definitions for the tooldata 'F4' and the speeddata 'rasterSpeed'. Can you provide these two definitions? Furthermore which version of the 'IRB 4600 robot' do you use? 
  • Sorry about that... it is the IRB4600_45kg_2.05m

    TASK PERS tooldata F4:=[TRUE,[[-298.159,-0.806216,83.6564],[1,0,0,0]],[8.8,[-70.7,-4.5,107],[1,0,0,0],0,0,0.112]];
    VAR speeddata rasterSpeed:=[1000,500,5000,1000];
    (but the raster speed is set to 30 mm/sec in the program)

    Thanks

  • Thanks for the suggestion, I will give that a try.
    However SingArea \Wrist is not included in the code anywhere and deviations in tcp velocity would also be problematic. 

    The tool(and robot) can be rotated 90 degrees around the tools x-axis, to be level with the 6th joint, instead of hanging below it. i.e. at 9 O'clock, when looking behind the tool instead of 6 O'clock. Not sure how much that description helps, but does that seem like it may be the best option to maintain tcp linearity and velocity?

    Thanks again
    -Mike


  • Pavel Riabichev
    edited July 2016
    Hello MFlynn
    If you confirmed that you have singularity issue,
    you could use RobotStudio to test how to position the robot to get your motions without singularity. You can try with Online monitor or just create a robot with similar motions.


    When the Kinematic Limitation button is enabled, the graphical 3D viewer indicates whether the robot is at a joint limit or at a singularity.

    For joint limits, the corresponding link is highlighted in yellow to indicate a warning and in red to indicate an error. The tolerance limits are defined in RobotStudio Options - Online - Online Monitor.

    For singularity, a markup indicates when the axis 5 is close to singularity. The singularity level is also defined in RobotStudio Options.


    Here is also a thread you can check https://forums.robotstudio.com/discussion/comment/25432/#Comment_25432
    /Pavel
  • Thank you Pavel. I will look into that.