LinuxCNC S-Curve Accelerations
- endian
-
- Offline
- Elite Member
-
- Posts: 302
- Thank you received: 113
defenetly is great to have something faster then 1ms .. ethercat can run at 50us with 16axis but this complex calculations are far slower for nowSounds all sensible to me but I really don't feel competent to comment on the proposed path.
I certainly like the structured approach of your initiative, that is something that has been sorely lacking in other attempts.
I think/hope that Rob will be able to give an educated opinion on it and shape it into a concrete roadmap.
Note that Mitsubishi SSCNET requires a servo cycle <= 222us
forum.linuxcnc.org/9-installing-linuxcnc...cnet?start=70#256576
I think 250us is very pretty goal (common industrial standard) at any hardware and then reduce it based at used hardware
Please Log in or Create an account to join the conversation.
- ihavenofish
- Offline
- Platinum Member
-
- Posts: 988
- Thank you received: 281
Sounds all sensible to me but I really don't feel competent to comment on the proposed path.
I certainly like the structured approach of your initiative, that is something that has been sorely lacking in other attempts.
I think/hope that Rob will be able to give an educated opinion on it and shape it into a concrete roadmap.
Note that Mitsubishi SSCNET requires a servo cycle <= 222us
forum.linuxcnc.org/9-installing-linuxcnc...cnet?start=70#256576
defenetly is great to have something faster then 1ms .. ethercat can run at 50us with 16axis but this complex calculations are far slower for now
I think 250us is very pretty goal (common industrial standard) at any hardware and then reduce it based at used hardware
Note than many ethercat drives are also limited to 1khz in position mode. lichuan is, stepperonline/jss i think is and Im pretty sure the delta b3 is. My omrons I think are restricted to 2khz in csp mode.
For 4khz or 8khz usually you are restricted to other modes. At least in the drives I have. There definitely are (much) faster ones, but they are more specialised gear vs generic milling cnc applications.
Point being, 250us sounds great, but I don't know it needs to be any sort of priority cause only few people could use it. But then maybe those few people are important (like the people I know wanting to nanometer scale optical things and MUST have the higher "loop" speed so can't entertain linuxcnc right now)
Please Log in or Create an account to join the conversation.
- grandixximo
-
Topic Author
- Away
- Premium Member
-
- Posts: 151
- Thank you received: 247
I will do it because I want to, don't need cheering up much, although it is nice, it is more about doing something that I can share with everyone, and we are all roughly on the same page, as to what has to be done, but I will do it regardless, and then it can stay in a fork, or merged, we will see...I'll try to have a look at the '9D' branch later. Thanks.
which I got not much feedback..
Just as a word of caution from my own experience:
You mustn't expect to much from a forum thread like this. Few people will even read a post that long, fewer still look at the code and hardly anybody will even try to understand it. I know of at least one long time contributor, since retired, who got quite bitter about trying to get sustained and involved feedback here. Even from the very people asking for the specific feature.
Please Log in or Create an account to join the conversation.
- grandixximo
-
Topic Author
- Away
- Premium Member
-
- Posts: 151
- Thank you received: 247
Should be able to get new build artifacts, not sure, or you can build my fork
Need some help with testing, thanks!
Please Log in or Create an account to join the conversation.
- automata
- Offline
- Premium Member
-
- Posts: 95
- Thank you received: 75
Nicely laid out plan.
There is one more nuance for a motion planner that should be considered when looking at a complete re-write for linuxcnc motion planner internals.
For operating robots, some moves are given in joint space and some are given in cartesian space.
For most commercial robots, MOVJ and MOVL/MOVC are separate commands for joint space v/s cartesian space commands.
The MOV* commands also have a sync parameter which chooses if all the axes should start and finish at the same time (rapid move) OR should the motion start and finish at the same time.
When switching between MOVJ and MOVL there is no need to specify the a Kinematics switch. I am guessing they use 2 separate planners and the switch is made at stand still i.e., zero vel and accel for all joints and axes.
Having this ability for multiple on-the-fly switchable planners will make Linuxcnc much more useful for operating robots.
The only reason to bring this up in the conversation regarding jerk limiting is the planner re-write could consider these types of use cases from ground up.
-automata
Please Log in or Create an account to join the conversation.
- grandixximo
-
Topic Author
- Away
- Premium Member
-
- Posts: 151
- Thank you received: 247
it is still a switch but nothing moves and can be done on the fly, does that work? or you are looking for something else?
Please Log in or Create an account to join the conversation.
- endian
-
- Offline
- Elite Member
-
- Posts: 302
- Thank you received: 113
You are right, I agree with you 100%, main goal is get lcnc with curves at 1khz ... Timig is very wide and difficult topic but faster code means more play to some latency or timig issues of something, stability, rigidity etc...Sounds all sensible to me but I really don't feel competent to comment on the proposed path.
I certainly like the structured approach of your initiative, that is something that has been sorely lacking in other attempts.
I think/hope that Rob will be able to give an educated opinion on it and shape it into a concrete roadmap.
Note that Mitsubishi SSCNET requires a servo cycle <= 222us
forum.linuxcnc.org/9-installing-linuxcnc...cnet?start=70#256576
defenetly is great to have something faster then 1ms .. ethercat can run at 50us with 16axis but this complex calculations are far slower for now
I think 250us is very pretty goal (common industrial standard) at any hardware and then reduce it based at used hardware
Note than many ethercat drives are also limited to 1khz in position mode. lichuan is, stepperonline/jss i think is and Im pretty sure the delta b3 is. My omrons I think are restricted to 2khz in csp mode.
For 4khz or 8khz usually you are restricted to other modes. At least in the drives I have. There definitely are (much) faster ones, but they are more specialised gear vs generic milling cnc applications.
Point being, 250us sounds great, but I don't know it needs to be any sort of priority cause only few people could use it. But then maybe those few people are important (like the people I know wanting to nanometer scale optical things and MUST have the higher "loop" speed so can't entertain linuxcnc right now)
I think it is reachable timing .. faster tick means better final result of movement and better regulation feedback with velocity or current control..
Then we can say isolated cpu to sleep if it will runs at longer timing then 250us .. finally we can use more masters at other network interface to run it with different timing if it is needed and then let cpu to sleep
I think Luca's goal are very very well definied .. from my point of view there is missing just pos(t+1) or pos(t-1) for position commands to any drivers which is not using the velocity setpoint(its cosmetic to not see the ferror during movement with position setpoint)
We can runs 16khz with beckhoff but there is latency restictions... for now... I am running 0.5khz with profibus equidistant and it works well but with trapeziodal its was pain.. now with scurve its smooth like butter... lower timing than 1khz are for gentelmen which they know what they are doing.. its advanced I think
Please Log in or Create an account to join the conversation.
- ruediger123
- Offline
- Junior Member
-
- Posts: 26
- Thank you received: 32
Very good work!
I've started testing.
I've noticed that the track speed is very low with G2/G3, but significantly higher with G64 Pxx.
More tomorrow.
Please Log in or Create an account to join the conversation.
- endian
-
- Offline
- Elite Member
-
- Posts: 302
- Thank you received: 113
Sounds all sensible to me but I really don't feel competent to comment on the proposed path.
I certainly like the structured approach of your initiative, that is something that has been sorely lacking in other attempts.
I think/hope that Rob will be able to give an educated opinion on it and shape it into a concrete roadmap.
Note that Mitsubishi SSCNET requires a servo cycle <= 222us
forum.linuxcnc.org/9-installing-linuxcnc...cnet?start=70#256576
defenetly is great to have something faster then 1ms .. ethercat can run at 50us with 16axis but this complex calculations are far slower for now
I think 250us is very pretty goal (common industrial standard) at any hardware and then reduce it based at used hardware
Note than many ethercat drives are also limited to 1khz in position mode. lichuan is, stepperonline/jss i think is and Im pretty sure the delta b3 is. My omrons I think are restricted to 2khz in csp mode.
For 4khz or 8khz usually you are restricted to other modes. At least in the drives I have. There definitely are (much) faster ones, but they are more specialised gear vs generic milling cnc applications.
Point being, 250us sounds great, but I don't know it needs to be any sort of priority cause only few people could use it. But then maybe those few people are important (like the people I know wanting to nanometer scale optical things and MUST have the higher "loop" speed so can't entertain linuxcnc right now)
You are right, I agree with you 100%, main goal is get lcnc with curves at 1khz ... Timig is very wide and difficult topic but faster code means more play to some latency or timig issues of something, stability, rigidity etc...
I think it is reachable timing .. faster tick means better final result of movement and better regulation feedback with velocity or current control..
Then we can say isolated cpu to sleep if it will runs at longer timing then 250us .. finally we can use more masters at other network interface to run it with different timing if it is needed and then let cpu to sleep
I think Luca's goal are very very well definied .. from my point of view there is missing just pos(t+1) or pos(t-1) for position commands to any drivers which is not using the velocity setpoint(its cosmetic to not see the ferror during movement with position setpoint)
We can runs 16khz with beckhoff but there is latency restictions... for now... I am running 0.5khz with profibus equidistant and it works well but with trapeziodal its was pain.. now with scurve its smooth like butter... lower timing than 1khz are for gentelmen which they know what they are doing.. its advanced I think
Gentelmen, I am sorry for talking about editing and adding the positionCmd(t+1) or positionCmd(t-1) to active creating planner but there is a problem of unsynchronized movement or synchronized(t+-x) motion ... it is common issue of any outsourced position control stuff
if somebody has stuff for example running at ethercat with CSP, he/she will be still in lag for cycle or two cycles(if he/she will not has reference cycle negative) behind stuff at same control master for example CSV which will have PID- with FF1 set to 1.0 ... feedforward compensation will not be present and lagging axis will create(during higher speed motion) unsynchronization and it could influence final shape during some 3d pathing or finishing... with higher speed it will create higher lag (I am talking about ethercat because I can test it myself at my HW)
this is just my ideas, please let me know your point of view ...
thanks
Please Log in or Create an account to join the conversation.
- grandixximo
-
Topic Author
- Away
- Premium Member
-
- Posts: 151
- Thank you received: 247
The standard already solves this problem. You don't need pos(t+1).
The 1 cycle delay is real, but it's identical for all axes. With Distributed Clocks everything executes on the same SYNC edge, synchronized to ~100ns. Every axis is "late" by the same amount, so the path shape is correct. Calculate it last week, execute it this week, the part is the same.
The CiA 402 standard provides feedforward objects exactly for this: 0x60B1 (velocity offset) and 0x60B2 (torque offset). The master can send position plus velocity feedforward so the drive can anticipate acceleration. This is the standard's solution, it just needs to be mapped in lcec.
Also, good drives interpolate internally. The servo loop runs faster than the bus cycle (Maxon runs 0.4ms internal vs 1ms bus). The drive doesn't jump between positions, it interpolates. That's what 0x60C2 configures.
If you're seeing ferror correlate with velocity in halscope, that's likely a display artifact. The ferror compares "commanded from 1 cycle ago" with "actual now", so it shows an offset proportional to velocity. It's not a real machining error.
What does your actual part surface look like? Any real deviation you can measure?
Please Log in or Create an account to join the conversation.