- Posts: 238
- Thank you received: 37
LinuxCNC S-Curve Accelerations
- TheRoslyak
- Offline
- Elite Member
-
Less
More
5 years 4 months ago #211417
by TheRoslyak
Replied by TheRoslyak on topic LinuxCNC S-Curve Accelerations
Hi.
Is it possible to simple import this module in linuxcnc?
It need me for this topic forum.linuxcnc.org/27-driver-boards/4274...-with-stm32-or-esp32
Or can you say another way: How to smooth velocity?
Is it possible to simple import this module in linuxcnc?
It need me for this topic forum.linuxcnc.org/27-driver-boards/4274...-with-stm32-or-esp32
Or can you say another way: How to smooth velocity?
Please Log in or Create an account to join the conversation.
- chris@cnc
- Offline
- Platinum Member
-
Less
More
- Posts: 529
- Thank you received: 140
5 years 4 months ago - 5 years 4 months ago #211728
by chris@cnc
Replied by chris@cnc on topic LinuxCNC S-Curve Accelerations
I try to find an easier way and stumbled over Sigmoid function. My Idea is to build s-curve gain and multiply to current acceleration. This function get back good result but i am not able to scale the timer. If its possible to define this function with timers could we bend anything to S curve.
What do you thing about this way?
What do you thing about this way?
Warning: Spoiler!
Code:
component scurve " ";
description
"""
/******* Description *****************
HAL componet to put out scurve gain
Input scurve timecycle
Output scuve
********* Compile **************
halcompile --compile scurve.comp
sudo halcompile --install scurve.comp
Halfile load :
loadrt scruve
addf scurve.0 servo-thread
setp scurve.0.time
setp scurve.0.in
*/
""";
author "Chris@cnc";
license "GPL";
// Input pins
pin in float stime=10; //this value has to setp command.
pin in bit in=0;
// Output pins
pin out float out;
pin out float counter;
pin out float multi;
pin out float totalnsec;
function _;
;;
#include "rtapi_math.h"
FUNCTION(_) {
//double totalnsec;
if(in && counter <= stime) {
totalnsec += fperiod;
counter += totalnsec * 0.1;
out = 1 / ( 1+exp(-counter));
}
else {
out = 0;
counter = -10;
totalnsec = 0;
}
}
Last edit: 5 years 4 months ago by chris@cnc.
Please Log in or Create an account to join the conversation.
- TheRoslyak
- Offline
- Elite Member
-
Less
More
- Posts: 238
- Thank you received: 37
5 years 4 months ago #211870
by TheRoslyak
Replied by TheRoslyak on topic LinuxCNC S-Curve Accelerations
Hi arvidb,
Can you share how you imported S-Curve Accelerations?
Looking at scope you did it.
Can you share how you imported S-Curve Accelerations?
Looking at scope you did it.
Please Log in or Create an account to join the conversation.
- arvidb
- Offline
- Platinum Member
-
Less
More
- Posts: 459
- Thank you received: 158
5 years 4 months ago - 5 years 4 months ago #211876
by arvidb
Replied by arvidb on topic LinuxCNC S-Curve Accelerations
Hi TheRoslyak,
What you see on the scope is just the simplest case of jerk-limited motion: from stationary to stationary with a constant velocity part in between. There are much trickier cases that must work too for the code to be usable.
My code isn't finished yet. Since my last post I've fixed the bug I found during testing with the MPG (and another one), but there is still one corner case that I have to implement, and then integrate the resulting library with the LinuxCNC build system. I've had precious little "leftover energy" to spend on hobby programming lately, but the project is still moving forward, albeit *very* slowly at present.
What you see on the scope is just the simplest case of jerk-limited motion: from stationary to stationary with a constant velocity part in between. There are much trickier cases that must work too for the code to be usable.
My code isn't finished yet. Since my last post I've fixed the bug I found during testing with the MPG (and another one), but there is still one corner case that I have to implement, and then integrate the resulting library with the LinuxCNC build system. I've had precious little "leftover energy" to spend on hobby programming lately, but the project is still moving forward, albeit *very* slowly at present.
Last edit: 5 years 4 months ago by arvidb.
Please Log in or Create an account to join the conversation.
- automata
- Offline
- Premium Member
-
Less
More
- Posts: 105
- Thank you received: 93
5 years 4 months ago #211893
by automata
Replied by automata on topic LinuxCNC S-Curve Accelerations
Hi arvidb,
Nice work with the jerk limited motion.
I am very much interested in helping out and have decent experience in the linuxcnc codebase. ( I coded the original switch kins module to switch between multiple kinematics).
It you share your current branch which looks in good form, the community can move together to solve this long standing missing feature from one of the most flexible and open cnc software.
- automata
Nice work with the jerk limited motion.
I am very much interested in helping out and have decent experience in the linuxcnc codebase. ( I coded the original switch kins module to switch between multiple kinematics).
It you share your current branch which looks in good form, the community can move together to solve this long standing missing feature from one of the most flexible and open cnc software.
- automata
Please Log in or Create an account to join the conversation.
- chris@cnc
- Offline
- Platinum Member
-
Less
More
- Posts: 529
- Thank you received: 140
5 years 4 months ago #211917
by chris@cnc
Replied by chris@cnc on topic LinuxCNC S-Curve Accelerations
hello arvidb hello automata, i would also help as far as i can. My approach would be a 2nd acceleration time in the ini that defines the curve. So we can easily decide whether linear or in s-curve. And the curve defines, for example, the sigmoid function. Some servo manufacturers go this route and it works very well. I have no idea how to start this. what do you think of this idea?
Christian
Christian
Please Log in or Create an account to join the conversation.
Time to create page: 2.197 seconds