From 016f0508fef42c60af33cf5248203fd832430404 Mon Sep 17 00:00:00 2001 From: gac-S_Changer Date: Tue, 14 Aug 2018 14:10:09 +0200 Subject: [PATCH] --- plugins/Commands.java | 4 +- plugins/MXSC-1.10.0.jar | Bin 202653 -> 206172 bytes plugins/PuckDetectionPanel.form | 2 +- plugins/PuckDetectionPanel.java | 2 +- plugins/SmartMagnetPanel.form | 68 ++++++++++++++++++++-- plugins/SmartMagnetPanel.java | 88 +++++++++++++++++++++++++++-- script/devices/Gonio.py | 8 ++- script/devices/RobotSC.py | 10 +++- script/devices/RobotTCP.py | 4 +- script/imgproc/CoverDetection.py | 6 +- script/imgproc/LedDetectionProc.py | 2 + script/imgproc/Utils.py | 2 - script/local.py | 31 ++++++++++ script/motion/put_gonio.py | 2 +- script/motion/tools.py | 19 ++++--- 15 files changed, 216 insertions(+), 32 deletions(-) diff --git a/plugins/Commands.java b/plugins/Commands.java index b11a50b..d9b42e2 100644 --- a/plugins/Commands.java +++ b/plugins/Commands.java @@ -462,12 +462,12 @@ public class Commands extends Panel { private void buttonGetGonioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonGetGonioActionPerformed String force = checkForce.isSelected() ? "True" : "False"; - execute("get_gonio('force=" + force + ")"); + execute("get_gonio(force=" + force + ")"); }//GEN-LAST:event_buttonGetGonioActionPerformed private void buttonPutGonioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonPutGonioActionPerformed String force = checkForce.isSelected() ? "True" : "False"; - execute("put_gonio('force=" + force + ")"); + execute("put_gonio(force=" + force + ")"); }//GEN-LAST:event_buttonPutGonioActionPerformed private void buttonMoveParkActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonMoveParkActionPerformed diff --git a/plugins/MXSC-1.10.0.jar b/plugins/MXSC-1.10.0.jar index 0fbc961e7040332f7fabe203a2dd5db5e07ee481..3f40c4579894b7453611415fe4f76a1d38fca26f 100644 GIT binary patch delta 41637 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

KgEjCNwi<_cm4q=J2XpN93s_1i0W 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

acsEZ&c4!9h?;$lJkbGVvm!x$ma8yg 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 diff --git a/plugins/PuckDetectionPanel.form b/plugins/PuckDetectionPanel.form index 9e5eb14..ddf0eb7 100644 --- a/plugins/PuckDetectionPanel.form +++ b/plugins/PuckDetectionPanel.form @@ -1,6 +1,6 @@ -

+ diff --git a/plugins/PuckDetectionPanel.java b/plugins/PuckDetectionPanel.java index f17059a..fe33ec5 100644 --- a/plugins/PuckDetectionPanel.java +++ b/plugins/PuckDetectionPanel.java @@ -39,7 +39,7 @@ public class PuckDetectionPanel extends DevicePanel { table.getModel().setValueAt(state.mecSwitch, row, 2); table.getModel().setValueAt(state.indSwitch, row, 3); table.getModel().setValueAt(puck.getDetection() == null ? "" : puck.getDetection(), row, 4); - table.getModel().setValueAt(puck.getImageDetection() == null ? "" : puck.getImageDetection(), row, 5); + table.getModel().setValueAt(puck.getPuckType() == null ? "" : puck.getPuckType(), row, 5); } catch (Exception ex) { ex.printStackTrace(); table.getModel().setValueAt(false, row, 1); diff --git a/plugins/SmartMagnetPanel.form b/plugins/SmartMagnetPanel.form index 1e84613..7fc1d97 100644 --- a/plugins/SmartMagnetPanel.form +++ b/plugins/SmartMagnetPanel.form @@ -18,9 +18,12 @@ - - - + + + + + + @@ -28,9 +31,11 @@ - + - + + + @@ -165,5 +170,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/SmartMagnetPanel.java b/plugins/SmartMagnetPanel.java index 98f5bff..41f1eb2 100644 --- a/plugins/SmartMagnetPanel.java +++ b/plugins/SmartMagnetPanel.java @@ -74,6 +74,9 @@ public class SmartMagnetPanel extends DevicePanel { panelCurrentRb = new ch.psi.pshell.swing.DeviceValuePanel(); panelState = new ch.psi.pshell.swing.DeviceStatePanel(); panelCurrent = new ch.psi.pshell.swing.ProcessVariablePanel(); + jPanel2 = new javax.swing.JPanel(); + buttonHoming = new javax.swing.JButton(); + buttonMount = new javax.swing.JButton(); jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Status")); @@ -148,6 +151,46 @@ public class SmartMagnetPanel extends DevicePanel { panelCurrent.setBorder(javax.swing.BorderFactory.createTitledBorder("Current")); panelCurrent.setDeviceName("smc_current"); + jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Gonio")); + + buttonHoming.setText("Home Fast Table"); + buttonHoming.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + buttonHomingActionPerformed(evt); + } + }); + + buttonMount.setText("Set Mount Position"); + buttonMount.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + buttonMountActionPerformed(evt); + } + }); + + javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); + jPanel2.setLayout(jPanel2Layout); + jPanel2Layout.setHorizontalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel2Layout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(buttonHoming) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(buttonMount) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + jPanel2Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonHoming, buttonMount}); + + jPanel2Layout.setVerticalGroup( + jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(buttonHoming) + .addComponent(buttonMount)) + .addContainerGap()) + ); + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( @@ -155,26 +198,63 @@ public class SmartMagnetPanel extends DevicePanel { .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(panelState, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() - .addComponent(panelCurrent, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(0, 0, Short.MAX_VALUE)) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(panelCurrent, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addGap(0, 0, 0)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(5, 5, 5) + .addGap(0, 0, 0) .addComponent(panelCurrent, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGap(0, 0, 0) + .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(0, 0, 0) .addComponent(panelState, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) ); }// //GEN-END:initComponents + private void buttonHomingActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonHomingActionPerformed + try{ + Context.getInstance().evalLineAsync("home_fast_table()").handle((ret, ex) -> { + if (SmartMagnetPanel.this.isShowing()){ + if (ex != null){ + showException((Exception)ex); + } + } + return ret; + }); + } catch (Exception ex){ + this.showException(ex); + } + }//GEN-LAST:event_buttonHomingActionPerformed + + private void buttonMountActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonMountActionPerformed + try{ + Context.getInstance().evalLineAsync("set_mount_position()").handle((ret, ex) -> { + if (SmartMagnetPanel.this.isShowing()){ + if (ex != null){ + showException((Exception)ex); + } + } + return ret; + }); + } catch (Exception ex){ + this.showException(ex); + } + }//GEN-LAST:event_buttonMountActionPerformed + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton buttonHoming; + private javax.swing.JButton buttonMount; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel10; private javax.swing.JLabel jLabel5; private javax.swing.JPanel jPanel1; + private javax.swing.JPanel jPanel2; private ch.psi.pshell.swing.Led ledMounted; private ch.psi.pshell.swing.Led ledStatus; private ch.psi.pshell.swing.ProcessVariablePanel panelCurrent; diff --git a/script/devices/Gonio.py b/script/devices/Gonio.py index cf006b2..0f264f5 100644 --- a/script/devices/Gonio.py +++ b/script/devices/Gonio.py @@ -1,7 +1,7 @@ def home_fast_table(): - caput ("SAR-EXPMX:ASYN.AOUT", "enable plc 1") + caput ("SAR-EXPMX1:ASYN.AOUT", "enable plc 1") def get_fx_pos(): return caget("SAR-EXPMX:MOT_FX.RBV", 'f') @@ -35,3 +35,9 @@ def set_cx_pos(pos): return caput("SAR-EXPMX:MOT_CX.VAL", float(pos)) +def set_mount_position(): + set_fx_pos(0.0) + set_fy_pos(0.0) + set_ry_pos(0.0) + set_cz_pos(0.0) + set_cx_pos(0.0) \ No newline at end of file diff --git a/script/devices/RobotSC.py b/script/devices/RobotSC.py index 7bd8b14..b8f2de9 100644 --- a/script/devices/RobotSC.py +++ b/script/devices/RobotSC.py @@ -23,7 +23,7 @@ class RobotSC(RobotTCP): def __init__(self, name, server, timeout = 1000, retries = 1): RobotTCP.__init__(self, name, server, timeout, retries) self.set_tasks(["getDewar", "putDewar", "putGonio", "getGonio", "robotRecover", "moveDewar", "movePark", "moveGonio","moveHeater", "moveScanner"]) - self.set_known_points(["pHome", "pPark", "pDewarHome", "pGonioHome", "pDewarWait", "pGonioGet", "pScanHome", "pHeaterHome", "pHeater", "pHeaterBottom", "pScanStop"]) + self.set_known_points(["pHome", "pPark", "pDewarHome", "pGonioHome", "pDewarWait", "pGonioGet", "pScanHome", "pHeaterHome", "pHeater", "pHeaterBottom", "pScanStop","pHelium"]) self.setPolling(DEFAULT_ROBOT_POLLING) def move_dewar(self): @@ -161,6 +161,9 @@ class RobotSC(RobotTCP): def is_gonio(self): return self.is_in_point("pGonioHome") + + def is_helium(self): + return self.is_in_point("pHelium") def is_scanner(self): return self.is_in_point("pScanHome") @@ -194,7 +197,10 @@ class RobotSC(RobotTCP): self.assert_in_point("pDewarWait") def assert_gonio(self): - self.assert_in_point("pGonioHome") + self.assert_in_point("pGonioHome") + + def assert_helium(self): + self.assert_in_point("pHelium") def assert_scanner(self): self.assert_in_point("pScanHome") diff --git a/script/devices/RobotTCP.py b/script/devices/RobotTCP.py index fb8616c..40910a2 100644 --- a/script/devices/RobotTCP.py +++ b/script/devices/RobotTCP.py @@ -108,7 +108,7 @@ class RobotTCP(TcpDevice, Stoppable): def _sendReceive(self, msg_id, msg = "", timeout = None): tx = self.header if (self.header != None) else "" tx = tx + msg_id + " " + msg - if (len(tx)>127): + if (len(tx)>150): raise Exception("Exceeded maximum message size") self.getLogger().finer("TX = '" + str(tx)+ "'") if (self.trailer != None): tx = tx + self.trailer @@ -736,7 +736,7 @@ class RobotTCP(TcpDevice, Stoppable): log("Failed starting : " + str(program) + str(args), False) print "Failed starting : " + str(program) + str(args) if self.exception_on_task_start_failure: - raise Exception("Cannot start task: " + program + + str(args)) + raise Exception("Cannot start task: " + program + str(args)) log("Task started: " + str(program) + str(args) + " - status: " + str(status) + " (" + str(code) + ")", False) self.current_task, self.current_task_ret = program, None diff --git a/script/imgproc/CoverDetection.py b/script/imgproc/CoverDetection.py index 1398a07..904837a 100644 --- a/script/imgproc/CoverDetection.py +++ b/script/imgproc/CoverDetection.py @@ -1,6 +1,8 @@ ################################################################################################### # Procedure to detect the cover orientation ################################################################################################### +assert_imaging_enabled() + #Parameters FRAMES_INTEGRATION = 3 @@ -27,7 +29,7 @@ smooth(ip) #bandpass_filter(ip, 30, 1000) edges(ip) auto_threshold(ip, method = "MaxEntropy") -#binary_erode(ip, False) +#binary_erode(ip, True) #binary_dilate(ip, True) ip.getProcessor().erode(1, 255) cx,cy = int(ip.width/2), int(ip.height/2) @@ -80,7 +82,7 @@ if angle is not None: #Plot the correlations values agains angle if DEBUG: - p = plot(ydata, xdata=xdata)[0] + plot(ydata, xdata=xdata) #Output results if DEBUG: diff --git a/script/imgproc/LedDetectionProc.py b/script/imgproc/LedDetectionProc.py index 37728d9..c01673d 100644 --- a/script/imgproc/LedDetectionProc.py +++ b/script/imgproc/LedDetectionProc.py @@ -1,6 +1,8 @@ ################################################################################################### # Procedure to detect the puck light spots. ################################################################################################### +assert_imaging_enabled() + COVER_PRESENT = True ROOM_TEMP = is_room_temp() diff --git a/script/imgproc/Utils.py b/script/imgproc/Utils.py index c5ed223..30af7bd 100644 --- a/script/imgproc/Utils.py +++ b/script/imgproc/Utils.py @@ -9,8 +9,6 @@ from ch.psi.pshell.imaging.Overlays import * import ch.psi.pshell.imaging.Pen as Pen import java.awt.Rectangle as Rectangle - - def get_img_cover_pos(): [position, angle, confidence] = run("imgproc/CoverDetection") return position diff --git a/script/local.py b/script/local.py index d0251f8..d1f3a45 100644 --- a/script/local.py +++ b/script/local.py @@ -11,6 +11,37 @@ import ch.psi.pshell.core.Nameable as Nameable run("setup/Layout") + +################################################################################################### +# Configuration +################################################################################################### + + +def is_imaging_enabled(): + setting = get_setting("ImagingEnabled") + return not (str(setting) == 'False') + +def set_imaging_enabled(value): + set_setting("ImagingEnabled", True if value else False ) + +def assert_imaging_enabled(): + if is_imaging_enabled() == False: + raise Exception ("Imaging is disabled") + +#"unipuck", "minispine" or "mixed" +def set_puck_types(value): + set_setting("ImagingEnabled", True if value else False ) + +def get_puck_types(): + setting = get_setting("ImagingEnabled") + if setting == "unipuck" or setting == "minispine": + return setting + return "mixed" + +#In order to apply current config +set_imaging_enabled(is_imaging_enabled()) +set_puck_types(get_puck_types()) + ################################################################################################### # Scripted devices and pseudo-devices ################################################################################################### diff --git a/script/motion/put_gonio.py b/script/motion/put_gonio.py index 1044a14..a29e1db 100644 --- a/script/motion/put_gonio.py +++ b/script/motion/put_gonio.py @@ -1,4 +1,4 @@ -def put_gonio(segment, puck, sample, force=False): +def put_gonio(force=False): """ """ print "put_gonio: ", force diff --git a/script/motion/tools.py b/script/motion/tools.py index 277924b..148c54e 100644 --- a/script/motion/tools.py +++ b/script/motion/tools.py @@ -65,14 +65,15 @@ def _set_hexiposi(pos): def visual_check_hexiposi(segment): - #if is_manual_mode(): ? - if hexiposi.moved: - #Clearing for image processing - if not robot.is_park(): - print "Moving robot to park to clear camera view..." - robot.move_park() - assert_img_in_cover_pos(segment) - hexiposi.moved = False + if is_imaging_enabled(): + #if is_manual_mode(): ? + if hexiposi.moved: + #Clearing for image processing + if not robot.is_park(): + print "Moving robot to park to clear camera view..." + robot.move_park() + assert_img_in_cover_pos(segment) + hexiposi.moved = False @@ -82,7 +83,7 @@ def wait_end_of_move(): time.sleep(0.01) -def move_home(): +def move_to_home(): #robot.reset_motion("jHome") robot.movej("pHome", robot.tool , DESC_SCAN) wait_end_of_move()