diff --git a/01_Code/physical_computing_interface/assembly/app.js b/01_Code/physical_computing_interface/assembly/app.js index c518f4609d766665a8c60e3882730fbed56bd949..7b9a4c7061ccb66518265a2db01e5069b72b4e3e 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 90503d1121a9b8e7a1f9bb7866d4c5ba2f9dfeb6..3d426bb52dfc6abb2d264dccb9021e395ba5ff0e 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 8f0241d25140a4dbe0813770c183288d83d6b944..0dc7288a262f80ca484e8353d774b052d9776d91 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())