Toolpathing of a spiral
in RobotStudio
Hello,
I would like to create a spiral toolpath shown in the attached image. I would only like the Robotic arm to move only in the XZ plane (please see lables superimposed on in the attached image). I would also like the Joint 2 of the positioner to turn concurrently in order to maintain a fixed speed along the spiral. I am hoping that I do not have to manually teach the robot and the positioner hundreds of points in order to achieve my goal.
Can someone please
suggest a good way to approach this problem?
Thank you.
Best Regards,
Eric
0
Comments
-
Hi,
It might be possible to do something like this.
1. Use AutoPath to create a path with targets along the spiral. Use circlar approximation to keep the number of targets down, and specify a reference surface from the workpiece to orient the targets.
2. Fix orientation of the targets if needed.
3. Sync to RAPID.
4. Modify the external axes value of each target. Either manually by rotating the positioner until the target is straight up, or by calculating the rotation from the x-y position of the target in the rotating workobject. E.g. extax.eaxc = (n * 360) + atan2(trans.x, trans.y) where n is the number of revolutions so far. (Tip: use the data editor, perhaps in conjunction with Excel!)
Johannes Weiman
Software Engineer
RobotStudio Team, ABB Robotics1 -
..On the other hand it might be better to take the procedural approach, see attached example.
Note that it uses circular movements of 180 degrees which might not be a good enough approximation of a spiral. In that case you'd have to use more points.
Johannes Weiman
Software Engineer
RobotStudio Team, ABB Robotics2 -
Hello JWeiman,
Thank you for your response. Your sample program was of great help. You have given me a lot to think about.
Best Regards,
Eric0 -
Thanks for this, it helped me make some real progress.
In my current setup however only jointtargets will work (task has external axis and robot).
Is there any way around this or is it possible to convert to jointargets on the fly?
0 -
I think it would be difficult because jointtargets don't support linear or circular movement. But I'm not sure I understand why you can't use robtargets?Johannes Weiman
Software Engineer
RobotStudio Team, ABB Robotics0 -
Thanks for the reply. My multimive setup has external axes (a rotating one for the workobject, vertical elevators) in the tasks so robotstudio wont allow me to use robtargets?
0 -
multimive supposed to be multimoveSo we have 2 robots that share 2 external axes and are both drawing helix like objects in sync.I didn't expect it to be easy or automatic. When adding the external axis to the robtarget how good is the synchronization?0
-
I can use the moveC code with the multimove setup (thats great) but running into near singularity errors.
Maybe my axes arent right.
Also, Robotstudio gui wont show positions of targets updated in code?
0 -
Sorry for the spam after looking at the setup more I am curious about the external axes setup. Looks like there are 2 axes: 8 and 9?
0 -
2 more probably beginner questions:Is there an advantage to making the positioner a robot with tcp instead of a mechanical unit?The white line drawing in the gui isnt a path but something else?I switched off view> paths and it stayed around. How is it done?Thanks so much0
-
Question. Why not attach a sensor to the external axis base plate and connect it via Input with the robot? Inside your program run a trap routine which offsets the current jt every time the signal is activated. By doing this the trigger for the offset is the signal from the external axis and is every time on the same position.0
-
We might do that. Found the tcp trace option...
0 -
For an actual coordianted system I put the robot and positioner in separate tasks framed by SyncMoveOns?LikePROC main() ! positioner
MoveExtJ JointTargetP_5,vmax,fine;! stop
WaitSyncTask s1,t1;
SyncMoveOn s7,t1;
FOR i FROM 1 TO numTurns DO
JointTargetP_1.extax.eax_a:=JointTargetP_1.extax.eax_a + rot_cw;! - 180
MoveExtJ JointTargetP_1\ID:=10,vrot100,z10;
JointTargetP_1.extax.eax_a:= JointTargetP_1.extax.eax_a + rot_cw;! - 360
MoveExtJ JointTargetP_1\ID:=20,vrot100,z10;
ENDFOR
SyncMoveOff s4;! \Timeout:=30;
ENDPROCPROC main() ! robot
WaitSyncTask s1,t1;
ConfL \On;
MoveJ Target_R2_30,v100,fine,tool0\WObj:=Workobject_1; !\ID:=0
!MoveAbsJ JointTarget_5,vmax,fine,tool0; !\ID:=0
SyncMoveOn s7,t1;
FOR i FROM 1 TO numRotations DO
MoveC Target_R2_20,Target_R2_50\ID:=10,v100,z10,tool0\WObj:=Workobject_1;! -180
MoveC Target_R2_40,Target_R2_30\ID:=20,v100,fine,tool0\WObj:=Workobject_1; !-360
Target_R2_40.trans.z:=Target_R2_40.trans.z + 5;
Target_R2_30.trans.z:=Target_R2_30.trans.z + 5;
Target_R2_20.trans.z:=Target_R2_20.trans.z + 5;
Target_R2_50.trans.z:=Target_R2_50.trans.z + 5;
ENDFOR
SyncMoveOff s4;
ENDPROC
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