mirror of
https://github.com/MarlinFirmware/Marlin.git
synced 2024-11-27 13:56:24 +00:00
Update planner.cpp
Changed level and leveling to compensation
This commit is contained in:
parent
4315c2547a
commit
ac204028e7
@ -75,14 +75,14 @@ float max_e_jerk;
|
||||
float mintravelfeedrate;
|
||||
unsigned long axis_steps_per_sqr_second[NUM_AXIS];
|
||||
|
||||
#ifdef ENABLE_AUTO_BED_LEVELING
|
||||
// this holds the required transform to compensate for bed level
|
||||
matrix_3x3 plan_bed_level_matrix = {
|
||||
#ifdef ENABLE_AUTO_BED_COMPENSATION
|
||||
// this holds the required transform to compensate for bed compensation
|
||||
matrix_3x3 plan_bed_compensation_matrix = {
|
||||
1.0, 0.0, 0.0,
|
||||
0.0, 1.0, 0.0,
|
||||
0.0, 0.0, 1.0,
|
||||
};
|
||||
#endif // #ifdef ENABLE_AUTO_BED_LEVELING
|
||||
#endif // #ifdef ENABLE_AUTO_BED_COMPENSATION
|
||||
|
||||
// The current position of the tool in absolute steps
|
||||
long position[NUM_AXIS]; //rescaled from extern when axis_steps_per_unit are changed by gcode
|
||||
@ -528,11 +528,11 @@ float junction_deviation = 0.1;
|
||||
// Add a new linear movement to the buffer. steps_x, _y and _z is the absolute position in
|
||||
// mm. Microseconds specify how many microseconds the move should take to perform. To aid acceleration
|
||||
// calculation the caller must also provide the physical length of the line in millimeters.
|
||||
#ifdef ENABLE_AUTO_BED_LEVELING
|
||||
#ifdef ENABLE_AUTO_BED_COMPENSATION
|
||||
void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate, const uint8_t &extruder)
|
||||
#else
|
||||
void plan_buffer_line(const float &x, const float &y, const float &z, const float &e, float feed_rate, const uint8_t &extruder)
|
||||
#endif //ENABLE_AUTO_BED_LEVELING
|
||||
#endif //ENABLE_AUTO_BED_COMPENSATION
|
||||
{
|
||||
// Calculate the buffer head after we push this byte
|
||||
int next_buffer_head = next_block_index(block_buffer_head);
|
||||
@ -546,9 +546,9 @@ void plan_buffer_line(const float &x, const float &y, const float &z, const floa
|
||||
lcd_update();
|
||||
}
|
||||
|
||||
#ifdef ENABLE_AUTO_BED_LEVELING
|
||||
apply_rotation_xyz(plan_bed_level_matrix, x, y, z);
|
||||
#endif // ENABLE_AUTO_BED_LEVELING
|
||||
#ifdef ENABLE_AUTO_BED_COMPENSATION
|
||||
apply_rotation_xyz(plan_bed_compensation_matrix, x, y, z);
|
||||
#endif // ENABLE_AUTO_BED_COMPENSATION
|
||||
|
||||
// The target position of the tool in absolute steps
|
||||
// Calculate target position in absolute steps
|
||||
@ -1021,29 +1021,29 @@ block->steps_y = labs((target[X_AXIS]-position[X_AXIS]) - (target[Y_AXIS]-positi
|
||||
st_wake_up();
|
||||
}
|
||||
|
||||
#ifdef ENABLE_AUTO_BED_LEVELING
|
||||
#ifdef ENABLE_AUTO_BED_COMPENSATION
|
||||
vector_3 plan_get_position() {
|
||||
vector_3 position = vector_3(st_get_position_mm(X_AXIS), st_get_position_mm(Y_AXIS), st_get_position_mm(Z_AXIS));
|
||||
|
||||
//position.debug("in plan_get position");
|
||||
//plan_bed_level_matrix.debug("in plan_get bed_level");
|
||||
matrix_3x3 inverse = matrix_3x3::transpose(plan_bed_level_matrix);
|
||||
//plan_bed_compensation_matrix.debug("in plan_get bed_compensation");
|
||||
matrix_3x3 inverse = matrix_3x3::transpose(plan_bed_compensation_matrix);
|
||||
//inverse.debug("in plan_get inverse");
|
||||
position.apply_rotation(inverse);
|
||||
//position.debug("after rotation");
|
||||
|
||||
return position;
|
||||
}
|
||||
#endif // ENABLE_AUTO_BED_LEVELING
|
||||
#endif // ENABLE_AUTO_BED_COMPENSATION
|
||||
|
||||
#ifdef ENABLE_AUTO_BED_LEVELING
|
||||
#ifdef ENABLE_AUTO_BED_COMPENSATION
|
||||
void plan_set_position(float x, float y, float z, const float &e)
|
||||
{
|
||||
apply_rotation_xyz(plan_bed_level_matrix, x, y, z);
|
||||
apply_rotation_xyz(plan_bed_compensation_matrix, x, y, z);
|
||||
#else
|
||||
void plan_set_position(const float &x, const float &y, const float &z, const float &e)
|
||||
{
|
||||
#endif // ENABLE_AUTO_BED_LEVELING
|
||||
#endif // ENABLE_AUTO_BED_COMPENSATION
|
||||
|
||||
position[X_AXIS] = lround(x*axis_steps_per_unit[X_AXIS]);
|
||||
position[Y_AXIS] = lround(y*axis_steps_per_unit[Y_AXIS]);
|
||||
|
Loading…
Reference in New Issue
Block a user