LinuxCNC S-Curve Accelerations

More
4 years 10 months ago #229898 by Aciera
Replied by Aciera on topic LinuxCNC S-Curve Accelerations
True, it doesn't have to be planner that does the checking, I'm not even sure it is the planner that checks for limit violations in the current software. All that is required is a limit check using the machines kinematics before it starts moving.

Please Log in or Create an account to join the conversation.

More
4 years 10 months ago #230219 by Grotius
Replied by Grotius on topic LinuxCNC S-Curve Accelerations
Hi,

All that is required is a limit check using the machines kinematics before it starts moving.
I don't know if that solves the problem of crashing into machine limits.
If you use a "safe zone" on top of "machine limits" it would problably be unable to crash with full speed into a machine limit.

The "safe zone" is a "distance and maxacc value" where the machine is still able to stop before crashing into machine limit.

For example, when jogging 100% speed x+, the machine will crash into machine limit x at full speed.
When the "safe zone" is active. It will overwrite the jog x+ button to stop perfectly at machine limit x with 0 velocity.



 

Please Log in or Create an account to join the conversation.

More
4 years 10 months ago #230233 by Grotius
Replied by Grotius on topic LinuxCNC S-Curve Accelerations
Hi,

Today i want to show what the benefits of using a scurve with lineair transition period could be.

Picture on the right side:
Scurve with no lineair transition period.
Conventional lineair result:
  1. time tot:10
  2. velocity tot:10
  3. displacment tot:50
Scurve result (convace+convex):
  1. time tot:10
  2. velocity tot:10
  3. displacement tot:50
Improvements: the scurve has a better acceleration-deceleration period then a conventional lineair acceleration  period.


Picture on the left side:
Scurve with lineair transition period.
Conventional lineair result:
  1. time tot:6.35
  2. velocity tot:6.35
  3. displacment tot:20.16
Scurve result (concave+lineair transition+convex)
  1. time tot:6.35
  2. velocity tot:10
  3. displacement tot:31.75

Result:
It looks like the scurve with lineair transition period increases the machine displacement with factor 1.57

The scurve algoritme is suited with a "gain" value instead of "velocity begin and velocity end" value's that are
original used by the sientific papers.

I integrated this modification to simplify the scurve algoritme.

When "gain" value = 0 it outputs a conventional straight acceleration period.
When "gain" value > 0. It outputs a s-curve. (magic happens).
If gain value > 2*velocity it outputs a full scurve without lineair transtion stage. (like ruckig's output).
If gain value < 2*velocity it outputs a curve with lineair transition stage.

So it is a fact, this new algo is more efficient than the ruckig algoritme that has no lineair transition period.

 








 
The following user(s) said Thank You: robertspark, Darium

Please Log in or Create an account to join the conversation.

More
4 years 10 months ago #230324 by robertspark
Replied by robertspark on topic LinuxCNC S-Curve Accelerations
is it possible to swap out the motion planner and replace it with this on a working lathe, mill, router or plasma cutter?

if so how would one do it?

( presently using a RIP install)

Please Log in or Create an account to join the conversation.

More
4 years 10 months ago #230392 by Darium
Replied by Darium on topic LinuxCNC S-Curve Accelerations
I'm rooting for this project, hope you prevail!!!

Please Log in or Create an account to join the conversation.

More
4 years 9 months ago - 4 years 9 months ago #230477 by Grotius
Replied by Grotius on topic LinuxCNC S-Curve Accelerations
is it possible to swap out the motion planner and replace it with this on a working lathe, mill, router or plasma cutter?
At the moment, no.

if so how would one do it?
In my code solutions it load's as a component. Just as you load a pid or stepgen hal component and then add it to the
servo-thread.

I'm rooting for this project, hope you prevail!!!
It's really a cruel project to code. I am working for weeks on this now. Every day i make little progress.
Some day's i have to start with a new technique to get where i want.

Past day's i have made little progress. The difficulty is now how to deal with user inputs like changing velocity max
during program run. Or when the current gcode line can not reach velocity target etc.

To make things easyer for myself, i decided to give this project a little different approach.

Currently coding a traditional lineair curve setup that deal's with user input senario's.

When this traditional lineair code is finished, i can copy/paste the scurve code into it.

c++ template function for traditional lineair curve. This function can be of type <float> or <double>
video  of the function output.

The video shows different senario's like:
1. Gcode input "velocity end [ve]" can not be reached by the given gcode "displacement ", Calculate new [ve].
2. In some cases the "velocity max [vs]" can not be reached. Or the [vs] is changed by user input.
3. Using one or a combined result off: acc period, steady period, dcc period.
Last edit: 4 years 9 months ago by Grotius.
The following user(s) said Thank You: Darium

Please Log in or Create an account to join the conversation.

Time to create page: 0.301 seconds
Powered by Kunena Forum