From 3d33c1d09acf9e3a856724ef6f5cc94d6e216933 Mon Sep 17 00:00:00 2001
From: Amira Abdel-Rahman <amira-rahman@aucegypt.edu>
Date: Mon, 14 Sep 2020 03:08:49 -0400
Subject: [PATCH] ur10 edge

---
 .../assembly/app.js                           |  75 +++++++-
 .../assembly/python-urx/setup.json            |  56 ++----
 .../assembly/python-urx/ur10test.py           | 173 +++++++++++-------
 3 files changed, 185 insertions(+), 119 deletions(-)

diff --git a/01_Code/physical_computing_interface/assembly/app.js b/01_Code/physical_computing_interface/assembly/app.js
index c518f46..7b9a4c7 100644
--- a/01_Code/physical_computing_interface/assembly/app.js
+++ b/01_Code/physical_computing_interface/assembly/app.js
@@ -26,7 +26,6 @@ assembler.run();
 
 //////////////////////////////python-urx//////////////////
 
-
 var integratedSetup={
     ur10Setup:{
         parameters:{
@@ -55,6 +54,14 @@ var integratedSetup={
                 ry:1.3498035669326782,
                 rz:-1.5769990126239222,
             },
+           edge90PickupRobotHome:{
+                x: 0.14550010859966278,
+                y:  -1.2639334837542933,
+                z:  2.2356719970703125,
+                rx:  -0.966320816670553,
+                ry:   0.1400364190340042,
+                rz: -1.5755623022662562,
+            },
             programmingRelativeDistance:{
                 x: -0.203,
                 y: 0.0127,
@@ -72,9 +79,9 @@ var integratedSetup={
                 rz:0
             },
             edgeRelativeDistance:{
-                x: 0,
-                y: 0,
-                z: 0.04,
+                x: -0.2833,
+                y: -0.008,
+                z: 0.038,
                 rx:0,
                 ry:0,
                 rz:0
@@ -91,6 +98,63 @@ var integratedSetup={
         nodes:[ //relative to the pickup
         ],
         edges:[ //relative to the pickup
+            { //s1
+                x: 0.0075,
+                y: -0.2833,
+                z: 0.038,
+                rx:0,
+                ry:0,
+                rz:0,
+            },
+            { //s2
+                x: 0.0075,
+                y: -0.3143,
+                z: 0.038,
+                rx:0,
+                ry:0,
+                rz:0,
+            },
+            { //s3
+                x: 0,
+                y: 0,
+                z: 0.03,
+                rx:0,
+                ry:0,
+                rz:Math.PI,
+            },
+            { //s4
+                x: 0,
+                y: -0.031,
+                z: 0.03,
+                rx:0,
+                ry:0,
+                rz:Math.PI,
+            },
+            { //s5
+                x: 0,
+                y: -0.062,
+                z: 0.03,
+                rx:0,
+                ry:0,
+                rz:Math.PI,
+            },
+            { //s6
+                x: -0.0235,
+                y: -0.2833,
+                z: 0.038,
+                rx:0,
+                ry:0,
+                rz:0,
+            },
+            { //s7
+                x: -0.0235,
+                y: -0.3143,
+                z: 0.038,
+                rx:0,
+                ry:0,
+                rz:0,
+            },
+
         ],
     },
     DEMSetup:{
@@ -126,6 +190,9 @@ document.addEventListener('addNode', function (e) {
 function assembleNode(e,integratedSetup){
 
     var ur10Setup=integratedSetup.ur10Setup;
+    ur10Setup.nodes=[];
+    ur10Setup.edges=[];
+    
     var x=e.detail.x;
     var y=e.detail.y;
     var z=e.detail.z;
diff --git a/01_Code/physical_computing_interface/assembly/python-urx/setup.json b/01_Code/physical_computing_interface/assembly/python-urx/setup.json
index 90503d1..3d426bb 100644
--- a/01_Code/physical_computing_interface/assembly/python-urx/setup.json
+++ b/01_Code/physical_computing_interface/assembly/python-urx/setup.json
@@ -1,7 +1,7 @@
 {
   "setup": {
     "parameters": {
-      "run": false,
+      "run": true,
       "pythonFileName": "ur10test",
       "ipNode": "192.168.1.52",
       "ipEdge": "192.168.1.53",
@@ -26,6 +26,14 @@
         "ry": 1.3498035669326782,
         "rz": -1.5769990126239222
       },
+      "edge90PickupRobotHome": {
+        "x": 0.14550010859966278,
+        "y": -1.2639334837542933,
+        "z": 2.2356719970703125,
+        "rx": -0.966320816670553,
+        "ry": 0.1400364190340042,
+        "rz": -1.5755623022662562
+      },
       "programmingRelativeDistance": {
         "x": -0.203,
         "y": 0.0127,
@@ -43,9 +51,9 @@
         "rz": 0
       },
       "edgeRelativeDistance": {
-        "x": 0,
-        "y": 0,
-        "z": 0.04,
+        "x": -0.2833,
+        "y": -0.008,
+        "z": 0.038,
         "rx": 0,
         "ry": 0,
         "rz": 0
@@ -58,14 +66,6 @@
       "sleep1": 0.1
     },
     "nodes": [
-      {
-        "y": 0,
-        "x": 0,
-        "z": 0,
-        "rx": 0,
-        "ry": 0,
-        "rz": 0
-      },
       {
         "y": 0,
         "x": 1,
@@ -76,38 +76,6 @@
       }
     ],
     "edges": [
-      {
-        "y": 0,
-        "x": 0.5,
-        "z": 0,
-        "rx": 0,
-        "ry": 0,
-        "rz": 0
-      },
-      {
-        "y": -0.5,
-        "x": 0,
-        "z": 0,
-        "rx": 0,
-        "ry": 0,
-        "rz": 1.5707963267948966
-      },
-      {
-        "y": 0,
-        "x": -0.5,
-        "z": 0,
-        "rx": 0,
-        "ry": 0,
-        "rz": 0
-      },
-      {
-        "y": 0.5,
-        "x": 0,
-        "z": 0,
-        "rx": 0,
-        "ry": 0,
-        "rz": 1.5707963267948966
-      },
       {
         "y": 0,
         "x": 1.5,
diff --git a/01_Code/physical_computing_interface/assembly/python-urx/ur10test.py b/01_Code/physical_computing_interface/assembly/python-urx/ur10test.py
index 8f0241d..0dc7288 100644
--- a/01_Code/physical_computing_interface/assembly/python-urx/ur10test.py
+++ b/01_Code/physical_computing_interface/assembly/python-urx/ur10test.py
@@ -25,26 +25,25 @@ setup=data["setup"]
 globalSetup=data["setup"]["parameters"]
 reference_roy=globalSetup["nodePickupRobotHome"]
 reference_siegfried=globalSetup["edgePickupRobotHome"]
+strut90_siegfried_j=globalSetup["edge90PickupRobotHome"]
 latticePitch=globalSetup["latticePitch"]
 sleepTime=globalSetup["sleep"]
 sleepTime1=globalSetup["sleep1"]
 
 
-# # reference locations are 40 mm above pickup points
-# reference_roy_j = (reference_roy["x"], reference_roy["y"], reference_roy["z"], reference_roy["rx"], reference_roy["ry"], reference_roy["rz"])
-# reference_siegfried_j = (reference_siegfried["x"], reference_siegfried["y"], reference_siegfried["z"], reference_siegfried["rx"], reference_siegfried["ry"], reference_siegfried["rz"])
+# reference locations are 40 mm above pickup points
+reference_roy_j = (reference_roy["x"], reference_roy["y"], reference_roy["z"], reference_roy["rx"], reference_roy["ry"], reference_roy["rz"])
+reference_siegfried_j = (reference_siegfried["x"], reference_siegfried["y"], reference_siegfried["z"], reference_siegfried["rx"], reference_siegfried["ry"], reference_siegfried["rz"])
+strut90_siegfried_j = (strut90_siegfried_j["x"], strut90_siegfried_j["y"], strut90_siegfried_j["z"], strut90_siegfried_j["rx"], strut90_siegfried_j["ry"], strut90_siegfried_j["rz"])
 
-# roy = urx.Robot(globalSetup["ipNode"])
-# roy.set_tcp((0, 0, 0.1, 0, 0, 0))
-# roy.set_payload(2, (0, 0, 0.1))
-# time.sleep(sleepTime)  #leave some time to robot to process the setup commands
-
-
-# siegfried = urx.Robot(globalSetup["ipEdge"])
-# siegfried.set_tcp((0, 0, 0.1, 0, 0, 0))
-# siegfried.set_payload(2, (0, 0, 0.1))
-# time.sleep(sleepTime)  #leave some time to robot to process the setup commands
+roy = urx.Robot("192.168.1.52")
+roy.set_tcp((0, 0, 0.1, 0, 0, 0))
+roy.set_payload(2, (0, 0, 0.1))
 
+siegfried = urx.Robot("192.168.1.53")
+siegfried.set_tcp((0, 0, 0.1, 0, 0, 0))
+siegfried.set_payload(2, (0, 0, 0.1))
+time.sleep(0.2)  #leave some time to robot to process the setup commands
 
 
 # placement location reference (top view)
@@ -59,47 +58,47 @@ for node in setup["nodes"]:
     print("Build Node:")
     print(node)
 
-    # v = globalSetup["v"]
-    # a = globalSetup["a"]
-
-    # # move to reference locations and get current transformation matrices
-    # roy.movej(reference_roy_j, acc = a, vel = v)
-    # roy_trans = roy.get_pose()
-    # time.sleep(sleepTime)
-
-    # v = globalSetup["v1"]
-    # a = globalSetup["a1"]
-
-    # # move to pickup locations from reference
-    # roy_trans.pos.z += globalSetup["nodeRelativeDistance"]["z"]
-    # roy.set_pose(roy_trans, acc = a, vel = v)
-    # time.sleep(sleepTime)
-
-
-    # # close and open grippers
-    # roy.send_program('set_tool_digital_out(0, True)') #close node tool
-    # time.sleep(sleepTime1)
-    # roy.send_program('set_tool_digital_out(0, False)') #open node tool
-    # time.sleep(sleepTime1)
-
-    # # move roy (nodes) to programming location from reference, drops to program, then lifts to reference height
-    # roy_trans.pos.x += globalSetup["programmingRelativeDistance"]["x"]
-    # roy_trans.pos.y += globalSetup["programmingRelativeDistance"]["y"]
-    # roy.set_pose(roy_trans, acc = a, vel = v)
-    # roy_trans.pos.z -= globalSetup["programmingRelativeDistance"]["z"]
-    # roy.set_pose(roy_trans, acc = a, vel = v)
-    # time.sleep(1) # programming time!
-    # roy_trans.pos.z += globalSetup["programmingRelativeDistance"]["z"]
-    # roy.set_pose(roy_trans, acc = a, vel = v)
-
-    # # move roy (nodes) to node from reference location
-    # roy_trans.pos.x += ((globalSetup["nodeRelativeDistance"]["x"])+node["x"]*latticePitch["x"])
-    # roy_trans.pos.y += ((globalSetup["nodeRelativeDistance"]["y"])+node["y"]*latticePitch["y"])
-    # roy.set_pose(roy_trans, acc = a, vel = v)
-    # roy_trans.pos.z -= (globalSetup["nodeRelativeDistance"]["z"]-node["z"]*latticePitch["z"])
-    # roy.set_pose(roy_trans, acc = a, vel = v)
-    # roy_trans.pos.z += (globalSetup["nodeRelativeDistance"]["z"]-node["z"]*latticePitch["z"])
-    # time.sleep(sleepTime)
+    v = globalSetup["v"]
+    a = globalSetup["a"]
+
+    # move to reference locations and get current transformation matrices
+    roy.movej(reference_roy_j, acc = a, vel = v)
+    roy_trans = roy.get_pose()
+    time.sleep(sleepTime)
+
+    v = globalSetup["v1"]
+    a = globalSetup["a1"]
+
+    # move to pickup locations from reference
+    roy_trans.pos.z += globalSetup["nodeRelativeDistance"]["z"]
+    roy.set_pose(roy_trans, acc = a, vel = v)
+    time.sleep(sleepTime)
+
+
+    # close and open grippers
+    roy.send_program('set_tool_digital_out(0, True)') #close node tool
+    time.sleep(sleepTime1)
+    roy.send_program('set_tool_digital_out(0, False)') #open node tool
+    time.sleep(sleepTime1)
+
+    # move roy (nodes) to programming location from reference, drops to program, then lifts to reference height
+    roy_trans.pos.x += globalSetup["programmingRelativeDistance"]["x"]
+    roy_trans.pos.y += globalSetup["programmingRelativeDistance"]["y"]
+    roy.set_pose(roy_trans, acc = a, vel = v)
+    roy_trans.pos.z -= globalSetup["programmingRelativeDistance"]["z"]
+    roy.set_pose(roy_trans, acc = a, vel = v)
+    time.sleep(1) # programming time!
+    roy_trans.pos.z += globalSetup["programmingRelativeDistance"]["z"]
+    roy.set_pose(roy_trans, acc = a, vel = v)
+
+    # move roy (nodes) to node from reference location
+    roy_trans.pos.x += ((globalSetup["nodeRelativeDistance"]["x"])+node["x"]*latticePitch["x"])
+    roy_trans.pos.y += ((globalSetup["nodeRelativeDistance"]["y"])+node["y"]*latticePitch["y"])
+    roy.set_pose(roy_trans, acc = a, vel = v)
+    roy_trans.pos.z -= (globalSetup["nodeRelativeDistance"]["z"]-node["z"]*latticePitch["z"])
+    roy.set_pose(roy_trans, acc = a, vel = v)
+    roy_trans.pos.z += (globalSetup["nodeRelativeDistance"]["z"]-node["z"]*latticePitch["z"])
+    time.sleep(sleepTime)
 
 
     
@@ -111,26 +110,58 @@ for edge in setup["edges"]:
     print("Build Edge:")
     print(edge)
 
-    # v = globalSetup["v"]
-    # a = globalSetup["a"]
+    v = globalSetup["v"]
+    a = globalSetup["a"]
 
-    # # move to reference locations and get current transformation matrices
-    # siegfried.movej(reference_siegfried_j, acc = a, vel = v)
-    # siegfried_trans = siegfried.get_pose()
-    # time.sleep(sleepTime)
+    # move to reference locations and get current transformation matrices
+    siegfried.movej(reference_siegfried_j, acc = a, vel = v)
+    siegfried_trans = siegfried.get_pose()
+    time.sleep(sleepTime)
 
-    # # move to pickup locations from reference
-    # siegfried_trans.pos.z += globalSetup["edgeRelativeDistance"]["z"]
-    # siegfried.set_pose(siegfried_trans, acc = a, vel = v)
-    # time.sleep(sleepTime)
+    v = globalSetup["v1"]
+    a = globalSetup["a1"]
 
-    # # close and open grippers
-    # siegfried.send_program('set_tool_digital_out(0, True)') #close strut tool
-    # time.sleep(sleepTime1)
-    # siegfried.send_program('set_tool_digital_out(0, False)') #open strut tool
-    # time.sleep(sleepTime1)
+    # move to pickup locations from reference
+    siegfried_trans.pos.z += globalSetup["edgeRelativeDistance"]["z"]
+    siegfried.set_pose(siegfried_trans, acc = a, vel = v)
+    time.sleep(sleepTime)
 
+    # close and open grippers
+    siegfried.send_program('set_tool_digital_out(0, True)') #close strut tool
+    time.sleep(sleepTime1)
+    siegfried.send_program('set_tool_digital_out(0, False)') #open strut tool
+    time.sleep(sleepTime1)
 
+  
+    # placement location reference (top view)
+    #       [S1]            [S2]
+    #
+    #[S3]   [N1]    [S4]    [N2]    [S5]
+    #
+    #       [S6]            [S7]
 
-# print ("roy's current pose: ", roy.getj())
-# print ("siegfried's current pose: ", siegfried.getj())
+
+    
+    #move siegfried (struts) to S1, then to build level 0.5, from reference location
+    if node["rx"]<0.1 : 
+      siegfried_trans.pos.y += ((globalSetup["edgeRelativeDistance"]["y"])+node["y"]*latticePitch["y"])
+      siegfried_trans.pos.x += ((globalSetup["edgeRelativeDistance"]["x"])+node["x"]*latticePitch["x"])
+      siegfried.set_pose(siegfried_trans, acc = a, vel = v)
+      siegfried_trans.pos.z -= (globalSetup["edgeRelativeDistance"]["z"]-node["z"]*latticePitch["z"])
+      siegfried.set_pose(siegfried_trans, acc = a, vel = v)
+      siegfried_trans.pos.z += (globalSetup["edgeRelativeDistance"]["z"]-node["z"]*latticePitch["z"])
+    else:
+      #move siegfried (struts) to S4, then to build level 0.5, from reference location
+      #uses movej for the rotation and to get close to the build plate, to avoid sketchiness
+      siegfried.movej(strut90_siegfried_j, acc = a, vel = v)
+      siegfried_trans = siegfried.get_pose()
+      siegfried_trans.pos.y -= latticePitch["y"]*(node["y"]-0.5)
+      siegfried.set_pose(siegfried_trans, acc = a, vel = v)
+      siegfried_trans.pos.z -= (globalSetup["edgeRelativeDistance"]["z"]-0.008)
+      siegfried.set_pose(siegfried_trans, acc = a, vel = v)
+      #use movej to go back to origin point after moving back up
+      siegfried_trans.pos.z += (globalSetup["edgeRelativeDistance"]["z"])
+
+
+print ("roy's current pose: ", roy.getj())
+print ("siegfried's current pose: ", siegfried.getj())
-- 
GitLab