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

2-Axis Positioner with UR Robot

#1
Is there an example on how to configure a Universal Robot with a 2-axis Positioner controlled via PLC?

Since the robot and positioner cannot synchronize the movements together. I would need to move them one after another but I want to make the positioner stay at a fixed position. In RoboDK itself I can set the weights in the Optimize External Axes panel to be 100,000 for the positioners to not move. But how would I export or modify the post processor for the script for the robot to use. Where the robot talks to the PLC to tell the positioner to rotate to it's angles then the robot continues with it's movement?

An example of the scripts flow would be like:

Code:
START
Rotate Positioner Axis 1
Rotate Positioner Axis 2
Robot Movement
..
Robot Movement
END
#2
You need to create the positioner as a separate mechanism consisting of linked axes, and do not synchronize it with the robot.

You will be able to create separate programs to control the positioner. You can then call these programs as subroutines within the main robot control program.

You can also assign specific names to these programs and identify them by these names in the postprocessor’s RunCode function. This will allow you to generate the code needed to control the axes using a PLC.

Most examples in our library that use gripping mechanisms operate on this principle.

This approach works well for applications where the positioner needs to move between index positions. For more complex tasks, such as welding circumferential seams using external axes, the robot controller must support operation with external axes in interpolation mode.
#3
How can I create a program call to a single script that rotates the Positioner to specific angles? I have multiple programs that are orientated at different positioner angles on both axes. But it seems like I can only call the python script by name when I want to pass in the angles as parameters to the script. Would I need to create multiple sub-scripts/programs just to rotate the positioner separately for each program?
#4
Yes, with this approach, you will need to use a set of programs, where each program specifies one of the positioner's operating positions.

You can use the Joints() function directly in the post-processor to read the positioner's axis values:
https://robodk.com/doc/en/PythonAPI/robo...tem.Joints
#5
Thanks Sergei for the tips.

I also want to ask, instead of increasing the weights inside of the Optimize External Axes panel to be a very large number to prevent the positioner/external axis from moving. Is there a proper way of just disabling or preventing the positioner from rotating when generating the path?

For example, if the path that the robot is following goes out of range or is in an orientation that the robot cannot follow. RoboDK will force the positioner to rotate to allow the robot to continue along the path. But I want the positioner to stay fixed to that angle I've told it to go to, that I set in the Project Setting's starting joint fields.
#6
To prevent the positioner or external axes from moving during path generation you should assign a very high weight (e.g., 1000) to the positioner axes in the Optimize External Axes panel, which effectively prevents them from moving by making their movement highly undesirable during path optimization.

If you want the positioner to stay fixed at a specific angle (such as the starting joint position), you can manually set those joint values and keep the weights high to avoid any automatic adjustment. There is no built-in feature to completely lock the external axes during path generation other than this weighting method.

For more details, you can refer to the RoboDK documentation on axes optimization here:
https://robodk.com/doc/en/General.html#AxesOptimization
#7
Yes, that is what I have been doing and setting the weights to 100,000 like in the tip on the documentation. Though this does work and I can keep the positioner still. There are still cases where RoboDK will attempt to move the positioner and robot to go to a random orientation for the robot to reach the path.

Is it possible to implement this as a feature to keep a fixed position/angle on external joints?
#8
All weights in the optimization window are relative to each other. If we added a checkbox to allow blocking an axis it would be to force a high weight that is hard coded and it could generate more confusion. The problem is that a very high weight could make the other preferences invalid as the other settings become irrelevant.

For example, if you want to prioritize one axis over another while still moving both you can add weights 10-100 times higher than another. And if you want to block an axis you should have a weight weight 100-1000 times highter than the other weights.
  




Users browsing this thread:
1 Guest(s)