What is causing a 'bump' in an IRB4600 linear movement?
MFlynn
✭
in RobotStudio
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
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
0
Best Answer
-
Do you have SingArea \Wrist; somewher else in the code?
To test if there are singularity problems you could put SingArea\Off; before that motion.
/Pavel5
Answers
-
Can you give some sample code so I can repeat and analyze this problem?0
-
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 limitsnumberOfCycles := 20;sprayDistance:=120;plumeangle:=-2;strokeLength := 270; ![mm]rasterSpeed.v_tcp:=30; ![mm/sec]pauseTime := 45; ![seconds]!!BEGINNING OF MOTIONMoveL 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, -60sprayDistanceModify:= sprayDistance - 153;!WHILE presentCycle<numberOfCycles DOMoveL Carouselthroughpoint2, v500, z50, F4;MoveL RelTool(CarouselstartPoint,sprayDistanceModify,-5,zoffset\Ry:=-plumeangle), v500, fine \Inpos:= inpos20, F4; !Rotating to accomodate sprayangletempstartpoint := CRobT (\Tool:= F4, \WObj:= wobj0); !Setting start pointMoveL Offs(tempstartpoint, 0, 0, -strokeLength), rasterSpeed, z1, F4; !!*******THIS IS THE PROBLEMATIC MOVE INSTRUCIONMoveL Carouselthroughpoint40, v2000, z200, F4;MoveL Carouselthroughpoint50, v500, z50, F4;MoveL Carouselthroughpoint, v500, z50, F4;presentCycle:=presentCycle+1;WaitTime \InPos, pauseTime;ENDWHILEMoveL Carouselthroughpoint, v500, z50, F4;MoveL home150, v500, z50, F4;
END PROC0 -
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?0
-
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
0 -
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
0 -
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
/Pavel1 -
Thank you Pavel. I will look into that.
0
Categories
- All Categories
- 5.5K RobotStudio
- 395 UpFeed
- 18 Tutorials
- 13 RobotApps
- 297 PowerPacs
- 405 RobotStudio S4
- 1.8K Developer Tools
- 249 ScreenMaker
- 2.7K Robot Controller
- 310 IRC5
- 59 OmniCore
- 7 RCS (Realistic Controller Simulation)
- 785 RAPID Programming
- AppStudio
- 3 RobotStudio AR Viewer
- 18 Wizard Easy Programming
- 105 Collaborative Robots
- 4 Job listings