From 5114bfaf3da10aa4c3c75fe476a6688258a31ea6 Mon Sep 17 00:00:00 2001 From: gac-S_Changer Date: Mon, 30 Apr 2018 17:31:42 +0200 Subject: [PATCH] --- config/plugins.properties | 2 +- devices/dewar_level.properties | 2 +- devices/led_level.properties | 8 + plugins/MXSC-1.9.0.jar | Bin 56338 -> 64577 bytes plugins/NewJPanel.form | 142 ++++++++++++++++ plugins/NewJPanel.java | 221 +++++++++++++++++++++++++ script/calibration/ScanRZ.py | 29 ++-- script/calibration/ScanY.py | 2 +- script/calibration/ToolCalibration2.py | 25 ++- script/devices/LedCtrl.py | 23 ++- script/devices/Wago.py | 23 ++- script/imgproc/CameraCalibration2.py | 102 ++++++++++++ script/local.py | 13 ++ script/motion/tools.py | 8 +- 14 files changed, 564 insertions(+), 36 deletions(-) create mode 100644 devices/led_level.properties create mode 100644 plugins/NewJPanel.form create mode 100644 plugins/NewJPanel.java create mode 100644 script/imgproc/CameraCalibration2.py diff --git a/config/plugins.properties b/config/plugins.properties index e9e96d2..864a15d 100644 --- a/config/plugins.properties +++ b/config/plugins.properties @@ -1,4 +1,4 @@ -Expert.java=enabled +Expert.java=disabled MXSC-1.9.0.jar=enabled RobotPanel.java=enabled Wayne.java=disabled diff --git a/devices/dewar_level.properties b/devices/dewar_level.properties index dd9a525..098b613 100644 --- a/devices/dewar_level.properties +++ b/devices/dewar_level.properties @@ -1,4 +1,4 @@ -#Thu Mar 01 16:16:41 CET 2018 +#Mon Apr 23 09:19:43 CEST 2018 offset=-25.81632 precision=2 scale=0.003888 diff --git a/devices/led_level.properties b/devices/led_level.properties new file mode 100644 index 0000000..a187950 --- /dev/null +++ b/devices/led_level.properties @@ -0,0 +1,8 @@ +#Mon Apr 23 08:19:24 CEST 2018 +maxValue=NaN +minValue=NaN +offset=0.0 +precision=-1 +resolution=NaN +scale=1.0 +unit=null diff --git a/plugins/MXSC-1.9.0.jar b/plugins/MXSC-1.9.0.jar index e12854258aae08c2f2a8989283869cce0a118172..aa965bb109f37c2bac6037ed9b07767ae598c52f 100644 GIT binary patch delta 30764 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 Hee(YSNEmMj delta 22784 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 + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/plugins/NewJPanel.java b/plugins/NewJPanel.java new file mode 100644 index 0000000..2a646e1 --- /dev/null +++ b/plugins/NewJPanel.java @@ -0,0 +1,221 @@ + +import ch.psi.pshell.device.Device; +import ch.psi.pshell.device.DeviceAdapter; +import ch.psi.utils.State; +import java.awt.Color; + +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +/** + * + * @author gac-S_Changer + */ +public class NewJPanel extends javax.swing.JPanel { + + /** + * Creates new form NewJPanel + */ + public NewJPanel() { + initComponents(); + + + ((Device) getDevice("hexiposi")).addListener(new DeviceAdapter() { + @Override + public void onStateChanged(Device device, State state, State former) { + updateHexiposiState(state); + } + }); + updateHexiposiState(((Device) getDevice("hexiposi")).getState()); + + ((Device) getDevice("air_pressure_ok")).addListener(new DeviceAdapter() { + @Override + public void onValueChanged(Device device, Object value, Object former) { + updateAirPressure(value); + } + }); + updateAirPressure(((Device) getDevice("air_pressure_ok")).take()); + + ((Device) getDevice("n2_pressure_ok")).addListener(new DeviceAdapter() { + @Override + public void onValueChanged(Device device, Object value, Object former) { + updateN2Pressure(value); + } + }); + updateN2Pressure(((Device) getDevice("n2_pressure_ok")).take()); + + ((Device) getDevice("feedback_local_safety")).addListener(new DeviceAdapter() { + @Override + public void onValueChanged(Device device, Object value, Object former) { + updateLocalSafety(value); + } + }); + updateLocalSafety(((Device) getDevice("feedback_local_safety")).take()); + + ((Device) getDevice("feedback_psys_safety")).addListener(new DeviceAdapter() { + @Override + public void onValueChanged(Device device, Object value, Object former) { + updatePsysSafety(value); + } + }); + updatePsysSafety(((Device) getDevice("feedback_psys_safety")).take()); + } + + void updateHexiposiState(State state){ + ledLidControlActive.setColor(state.isInitialized() ? Color.GREEN : Color.BLACK ); + ledLidInitialized.setColor((state.isNormal()&& state !=State.Disabled) ? Color.GREEN : Color.BLACK); + } + + void updateAirPressure(Object value){ + if ((value == null) || !(value instanceof Boolean)){ + ledAirPressure.setColor(Color.BLACK); + } else if ((Boolean)value){ + ledAirPressure.setColor(Color.GREEN); + } else { + ledAirPressure.setColor(Color.RED); + } + } + + void updateN2Pressure(Object value){ + if ((value == null) || !(value instanceof Boolean)){ + ledN2Pressure.setColor(Color.BLACK); + } else if ((Boolean)value){ + ledN2Pressure.setColor(Color.GREEN); + } else { + ledN2Pressure.setColor(Color.RED); + } + } + + void updateLocalSafety(Object value){ + if ((value == null) || !(value instanceof Boolean)){ + ledLocalSafety.setColor(Color.BLACK); + } else if ((Boolean)value){ + ledLocalSafety.setColor(Color.GREEN); + } else { + ledLocalSafety.setColor(Color.RED); + } + } + + void updatePsysSafety(Object value){ + if ((value == null) || !(value instanceof Boolean)){ + ledPsysSafety.setColor(Color.BLACK); + } else if ((Boolean)value){ + ledPsysSafety.setColor(Color.GREEN); + } else { + ledPsysSafety.setColor(Color.RED); + } + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + jPanel11 = new javax.swing.JPanel(); + ledAirPressure = new ch.psi.pshell.swing.Led(); + jLabel15 = new javax.swing.JLabel(); + jLabel16 = new javax.swing.JLabel(); + ledN2Pressure = new ch.psi.pshell.swing.Led(); + jLabel19 = new javax.swing.JLabel(); + ledLocalSafety = new ch.psi.pshell.swing.Led(); + jLabell20 = new javax.swing.JLabel(); + ledPsysSafety = new ch.psi.pshell.swing.Led(); + + jPanel11.setBorder(javax.swing.BorderFactory.createTitledBorder("System Status")); + + jLabel15.setText("Air Pressure"); + + jLabel16.setText("N2 Pressure"); + + jLabel19.setText("Local Safety"); + + jLabell20.setText("Psys Safety"); + + javax.swing.GroupLayout jPanel11Layout = new javax.swing.GroupLayout(jPanel11); + jPanel11.setLayout(jPanel11Layout); + jPanel11Layout.setHorizontalGroup( + jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel11Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel11Layout.createSequentialGroup() + .addComponent(ledAirPressure, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLabel15)) + .addGroup(jPanel11Layout.createSequentialGroup() + .addComponent(ledN2Pressure, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLabel16)) + .addGroup(jPanel11Layout.createSequentialGroup() + .addComponent(ledLocalSafety, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLabel19)) + .addGroup(jPanel11Layout.createSequentialGroup() + .addComponent(ledPsysSafety, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(jLabell20))) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + jPanel11Layout.setVerticalGroup( + jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel11Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(ledAirPressure, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel15)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(ledN2Pressure, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel16)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(ledLocalSafety, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel19)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(ledPsysSafety, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabell20))) + ); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); + this.setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 400, Short.MAX_VALUE) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGap(142, 142, 142) + .addComponent(jPanel11, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGap(143, 143, 143))) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGap(0, 300, Short.MAX_VALUE) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGap(84, 84, 84) + .addComponent(jPanel11, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGap(84, 84, 84))) + ); + }// //GEN-END:initComponents + + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JLabel jLabel15; + private javax.swing.JLabel jLabel16; + private javax.swing.JLabel jLabel19; + private javax.swing.JLabel jLabell20; + private javax.swing.JPanel jPanel11; + private ch.psi.pshell.swing.Led ledAirPressure; + private ch.psi.pshell.swing.Led ledLocalSafety; + private ch.psi.pshell.swing.Led ledN2Pressure; + private ch.psi.pshell.swing.Led ledPsysSafety; + // End of variables declaration//GEN-END:variables +} diff --git a/script/calibration/ScanRZ.py b/script/calibration/ScanRZ.py index 9cd8de8..ac10b5a 100644 --- a/script/calibration/ScanRZ.py +++ b/script/calibration/ScanRZ.py @@ -1,26 +1,31 @@ +#Imports import plotutils from mathutils import fit_gaussian, Gaussian -RANGE = [180.0,-180.0] +#Parameters +RANGE = [-120.0,120.0] STEP = 5.0 LATENCY = 0.005 RELATIVE = False - -robot.set_tool(TOOL_DEFAULT) - +#Enabling and checking +#enable_power() +#system_check() robot.enable() + + +#Body +robot.set_tool(TOOL_DEFAULT) move_to_laser() - - - - - - - -robot.set_joint_motors_enabled(True) +#robot.set_joint_motors_enabled(True) +robot.set_motors_enabled(True) +robot_rz.move(0.0) +robot.set_motors_enabled(True) ret = lscan(robot_rz, ue.readable, RANGE[0], RANGE[1], STEP, latency = LATENCY, relative = RELATIVE, range = "auto", title = "Scan2") +#Cleanup + + diff --git a/script/calibration/ScanY.py b/script/calibration/ScanY.py index 7e25fc9..8793019 100644 --- a/script/calibration/ScanY.py +++ b/script/calibration/ScanY.py @@ -9,7 +9,7 @@ if d<0: if d>20: raise Exception ("Should be near the laser position to perform the scan") -RANGE = [-1.5, 1.5] +RANGE = [-2.0, 2.0] #[-1.5, 1.5] STEP = 0.02 Z_OFFSET = 0 #-1.0 LATENCY = 0.025 diff --git a/script/calibration/ToolCalibration2.py b/script/calibration/ToolCalibration2.py index d146173..b90289e 100644 --- a/script/calibration/ToolCalibration2.py +++ b/script/calibration/ToolCalibration2.py @@ -2,13 +2,17 @@ import plotutils from mathutils import fit_gaussian, Gaussian -robot.assert_tool(TOOL_CALIBRATION) +#robot.assert_tool(TOOL_CALIBRATION) +#cal_tool = TOOL_DEFAULT +cal_tool = TOOL_CALIBRATION + +robot.set_tool(cal_tool) robot.enable() -robot.set_motors_enabled(True) -robot.set_joint_motors_enabled(True) move_to_laser() +robot.set_motors_enabled(True) +robot.set_joint_motors_enabled(True) initial_pos = robot.get_cartesian_pos() robot.enable() @@ -52,7 +56,7 @@ robot.set_pnt(robot.get_cartesian_pos(), "pTemp") robot.set_trsf([off_x, 0,0,0,0,0]) c=robot.compose("pTemp", "fTable", "tcp_t" ) robot.set_pnt(c, "pTemp") -robot.movel("pTemp", TOOL_CALIBRATION, DESC_SCAN, sync=True) +robot.movel("pTemp", cal_tool, DESC_SCAN, sync=True) pos2 = robot.get_cartesian_pos() @@ -66,10 +70,17 @@ print "Position 2: ", pos2 xoff = (pos2[0]-pos1[0])/2 yoff = (pos2[1]-pos1[1])/2 -print "Offset: ", [xoff, yoff] +#print "Offset: ", [xoff, yoff] t=robot.get_tool_trsf(TOOL_DEFAULT) -t[0]=-xoff -t[1]=yoff +t[0]=xoff +t[1]=-yoff +print "Offset: ", [t[0], t[1]] robot.set_tool_trsf(t, TOOL_DEFAULT) +robot.set_tool(TOOL_DEFAULT) +d = robot.get_distance_to_pnt("pLaser") +if d