Core XY kinetics

48 views
Skip to first unread message

Matt Gueller

unread,
Sep 11, 2015, 2:32:04 PM9/11/15
to TinyG Development
Is there any implementation of the Core XY theory into the TinyG firmware?  I have built a Laser cutter built around a Core XY grbl setup and it really works well.  it also helps bypass some of the restrictions on dual motor gantry setups for CNC.

I would pay hard cash for Core XY implementation on TinyG

MG

Carl McGrath

unread,
Sep 11, 2015, 6:41:32 PM9/11/15
to TinyG Development
I have picked up and learned a lot in the last couple years in this space, but have no idea what you are talking about.
Undoubtedly, some veterans are well aware.
Can your provide a pointer (URL) to what you believe is the definitive reference  for "Core XY theory" ?

Alden Hart

unread,
Sep 11, 2015, 6:51:04 PM9/11/15
to devT...@googlegroups.com
Core XY is a kinematics that was originated by Ilan Moyer at MIT (brilliant guy, by the way). 

It’s a relatively straightforward and we’d like to implement it in TinyG / G2. What are you using to for?

Alden


--
You received this message because you are subscribed to the Google Groups "TinyG Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to devTinyG+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Dave Hylands

unread,
Sep 11, 2015, 6:51:47 PM9/11/15
to devT...@googlegroups.com
Hey Carl,

CoreXY is technique to move X & Y using 2 steppers without having to have either stepper physically move (thus reducing the moving mass).
Here's a page which describes the theory behind it:
http://corexy.com/theory.html

Basically, if both steppers move in the same direction you get X axis movement. If both steppers move in opposite directions you get Y axis movement.

--
You received this message because you are subscribed to the Google Groups "TinyG Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to devTinyG+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--
Dave Hylands
Shuswap, BC, Canada
http://www.davehylands.com

Matt Gueller

unread,
Sep 11, 2015, 6:55:23 PM9/11/15
to devT...@googlegroups.com, cmcgra...@gmail.com
Carl,
Core XY is something I tried  and I really like it.


It basically restructures the math to use 2 motors together to run motion an any single direction.  The down side is it is a little tricky to set up.  The upside is it keeps motion parallel  to the line of travel, it prevents torsion on the x/y axis.

It works.  I have it setup on grbl.

Matthew Gueller

--
You received this message because you are subscribed to a topic in the Google Groups "TinyG Development" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/devTinyG/XLj35j_pSOY/unsubscribe.
To unsubscribe from this group and all its topics, send an email to devTinyG+u...@googlegroups.com.

Matt Gueller

unread,
Sep 11, 2015, 7:01:03 PM9/11/15
to devT...@googlegroups.com, al...@tenmilesquare.co
Alden,
I just purchased a TinyG board today to use for a CNC build,  Hopefully, core xy can still be implemented there too...

On a large CNC build, you'd need 2 y-axis motors (run in parallel) to run the gantry but if the design was set up correctly, you might be able to do it with a core xy arrangement, 2 motors and not 3, for x/y movement.

MG

--
You received this message because you are subscribed to a topic in the Google Groups "TinyG Development" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/devTinyG/XLj35j_pSOY/unsubscribe.
To unsubscribe from this group and all its topics, send an email to devTinyG+u...@googlegroups.com.

Jim Foster

unread,
Sep 11, 2015, 7:05:24 PM9/11/15
to TinyG Development
That's fascinating. Can you get diagonal movement too? If so, how is that done? With different rates/RPMS on the steppers?

Torrie Fischer

unread,
Sep 11, 2015, 7:27:32 PM9/11/15
to devT...@googlegroups.com
The CoreXY site has some equations of motion used:

∆X = (∆A + ∆B) / 2
∆Y = (∆A - ∆B) / 2

From that you can deduce the distance needed to move any single stepper motor to achieve movement in the XY plane:

∆A = ∆X + ∆Y
∆B = ∆X - ∆Y

So, to move in a diagonal fashion, you just need to move one of the motors while the other remains fixed. To move linearly, move both motors concurrently at the same speed. To move at some in-between angle, move them concurrently, but at different speeds.

On Fri, Sep 11, 2015 at 4:05 PM, Jim Foster <j...@fiberbits.com> wrote:
That's fascinating. Can you get diagonal movement too?  If so, how is that done? With different rates/RPMS on the steppers?

mikest

unread,
Sep 11, 2015, 7:36:29 PM9/11/15
to devT...@googlegroups.com
tinyg doesn't have this mapping, but it wouldn't be difficult to add!

note that tinyg also currently doesn't have power/velocity ramping, which is also something you need for a laser cutter to function well.

getting laser support into tinyg is something that's on my list, as i'd love to replace the chinese driver in my own laser. i might be up for collaborating on this.

--mikest

Carl McGrath

unread,
Sep 11, 2015, 9:52:43 PM9/11/15
to devT...@googlegroups.com
OK, this is a good reference; easy to see how it works.

Just staring at the "Reference Mechanism", first thing that came to my mind was belt tension/stretch and the resulting impact on dynamic accuracy, particularly for large mass spindles.
I assume that most of the laser "spindles" are low mass, so of less concern.

Unless I am missing something, it seems the (deltaX, deltaY) to (deltaA, deltaB) could be straightforwardly implemented in a ChiliPeppr Macro, translating Gcode on the fly..
I have not done such a macro, but I know others have rather quickly, and frankly the math is not really complex.

Cool, thanks for the quick tutorial.

Matt Gueller

unread,
Sep 11, 2015, 10:56:29 PM9/11/15
to TinyG Development


To be clear,  I have and existing laser machine that I built using the Core XY arrangement with a grbl board on an Uno.  This setup works very well.  What I am considering is build a much larger CNC machine using TinyG as a controller, but it would be nice to run the X&Y axis on a CORE XY arrangement.  It may work as well enough so that I don't have to run 2 Y-Axis gantry motors.

MG

Alden Hart

unread,
Sep 12, 2015, 5:44:39 AM9/12/15
to TinyG Development
Mike, I'd be interested in your ideas on both fronts - Core XY translation and power modulation on acceleration.


On Friday, September 11, 2015 at 7:36:29 PM UTC-4, Mike Estee wrote:
tinyg doesn't have this mapping, but it wouldn't be difficult to add!

note that tinyg also currently doesn't have power/velocity ramping, which is also something you need for a laser cutter to function well.

getting laser support into tinyg is something that's on my list, as i'd love to replace the chinese driver in my own laser. i might be up for collaborating on this.

--mikest
On Fri, Sep 11, 2015 at 4:27 PM, Torrie Fischer  wrote:
The CoreXY site has some equations of motion used:

∆X = (∆A + ∆B) / 2
∆Y = (∆A - ∆B) / 2

From that you can deduce the distance needed to move any single stepper motor to achieve movement in the XY plane:

∆A = ∆X + ∆Y
∆B = ∆X - ∆Y

So, to move in a diagonal fashion, you just need to move one of the motors while the other remains fixed. To move linearly, move both motors concurrently at the same speed. To move at some in-between angle, move them concurrently, but at different speeds.
On Fri, Sep 11, 2015 at 4:05 PM, Jim Foster  wrote:
That's fascinating. Can you get diagonal movement too?  If so, how is that done? With different rates/RPMS on the steppers?

--
You received this message because you are subscribed to the Google Groups "TinyG Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to devTinyG+unsubscribe@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "TinyG Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to devTinyG+unsubscribe@googlegroups.com.

mikest

unread,
Sep 12, 2015, 6:07:48 PM9/12/15
to devT...@googlegroups.com
as torrie mentioned, the transform is a fairly straightforward one to go from ∆X/Y to ∆A/B. the A/B motors should have identical motor characteristics, but I'm not sure if the jerk and corning equations need adjusting. my guess is that they don't. Cross X/Y could just be a system flag to switch modes. the motor/axis mapping code would need a little rethinking since each axis shares the same motors. that's probably most of it.

I don't have a cross x/y gantry at the moment, but the watercolorbot has that structural loop and i'll be visiting EMSL soon ^_^

laser PWM/velocity mapping is needed to implement power control while cornering. cheap chinese controllers implement it very poorly and you enter a low and high number for your laser PWM percentage. the frequency is scaled between min velocity and max linearly. this kinda mostly works, if you don't mind hand tuning the low number all the time.

to do it right, one needs to maintain the same W/sec from the laser while going through the turn. super simple to do once you have the Hz/W mapping for the laser driver. i know almost nothing about that problem space though ;)

the PWM driver update rate might be challenging, it may need to be implemented more like a motor axis step train, and less like an on chip timer. not sure.

those are my thoughts at the moment.

On Sat, Sep 12, 2015 at 2:44 AM, Alden Hart <al...@tenmilesquare.com> wrote:
Mike, I'd be interested in your ideas on both fronts - Core XY translation and power modulation on acceleration.

On Friday, September 11, 2015 at 7:36:29 PM UTC-4, Mike Estee wrote:
tinyg doesn't have this mapping, but it wouldn't be difficult to add!

note that tinyg also currently doesn't have power/velocity ramping, which is also something you need for a laser cutter to function well.

getting laser support into tinyg is something that's on my list, as i'd love to replace the chinese driver in my own laser. i might be up for collaborating on this.

--mikest
On Fri, Sep 11, 2015 at 4:27 PM, Torrie Fischer  wrote:
The CoreXY site has some equations of motion used:

∆X = (∆A + ∆B) / 2
∆Y = (∆A - ∆B) / 2

From that you can deduce the distance needed to move any single stepper motor to achieve movement in the XY plane:

∆A = ∆X + ∆Y
∆B = ∆X - ∆Y

So, to move in a diagonal fashion, you just need to move one of the motors while the other remains fixed. To move linearly, move both motors concurrently at the same speed. To move at some in-between angle, move them concurrently, but at different speeds.
On Fri, Sep 11, 2015 at 4:05 PM, Jim Foster  wrote:
That's fascinating. Can you get diagonal movement too?  If so, how is that done? With different rates/RPMS on the steppers?

--
You received this message because you are subscribed to the Google Groups "TinyG Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to devTinyG+u...@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "TinyG Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to devTinyG+u...@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "TinyG Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to devTinyG+u...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages