Author Topic: Yin Yang  (Read 404 times)

0 Members and 1 Guest are viewing this topic.

Offline Bigg6987

  • Newbie
  • *
  • Thank You
  • -Given: 2
  • -Receive: 0
  • Posts: 2
Yin Yang
« on: August 09, 2018, 05:54:19 AM »
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.

Online Robo_Eng_13

  • Full Member
  • ***
  • Thank You
  • -Given: 34
  • -Receive: 27
  • Posts: 215
Re: Yin Yang
« Reply #1 on: August 09, 2018, 12:25:22 PM »
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.

Offline Bigg6987

  • Newbie
  • *
  • Thank You
  • -Given: 2
  • -Receive: 0
  • Posts: 2
Re: Yin Yang
« Reply #2 on: August 10, 2018, 03:03:20 AM »
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.

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.

Online Robo_Eng_13

  • Full Member
  • ***
  • Thank You
  • -Given: 34
  • -Receive: 27
  • Posts: 215
Re: Yin Yang
« Reply #3 on: August 10, 2018, 12:10:30 PM »
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.

Offline Iowan

  • Hero Member
  • *****
  • Thank You
  • -Given: 1
  • -Receive: 87
  • Posts: 653
Re: Yin Yang
« Reply #4 on: August 10, 2018, 04:56:28 PM »
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 »

Online Robo_Eng_13

  • Full Member
  • ***
  • Thank You
  • -Given: 34
  • -Receive: 27
  • Posts: 215
Re: Yin Yang
« Reply #5 on: August 10, 2018, 05:14:26 PM »
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!

Online Robo_Eng_13

  • Full Member
  • ***
  • Thank You
  • -Given: 34
  • -Receive: 27
  • Posts: 215
Re: Yin Yang
« Reply #6 on: August 10, 2018, 05:51:51 PM »
Code: [Select]
YINYANG

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]
PR[2]
C PR[3]
PR[4]
C PR[5]
PR[6]
C PR[7]
PR[2]
L PR[7] Offset PR[16]
J PR[8] Offset PR[16]
L PR[8]
C PR[9]
PR[10]
C PR[11]
PR[8]
L PR[8] Offset PR[16]
J PR[12] Offset PR[16]
L PR[12]
C PR[13]
PR[14]
C PR[15]
PR[12]
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)