April 25, 2019, 10:09:15 AM
Robotforum | Industrial Robots Community

 Yin Yang

Author Topic:  Yin Yang  (Read 900 times)

0 Members and 1 Guest are viewing this topic.

August 09, 2018, 05:54:19 AM
Read 900 times


So I'm brand new to Fanuc and robots in general. Just finished making a circle program and a "pac man" program today. We've got a yin yang shape to make Friday, and i'd like to be as prepared as possible when I get there.

As easy as the circle was, I thought I had made the pac man perfectly the first time. I ended up having too big of an angle for my circle and the robot wouldn't cooperate. I did figure it out though (with instructor coaching) .

So as I try to wrap my head around this yin yang, I know i've got to do at least 4 points for the circle of it. The part in struggling to wrap my head around is the "wavy" line that goes through the middle. I don't want to take all day trying to figure it out.

I've tried to search the board, as well as google and youtube.

Any help is greatly appreciated.

Today at 10:09:15 AM
Reply #1



August 09, 2018, 12:25:22 PM
Reply #1


For the wavy line (or any instance with a changing curvature) use Circular Arc points instead of regular Circle points.

1. You must have three A moves in a row for them to make an arc.
2. The first A move will be treated as a linear move, so make it a very very short jump from your circle to the start of your wave.
3. A moves constantly look ahead 2 points, treating the current point as point one and the next two as two and three, and they will perform a matching arc between the current point and the second point, then it will look ahead again, and adjust accordingly. This makes it so your can basically make any curve.

August 10, 2018, 03:03:20 AM
Reply #2


Thank you for your response!

I'm pretty sure I'm gonna be on the RJ3 with MH 5.3, so I'm not entirely sure that A is a choice. I only remember Joint, Linear, and Circle as options on the older robot.

Hopefully it is there, and I just didn't notice it.

August 10, 2018, 12:10:30 PM
Reply #3


I only have experience with R-30iB, so I apologize if the option isn't there. The alternative would be to determine the circular components of the wave and use those, but it will be harder and not as smooth, I believe.

August 10, 2018, 04:56:28 PM
Reply #4


What part of the wave is causing problems? It's two half-circles going opposite directions - each with a diameter half the circle's. The "eyes" might require come calculation... They might have a diameter 1/4 the circle. Discounting inaccuracies, you could probably build a routine to use a centerpoint and diameter/radius to create one of any size.
Of course, it's easier for the guy who doesn't have to do it...
« Last Edit: August 10, 2018, 05:07:00 PM by Iowan »

August 10, 2018, 05:14:26 PM
Reply #5


You are correct, i should have looked at a yin yang symbol instead of going from memory. I was invisioning a changing slope. This can be done as 8 half circles, with regular circular moves. Definitely could make it programatic with a center and radius!

August 10, 2018, 05:51:51 PM
Reply #6


Code: [Select]

UF = 0
UT = 1

PR[17] = LPOS (set to Cartesian coords)
PR[17,4] = 0 (Touchup to determine Yaw)
PR[17,5] = 0 (Touchup to determine Pitch)
PR[17,6] = 0 (Touchup to determine Roll)

PR[1] = PR[17] (Initialize angles)
PR[2] = PR[17] (Initialize angles)
PR[3] = PR[17] (Initialize angles)
PR[4] = PR[17] (Initialize angles)
PR[5] = PR[17] (Initialize angles)
PR[6] = PR[17] (Initialize angles)
PR[7] = PR[17] (Initialize angles)
PR[8] = PR[17] (Initialize angles)
PR[9] = PR[17] (Initialize angles)
PR[10] = PR[17] (Initialize angles)
PR[11] = PR[17] (Initialize angles)
PR[12] = PR[17] (Initialize angles)
PR[13] = PR[17] (Initialize angles)
PR[14] = PR[17] (Initialize angles)
PR[15] = PR[17] (Initialize angles)
PR[16] = PR[17] (Initialize angles)

PR[1,1] = AR[1]
PR[1,2] = AR[2] + AR[4]
PR[1,3] = AR[3]

PR[2,1] = AR[1] + AR[4]
PR[2,2] = AR[2]
PR[2,3] = AR[3]

PR[3,1] = AR[1]
PR[3,2] = AR[2] - AR[4]
PR[3,3] = AR[3]

PR[4,1] = AR[1] - AR[4]
PR[4,2] = AR[2]
PR[4,3] = AR[3]

PR[5,1] = AR[1] - (0.5 * AR[4])
PR[5,2] = AR[2] - (0.5 * AR[4])
PR[5,3] = AR[3]

PR[6,1] = AR[1]
PR[6,2] = AR[2]
PR[6,3] = AR[3]

PR[7,1] = AR[1] + (0.5 * AR[4])
PR[7,2] = AR[2] + (0.5 * AR[4])
PR[7,3] = AR[3]

PR[8,1] = AR[1] + (0.66667 * AR[4])
PR[8,2] = AR[2]
PR[8,3] = AR[3]

PR[9,1] = AR[1] + (0.5 * AR[4])
PR[9,2] = AR[2] - (0.16667 * AR[4])
PR[9,3] = AR[3]

PR[10,1] = AR[1] + (0.33333 * AR[4])
PR[10,2] = AR[2]
PR[10,3] = AR[3]

PR[11,1] = AR[1] + (0.5 * AR[4])
PR[11,2] = AR[2] + (0.16667 * AR[4])
PR[11,3] = AR[3]

PR[12,1] = AR[1] - (0.5 * AR[4])
PR[12,2] = AR[2] + (0.16667 * AR[4])
PR[12,3] = AR[3]

PR[13,1] = AR[1] - (0.66667 * AR[4])
PR[13,2] = AR[2]
PR[13,3] = AR[3]

PR[14,1] = AR[1] - (0.5 * AR[4])
PR[14,2] = AR[2] - (0.16667 * AR[4])
PR[14,3] = AR[3]

PR[15,1] = AR[1] - (0.33333 * AR[4])
PR[15,2] = AR[2]
PR[15,3] = AR[3]

PR[16,1] = 0
PR[16,2] = 0
PR[16,3] = AR[3] + 50

J P[1] (Home)
J PR[4] Offset PR[16]
L PR[4]
C PR[1]
C PR[3]
C PR[5]
C PR[7]
L PR[7] Offset PR[16]
J PR[8] Offset PR[16]
L PR[8]
C PR[9]
C PR[11]
L PR[8] Offset PR[16]
J PR[12] Offset PR[16]
L PR[12]
C PR[13]
C PR[15]
L PR[12] Offset PR[16]
J P[1] (Home)

I think something like this would work, where you call it: YINYANG(X,Y,Z,R)

Today at 10:09:15 AM
Reply #7



Share via facebook Share via linkedin Share via pinterest Share via reddit Share via twitter