From 03a3023b4dc446a9dcc8a40f7f55b49a9a92ed92 Mon Sep 17 00:00:00 2001 From: gac-S_Changer Date: Mon, 3 Sep 2018 15:23:50 +0200 Subject: [PATCH] --- devices/img.properties | 20 +++++++++--------- plugins/MXSC-1.10.0.jar | Bin 251736 -> 252212 bytes plugins/RobotPanel.form | 37 +++++++++++++++++++++++++++++++-- plugins/RobotPanel.java | 41 ++++++++++++++++++++++++++++++++++--- script/devices/RobotSC.py | 2 +- script/devices/RobotTCP.py | 32 ++++++++++++++++++++++++++--- script/local.py | 5 ++++- 7 files changed, 117 insertions(+), 20 deletions(-) diff --git a/devices/img.properties b/devices/img.properties index 83e6c9c..785c9ea 100644 --- a/devices/img.properties +++ b/devices/img.properties @@ -1,4 +1,4 @@ -#Fri Aug 10 15:19:19 CEST 2018 +#Thu Aug 30 15:04:59 CEST 2018 colormap=Grayscale colormapAutomatic=false colormapMax=18.133 @@ -9,16 +9,16 @@ grayscale=false invert=false rescaleFactor=1.0 rescaleOffset=0.0 -roiHeight=972 -roiWidth=972 -roiX=12 -roiY=15 -rotation=229.8340828443476 +roiHeight=887 +roiWidth=887 +roiX=59 +roiY=56 +rotation=229.76067253596318 rotationCrop=true scale=1.0 -spatialCalOffsetX=-486.0 -spatialCalOffsetY=-486.0 -spatialCalScaleX=0.48315133165771174 -spatialCalScaleY=0.48314848201202937 +spatialCalOffsetX=-444.0 +spatialCalOffsetY=-444.0 +spatialCalScaleX=0.5295623677991782 +spatialCalScaleY=0.5294932790504361 spatialCalUnits=mm transpose=false diff --git a/plugins/MXSC-1.10.0.jar b/plugins/MXSC-1.10.0.jar index f46cf9be131f290d2fc8e11b17c864a245ca71f5..7e61ff4f659a32e1fbcdec6b27a7dea07805f828 100644 GIT binary patch delta 38753 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 Z7}s28J|zVBmc;HR9&5Za6W%Am{{d$?i%kFk diff --git a/plugins/RobotPanel.form b/plugins/RobotPanel.form index 4e89f65..bf9c0d6 100644 --- a/plugins/RobotPanel.form +++ b/plugins/RobotPanel.form @@ -326,9 +326,17 @@ + + + + + + + + + + - - @@ -371,6 +379,12 @@ + + + + + + @@ -448,6 +462,25 @@ + + + + + + + + + + + + + + + + + + + diff --git a/plugins/RobotPanel.java b/plugins/RobotPanel.java index 93720b5..e841f57 100644 --- a/plugins/RobotPanel.java +++ b/plugins/RobotPanel.java @@ -58,6 +58,7 @@ public class RobotPanel extends DevicePanel { Integer speed = null; String task = null; String mode = null; + String position = null; if ((value != null) && (value instanceof Map)) { Map status = (Map) value; @@ -81,6 +82,13 @@ public class RobotPanel extends DevicePanel { speed = (Integer) status.get("speed"); } catch (Exception ex) { } + try { + position = (String) status.get("pos"); + if (position==null){ + position = ""; + } + } catch (Exception ex) { + } try { task = ((status.containsKey("task")) && (status.get("task") == null)) ? "" : ((String) status.get("task")).trim(); } catch (Exception ex) { @@ -120,6 +128,8 @@ public class RobotPanel extends DevicePanel { ledMoving.setColor((moving == null) ? Color.GRAY : (moving ? Color.YELLOW : Color.DARK_GRAY)); textTask.setText((task == null) ? "" : task); ledTask.setColor((task == null) ? Color.GRAY : (task.isEmpty() ? Color.DARK_GRAY : Color.YELLOW)); + textPosition.setText((position == null) ? "" : position); + ledPosition.setColor((position == null) ? Color.GRAY : (position.isEmpty() ? Color.DARK_GRAY : Color.GREEN)); //buttonAbort.setEnabled(!textTask.getText().isEmpty()); spinnerSpeed.setEnabled(speed != null); if (speed == null) { @@ -171,6 +181,9 @@ public class RobotPanel extends DevicePanel { jLabel8 = new javax.swing.JLabel(); ledTask = new ch.psi.pshell.swing.Led(); ledMode = new ch.psi.pshell.swing.Led(); + textPosition = new javax.swing.JTextField(); + ledPosition = new ch.psi.pshell.swing.Led(); + jLabel9 = new javax.swing.JLabel(); panelState = new ch.psi.pshell.swing.DeviceStatePanel(); jPanel4 = new javax.swing.JPanel(); ledOpen = new ch.psi.pshell.swing.Led(); @@ -380,6 +393,14 @@ public class RobotPanel extends DevicePanel { ledMode.setFont(new java.awt.Font("SansSerif", 0, 18)); // NOI18N + textPosition.setEditable(false); + textPosition.setHorizontalAlignment(javax.swing.JTextField.CENTER); + + ledPosition.setFont(new java.awt.Font("SansSerif", 0, 18)); // NOI18N + + jLabel9.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + jLabel9.setText("Position:"); + javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); jPanel3.setLayout(jPanel3Layout); jPanel3Layout.setHorizontalGroup( @@ -401,9 +422,15 @@ public class RobotPanel extends DevicePanel { .addGroup(jPanel3Layout.createSequentialGroup() .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(ledSettled, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))) + .addComponent(ledSettled, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addGroup(jPanel3Layout.createSequentialGroup() + .addComponent(jLabel9, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(ledPosition, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(textTask)) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(textTask) + .addComponent(textPosition))) .addGroup(jPanel3Layout.createSequentialGroup() .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) @@ -415,7 +442,7 @@ public class RobotPanel extends DevicePanel { .addContainerGap()) ); - jPanel3Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel3, jLabel4, jLabel6, jLabel8}); + jPanel3Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel3, jLabel4, jLabel6, jLabel8, jLabel9}); jPanel3Layout.setVerticalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -439,6 +466,11 @@ public class RobotPanel extends DevicePanel { .addComponent(jLabel8) .addComponent(ledTask, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(textTask, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(2, 2, 2) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(jLabel9) + .addComponent(ledPosition, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(textPosition, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(2, 2, 2)) ); @@ -628,6 +660,7 @@ public class RobotPanel extends DevicePanel { private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; + private javax.swing.JLabel jLabel9; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; @@ -636,6 +669,7 @@ public class RobotPanel extends DevicePanel { private ch.psi.pshell.swing.Led ledMode; private ch.psi.pshell.swing.Led ledMoving; private ch.psi.pshell.swing.Led ledOpen; + private ch.psi.pshell.swing.Led ledPosition; private ch.psi.pshell.swing.Led ledPowered; private ch.psi.pshell.swing.Led ledSettled; private ch.psi.pshell.swing.Led ledTask; @@ -645,6 +679,7 @@ public class RobotPanel extends DevicePanel { private ch.psi.pshell.swing.DeviceStatePanel panelState; private javax.swing.JSpinner spinnerSpeed; private javax.swing.JTextField textMode; + private javax.swing.JTextField textPosition; private javax.swing.JTextField textTask; // End of variables declaration//GEN-END:variables } diff --git a/script/devices/RobotSC.py b/script/devices/RobotSC.py index fe33e3e..2024fff 100644 --- a/script/devices/RobotSC.py +++ b/script/devices/RobotSC.py @@ -224,7 +224,7 @@ robot.default_speed = 20 robot.set_tool(TOOL_DEFAULT) robot.setPolling(DEFAULT_ROBOT_POLLING) - +robot.get_current_point() #TODO: REMOVE WHEN CURRENT POINT REPORTED BY POLLING MESSAGE class jf1(ReadonlyRegisterBase): def doRead(self): diff --git a/script/devices/RobotTCP.py b/script/devices/RobotTCP.py index f70e948..33986b1 100644 --- a/script/devices/RobotTCP.py +++ b/script/devices/RobotTCP.py @@ -30,6 +30,7 @@ class RobotTCP(TcpDevice, Stoppable): self.current_task_ret = None self.high_level_tasks = [] self.known_points = [] + self.current_points = [] self.cartesian_destination = None #self.flange_pos = [None] * 6 self.cartesian_pos = [None] * 6 @@ -94,13 +95,28 @@ class RobotTCP(TcpDevice, Stoppable): def get_known_points(self): return self.known_points - def get_current_point(self, tolerance = None): + def get_current_points(self, tolerance = None): ret = self.is_in_points(*self.known_points, tolerance = tolerance) + current_points = [] for i in range(len(ret)): if ret[i] == True: - return self.known_points[i] + current_points.append(self.known_points[i]) + return current_points + + def get_current_point(self, tolerance = None): + current_points = self.get_current_points(tolerance) + if (current_points is not None) and ( len(current_points) >0): + return current_points[0] return None + def get_current_points_cached(self): + return self.current_points + + def get_current_point_cached(self): + if (self.current_points is not None) and (len (self.current_points) >0): + return self.current_points[0] + return None + def assert_in_known_point(self, tolerance = None): if self.get_current_point(tolerance) is None: raise Exception ("Robot not in known point") @@ -585,7 +601,8 @@ class RobotTCP(TcpDevice, Stoppable): "task": cur_task, "mode": self.working_mode, "status": self.status, - "open": self.tool_open + "open": self.tool_open, + "pos": self.get_current_point_cached() if self.state==State.Ready else None #TODO: make it calculated in robot by possiung funtion }, None) if self.cartesian_motors_enabled: for m in self.cartesian_motors: @@ -620,6 +637,9 @@ class RobotTCP(TcpDevice, Stoppable): return self.distance_p("tcp_p", name) def is_in_point(self, p, tolerance = None): #Tolerance in mm + if (tolerance is None) and p in self.known_points: + #If checking a known point with default tolerance, updates the position cache + return p in self.get_current_points() tolerance = self.default_tolerance if tolerance == None else tolerance d = self.get_distance_to_pnt(p) if d<0: @@ -644,6 +664,12 @@ class RobotTCP(TcpDevice, Stoppable): ret[i] = None else: ret[i] = ret[i]