RobotStudio event

Robot path is jerking at when making a 90 degree turn

stephen127
edited August 2015 in Robot Controller
We are using an IRB4600-40/2.55 to hold a product and move it under a dispensing system. When the robot makes a 90 degree turn at the corner, the path starts to jerk a little bit as you can see in the images I attached. I need to eliminate this and make it a clean turn and straight path. Does any one know how to prevent this happening? Thank you so much. Partial code is given here: GripLoad screen; AccSet 50, 50; WaitTime 1; TriggIO do_set, 65\DOp:=R2_DispRequest, 1; TriggL \Conc, Offs(R2_DispC1,100+dx,-distout+dy,tipoff2), DispSpeed, do_set, z10, tool0\WObj:=wobjdisp1; !Corner#1 outside MoveL Offs(R2_DispC1,distapproch+dx,-distout+dy,tipoff2), DispSpeed, z10, tool0\WObj:=wobjdisp1; MoveL Offs(R2_DispC1,-distout+dx,-distout+dy,tipcorner2), DispSpeedC, z20, tool0\WObj:=wobjdisp1; MoveL Offs(R2_DispC1,-distout+dx,distapproch+dy,tipoff2),DispSpeed, z10, tool0\WObj:=wobjdisp1; !Corner#4 outside MoveL Offs(R2_DispC4,-distout+dx,-distapproch+dy,tipoff2),DispSpeed, z10, tool0\WObj:=wobjdisp1; MoveL Offs(R2_DispC4,-distout+dx,distout+dy,tipcorner2), DispSpeedC, z20, tool0\WObj:=wobjdisp1; MoveL Offs(R2_DispC4,distapproch+dx,distout+dy,tipoff2),DispSpeedC, z10, tool0\WObj:=wobjdisp1; !Corner#3 outside MoveL Offs(R2_DispC3,-distapproch+dx,distout+dy,tipoff2),DispSpeed, z10, tool0\WObj:=wobjdisp1; MoveL Offs(R2_DispC3,distout+dx,distout+dy,tipcorner2), DispSpeedC, z20, tool0\WObj:=wobjdisp1; MoveL Offs(R2_DispC3,distout+dx,-distapproch+dy,tipoff2),DispSpeedC, z10, tool0\WObj:=wobjdisp1; !Corner#2 outside MoveL Offs(R2_DispC2,distout+dx,distapproch+dy,tipoff2),DispSpeed, z10, tool0\WObj:=wobjdisp1; MoveL Offs(R2_DispC2,distout+dx,-distout+dy,tipcorner2), DispSpeedC, z20, tool0\WObj:=wobjdisp1; MoveL Offs(R2_DispC2,-distapproch+dx,-distout+dy,tipoff2),DispSpeedC, z10, tool0\WObj:=wobjdisp1; !Outside-to-Inside transition MoveL Offs(R2_DispC1,108+dx,-distout+dy,tipoff2),DispSpeed, z10, tool0\WObj:=wobjdisp1; MoveL Offs(R2_DispC1,92+dx,distin+dy,tipoff2),DispSpeed, z10, tool0\WObj:=wobjdisp1; !Corner#1 inside MoveL Offs(R2_DispC1,distapproch+dx,distin+dy,tipoff2),DispSpeed2, z10, tool0\WObj:=wobjdisp1; MoveL Offs(R2_DispC1,distin+dx,distin+dy,tipcorner2), DispSpeedC, z20, tool0\WObj:=wobjdisp1; MoveL Offs(R2_DispC1,distin+dx,distapproch+dy,tipoff2),DispSpeed2, z10, tool0\WObj:=wobjdisp1; !Corner#4 inside MoveL Offs(R2_DispC4,distin+dx,-distapproch+dy,tipoff2),DispSpeed2, z10, tool0\WObj:=wobjdisp1; MoveL Offs(R2_DispC4,distin+dx,-distin+dy,tipcorner2), DispSpeedC, z20, tool0\WObj:=wobjdisp1; MoveL Offs(R2_DispC4,distapproch+dx,-distin+dy,tipoff2),DispSpeed2, z10, tool0\WObj:=wobjdisp1; !Corner#3 inside MoveL Offs(R2_DispC3,-distapproch+dx,-distin+dy,tipoff2),DispSpeed2, z10, tool0\WObj:=wobjdisp1; MoveL Offs(R2_DispC3,-distin+dx,-distin+dy,tipcorner2), DispSpeedC, z20, tool0\WObj:=wobjdisp1; MoveL Offs(R2_DispC3,-distin+dx,-distapproch+dy,tipoff2),DispSpeed2, z10, tool0\WObj:=wobjdisp1; !Corner#2 MoveL Offs(R2_DispC2,-distin+dx,distapproch+dy,tipoff2),DispSpeed2, z10, tool0\WObj:=wobjdisp1; MoveL Offs(R2_DispC2,-distin+dx,distin+dy,tipcorner2), DispSpeedC, z20, tool0\WObj:=wobjdisp1; MoveL Offs(R2_DispC2,-distapproch+dx,distin+dy,tipoff2),DispSpeed2, z10, tool0\WObj:=wobjdisp1; !End TriggIO do_reset, 50\DOp:=R2_DispRequest, 0; TriggL \Conc, Offs(R2_DispC1,100+dx,distin+dy,tipoff2), DispSpeed2, do_reset, fine, tool0\WObj:=wobjdisp1; AccSet 100,100; MoveL Offs(R2_DispC1,100+dx,distin+dy,50),DispSpeed, z10, tool0\WObj:=wobjdisp1; MoveL Offs(R2_DispHole2,0+dx,5+h2yi+dy,50),DispSpeed, z10, tool0\WObj:=wobjdisp; Set R2_DispComplete; GripLoad load0; Also, is there a function that can record the velocity change in a module so that I can understand what is really going on with robot? Thanks.
Tagged:

Comments

  • If you have RobotStudio you can get a graph of the velocity using signal analyzer if you run the program in a virtual controller. I should have played around with the zones in your case. Hard to tell how close robtargets are to each other without the robtarget data and offset data,but you should avoid that zones cross each other.
    Per Svensson
    Robotics and Vision Specialist
    Consat Engineering
  • For each corner path, there are three robtargets, which is 30 mm away from each other. The outer and inner loop is 12 mm away from each other.
  • Do you have any coordination between the dispensing system and the robot motion? Depending on zone etc. the robot will probably not have a constant speed which if you have constant flow on the dispenser will put to much glue when for example the robot makes a turn. The best way to see how the robot accelerates and deaccelerates is to run your motion program in RobotStudio.
    Per Svensson
    Robotics and Vision Specialist
    Consat Engineering
  • There is no coordination between the dispensing nozzle and the robot motion. The nozzle is a stationary one. I checked the acceleration and deceleration in RobotStudio. At each corner, there is a huge drop for accel and decel. Even though my attention is maintain a relative constant speed around the corner, which I realize may be impossible, I didn't expect such a huge change. The robot has to decel to almost v100 to make the turn where I wanted to maintain it close to 400.
    Do you have any coordination between the dispensing system and the robot motion? Depending on zone etc. the robot will probably not have a constant speed which if you have constant flow on the dispenser will put to much glue when for example the robot makes a turn. The best way to see how the robot accelerates and deaccelerates is to run your motion program in RobotStudio.
  • Hello guys, Did you find a solution for that issues? I am facing almost the same issue
  • I guess you are using incorrect TCP the reason why you have different speed and acceleration in your dispensing point.You must use a remote TCP.