Skip to content

Commit 216db93

Browse files
committed
reorganize
1 parent 8807aba commit 216db93

26 files changed

Lines changed: 182 additions & 215800 deletions

File tree

src/main/java/com/marginallyclever/convenience/helpers/BigMatrixHelper.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,10 +240,17 @@ public static double[] singularValues(double[][] matrix) {
240240

241241
if (Math.abs(aij) > eps) {
242242
double tau = (ajj - aii) / (2 * aij);
243-
double t = Math.signum(tau) / (Math.abs(tau) + Math.sqrt(1 + tau * tau));
243+
double t;
244+
// handle the special case where aii == ajj to avoid t==0 (no rotation)
245+
// which can occur for identical columns and leaves A unmodified.
246+
if (Math.abs(tau) < 1e-15) {
247+
t = 1.0; // 45 degree rotation
248+
} else {
249+
t = Math.signum(tau) / (Math.abs(tau) + Math.sqrt(1 + tau * tau));
250+
}
244251
double c = 1 / Math.sqrt(1 + t * t);
245252
double s = c * t;
246-
253+
247254
for (int k = 0; k < m; k++) {
248255
double aki = A[k][i];
249256
double akj = A[k][j];

src/main/java/com/marginallyclever/ro3/node/nodefactory/NodeFactory.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626
import com.marginallyclever.ro3.node.nodes.pose.Pose;
2727
import com.marginallyclever.ro3.node.nodes.pose.poses.*;
2828
import com.marginallyclever.ro3.node.nodes.pose.poses.space.SpaceShip;
29-
import com.marginallyclever.ro3.node.nodes.stewartplatform.linear.LinearStewartPlatform2;
30-
import com.marginallyclever.ro3.node.nodes.stewartplatform.rotary.RotaryStewartPlatform3;
29+
import com.marginallyclever.ro3.node.nodes.marlinrobot.linearstewartplatform2.LinearStewartPlatform2;
30+
import com.marginallyclever.ro3.node.nodes.marlinrobot.rotarystewartplatform3.RotaryStewartPlatform3;
3131
import com.marginallyclever.ro3.node.nodes.tests.RandomHemisphereTest;
3232
import io.github.classgraph.ScanResult;
3333
import org.slf4j.Logger;

src/main/java/com/marginallyclever/ro3/node/nodes/marlinrobot/MarlinRobotPanel.java

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,30 +29,34 @@ public MarlinRobotPanel(MarlinRobot marlinRobot) {
2929
gbc.gridy=0;
3030
gbc.gridwidth=1;
3131

32-
JButton M114 = new JButton("M114");
33-
M114.addActionListener(e-> marlinRobot.sendGCode("M114"));
34-
PanelHelper.addLabelAndComponent(this, "Get state", M114,gbc);
35-
M114.setToolTipText("Get the current position of the robot arm.");
36-
37-
gbc.gridy++;
38-
JButton G28 = new JButton("G28");
39-
G28.addActionListener(e-> marlinRobot.sendGCode("G28"));
40-
PanelHelper.addLabelAndComponent(this, "Home", G28, gbc);
41-
G28.setToolTipText("Move all motors to their home position.");
32+
addMarlinButton(marlinRobot,gbc,"M114","Get state","Get the current position of the robot.");
33+
addMarlinButton(marlinRobot,gbc,"G28","Find home","Move all motors to their home position.");
34+
addMarlinButton(marlinRobot,gbc,"M17","Enable motors","Enable all motors. The robot arm will be able to move and report its position.");
35+
addMarlinButton(marlinRobot,gbc,"M18","Disable motors","Disable all motors. The robot arm will be free to move, but will not report its position until the motors are re-enabled.");
4236

4337
gbc.gridy++;
4438
JButton G0 = new JButton("G0");
4539
G0.addActionListener(e-> marlinRobot.sendGCode("G0 "+marlinRobot.getMotorsAndFeedrateAsString()));
4640
PanelHelper.addLabelAndComponent(this, "Go", G0, gbc);
4741
G0.setToolTipText("Move the robot.");
4842

43+
4944
gbc.gridx=0;
5045
gbc.gridwidth=2;
5146
this.add(getReceiver(),gbc);
5247
gbc.gridy++;
5348
this.add(getSender(),gbc);
5449
}
5550

51+
private void addMarlinButton(MarlinRobot marlinRobot, GridBagConstraints gbc, String gcode, String label, String tooltip) {
52+
gbc.gridy++;
53+
JButton button = new JButton(gcode);
54+
button.setToolTipText(tooltip);
55+
button.addActionListener(e-> marlinRobot.sendGCode(gcode));
56+
PanelHelper.addLabelAndComponent(this, label, button, gbc);
57+
}
58+
59+
5660
// Add a text field that will be sent to the robot arm.
5761
private JPanel getSender() {
5862
JPanel inputPanel = new JPanel(new BorderLayout());
@@ -81,7 +85,7 @@ private JPanel getReceiver() {
8185
outputPanel.add(new JScrollPane(output),BorderLayout.CENTER);
8286
outputPanel.add(outputLabel,BorderLayout.NORTH);
8387
output.setMaximumSize(new Dimension(100, output.getPreferredSize().height));
84-
marlinRobot.addMarlinListener(output::setText);
88+
marlinRobot.addMarlinListener(output::append);
8589

8690
return outputPanel;
8791
}

src/main/java/com/marginallyclever/ro3/node/nodes/stewartplatform/linear/LinearStewartPlatform2.java renamed to src/main/java/com/marginallyclever/ro3/node/nodes/marlinrobot/linearstewartplatform2/LinearStewartPlatform2.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.marginallyclever.ro3.node.nodes.stewartplatform.linear;
1+
package com.marginallyclever.ro3.node.nodes.marlinrobot.linearstewartplatform2;
22

33
import com.marginallyclever.convenience.helpers.BigMatrixHelper;
44
import com.marginallyclever.convenience.helpers.MatrixHelper;
@@ -7,6 +7,7 @@
77
import com.marginallyclever.ro3.mesh.proceduralmesh.Waldo;
88
import com.marginallyclever.ro3.node.Node;
99
import com.marginallyclever.ro3.node.nodes.Material;
10+
import com.marginallyclever.ro3.node.nodes.marlinrobot.MarlinRobot;
1011
import com.marginallyclever.ro3.node.nodes.pose.Pose;
1112
import com.marginallyclever.ro3.node.nodes.pose.poses.MeshInstance;
1213
import org.json.JSONObject;
@@ -29,7 +30,7 @@
2930
* </ul>
3031
* <p>The system should be able to generate approximate jacobians at any given pose.</p>
3132
*/
32-
public class LinearStewartPlatform2 extends Node {
33+
public class LinearStewartPlatform2 extends MarlinRobot {
3334
public static final int NUM_ACTUATORS = 6;
3435
public static final int NUM_DOF = 6;
3536
private static final int [] BOTTOM_CARDINALITY = {0,5,2,1,4,3};

src/main/java/com/marginallyclever/ro3/node/nodes/stewartplatform/linear/LinearStewartPlatform2Panel.java renamed to src/main/java/com/marginallyclever/ro3/node/nodes/marlinrobot/linearstewartplatform2/LinearStewartPlatform2Panel.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.marginallyclever.ro3.node.nodes.stewartplatform.linear;
1+
package com.marginallyclever.ro3.node.nodes.marlinrobot.linearstewartplatform2;
22

33
import com.marginallyclever.ro3.PanelHelper;
44
import org.slf4j.Logger;

0 commit comments

Comments
 (0)