# Circle path with a constant orientation

Hello,

In our company, we want to use a Cobot for a special application : glue application in the corners of a circular face ( alike this video https://www.youtube.com/watch?v=jWhsL74CL9c)

I want the robot to add an angle α at its movements in order to reach the corners all over the circular path like this :

In order to have the angle all over the path (at each points of the circular path) I changed the program : I added +/-0.4 radian at RX or RY for p1, p2, p3 and p4

Example : p1:=pose_add(center,p[ r ,0,0, 0.4 ,0,0])

Below the two programs that allow to have a circular path with an angle 0.4 :

It seems like for the first circle arc, the UR3 keeps an angle of 0.4 rad and then loose it when the second circle arc start… (the Robot is doing a wavy path all around the circle)

Like if the mid point of the arc is not controlled for angle (Rx,RY,RZ), only xyz position.

Does someone have a formula that calculate each positions around the circle and then using simply a movej to go to each of those points ?

Or maybe another solution ?

That video was not performed using the built-in circle move. We actually defined the point that it was going to and moved the point around the perimeter of the circle and then had the robot move to that point. We controlled the speed by changing the step size of the radians between rotations.

With this solution we built in the angle that we wanted to hold the dispenser into the tooling, not the TCP. The TCP position was straight out the tool flange at the center of the flange.

So the process is move to the center point and then move out to the start of the circle and then basically spin the center point and move to it. We used the radiusAdjustment to compensate for the circle being larger than the tool. This was a very quick and dirty solution but it worked, we ran over 10k parts using this algorithm and its simple to implement

This is a number of years old but here is that section of the robot program

``````hbCircleMove
Parameters
Set loctiteMach=On
rz≔-.785. #Starting point of the circle
z≔5/1000
circleOffset≔3.5 #This is 3.5mm from the center point to compensate for the tool was slightly smaller than the lid
y≔circleOffset/1000
x≔0
MoveJ
siliconeCent_var (This is the center point of the circle)
MoveJ
point≔p[0,y,z,0,0,rz]
pointTrans≔pose_trans(siliconeCent_var,point)
pointTrans
circle move
Movement
Set dispenseSilicon=On
Loop 360 times
rz≔rz+.0175
MoveJ
var_3≔Loop_1
If Loop_1<180
ElseIf Loop_1>180
If Loop_1<90
ElseIf Loop_1>90 and Loop_1<180
ElseIf Loop_1>180 and Loop_1<270
ElseIf Loop_1>270
point≔p[x,y,z,0,0,rz]
pointTrans≔pose_trans(siliconeCent,point)
pointTrans
Set dispenseSilicon=Off
Wait: 0.5
MoveJ
clearCup
Set loctiteMach=Off``````
2 Likes

I have seen the same problems when I am teaching courses in UR programming.

If you have 2 consecutive half cirkels the second one will not follow the settings for tool orientation.

I think it is a bug!

Calculating position in loop (the equation of the circle) and then use movej or servoj always works.

1 Like

I create un program similar at yours.

But I still have a problem.

I create a circle path according to the base space
I want to add Rx,Ry orientations but with the tool space and not from the base.

How can I do that ?

Here is what I have :
center = p[x,y,z,0,0,0] according to the base space system
Angle_point = p[0,0,0,Rx,Ry,0] according to the tool space system

To get the position, I want to add (for each points of the path) the center coordinates to the angle-point coordinates.

Is there a solution to add 2 points with a different space system ?

Hello !

I create a program using the equation of the circle but I still have difficulties to add orientations RX and Ry. Like I said before :

I create a circle path according to the base space
I want to add Rx,Ry orientations but with the tool space and not from the base.

Here is what I have :
center = p[x,y,z,0,0,0] according to the base space system
Angle_point = p[0,0,0,Rx,Ry,0] according to the tool space system

To get the position, I want to add (for each points of the path) the center coordinates to the angle-point coordinates.

Is there a solution to add 2 points with a different space system ?

And could you tell me what is servoj ?

The rotations are always in tool frame, unfortunately, so should just work the way you want it to.

1 Like