Advanced Search

Search Results (Searched for: )

  • ihavenofish
  • ihavenofish
10 Jun 2024 00:28
Replied by ihavenofish on topic Trajectory Planner using Ruckig Lib

Trajectory Planner using Ruckig Lib

Category: General LinuxCNC Questions

Lots of controls have better HSM motion than linuxcnc. many use splines etc. HOWEVER this does not directly have anything to do with jerk control. This happens a lot in discussions on the matter, people conflate the 2. In software I'm sure there is some intermingling of the functions, but as concepts we need to separate them.

The trajectory planner is I guess level "2" of the operation. Jerk control is level "1" if you will. Jerk control will tell the trajectory planner how it is ALLOWED to accelerate. Before 2.5 we hade a terrible trajectory planner. then we got the new one which put linuxcnc many notches above where it used to be, and above many other hobby controls. What is keeping it behind industrial is NOT that trajectory planner, but jerk control.

Once there is jerk control then it would be great to revisit the planner with deeper look ahead and other clever features to make HSM better.



Other controls that deal with cam output and smooth out motion don't suffer from these issues.   There are no settings currently that resolve said issues,  G64 helps but does not eliminate and only works in some instances.   A trajectory planner that outputs an adjusted tool path preparing motion into smooth curves and tangent arcs îs what I've found to be how other controllers function. 
 

  • Streng123
  • Streng123
10 Jun 2024 00:26
Replied by Streng123 on topic X axis issue 7I96s

X axis issue 7I96s

Category: PnCConf Wizard

 

File Attachment:

File Name: my_LinuxCN...hine.ini
File Size:4 KB
  • ihavenofish
  • ihavenofish
10 Jun 2024 00:15
Replied by ihavenofish on topic Trajectory Planner using Ruckig Lib

Trajectory Planner using Ruckig Lib

Category: General LinuxCNC Questions

I think we are cross talking here. Linear moves have a fixed constant acceration with infinite jerk. Arcs will have a variable acceleration in each axis, BUT the start and end points will still be infinite jerk.

G64 works by effectively creating variable acceleration to blend moves effectively controlling jerk. Depending how the planner works of course, it will still have some jerk in those blends, but not an amount that typically causes a problem. As in, we don't care (much).

The only points in G^4 mode that are problematic for jerk is the beginning, and end of any segment. G64 "breaks" continuity at various points when it simply cannot blend. Obviously the star and end of the program is one such break because you need to come to a stop.

Having jerk control ONLY on exact stop would raise linuxcnc to the expected performance of a basic industrial control and I think this needs to be done and polished FIRST long before people get off into the weeds of jerk limiting more complex motion.

Here is my machine cutting. Always a good example cause it is high acceleration and speed so it shows you very clearly where the clunks are. The whole program for the most part falls under g64, and is largely smooth. It only create a bad jerk with there is a non smooth condition.

  • tommylight
  • tommylight's Avatar
10 Jun 2024 00:09
Replied by tommylight on topic X axis issue 7I96s

X axis issue 7I96s

Category: PnCConf Wizard

The ini file is missing
  • Lcvette
  • Lcvette's Avatar
10 Jun 2024 00:04 - 10 Jun 2024 00:07
Replied by Lcvette on topic Trajectory Planner using Ruckig Lib

Trajectory Planner using Ruckig Lib

Category: General LinuxCNC Questions

@PCW
the biggest issue I've dealt with is how the machine behaves while following gcode primarily adaptive roughing tool paths and repositioning moves.  most cam software outputs short line segments rather than tangent arcs with longer line segments and without a trajectory planner designed to deal with high speed machining and the short line segments you get fast moves that will shake the machine to death in linuxcnc trying to handle them.  Most adaptive feedrates are much faster than finishing where I use exact stop G61.

I have not experienced much issue at all with exact stop g61 moves especially using roll around corners when making finishing passes, most of the time these moves are tangent arcs,  and straight lines with longer lengths and are made at lower feedrates. 

This of course is just where I find the issues to be and may not be the same scenario for others.  

Other controls that deal with cam output and smooth out motion don't suffer from these issues.   There are no settings currently that resolve said issues,  G64 helps but does not eliminate and only works in some instances.   A trajectory planner that outputs an adjusted tool path preparing motion into smooth curves and tangent arcs îs what I've found to be how other controllers function. 
  • Streng123
  • Streng123
09 Jun 2024 23:37
Replied by Streng123 on topic X axis issue 7I96s

X axis issue 7I96s

Category: PnCConf Wizard

File Attachment:

File Name: my_LinuxCN....pncconf
File Size:363 KB

File Attachment:

File Name: shutdown.hal
File Size:0 KB

File Attachment:

File Name: custom_postgui.hal
File Size:0 KB

File Attachment:

File Name: custom.hal
File Size:2 KB

File Attachment:

File Name: my_LinuxCN...hine.hal
File Size:8 KB


Thanks for the reply!
Let me know if these arent the right files
  • rodw
  • rodw's Avatar
09 Jun 2024 23:36
Replied by rodw on topic Trajectory Planner using Ruckig Lib

Trajectory Planner using Ruckig Lib

Category: General LinuxCNC Questions

 but the tangential acceleration (acceleration in the line of motion)
is currently just set by an ini constant

That may not be correct. It certainly isn't for velocity. The ini file sets the velocity and acceleration for each joint. If a linear move is diagonal (where both X & Y axes contribute to the move),  The overall velocity (and probably the accelleration) is higher becasue  both axes are contributing to the move. I would expect the same applies to arcs where the motion at any point in time is tangential to the arc so resolving into X & Y forces will result in contribution by both X & Y axes which I would expect would  achieve the same result as a linear move.
  • PCW
  • PCW's Avatar
09 Jun 2024 23:25
Replied by PCW on topic Trajectory Planner using Ruckig Lib

Trajectory Planner using Ruckig Lib

Category: General LinuxCNC Questions

For constant velocity machining, the centripetal
acceleration is basically controlled by the gcode
(that is, the shape of the curve), but the tangential
acceleration (acceleration in the line of motion)
is currently just set by an ini constant
  • jg00163206
  • jg00163206's Avatar
09 Jun 2024 23:14
Replied by jg00163206 on topic mesa outputs

mesa outputs

Category: General LinuxCNC Questions

oh okay. so the lights for the outputs #4&5 are up near the tb2? that would make sense.
  • cakeslob
  • cakeslob
09 Jun 2024 23:11
Replied by cakeslob on topic Help me setting up My LinuxCNC

Help me setting up My LinuxCNC

Category: Basic Configuration


My Problems.

2. Stepper moves but on higher feed its slows down in middle of movement. Up 1000mm/sec its working. 1000-2200 not moving as expected slows down in middle. above 2200 joint follow error.


if you were still having this issue, thats something you should have mentioned in the other thread, because it is directly related to remora, and its something I can fix relatively fast.
  • jg00163206
  • jg00163206's Avatar
09 Jun 2024 23:11
Replied by jg00163206 on topic mesa outputs

mesa outputs

Category: General LinuxCNC Questions

loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadrt hostmot2
loadrt hm2_eth board_ip="10.10.10.10" config="num_encoders=1 num_pwmgens=1 num_stepgens=5 sserial_port_0=0xxxxxxx"
setp [HMOT](CARD0).pwmgen.pwm_frequency 20000
setp [HMOT](CARD0).pwmgen.pdm_frequency 6000000
setp [HMOT](CARD0).watchdog.timeout_ns 5000000
loadrt pid names=pid.x,pid.y,pid.z,pid.s

addf [HMOT](CARD0).read servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf pid.x.do-pid-calcs servo-thread
addf pid.y.do-pid-calcs servo-thread
addf pid.z.do-pid-calcs servo-thread
addf pid.s.do-pid-calcs servo-thread
addf [HMOT](CARD0).write servo-thread
setp [HMOT](CARD0).dpll.01.timer-us -50
setp [HMOT](CARD0).stepgen.timer-number 1

# external output signals

# --- SPINDLE-BRAKE ---
net spindle-brake => [HMOT](CARD0).outm.00.out-04

# --- SPINDLE-ENABLE ---
net spindle-enable => [HMOT](CARD0).outm.00.out-05


# external input signals

# --- HOME-X ---
net home-x <= [HMOT](CARD0).gpio.001.in_not

# --- HOME-Y ---
net home-y <= [HMOT](CARD0).gpio.002.in_not

# --- HOME-Z ---
net home-z <= [HMOT](CARD0).gpio.003.in_not

# --- PROBE-IN ---
net probe-in <= [HMOT](CARD0).gpio.004.in

# --- ESTOP-EXT ---
net estop-ext <= [HMOT](CARD0).gpio.005.in_not


#*******************
# AXIS X JOINT 0
#*******************

setp pid.x.Pgain [JOINT_0]P
setp pid.x.Igain [JOINT_0]I
setp pid.x.Dgain [JOINT_0]D
setp pid.x.bias [JOINT_0]BIAS
setp pid.x.FF0 [JOINT_0]FF0
setp pid.x.FF1 [JOINT_0]FF1
setp pid.x.FF2 [JOINT_0]FF2
setp pid.x.deadband [JOINT_0]DEADBAND
setp pid.x.maxoutput [JOINT_0]MAX_OUTPUT
setp pid.x.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.x.maxerror 0.000500

net x-index-enable => pid.x.index-enable
net x-enable => pid.x.enable
net x-pos-cmd => pid.x.command
net x-pos-fb => pid.x.feedback
net x-output <= pid.x.output

# Step Gen signals/setup

setp [HMOT](CARD0).stepgen.01.dirsetup [JOINT_0]DIRSETUP
setp [HMOT](CARD0).stepgen.01.dirhold [JOINT_0]DIRHOLD
setp [HMOT](CARD0).stepgen.01.steplen [JOINT_0]STEPLEN
setp [HMOT](CARD0).stepgen.01.stepspace [JOINT_0]STEPSPACE
setp [HMOT](CARD0).stepgen.01.position-scale [JOINT_0]STEP_SCALE
setp [HMOT](CARD0).stepgen.01.step_type 0
setp [HMOT](CARD0).stepgen.01.control-type 1
setp [HMOT](CARD0).stepgen.01.maxaccel [JOINT_0]STEPGEN_MAXACCEL
setp [HMOT](CARD0).stepgen.01.maxvel [JOINT_0]STEPGEN_MAXVEL

# ---closedloop stepper signals---

net x-pos-cmd <= joint.0.motor-pos-cmd
net x-vel-cmd <= joint.0.vel-cmd
net x-output => [HMOT](CARD0).stepgen.01.velocity-cmd
net x-pos-fb <= [HMOT](CARD0).stepgen.01.position-fb
net x-pos-fb => joint.0.motor-pos-fb
net x-enable <= joint.0.amp-enable-out
net x-enable => [HMOT](CARD0).stepgen.01.enable

# ---setup home / limit switch signals---

net home-x => joint.0.home-sw-in
net x-neg-limit => joint.0.neg-lim-sw-in
net x-pos-limit => joint.0.pos-lim-sw-in

#*******************
# AXIS Y JOINT 1
#*******************

setp pid.y.Pgain [JOINT_1]P
setp pid.y.Igain [JOINT_1]I
setp pid.y.Dgain [JOINT_1]D
setp pid.y.bias [JOINT_1]BIAS
setp pid.y.FF0 [JOINT_1]FF0
setp pid.y.FF1 [JOINT_1]FF1
setp pid.y.FF2 [JOINT_1]FF2
setp pid.y.deadband [JOINT_1]DEADBAND
setp pid.y.maxoutput [JOINT_1]MAX_OUTPUT
setp pid.y.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.y.maxerror 0.000500

net y-index-enable => pid.y.index-enable
net y-enable => pid.y.enable
net y-pos-cmd => pid.y.command
net y-pos-fb => pid.y.feedback
net y-output <= pid.y.output

# Step Gen signals/setup

setp [HMOT](CARD0).stepgen.00.dirsetup [JOINT_1]DIRSETUP
setp [HMOT](CARD0).stepgen.00.dirhold [JOINT_1]DIRHOLD
setp [HMOT](CARD0).stepgen.00.steplen [JOINT_1]STEPLEN
setp [HMOT](CARD0).stepgen.00.stepspace [JOINT_1]STEPSPACE
setp [HMOT](CARD0).stepgen.00.position-scale [JOINT_1]STEP_SCALE
setp [HMOT](CARD0).stepgen.00.step_type 0
setp [HMOT](CARD0).stepgen.00.control-type 1
setp [HMOT](CARD0).stepgen.00.maxaccel [JOINT_1]STEPGEN_MAXACCEL
setp [HMOT](CARD0).stepgen.00.maxvel [JOINT_1]STEPGEN_MAXVEL

# ---closedloop stepper signals---

net y-pos-cmd <= joint.1.motor-pos-cmd
net y-vel-cmd <= joint.1.vel-cmd
net y-output => [HMOT](CARD0).stepgen.00.velocity-cmd
net y-pos-fb <= [HMOT](CARD0).stepgen.00.position-fb
net y-pos-fb => joint.1.motor-pos-fb
net y-enable <= joint.1.amp-enable-out
net y-enable => [HMOT](CARD0).stepgen.00.enable

# ---setup home / limit switch signals---

net home-y => joint.1.home-sw-in
net y-neg-limit => joint.1.neg-lim-sw-in
net y-pos-limit => joint.1.pos-lim-sw-in

#*******************
# AXIS Z JOINT 2
#*******************

setp pid.z.Pgain [JOINT_2]P
setp pid.z.Igain [JOINT_2]I
setp pid.z.Dgain [JOINT_2]D
setp pid.z.bias [JOINT_2]BIAS
setp pid.z.FF0 [JOINT_2]FF0
setp pid.z.FF1 [JOINT_2]FF1
setp pid.z.FF2 [JOINT_2]FF2
setp pid.z.deadband [JOINT_2]DEADBAND
setp pid.z.maxoutput [JOINT_2]MAX_OUTPUT
setp pid.z.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.z.maxerror 0.000500

net z-index-enable => pid.z.index-enable
net z-enable => pid.z.enable
net z-pos-cmd => pid.z.command
net z-pos-fb => pid.z.feedback
net z-output <= pid.z.output

# Step Gen signals/setup

setp [HMOT](CARD0).stepgen.03.dirsetup [JOINT_2]DIRSETUP
setp [HMOT](CARD0).stepgen.03.dirhold [JOINT_2]DIRHOLD
setp [HMOT](CARD0).stepgen.03.steplen [JOINT_2]STEPLEN
setp [HMOT](CARD0).stepgen.03.stepspace [JOINT_2]STEPSPACE
setp [HMOT](CARD0).stepgen.03.position-scale [JOINT_2]STEP_SCALE
setp [HMOT](CARD0).stepgen.03.step_type 0
setp [HMOT](CARD0).stepgen.03.control-type 1
setp [HMOT](CARD0).stepgen.03.maxaccel [JOINT_2]STEPGEN_MAXACCEL
setp [HMOT](CARD0).stepgen.03.maxvel [JOINT_2]STEPGEN_MAXVEL

# ---closedloop stepper signals---

net z-pos-cmd <= joint.2.motor-pos-cmd
net z-vel-cmd <= joint.2.vel-cmd
net z-output => [HMOT](CARD0).stepgen.03.velocity-cmd
net z-pos-fb <= [HMOT](CARD0).stepgen.03.position-fb
net z-pos-fb => joint.2.motor-pos-fb
net z-enable <= joint.2.amp-enable-out
net z-enable => [HMOT](CARD0).stepgen.03.enable

# ---setup home / limit switch signals---

net home-z => joint.2.home-sw-in
net z-neg-limit => joint.2.neg-lim-sw-in
net z-pos-limit => joint.2.pos-lim-sw-in

#*******************
# SPINDLE
#*******************

setp pid.s.Pgain [SPINDLE_0]P
setp pid.s.Igain [SPINDLE_0]I
setp pid.s.Dgain [SPINDLE_0]D
setp pid.s.bias [SPINDLE_0]BIAS
setp pid.s.FF0 [SPINDLE_0]FF0
setp pid.s.FF1 [SPINDLE_0]FF1
setp pid.s.FF2 [SPINDLE_0]FF2
setp pid.s.deadband [SPINDLE_0]DEADBAND
setp pid.s.maxoutput [SPINDLE_0]MAX_OUTPUT
setp pid.s.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.s.maxerror 0.000500

net spindle-index-enable => pid.s.index-enable
net spindle-enable => pid.s.enable
net spindle-vel-cmd-rpm => pid.s.command
net spindle-vel-fb-rpm => pid.s.feedback
net spindle-output <= pid.s.output

# Step Gen signals/setup

setp [HMOT](CARD0).stepgen.04.dirsetup [SPINDLE_0]DIRSETUP
setp [HMOT](CARD0).stepgen.04.dirhold [SPINDLE_0]DIRHOLD
setp [HMOT](CARD0).stepgen.04.steplen [SPINDLE_0]STEPLEN
setp [HMOT](CARD0).stepgen.04.stepspace [SPINDLE_0]STEPSPACE
setp [HMOT](CARD0).stepgen.04.position-scale [SPINDLE_0]STEP_SCALE
setp [HMOT](CARD0).stepgen.04.step_type 0
setp [HMOT](CARD0).stepgen.04.control-type 1
setp [HMOT](CARD0).stepgen.04.maxaccel [SPINDLE_0]STEPGEN_MAXACCEL
setp [HMOT](CARD0).stepgen.04.maxvel [SPINDLE_0]STEPGEN_MAXVEL

net machine-is-on => [HMOT](CARD0).stepgen.04.enable
net spindle-vel-cmd-rps => [HMOT](CARD0).stepgen.04.velocity-cmd
net spindle-vel-fb-rps <= [HMOT](CARD0).stepgen.04.velocity-fb
# ---setup spindle control signals---

net spindle-vel-cmd-rps <= spindle.0.speed-out-rps
net spindle-vel-cmd-rps-abs <= spindle.0.speed-out-rps-abs
net spindle-vel-cmd-rpm <= spindle.0.speed-out
net spindle-vel-cmd-rpm-abs <= spindle.0.speed-out-abs
net spindle-enable <= spindle.0.on
net spindle-cw <= spindle.0.forward
net spindle-ccw <= spindle.0.reverse
net spindle-brake <= spindle.0.brake
net spindle-revs => spindle.0.revs
net spindle-at-speed => spindle.0.at-speed
net spindle-vel-fb-rps => spindle.0.speed-in
net spindle-index-enable <=> spindle.0.index-enable

# ---Setup spindle at speed signals---

sets spindle-at-speed true


#******************************
# connect miscellaneous signals
#******************************

# ---HALUI signals---

net axis-select-x halui.axis.x.select
net jog-x-pos halui.axis.x.plus
net jog-x-neg halui.axis.x.minus
net jog-x-analog halui.axis.x.analog
net x-is-homed halui.joint.0.is-homed
net axis-select-y halui.axis.y.select
net jog-y-pos halui.axis.y.plus
net jog-y-neg halui.axis.y.minus
net jog-y-analog halui.axis.y.analog
net y-is-homed halui.joint.1.is-homed
net axis-select-z halui.axis.z.select
net jog-z-pos halui.axis.z.plus
net jog-z-neg halui.axis.z.minus
net jog-z-analog halui.axis.z.analog
net z-is-homed halui.joint.2.is-homed
net jog-selected-pos halui.axis.selected.plus
net jog-selected-neg halui.axis.selected.minus
net spindle-manual-cw halui.spindle.0.forward
net spindle-manual-ccw halui.spindle.0.reverse
net spindle-manual-stop halui.spindle.0.stop
net machine-is-on halui.machine.is-on
net jog-speed halui.axis.jog-speed
net MDI-mode halui.mode.is-mdi

# ---coolant signals---

net coolant-mist <= iocontrol.0.coolant-mist
net coolant-flood <= iocontrol.0.coolant-flood

# ---probe signal---

net probe-in => motion.probe-input

# ---motion control signals---

net in-position <= motion.in-position
net machine-is-enabled <= motion.motion-enabled

# ---digital in / out signals---

# ---estop signals---

net estop-out <= iocontrol.0.user-enable-out
net estop-ext => iocontrol.0.emc-enable-in

# ---toolchange signals for custom tool changer---

net tool-number <= iocontrol.0.tool-prep-number
net tool-change-request <= iocontrol.0.tool-change
net tool-change-confirmed => iocontrol.0.tool-changed
net tool-prepare-request <= iocontrol.0.tool-prepare
net tool-prepare-confirmed => iocontrol.0.tool-prepared
heres the hal file.
  • tommylight
  • tommylight's Avatar
09 Jun 2024 23:06
Replied by tommylight on topic Trajectory Planner using Ruckig Lib

Trajectory Planner using Ruckig Lib

Category: General LinuxCNC Questions

Question:
Can the acceleration be controlled by gcode in LinuxCNC?
I am sure it was mentioned before here, but no idea what exactly.
  • PCW
  • PCW's Avatar
09 Jun 2024 23:01
Replied by PCW on topic Trajectory Planner using Ruckig Lib

Trajectory Planner using Ruckig Lib

Category: General LinuxCNC Questions

I would tend to agree, tangential acceleration is usually more of
an issue since it's entirely machine dependent and not like centripetal
acceleration that you can partially  control with G code.
 
  • PCW
  • PCW's Avatar
09 Jun 2024 21:59

Scaling power based on % of imposed velocity

Category: General LinuxCNC Questions

You could use motion.current-vel and the scale component to do this in hal

A better option might be to pass the current velocity through the
lincurve component to allow linearization since there is probably
not an exact linear relation between velocity and power needed
for the best cut
 
  • acourtjester
  • acourtjester
09 Jun 2024 21:14
Replied by acourtjester on topic THC problem

THC problem

Category: General LinuxCNC Questions

done deal I can move it and remove the .txt from it
Thanks
Displaying 24736 - 24750 out of 26446 results.
Time to create page: 0.616 seconds
Powered by Kunena Forum