Skip to content

Commit 617ff5e

Browse files
committed
✨ FTM_CONSTANT_JOLT
MarlinFirmware/Marlin#28476
1 parent 6b2ff28 commit 617ff5e

411 files changed

Lines changed: 8220 additions & 2877 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

config/default/Configuration_adv.h

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1237,16 +1237,29 @@
12371237

12381238
#define FTM_POLYS // Disable POLY5/6 to save ~3k of Flash. Preserves TRAPEZOIDAL.
12391239
#if ENABLED(FTM_POLYS)
1240-
#define FTM_TRAJECTORY_TYPE TRAPEZOIDAL // Block acceleration profile (TRAPEZOIDAL, POLY5, POLY6)
1241-
// TRAPEZOIDAL: Continuous Velocity. Max acceleration is respected.
1242-
// POLY5: Like POLY6 with 1.5x but uses less CPU.
1243-
// POLY6: Continuous Acceleration (aka S_CURVE).
1244-
// POLY trajectories not only reduce resonances without rounding corners, but also
1245-
// reduce extruder strain due to linear advance.
1246-
12471240
#define FTM_POLY6_ACCELERATION_OVERSHOOT 1.875f // Max acceleration overshoot factor for POLY6 (1.25 to 1.875)
12481241
#endif
12491242

1243+
/**
1244+
* FTM Constant-Jolt Trajectory (7-phase S-curve).
1245+
* Jolt is the rate of change of acceleration, not related to Marlin's "classic jerk."
1246+
* Ramps acceleration gradually so max acceleration is limited by max speed and distance traveled.
1247+
*/
1248+
//#define FTM_CONSTANT_JOLT
1249+
#if ENABLED(FTM_CONSTANT_JOLT)
1250+
#define FTM_DEFAULT_JOLT 250.0f // (m/s³) Default jolt for constant-jolt trajectory.
1251+
// Higher values print faster at the cost of increased resonance and extruder stress
1252+
#endif
1253+
1254+
// Block acceleration profile
1255+
// :[ 'TRAPEZOIDAL', 'POLY5', 'POLY6', 'CONSTANT_JOLT' ]
1256+
#define FTM_TRAJECTORY_TYPE TRAPEZOIDAL // TRAPEZOIDAL: Continuous Velocity. Max acceleration is respected.
1257+
// POLY5: Like POLY6 with 1.5x but uses less CPU. Requires FTM_POLYS.
1258+
// POLY6: Continuous Acceleration (aka S_CURVE). Requires FTM_POLYS.
1259+
// CONSTANT_JOLT: 7-phase S-curve. Requires FTM_CONSTANT_JOLT.
1260+
// POLY trajectories not only reduce resonances without rounding corners, but
1261+
// also reduce extruder strain due to linear advance.
1262+
12501263
/**
12511264
* Advanced configuration
12521265
*/

config/examples/3DFabXYZ/Migbot/Configuration_adv.h

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1232,16 +1232,29 @@
12321232

12331233
#define FTM_POLYS // Disable POLY5/6 to save ~3k of Flash. Preserves TRAPEZOIDAL.
12341234
#if ENABLED(FTM_POLYS)
1235-
#define FTM_TRAJECTORY_TYPE TRAPEZOIDAL // Block acceleration profile (TRAPEZOIDAL, POLY5, POLY6)
1236-
// TRAPEZOIDAL: Continuous Velocity. Max acceleration is respected.
1237-
// POLY5: Like POLY6 with 1.5x but uses less CPU.
1238-
// POLY6: Continuous Acceleration (aka S_CURVE).
1239-
// POLY trajectories not only reduce resonances without rounding corners, but also
1240-
// reduce extruder strain due to linear advance.
1241-
12421235
#define FTM_POLY6_ACCELERATION_OVERSHOOT 1.875f // Max acceleration overshoot factor for POLY6 (1.25 to 1.875)
12431236
#endif
12441237

1238+
/**
1239+
* FTM Constant-Jolt Trajectory (7-phase S-curve).
1240+
* Jolt is the rate of change of acceleration, not related to Marlin's "classic jerk."
1241+
* Ramps acceleration gradually so max acceleration is limited by max speed and distance traveled.
1242+
*/
1243+
//#define FTM_CONSTANT_JOLT
1244+
#if ENABLED(FTM_CONSTANT_JOLT)
1245+
#define FTM_DEFAULT_JOLT 250.0f // (m/s³) Default jolt for constant-jolt trajectory.
1246+
// Higher values print faster at the cost of increased resonance and extruder stress
1247+
#endif
1248+
1249+
// Block acceleration profile
1250+
// :[ 'TRAPEZOIDAL', 'POLY5', 'POLY6', 'CONSTANT_JOLT' ]
1251+
#define FTM_TRAJECTORY_TYPE TRAPEZOIDAL // TRAPEZOIDAL: Continuous Velocity. Max acceleration is respected.
1252+
// POLY5: Like POLY6 with 1.5x but uses less CPU. Requires FTM_POLYS.
1253+
// POLY6: Continuous Acceleration (aka S_CURVE). Requires FTM_POLYS.
1254+
// CONSTANT_JOLT: 7-phase S-curve. Requires FTM_CONSTANT_JOLT.
1255+
// POLY trajectories not only reduce resonances without rounding corners, but
1256+
// also reduce extruder strain due to linear advance.
1257+
12451258
/**
12461259
* Advanced configuration
12471260
*/

config/examples/3DMatik/XL/Configuration_adv.h

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1232,16 +1232,29 @@
12321232

12331233
#define FTM_POLYS // Disable POLY5/6 to save ~3k of Flash. Preserves TRAPEZOIDAL.
12341234
#if ENABLED(FTM_POLYS)
1235-
#define FTM_TRAJECTORY_TYPE TRAPEZOIDAL // Block acceleration profile (TRAPEZOIDAL, POLY5, POLY6)
1236-
// TRAPEZOIDAL: Continuous Velocity. Max acceleration is respected.
1237-
// POLY5: Like POLY6 with 1.5x but uses less CPU.
1238-
// POLY6: Continuous Acceleration (aka S_CURVE).
1239-
// POLY trajectories not only reduce resonances without rounding corners, but also
1240-
// reduce extruder strain due to linear advance.
1241-
12421235
#define FTM_POLY6_ACCELERATION_OVERSHOOT 1.875f // Max acceleration overshoot factor for POLY6 (1.25 to 1.875)
12431236
#endif
12441237

1238+
/**
1239+
* FTM Constant-Jolt Trajectory (7-phase S-curve).
1240+
* Jolt is the rate of change of acceleration, not related to Marlin's "classic jerk."
1241+
* Ramps acceleration gradually so max acceleration is limited by max speed and distance traveled.
1242+
*/
1243+
//#define FTM_CONSTANT_JOLT
1244+
#if ENABLED(FTM_CONSTANT_JOLT)
1245+
#define FTM_DEFAULT_JOLT 250.0f // (m/s³) Default jolt for constant-jolt trajectory.
1246+
// Higher values print faster at the cost of increased resonance and extruder stress
1247+
#endif
1248+
1249+
// Block acceleration profile
1250+
// :[ 'TRAPEZOIDAL', 'POLY5', 'POLY6', 'CONSTANT_JOLT' ]
1251+
#define FTM_TRAJECTORY_TYPE TRAPEZOIDAL // TRAPEZOIDAL: Continuous Velocity. Max acceleration is respected.
1252+
// POLY5: Like POLY6 with 1.5x but uses less CPU. Requires FTM_POLYS.
1253+
// POLY6: Continuous Acceleration (aka S_CURVE). Requires FTM_POLYS.
1254+
// CONSTANT_JOLT: 7-phase S-curve. Requires FTM_CONSTANT_JOLT.
1255+
// POLY trajectories not only reduce resonances without rounding corners, but
1256+
// also reduce extruder strain due to linear advance.
1257+
12451258
/**
12461259
* Advanced configuration
12471260
*/

config/examples/ADIMLab/Gantry v1/Configuration_adv.h

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1232,16 +1232,29 @@
12321232

12331233
#define FTM_POLYS // Disable POLY5/6 to save ~3k of Flash. Preserves TRAPEZOIDAL.
12341234
#if ENABLED(FTM_POLYS)
1235-
#define FTM_TRAJECTORY_TYPE TRAPEZOIDAL // Block acceleration profile (TRAPEZOIDAL, POLY5, POLY6)
1236-
// TRAPEZOIDAL: Continuous Velocity. Max acceleration is respected.
1237-
// POLY5: Like POLY6 with 1.5x but uses less CPU.
1238-
// POLY6: Continuous Acceleration (aka S_CURVE).
1239-
// POLY trajectories not only reduce resonances without rounding corners, but also
1240-
// reduce extruder strain due to linear advance.
1241-
12421235
#define FTM_POLY6_ACCELERATION_OVERSHOOT 1.875f // Max acceleration overshoot factor for POLY6 (1.25 to 1.875)
12431236
#endif
12441237

1238+
/**
1239+
* FTM Constant-Jolt Trajectory (7-phase S-curve).
1240+
* Jolt is the rate of change of acceleration, not related to Marlin's "classic jerk."
1241+
* Ramps acceleration gradually so max acceleration is limited by max speed and distance traveled.
1242+
*/
1243+
//#define FTM_CONSTANT_JOLT
1244+
#if ENABLED(FTM_CONSTANT_JOLT)
1245+
#define FTM_DEFAULT_JOLT 250.0f // (m/s³) Default jolt for constant-jolt trajectory.
1246+
// Higher values print faster at the cost of increased resonance and extruder stress
1247+
#endif
1248+
1249+
// Block acceleration profile
1250+
// :[ 'TRAPEZOIDAL', 'POLY5', 'POLY6', 'CONSTANT_JOLT' ]
1251+
#define FTM_TRAJECTORY_TYPE TRAPEZOIDAL // TRAPEZOIDAL: Continuous Velocity. Max acceleration is respected.
1252+
// POLY5: Like POLY6 with 1.5x but uses less CPU. Requires FTM_POLYS.
1253+
// POLY6: Continuous Acceleration (aka S_CURVE). Requires FTM_POLYS.
1254+
// CONSTANT_JOLT: 7-phase S-curve. Requires FTM_CONSTANT_JOLT.
1255+
// POLY trajectories not only reduce resonances without rounding corners, but
1256+
// also reduce extruder strain due to linear advance.
1257+
12451258
/**
12461259
* Advanced configuration
12471260
*/

config/examples/ADIMLab/Gantry v2/Configuration_adv.h

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1232,16 +1232,29 @@
12321232

12331233
#define FTM_POLYS // Disable POLY5/6 to save ~3k of Flash. Preserves TRAPEZOIDAL.
12341234
#if ENABLED(FTM_POLYS)
1235-
#define FTM_TRAJECTORY_TYPE TRAPEZOIDAL // Block acceleration profile (TRAPEZOIDAL, POLY5, POLY6)
1236-
// TRAPEZOIDAL: Continuous Velocity. Max acceleration is respected.
1237-
// POLY5: Like POLY6 with 1.5x but uses less CPU.
1238-
// POLY6: Continuous Acceleration (aka S_CURVE).
1239-
// POLY trajectories not only reduce resonances without rounding corners, but also
1240-
// reduce extruder strain due to linear advance.
1241-
12421235
#define FTM_POLY6_ACCELERATION_OVERSHOOT 1.875f // Max acceleration overshoot factor for POLY6 (1.25 to 1.875)
12431236
#endif
12441237

1238+
/**
1239+
* FTM Constant-Jolt Trajectory (7-phase S-curve).
1240+
* Jolt is the rate of change of acceleration, not related to Marlin's "classic jerk."
1241+
* Ramps acceleration gradually so max acceleration is limited by max speed and distance traveled.
1242+
*/
1243+
//#define FTM_CONSTANT_JOLT
1244+
#if ENABLED(FTM_CONSTANT_JOLT)
1245+
#define FTM_DEFAULT_JOLT 250.0f // (m/s³) Default jolt for constant-jolt trajectory.
1246+
// Higher values print faster at the cost of increased resonance and extruder stress
1247+
#endif
1248+
1249+
// Block acceleration profile
1250+
// :[ 'TRAPEZOIDAL', 'POLY5', 'POLY6', 'CONSTANT_JOLT' ]
1251+
#define FTM_TRAJECTORY_TYPE TRAPEZOIDAL // TRAPEZOIDAL: Continuous Velocity. Max acceleration is respected.
1252+
// POLY5: Like POLY6 with 1.5x but uses less CPU. Requires FTM_POLYS.
1253+
// POLY6: Continuous Acceleration (aka S_CURVE). Requires FTM_POLYS.
1254+
// CONSTANT_JOLT: 7-phase S-curve. Requires FTM_CONSTANT_JOLT.
1255+
// POLY trajectories not only reduce resonances without rounding corners, but
1256+
// also reduce extruder strain due to linear advance.
1257+
12451258
/**
12461259
* Advanced configuration
12471260
*/

config/examples/Alfawise/U20-bltouch/Configuration_adv.h

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1241,16 +1241,29 @@
12411241

12421242
#define FTM_POLYS // Disable POLY5/6 to save ~3k of Flash. Preserves TRAPEZOIDAL.
12431243
#if ENABLED(FTM_POLYS)
1244-
#define FTM_TRAJECTORY_TYPE TRAPEZOIDAL // Block acceleration profile (TRAPEZOIDAL, POLY5, POLY6)
1245-
// TRAPEZOIDAL: Continuous Velocity. Max acceleration is respected.
1246-
// POLY5: Like POLY6 with 1.5x but uses less CPU.
1247-
// POLY6: Continuous Acceleration (aka S_CURVE).
1248-
// POLY trajectories not only reduce resonances without rounding corners, but also
1249-
// reduce extruder strain due to linear advance.
1250-
12511244
#define FTM_POLY6_ACCELERATION_OVERSHOOT 1.875f // Max acceleration overshoot factor for POLY6 (1.25 to 1.875)
12521245
#endif
12531246

1247+
/**
1248+
* FTM Constant-Jolt Trajectory (7-phase S-curve).
1249+
* Jolt is the rate of change of acceleration, not related to Marlin's "classic jerk."
1250+
* Ramps acceleration gradually so max acceleration is limited by max speed and distance traveled.
1251+
*/
1252+
//#define FTM_CONSTANT_JOLT
1253+
#if ENABLED(FTM_CONSTANT_JOLT)
1254+
#define FTM_DEFAULT_JOLT 250.0f // (m/s³) Default jolt for constant-jolt trajectory.
1255+
// Higher values print faster at the cost of increased resonance and extruder stress
1256+
#endif
1257+
1258+
// Block acceleration profile
1259+
// :[ 'TRAPEZOIDAL', 'POLY5', 'POLY6', 'CONSTANT_JOLT' ]
1260+
#define FTM_TRAJECTORY_TYPE TRAPEZOIDAL // TRAPEZOIDAL: Continuous Velocity. Max acceleration is respected.
1261+
// POLY5: Like POLY6 with 1.5x but uses less CPU. Requires FTM_POLYS.
1262+
// POLY6: Continuous Acceleration (aka S_CURVE). Requires FTM_POLYS.
1263+
// CONSTANT_JOLT: 7-phase S-curve. Requires FTM_CONSTANT_JOLT.
1264+
// POLY trajectories not only reduce resonances without rounding corners, but
1265+
// also reduce extruder strain due to linear advance.
1266+
12541267
/**
12551268
* Advanced configuration
12561269
*/

config/examples/Alfawise/U20/Configuration_adv.h

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1232,16 +1232,29 @@
12321232

12331233
#define FTM_POLYS // Disable POLY5/6 to save ~3k of Flash. Preserves TRAPEZOIDAL.
12341234
#if ENABLED(FTM_POLYS)
1235-
#define FTM_TRAJECTORY_TYPE TRAPEZOIDAL // Block acceleration profile (TRAPEZOIDAL, POLY5, POLY6)
1236-
// TRAPEZOIDAL: Continuous Velocity. Max acceleration is respected.
1237-
// POLY5: Like POLY6 with 1.5x but uses less CPU.
1238-
// POLY6: Continuous Acceleration (aka S_CURVE).
1239-
// POLY trajectories not only reduce resonances without rounding corners, but also
1240-
// reduce extruder strain due to linear advance.
1241-
12421235
#define FTM_POLY6_ACCELERATION_OVERSHOOT 1.875f // Max acceleration overshoot factor for POLY6 (1.25 to 1.875)
12431236
#endif
12441237

1238+
/**
1239+
* FTM Constant-Jolt Trajectory (7-phase S-curve).
1240+
* Jolt is the rate of change of acceleration, not related to Marlin's "classic jerk."
1241+
* Ramps acceleration gradually so max acceleration is limited by max speed and distance traveled.
1242+
*/
1243+
//#define FTM_CONSTANT_JOLT
1244+
#if ENABLED(FTM_CONSTANT_JOLT)
1245+
#define FTM_DEFAULT_JOLT 250.0f // (m/s³) Default jolt for constant-jolt trajectory.
1246+
// Higher values print faster at the cost of increased resonance and extruder stress
1247+
#endif
1248+
1249+
// Block acceleration profile
1250+
// :[ 'TRAPEZOIDAL', 'POLY5', 'POLY6', 'CONSTANT_JOLT' ]
1251+
#define FTM_TRAJECTORY_TYPE TRAPEZOIDAL // TRAPEZOIDAL: Continuous Velocity. Max acceleration is respected.
1252+
// POLY5: Like POLY6 with 1.5x but uses less CPU. Requires FTM_POLYS.
1253+
// POLY6: Continuous Acceleration (aka S_CURVE). Requires FTM_POLYS.
1254+
// CONSTANT_JOLT: 7-phase S-curve. Requires FTM_CONSTANT_JOLT.
1255+
// POLY trajectories not only reduce resonances without rounding corners, but
1256+
// also reduce extruder strain due to linear advance.
1257+
12451258
/**
12461259
* Advanced configuration
12471260
*/

config/examples/AliExpress/CL-260/Configuration_adv.h

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1232,16 +1232,29 @@
12321232

12331233
#define FTM_POLYS // Disable POLY5/6 to save ~3k of Flash. Preserves TRAPEZOIDAL.
12341234
#if ENABLED(FTM_POLYS)
1235-
#define FTM_TRAJECTORY_TYPE TRAPEZOIDAL // Block acceleration profile (TRAPEZOIDAL, POLY5, POLY6)
1236-
// TRAPEZOIDAL: Continuous Velocity. Max acceleration is respected.
1237-
// POLY5: Like POLY6 with 1.5x but uses less CPU.
1238-
// POLY6: Continuous Acceleration (aka S_CURVE).
1239-
// POLY trajectories not only reduce resonances without rounding corners, but also
1240-
// reduce extruder strain due to linear advance.
1241-
12421235
#define FTM_POLY6_ACCELERATION_OVERSHOOT 1.875f // Max acceleration overshoot factor for POLY6 (1.25 to 1.875)
12431236
#endif
12441237

1238+
/**
1239+
* FTM Constant-Jolt Trajectory (7-phase S-curve).
1240+
* Jolt is the rate of change of acceleration, not related to Marlin's "classic jerk."
1241+
* Ramps acceleration gradually so max acceleration is limited by max speed and distance traveled.
1242+
*/
1243+
//#define FTM_CONSTANT_JOLT
1244+
#if ENABLED(FTM_CONSTANT_JOLT)
1245+
#define FTM_DEFAULT_JOLT 250.0f // (m/s³) Default jolt for constant-jolt trajectory.
1246+
// Higher values print faster at the cost of increased resonance and extruder stress
1247+
#endif
1248+
1249+
// Block acceleration profile
1250+
// :[ 'TRAPEZOIDAL', 'POLY5', 'POLY6', 'CONSTANT_JOLT' ]
1251+
#define FTM_TRAJECTORY_TYPE TRAPEZOIDAL // TRAPEZOIDAL: Continuous Velocity. Max acceleration is respected.
1252+
// POLY5: Like POLY6 with 1.5x but uses less CPU. Requires FTM_POLYS.
1253+
// POLY6: Continuous Acceleration (aka S_CURVE). Requires FTM_POLYS.
1254+
// CONSTANT_JOLT: 7-phase S-curve. Requires FTM_CONSTANT_JOLT.
1255+
// POLY trajectories not only reduce resonances without rounding corners, but
1256+
// also reduce extruder strain due to linear advance.
1257+
12451258
/**
12461259
* Advanced configuration
12471260
*/

0 commit comments

Comments
 (0)