Significantly improved junction control and fixed computation bugs in planner

- Junction jerk now re-defined as junction_deviation. The distance from
the junction to the edge of a circle tangent to both previous and
current path lines. The circle radii is used to compute the maximum
junction velocity by centripetal acceleration. More robust and
simplified way to compute jerk.   - Fixed bugs related to entry and exit
factors. They were computed based on the current nominal speeds but not
when computing exit factors for neighboring blocks. Removed factors and
replaced with entry speeds only. Factors now only computed for stepper
trapezoid rate conversions.  - Misc: Added min(), next_block_index,
prev_block_index functions for clarity.
This commit is contained in:
Sonny J
2011-09-03 15:31:48 -06:00
parent badb638df9
commit 5c2150daa9
5 changed files with 119 additions and 121 deletions

View File

@ -36,10 +36,10 @@ typedef struct {
double speed_x, speed_y, speed_z; // Nominal mm/minute for each axis
double nominal_speed; // The nominal speed for this block in mm/min
double millimeters; // The total travel of this block in mm
double entry_factor; // The factor representing the change in speed at the start of this trapezoid.
// (The end of the curren speed trapezoid is defined by the entry_factor of the
// next block)
double delta_mm[3]; // XYZ travel components of this block in mm
double entry_speed; // Entry speed at previous-current junction
double max_entry_speed; // Maximum allowable entry speed
// Settings for the trapezoid generator
uint32_t initial_rate; // The jerk-adjusted step rate at start of block
uint32_t final_rate; // The minimal rate at exit