Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Duet3D/RepRapFirmware.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordc42 <dcrocker@eschertech.com>2021-02-16 17:57:56 +0300
committerGitHub <noreply@github.com>2021-02-16 17:57:56 +0300
commite86f9472eda30820714d3965bffbd36574e0e62d (patch)
tree0c6d0b451eecab8993e6bd5cbe1883bb827bf112 /src/GCodes/GCodes4.cpp
parent88f1a6d5defd8d0649238006cae797a3ca12c728 (diff)
Wil mesh any two axes (#476)
* Open mesh compenastion for any-two axes * Fix reboot loop on Duet 3 * Fix typos Skip Z axis where not appropriate Add version to HeightMapHeader * Fix compiler errors * Make compatible with pre 3.3-beta2 format again Minor simplifications * Revert changes to SBC interface (implement that later) * Also prevent sending a none-XY grid to SBC for now * Rename variables and no longer persist axis numbers * Use common parent class for Kinematics with round bed Co-authored-by: Manuel Coenen <manuel@duet3d.com>
Diffstat (limited to 'src/GCodes/GCodes4.cpp')
-rw-r--r--src/GCodes/GCodes4.cpp50
1 files changed, 29 insertions, 21 deletions
diff --git a/src/GCodes/GCodes4.cpp b/src/GCodes/GCodes4.cpp
index b89c809a..40be1a89 100644
--- a/src/GCodes/GCodes4.cpp
+++ b/src/GCodes/GCodes4.cpp
@@ -537,16 +537,24 @@ void GCodes::RunStateMachine(GCodeBuffer& gb, const StringRef& reply) noexcept
// Move to the current probe point
Move& move = reprap.GetMove();
const GridDefinition& grid = move.AccessHeightMap().GetGrid();
- const float x = grid.GetXCoordinate(gridXindex);
- const float y = grid.GetYCoordinate(gridYindex);
- if (grid.IsInRadius(x, y))
- {
- if (move.IsAccessibleProbePoint(x, y))
+ const float axis0Coord = grid.GetCoordinate0(gridAxis0index);
+ const float axis1Coord = grid.GetCoordinate1(gridAxis1index);
+ if (grid.IsInRadius(axis0Coord, axis1Coord))
+ {
+ const size_t axis0Num = grid.GetNumber0();
+ const size_t axis1Num = grid.GetNumber1();
+ AxesBitmap axes;
+ axes.SetBit(axis0Num);
+ axes.SetBit(axis1Num);
+ float axesCoords[MaxAxes];
+ axesCoords[axis0Num] = axis0Coord;
+ axesCoords[axis1Num] = axis1Coord;
+ if (move.IsAccessibleProbePoint(axesCoords, axes))
{
SetMoveBufferDefaults();
const auto zp = platform.GetZProbeOrDefault(currentZProbeNumber);
- moveBuffer.coords[X_AXIS] = x - zp->GetXOffset();
- moveBuffer.coords[Y_AXIS] = y - zp->GetYOffset();
+ moveBuffer.coords[axis0Num] = axis0Coord - zp->GetOffset(axis0Num);
+ moveBuffer.coords[axis1Num] = axis1Coord - zp->GetOffset(axis1Num);
moveBuffer.coords[Z_AXIS] = zp->GetStartingHeight();
moveBuffer.feedRate = zp->GetTravelSpeed();
NewMoveAvailable(1);
@@ -559,7 +567,7 @@ void GCodes::RunStateMachine(GCodeBuffer& gb, const StringRef& reply) noexcept
}
else
{
- platform.MessageF(WarningMessage, "Skipping grid point (%.1f, %.1f) because Z probe cannot reach it\n", (double)x, (double)y);
+ platform.MessageF(WarningMessage, "Skipping grid point %c=%.1f, %c=%.1f because Z probe cannot reach it\n", grid.GetLetter0(), (double)axis0Coord, grid.GetLetter1(), (double)axis1Coord);
gb.SetState(GCodeState::gridProbing6);
}
}
@@ -719,7 +727,7 @@ void GCodes::RunStateMachine(GCodeBuffer& gb, const StringRef& reply) noexcept
if (acceptReading)
{
- reprap.GetMove().AccessHeightMap().SetGridHeight(gridXindex, gridYindex, g30zHeightError);
+ reprap.GetMove().AccessHeightMap().SetGridHeight(gridAxis0index, gridAxis1index, g30zHeightError);
gb.AdvanceState();
}
else if (tapsDone < zp->GetMaxTaps())
@@ -742,32 +750,32 @@ void GCodes::RunStateMachine(GCodeBuffer& gb, const StringRef& reply) noexcept
case GCodeState::gridProbing6: // ready to compute the next probe point
{
const HeightMap& hm = reprap.GetMove().AccessHeightMap();
- if (gridYindex & 1)
+ if (gridAxis1index & 1)
{
// Odd row, so decreasing X
- if (gridXindex == 0)
+ if (gridAxis0index == 0)
{
- ++gridYindex;
+ ++gridAxis1index;
}
else
{
- --gridXindex;
+ --gridAxis0index;
}
}
else
{
// Even row, so increasing X
- if (gridXindex + 1 == hm.GetGrid().NumXpoints())
+ if (gridAxis0index + 1 == hm.GetGrid().NumAxis0points())
{
- ++gridYindex;
+ ++gridAxis1index;
}
else
{
- ++gridXindex;
+ ++gridAxis0index;
}
}
- if (gridYindex == hm.GetGrid().NumYpoints())
+ if (gridAxis1index == hm.GetGrid().NumAxis1points())
{
// Done all the points
gb.AdvanceState();
@@ -989,8 +997,8 @@ void GCodes::RunStateMachine(GCodeBuffer& gb, const StringRef& reply) noexcept
// Find the coordinates of the Z probe to pass to SetZeroHeightError
float tempCoords[MaxAxes];
memcpyf(tempCoords, moveBuffer.coords, ARRAY_SIZE(tempCoords));
- tempCoords[X_AXIS] += zp->GetXOffset();
- tempCoords[Y_AXIS] += zp->GetYOffset();
+ tempCoords[X_AXIS] += zp->GetOffset(X_AXIS);
+ tempCoords[Y_AXIS] += zp->GetOffset(Y_AXIS);
reprap.GetMove().SetZeroHeightError(tempCoords);
ToolOffsetInverseTransform(moveBuffer.coords, currentUserPosition);
@@ -1073,8 +1081,8 @@ void GCodes::RunStateMachine(GCodeBuffer& gb, const StringRef& reply) noexcept
// Find the coordinates of the Z probe to pass to SetZeroHeightError
float tempCoords[MaxAxes];
memcpyf(tempCoords, moveBuffer.coords, ARRAY_SIZE(tempCoords));
- tempCoords[X_AXIS] += zp->GetXOffset();
- tempCoords[Y_AXIS] += zp->GetYOffset();
+ tempCoords[X_AXIS] += zp->GetOffset(X_AXIS);
+ tempCoords[Y_AXIS] += zp->GetOffset(Y_AXIS);
reprap.GetMove().SetZeroHeightError(tempCoords);
ToolOffsetInverseTransform(moveBuffer.coords, currentUserPosition);
}