Skip to content

Commit

Permalink
Fix/global axes bugfixes 1 (openpnp#1038)
Browse files Browse the repository at this point in the history
* Squashed commit of the following:

commit a252f08
Author: markmaker <mark@makr.zone>
Date:   Sun Aug 16 16:41:53 2020 +0200

    Own Machine testing bug-fixes. Proper X, Y filtering of Visual Homing axes by the Camera that is used (mapped axes only). Also found logic inversion error in ReferenceHead.isInsideSoftLimits(HeadMountable, Location).
    Testing this with multiple Heads and no camera on second head required changing Park Location interpretation to any HeadMountable.

commit c765eaf
Author: markmaker <mark@makr.zone>
Date:   Sun Aug 16 13:01:40 2020 +0200

    Initial user group machine testing bugfixes. Thank you Duncan, Bill, Marmalade, Mike!
    Removed obsolete openpnp\src\main\java\org\openpnp\machine\reference\driver\wizards\AbstractTcpDriverConfigurationWizard.java

commit 190b34b
Author: markmaker <mark@makr.zone>
Date:   Sun Aug 9 21:26:57 2020 +0200

    Test bugfix.

commit 3a94e82
Author: markmaker <mark@makr.zone>
Date:   Sun Aug 9 20:59:20 2020 +0200

    Testing on the machine with GcodeDriver: refinements and bugfixes.

commit 1f52b1c
Author: markmaker <mark@makr.zone>
Date:   Sun Aug 9 15:28:53 2020 +0200

    Simplify Motion and MotionOption.
    Implement analytical constant acceleration profile solving for symmetric cases.
    Lots of cosmetics.

commit 38aae5d
Author: markmaker <mark@makr.zone>
Date:   Sat Aug 8 23:27:44 2020 +0200

    Constant acceleration profiles.
    Optionally test an imperfect machine in the SampleJobTest.

commit e38384a
Author: markmaker <mark@makr.zone>
Date:   Sat Aug 8 16:13:22 2020 +0200

    Self code review bugfixes.

commit c4f87b7
Merge: cd6b55f edbca39
Author: markmaker <mark@makr.zone>
Date:   Fri Aug 7 18:59:30 2020 +0200

    Merge branch 'develop' into feature/global-axes

    Conflicts resolved:
    *	src/test/java/VisionUtilsTest.java

commit cd6b55f
Author: markmaker <mark@makr.zone>
Date:   Thu Aug 6 14:28:45 2020 +0200

    Removed unnecessary (whitespace) changes etc. Better comments.

commit ee29ca7
Author: markmaker <mark@makr.zone>
Date:   Thu Aug 6 13:28:07 2020 +0200

    Better comments.

commit c8c0e7e
Merge: ef152b6 10b0095
Author: markmaker <mark@makr.zone>
Date:   Wed Aug 5 23:15:39 2020 +0200

    Merge branch 'develop' into feature/global-axes

    Resolved Conflicts:
    *	src/main/java/org/openpnp/machine/reference/ReferenceMachine.java

commit ef152b6
Author: markmaker <mark@makr.zone>
Date:   Wed Aug 5 23:11:55 2020 +0200

    Finish without trying to implement advanced motion planning. Cleanup and better comments.

commit 2e1a0ee
Author: markmaker <mark@makr.zone>
Date:   Mon Jul 27 17:35:08 2020 +0200

    Backup before reworking path solving/half sided profiles.

commit fb92b4d
Author: markmaker <mark@makr.zone>
Date:   Wed Jul 8 09:17:09 2020 +0200

    Before reworking path solver.

commit 9443afb
Merge: 9aed71f 5280aa8
Author: markmaker <mark@makr.zone>
Date:   Mon Jul 6 11:30:41 2020 +0200

    Merge branch 'develop' into feature/global-axes

    Conflicts resolved:
    *	src/main/java/org/openpnp/machine/reference/ReferenceMachine.java
    *	src/main/java/org/openpnp/machine/reference/ReferenceNozzleTipCalibration.java
    *	src/main/java/org/openpnp/machine/reference/driver/GcodeDriver.java

commit 9aed71f
Author: markmaker <mark@makr.zone>
Date:   Mon Jul 6 11:17:56 2020 +0200

    Tests augmented.

commit 777ed4a
Author: markmaker <mark@makr.zone>
Date:   Mon Jul 6 00:36:28 2020 +0200

    New region solver.

commit 2511dcf
Author: markmaker <mark@makr.zone>
Date:   Sat Jul 4 15:12:29 2020 +0200

    Backup commit

commit 273474c
Author: markmaker <mark@makr.zone>
Date:   Sat Jun 27 16:55:36 2020 +0200

    Solver seems to work now.

commit 4cd7f6d
Author: markmaker <mark@makr.zone>
Date:   Sat Jun 27 09:46:03 2020 +0200

    Changed profile solver to rudimentary secant method.

commit aaa832f
Author: markmaker <mark@makr.zone>
Date:   Fri Jun 26 22:14:19 2020 +0200

    Backup commit

commit 512ce63
Author: markmaker <mark@makr.zone>
Date:   Mon Jun 15 22:32:58 2020 +0200

    Removed tnc solver. Almost completed profile solver cases.

commit 15996c6
Author: markmaker <mark@makr.zone>
Date:   Sat Jun 13 15:13:10 2020 +0200

    Backup commit before solver remove.

commit 019436b
Author: markmaker <mark@makr.zone>
Date:   Thu Jun 11 18:24:27 2020 +0200

    Backup commit

commit 46a3be1
Author: markmaker <mark@makr.zone>
Date:   Fri Jun 5 13:13:40 2020 +0200

    Added motion solver test. Does not work (yet).

commit b8a5780
Author: markmaker <mark@makr.zone>
Date:   Sun May 31 22:27:21 2020 +0200

    Backup commit.

commit 4a5f01f
Author: markmaker <mark@makr.zone>
Date:   Sat May 30 20:50:45 2020 +0200

    Backup commit.

commit 5de4b1c
Author: markmaker <mark@makr.zone>
Date:   Tue May 26 19:52:22 2020 +0200

    More cosmetics

commit 557c005
Author: markmaker <mark@makr.zone>
Date:   Tue May 26 16:57:03 2020 +0200

    Better description and simpler formula. Getting the hang of this.

commit 4b8f935
Author: markmaker <mark@makr.zone>
Date:   Mon May 25 23:35:00 2020 +0200

    Added solver.

commit e3a14a2
Author: markmaker <mark@makr.zone>
Date:   Thu May 21 22:41:27 2020 +0200

    Reworked: no MappedAxes. Axis limits. Rotation wrap-around.

commit f8301ba
Author: markmaker <mark@makr.zone>
Date:   Wed May 20 13:38:14 2020 +0200

    MotionPlanner first implementation. Before MappedAxes refactoring.

commit 71c672d
Author: markmaker <mark@makr.zone>
Date:   Mon May 18 21:44:59 2020 +0200

    Fix the camera view rotation jog to work with and respect mapped axes.

commit 0dbdf0b
Author: markmaker <mark@makr.zone>
Date:   Mon May 18 20:18:18 2020 +0200

    Refined the NullMotionPlanner and various stuff.

commit 2234e45
Author: markmaker <mark@makr.zone>
Date:   Fri May 15 21:51:43 2020 +0200

    Sub-pixel rendering etc.

commit 7e98c23
Author: markmaker <mark@makr.zone>
Date:   Fri May 15 17:11:23 2020 +0200

    SimulationModeMachine can now check pick and place Locations by inspecting the ImageCamera view at the location.

commit ba10f8c
Author: markmaker <mark@makr.zone>
Date:   Fri May 15 17:10:11 2020 +0200

    Factored OpenCvUtils.createFootprintTemplate() out for use outside of stages.

commit 02bcfa5
Author: markmaker <mark@makr.zone>
Date:   Thu May 14 16:13:45 2020 +0200

    Backup commit.

commit 3d2409a
Author: markmaker <mark@makr.zone>
Date:   Wed May 13 13:45:12 2020 +0200

    Restrict image transfer to the area of the source image, to fix some wrapping-around when going beyond the image margin.

commit 0be6a0e
Merge: 4b389c7 b4310b6
Author: markmaker <mark@makr.zone>
Date:   Wed May 13 11:28:36 2020 +0200

    Merge branch 'develop' into feature/global-axes

commit 4b389c7
Author: markmaker <mark@makr.zone>
Date:   Wed May 13 00:18:01 2020 +0200

    Tested using NullDriver.
    * Added simulated Homing Error corrected by Visual Homing
    * Added simulated non-squareness corrected by Linear Axis Non-Squareness Transformation
    * Added simulated vibration to test Camera Settle
    * Added simulated camera noise to test Camera Settle
    * Added simulated nozzle runout to test Runout Compensation
    No Unit yet.

commit c08725c
Author: markmaker <mark@makr.zone>
Date:   Tue May 12 18:53:16 2020 +0200

    Testing: First steps towards "simulated imperfection".

commit 3e72d57
Author: markmaker <mark@makr.zone>
Date:   Tue May 12 16:26:02 2020 +0200

    Made tests run with AxesLocation.

commit 4dd295d
Merge: 19f2505 b8548f9
Author: markmaker <mark@makr.zone>
Date:   Tue May 12 15:13:00 2020 +0200

    Merge branch 'develop' into feature/global-axes

commit 19f2505
Author: markmaker <mark@makr.zone>
Date:   Tue May 12 14:02:57 2020 +0200

    Created new AxesLocation for Controller side. Reworked all Transformations.

commit 80117eb
Author: markmaker <mark@makr.zone>
Date:   Sun May 10 21:40:50 2020 +0200

    Cosmetics.

commit b36f6e9
Author: markmaker <mark@makr.zone>
Date:   Sun May 10 20:02:00 2020 +0200

    Resolved openpnp#998 merging issues.

commit 0139331
Merge: 8b266b2 19e2925
Author: markmaker <mark@makr.zone>
Date:   Sun May 10 16:21:13 2020 +0200

    Merge branch 'develop' into feature/global-axes

    # Conflicts resolved:
    *	src/main/java/org/openpnp/machine/marek/MarekNozzle.java
    *	src/main/java/org/openpnp/machine/neoden4/NeoDen4Driver.java
    *	src/main/java/org/openpnp/machine/reference/ReferenceActuator.java
    *	src/main/java/org/openpnp/machine/reference/ReferenceCamera.java
    *	src/main/java/org/openpnp/machine/reference/ReferenceDriver.java
    *	src/main/java/org/openpnp/machine/reference/ReferenceHead.java
    *	src/main/java/org/openpnp/machine/reference/ReferenceNozzle.java
    *	src/main/java/org/openpnp/machine/reference/driver/GcodeDriver.java
    *	src/main/java/org/openpnp/machine/reference/driver/NullDriver.java
    *	src/main/java/org/openpnp/spi/Movable.java
    *	src/main/java/org/openpnp/spi/base/AbstractActuator.java
    *	src/main/java/org/openpnp/spi/base/AbstractCamera.java
    *	src/test/java/BasicJobTest.java
    *	src/test/java/VisionUtilsTest.java
    *	src/test/java/org/openpnp/machine/reference/driver/test/TestDriver.java

commit 8b266b2
Author: markmaker <mark@makr.zone>
Date:   Sun May 10 14:26:27 2020 +0200

    Testing and refining migration with examples.

commit 1dc16ec
Author: markmaker <mark@makr.zone>
Date:   Sat May 9 15:38:03 2020 +0200

    First time tests run successful. GcodeDriver still partially running on its own (redundant) Axis mapping.

commit b12c661
Author: markmaker <mark@makr.zone>
Date:   Mon May 4 23:13:06 2020 +0200

    Axes and Transformations' Wizards implemented. Reorganized into own axis package. Wrestle with WindowBuilder.

commit daa9eee
Author: markmaker <mark@makr.zone>
Date:   Sun May 3 21:47:52 2020 +0200

    Add

commit ce3f543
Author: markmaker <mark@makr.zone>
Date:   Sun May 3 21:43:57 2020 +0200

    Work in progress, backup commit.

commit 53e7875
Author: markmaker <mark@makr.zone>
Date:   Sun May 3 14:20:59 2020 +0200

    Machine Setup Panel Tabs per class restoring and out of bounds bugfix.

commit e61af78
Author: markmaker <mark@makr.zone>
Date:   Sun May 3 00:18:01 2020 +0200

    Reworked Drivers to flat list.

commit 51ea613
Author: markmaker <mark@makr.zone>
Date:   Sat May 2 17:34:49 2020 +0200

    First implementation round. GCodeDriver Axis management is still redundantly in there.

Conflicts resolved:
*	src/main/java/org/openpnp/machine/reference/ReferenceHead.java
*	src/main/java/org/openpnp/machine/reference/axis/ReferenceControllerAxis.java
*	src/main/java/org/openpnp/machine/reference/axis/ReferenceMappedAxis.java
*	src/main/java/org/openpnp/machine/reference/axis/wizards/ReferenceControllerAxisConfigurationWizard.java
*	src/main/java/org/openpnp/machine/reference/driver/AbstractMotionPlanner.java
*	src/main/java/org/openpnp/machine/reference/driver/GcodeDriver.java
*	src/main/java/org/openpnp/model/AxesLocation.java
*	src/main/java/org/openpnp/model/Motion.java
*	src/main/java/org/openpnp/spi/ControllerAxis.java
*	src/main/java/org/openpnp/spi/base/AbstractControllerAxis.java

* Initial user group machine testing bugfixes. Thank you Duncan, Bill, Marmalade, Mike!
Removed obsolete openpnp\src\main\java\org\openpnp\machine\reference\driver\wizards\AbstractTcpDriverConfigurationWizard.java

* Cosmetics.
  • Loading branch information
markmaker committed Aug 17, 2020
1 parent f6713b6 commit d46cfb3
Show file tree
Hide file tree
Showing 14 changed files with 187 additions and 170 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import org.openpnp.model.AxesLocation;
import org.openpnp.model.Length;
import org.openpnp.model.LengthUnit;
import org.openpnp.spi.Axis;
import org.openpnp.spi.base.AbstractControllerAxis;
import org.simpleframework.xml.Attribute;
import org.simpleframework.xml.Element;
Expand Down Expand Up @@ -85,6 +86,8 @@ public class ReferenceControllerAxis extends AbstractControllerAxis {
@Element(required = false)
private double resolution = 0.0001; //

private boolean invertLinearRotational;

public double getResolution() {
if (resolution <= 0.0) {
resolution = 0.0001;
Expand Down Expand Up @@ -194,6 +197,14 @@ public void setSoftLimitHighEnabled(boolean softLimitHighEnabled) {
this.softLimitHighEnabled = softLimitHighEnabled;
}

public boolean isInvertLinearRotational() {
return invertLinearRotational;
}

public void setInvertLinearRotational(boolean invertLinearRotational) {
this.invertLinearRotational = invertLinearRotational;
}

@Override
public Wizard getConfigurationWizard() {
return new ReferenceControllerAxisConfigurationWizard(this);
Expand All @@ -212,4 +223,9 @@ else if (order == 3) {
}
return 0;
}

@Override
public boolean isRotationalOnController() {
return getType() == Axis.Type.Rotation ^ invertLinearRotational;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,10 @@ public AxesLocation toRaw(AxesLocation location, LocationOption... options)
coordinate = coordinate - mapOutput0.convertToUnits(AxesLocation.getUnits()).getValue();
coordinate = coordinate / scale;
coordinate = coordinate + mapInput0.convertToUnits(AxesLocation.getUnits()).getValue();
return toRaw(location.put(new AxesLocation(inputAxis, coordinate)), options);
// store the new coordinate
location = location.put(new AxesLocation(inputAxis, coordinate));
// recurse
return inputAxis.toRaw(location, options);
}

public Length getMapInput0() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,8 @@ public class ReferenceControllerAxisConfigurationWizard extends AbstractAxisConf
private JTextField homeCoordinate;
private JLabel lblDesignator;
private JTextField letter;
private JLabel lblInvertLinearrotational;
private JCheckBox invertLinearRotational;
private JLabel lblDriver;
private JComboBox driver;
private JLabel lblResolution;
Expand Down Expand Up @@ -190,23 +192,25 @@ public ReferenceControllerAxisConfigurationWizard(ReferenceControllerAxis axis)
ColumnSpec.decode("max(50dlu;default):grow"),
FormSpecs.RELATED_GAP_COLSPEC,
FormSpecs.DEFAULT_COLSPEC,},
new RowSpec[] {
FormSpecs.RELATED_GAP_ROWSPEC,
FormSpecs.DEFAULT_ROWSPEC,
FormSpecs.RELATED_GAP_ROWSPEC,
FormSpecs.DEFAULT_ROWSPEC,
FormSpecs.RELATED_GAP_ROWSPEC,
FormSpecs.DEFAULT_ROWSPEC,
FormSpecs.RELATED_GAP_ROWSPEC,
FormSpecs.DEFAULT_ROWSPEC,
FormSpecs.RELATED_GAP_ROWSPEC,
FormSpecs.DEFAULT_ROWSPEC,
FormSpecs.RELATED_GAP_ROWSPEC,
FormSpecs.DEFAULT_ROWSPEC,
FormSpecs.RELATED_GAP_ROWSPEC,
FormSpecs.DEFAULT_ROWSPEC,
FormSpecs.RELATED_GAP_ROWSPEC,
RowSpec.decode("default:grow"),}));
new RowSpec[] {
FormSpecs.RELATED_GAP_ROWSPEC,
FormSpecs.DEFAULT_ROWSPEC,
FormSpecs.RELATED_GAP_ROWSPEC,
FormSpecs.DEFAULT_ROWSPEC,
FormSpecs.RELATED_GAP_ROWSPEC,
FormSpecs.DEFAULT_ROWSPEC,
FormSpecs.RELATED_GAP_ROWSPEC,
FormSpecs.DEFAULT_ROWSPEC,
FormSpecs.RELATED_GAP_ROWSPEC,
FormSpecs.DEFAULT_ROWSPEC,
FormSpecs.RELATED_GAP_ROWSPEC,
FormSpecs.DEFAULT_ROWSPEC,
FormSpecs.RELATED_GAP_ROWSPEC,
FormSpecs.DEFAULT_ROWSPEC,
FormSpecs.RELATED_GAP_ROWSPEC,
FormSpecs.DEFAULT_ROWSPEC,
FormSpecs.RELATED_GAP_ROWSPEC,
RowSpec.decode("default:grow"),}));

lblDriver = new JLabel("Driver");
panelControllerSettings.add(lblDriver, "2, 2, right, default");
Expand All @@ -226,48 +230,56 @@ public void itemStateChanged(ItemEvent e) {
letter = new JTextField();
panelControllerSettings.add(letter, "4, 4, fill, default");
letter.setColumns(10);

lblInvertLinearrotational = new JLabel("Switch Linear ↔ Rotational?");
lblInvertLinearrotational.setToolTipText("<html>\r\n<p>It is important that OpenPnP understands whether an Axis is linear or rotational in <br/>\r\nthe controller. </p> \r\n<p>Most of the times this is already determined by the Axis Type, i.e. X, Y, Z are linear <br/>\r\nand Rotation is rotational. But sometimes you may run out of proper axes on the <br/>\r\ncontroller and then have to use a linear controller axis for a rotational OpenPnP axis <br/>\r\nor vice versa.</p>\r\n<p>If you cannot configure your controller to switch this meaning, it is important to enable <br/>\r\nthe Switch Linear ↔ Rotational checkbox.</p>\r\n<p>This is relevant in computing proper limits for feed-rate, acceleration and jerk in mixed<br/>\r\naxes moves, as only the motion of linear axes is taken into consideration for the limts in \\br/>\r\nstandard G-Code.</p>\r\n</html>");
panelControllerSettings.add(lblInvertLinearrotational, "2, 6, right, default");

invertLinearRotational = new JCheckBox("");
invertLinearRotational.setToolTipText("");
panelControllerSettings.add(invertLinearRotational, "4, 6");

JLabel lblHomeCoordinate = new JLabel("Home Coordinate");
panelControllerSettings.add(lblHomeCoordinate, "2, 6, right, default");
panelControllerSettings.add(lblHomeCoordinate, "2, 8, right, default");

homeCoordinate = new JTextField();
panelControllerSettings.add(homeCoordinate, "4, 6, fill, default");
panelControllerSettings.add(homeCoordinate, "4, 8, fill, default");
homeCoordinate.setColumns(10);

lblBacklashOffset = new JLabel("Backlash Offset");
panelControllerSettings.add(lblBacklashOffset, "2, 8, right, default");
panelControllerSettings.add(lblBacklashOffset, "2, 10, right, default");

backlashOffset = new JTextField();
panelControllerSettings.add(backlashOffset, "4, 8, fill, default");
panelControllerSettings.add(backlashOffset, "4, 10, fill, default");
backlashOffset.setColumns(10);

lblResolution = new JLabel("Resolution [Driver Units]");
lblResolution.setToolTipText("<html>Numeric resolution of this axis. Coordinates will be rounded to the nearest multiple<br/>\r\nwhen comparing them in order to determine whether a move is necessary. <br/>\r\nFor the GcodeDriver, make sure the resolution can be expressed with the format in the <br/>\r\n<code>MOVE_TO_COMMAND</code>. Default is 0.0001 which corresponds to the %.4f <br/>\r\n(four fractional digits) format in the <code>MOVE_TO_COMMAND</code>.<br/>\r\nNote, the resolution is given and applied in driver (not system) units.\r\n</html>");
panelControllerSettings.add(lblResolution, "2, 10, right, default");
panelControllerSettings.add(lblResolution, "2, 12, right, default");

resolution = new JTextField();
panelControllerSettings.add(resolution, "4, 10, fill, default");
panelControllerSettings.add(resolution, "4, 12, fill, default");
resolution.setColumns(10);

lblLimitRotation = new JLabel("Limit to ±180°");
lblLimitRotation.setToolTipText("Limit the rotation to -180° ... +180°. ");
panelControllerSettings.add(lblLimitRotation, "2, 12, right, default");
panelControllerSettings.add(lblLimitRotation, "2, 14, right, default");

limitRotation = new JCheckBox("");
panelControllerSettings.add(limitRotation, "4, 12");
panelControllerSettings.add(limitRotation, "4, 14");

lblWrapAroundRotation = new JLabel("Wrap Around");
lblWrapAroundRotation.setToolTipText("<html>Always rotate the axis the shorter way around. E.g. if it is at 270° and is commanded <br/>\r\nto go to 0° it will instead go to 360°.<br/>\r\nIf this is combined with Limit to ±180°, the axis is reset to its wrap-around coordinate <br/>\r\nusing a driver Global Offset command. With the GcodeDriver you must configure the<br/> <code>SET_GLOBAL_OFFSETS_COMMAND</code> or this will not work.\r\n</html>\r\n");
panelControllerSettings.add(lblWrapAroundRotation, "2, 14, right, default");
panelControllerSettings.add(lblWrapAroundRotation, "2, 16, right, default");

wrapAroundRotation = new JCheckBox("");
panelControllerSettings.add(wrapAroundRotation, "4, 14");
panelControllerSettings.add(wrapAroundRotation, "4, 16");

lblPremoveCommand = new JLabel("Pre-Move Command");
panelControllerSettings.add(lblPremoveCommand, "2, 16, right, top");
panelControllerSettings.add(lblPremoveCommand, "2, 18, right, top");

scrollPane = new JScrollPane();
panelControllerSettings.add(scrollPane, "4, 16, 3, 1, fill, fill");
panelControllerSettings.add(scrollPane, "4, 18, 3, 1, fill, fill");

preMoveCommand = new JTextArea();
preMoveCommand.setRows(1);
Expand Down Expand Up @@ -397,6 +409,7 @@ public void createBindings() {

addWrappedBinding(axis, "driver", driver, "selectedItem", driverConverter);
addWrappedBinding(axis, "letter", letter, "text");
addWrappedBinding(axis, "invertLinearRotational", invertLinearRotational, "selected");
addWrappedBinding(axis, "homeCoordinate", homeCoordinate, "text", lengthConverter);
addWrappedBinding(axis, "backlashOffset", backlashOffset, "text", lengthConverter);
addWrappedBinding(axis, "resolution", resolution, "text", doubleConverter);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ public synchronized void home() throws Exception {
public synchronized void setGlobalOffsets(AxesLocation axesLocation) throws Exception {
// Offset all the specified axes on the respective drivers.
for (Driver driver : axesLocation.getAxesDrivers(getMachine())) {
((ReferenceDriver) driver).setGlobalOffsets(getMachine(), axesLocation);
((ReferenceDriver) driver).setGlobalOffsets(getMachine(), axesLocation.drivenBy(driver));
}
// Offset all the axes (including virtual ones) to their new coordinates.
for (Axis axis : axesLocation.getAxes()) {
Expand Down Expand Up @@ -197,7 +197,7 @@ protected synchronized void executeMotionPlan(CompletionType completionType) thr
protected void executeMoveTo(ReferenceMachine machine, ReferenceHeadMountable hm,
Motion plannedMotion) throws Exception {
AxesLocation motionSegment = plannedMotion.getLocation0().motionSegmentTo(plannedMotion.getLocation1());
// Note, this will be empty if the motion is empty.
// Note, this loop will be empty if the motion is empty.
for (Driver driver : motionSegment.getAxesDrivers(machine)) {
((ReferenceDriver) driver).moveTo(hm, plannedMotion);
}
Expand Down

0 comments on commit d46cfb3

Please sign in to comment.