From cadba544550f896afc9b053623c31bcc04b45e88 Mon Sep 17 00:00:00 2001 From: saladman780 Date: Mon, 8 Jan 2024 18:14:41 -0600 Subject: [PATCH 01/16] new file: example/wrapper/xarm6/MoveDemo1 --- example/wrapper/xarm6/MoveDemo1 | 113 ++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 example/wrapper/xarm6/MoveDemo1 diff --git a/example/wrapper/xarm6/MoveDemo1 b/example/wrapper/xarm6/MoveDemo1 new file mode 100644 index 00000000..322b717a --- /dev/null +++ b/example/wrapper/xarm6/MoveDemo1 @@ -0,0 +1,113 @@ +from cgitb import reset +import os +import sys +import time +import math +from tracemalloc import stop +import keyboard +import tkinter as tk + + +sys.path.append(os.path.join(os.path.dirname(__file__), '../../..')) + +from xarm.wrapper import XArmAPI + +#Figure out how to stop it from asking for IP later +##################################################################################### + +if len(sys.argv) >= 2: + ip = sys.argv[1] +else: + try: + from configparser import ConfigParser + parser = ConfigParser() + parser.read('../robot.conf') + ip = parser.get('xArm', 'ip') + except: + # ip = input('Please input the xArm ip address:') + ip = "192.168.1.200" + if not ip: + print('input error, exit') + sys.exit(1) + +##################################################################################### +counter = 0 +speed = 50 +arm = XArmAPI(ip) +arm.motion_enable(enable=True) +arm.set_mode(0) +arm.set_state(state=0) +#Reset Variables: +Rx = 40.9 +Ry = -350.6 +Rz = 279.3 +Rr = -173.9 +Rp = 1.5 +RYaw = -89.4 + + + + + + +def increment_position(): + global counter + counter += 1 + print(counter) + #while True: + if counter == 1 : + arm.set_position(Rx, Ry, Rz, Rr, Rp, RYaw, speed=80, wait=True) + time.sleep(1) + arm.set_position(x=91.2, y=-291.4, z=214.1, roll=-176.5, pitch=-23.2, yaw=-79.4, speed=80, wait=True) + elif counter == 2: + arm.set_position(Rx, Ry, Rz, Rr, Rp, RYaw, speed=80, wait=True) + time.sleep(1) + arm.set_position(x=89.6, y=-395.6, z=217.7, roll=-177.4, pitch=20, yaw=-79.6, speed=80, wait=True) + elif counter == 3: + arm.set_position(Rx, Ry, Rz, Rr, Rp, RYaw, speed=80, wait=True) + time.sleep(1) + arm.set_position(x=21.2, y=-263.6, z=185.2, roll=-150.5, pitch=20.3, yaw=-168.1, speed=80, wait=True) + elif counter == 4: + arm.set_position(Rx, Ry, Rz, Rr, Rp, RYaw, speed=80, wait=True) + time.sleep(1) + arm.set_position(x=6.7, y=-413.5, z=182.5, roll=-165.7, pitch=27.8, yaw=-102.6, speed=80, wait=True) + elif counter == 5: + arm.set_position(Rx, Ry, Rz, Rr, Rp, RYaw, speed=80, wait=True) + time.sleep(1) + arm.set_position(x=-41.1, y=-277.1, z=145.3, roll=-153.7, pitch=37.6, yaw=-164, speed=80, wait=True) + enable() + +def enable(): + register_button.config(state=tk.NORMAL, text="Register Subject") #Enable the button and set its text + +def reset_position(): + global counter + counter = 0 + arm.set_position(Rx, Ry, Rz, Rr, Rp, RYaw, speed=80, wait=True) + +def quit(): + exit() + +def getPosition(): + print('* position:', arm.position) + + display_position = tk.Label(window, text=str(arm.position), font=("Helvetica", 16)) + display_position.pack(pady=5) + + + +window = tk.Tk() +window.title("Subject Registration") +register_button = tk.Button(window, text="Register Subject",command = increment_position) +register_button.pack(pady=20) + +reset_button = tk.Button(window, text="Reset XArm",command=reset_position) +reset_button.pack(pady=40) + +quit_button = tk.Button(window, text="Quit Program",command=quit) +quit_button.pack(pady=50) + +test_button = tk.Button(window, text="position",command=getPosition) +test_button.pack(pady=70) + +window.mainloop() \ No newline at end of file From 1a835335e01510c7bc6ef6cd44085e27bccf8c0b Mon Sep 17 00:00:00 2001 From: saladman780 Date: Mon, 8 Jan 2024 18:48:09 -0600 Subject: [PATCH 02/16] new file: surgeryFile_MUSTREAD --- surgeryFile_MUSTREAD | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 surgeryFile_MUSTREAD diff --git a/surgeryFile_MUSTREAD b/surgeryFile_MUSTREAD new file mode 100644 index 00000000..3cb1076c --- /dev/null +++ b/surgeryFile_MUSTREAD @@ -0,0 +1,4 @@ +Go to example/wrapper, then open the xarm6 file + +File is called MoveDemo1 + From 2cfe02e52431dbf9567eee7eee7c18545308af8a Mon Sep 17 00:00:00 2001 From: saladman780 Date: Mon, 8 Jan 2024 19:01:38 -0600 Subject: [PATCH 03/16] renamed: example/wrapper/xarm6/MoveDemo1 -> example/wrapper/xarm6/Xarm-Python-Sugery-Robot --- example/wrapper/xarm6/{MoveDemo1 => Xarm-Python-Sugery-Robot} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename example/wrapper/xarm6/{MoveDemo1 => Xarm-Python-Sugery-Robot} (100%) diff --git a/example/wrapper/xarm6/MoveDemo1 b/example/wrapper/xarm6/Xarm-Python-Sugery-Robot similarity index 100% rename from example/wrapper/xarm6/MoveDemo1 rename to example/wrapper/xarm6/Xarm-Python-Sugery-Robot From e408484d778fbebd5f86b56878873a3ba972c7ad Mon Sep 17 00:00:00 2001 From: saladman780 Date: Mon, 8 Jan 2024 19:05:39 -0600 Subject: [PATCH 04/16] deleted: surgeryFile_MUSTREAD --- surgeryFile_MUSTREAD | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 surgeryFile_MUSTREAD diff --git a/surgeryFile_MUSTREAD b/surgeryFile_MUSTREAD deleted file mode 100644 index 3cb1076c..00000000 --- a/surgeryFile_MUSTREAD +++ /dev/null @@ -1,4 +0,0 @@ -Go to example/wrapper, then open the xarm6 file - -File is called MoveDemo1 - From 4b0a97bab65d1ec1c8bd36f592a1ff34d6609c91 Mon Sep 17 00:00:00 2001 From: saladman780 Date: Mon, 8 Jan 2024 20:03:38 -0600 Subject: [PATCH 05/16] modified: example/wrapper/xarm6/Xarm-Python-Sugery-Robot --- example/wrapper/xarm6/Xarm-Python-Sugery-Robot | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/example/wrapper/xarm6/Xarm-Python-Sugery-Robot b/example/wrapper/xarm6/Xarm-Python-Sugery-Robot index 322b717a..6de9c1e3 100644 --- a/example/wrapper/xarm6/Xarm-Python-Sugery-Robot +++ b/example/wrapper/xarm6/Xarm-Python-Sugery-Robot @@ -7,7 +7,6 @@ from tracemalloc import stop import keyboard import tkinter as tk - sys.path.append(os.path.join(os.path.dirname(__file__), '../../..')) from xarm.wrapper import XArmAPI @@ -58,7 +57,7 @@ def increment_position(): if counter == 1 : arm.set_position(Rx, Ry, Rz, Rr, Rp, RYaw, speed=80, wait=True) time.sleep(1) - arm.set_position(x=91.2, y=-291.4, z=214.1, roll=-176.5, pitch=-23.2, yaw=-79.4, speed=80, wait=True) + arm.set_position(x1=91.2, y1=-291.4, z1=214.1, roll_1=-176.5, pitch_1=-23.2, yaw_1=-79.4, speed=80, wait=True) elif counter == 2: arm.set_position(Rx, Ry, Rz, Rr, Rp, RYaw, speed=80, wait=True) time.sleep(1) From 4af36f13fd4a3bc4ec10583661c87f2de7bd2169 Mon Sep 17 00:00:00 2001 From: saladman780 Date: Mon, 8 Jan 2024 20:04:54 -0600 Subject: [PATCH 06/16] modified: example/wrapper/xarm6/Xarm-Python-Sugery-Robot --- example/wrapper/xarm6/Xarm-Python-Sugery-Robot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/example/wrapper/xarm6/Xarm-Python-Sugery-Robot b/example/wrapper/xarm6/Xarm-Python-Sugery-Robot index 6de9c1e3..5f99ee82 100644 --- a/example/wrapper/xarm6/Xarm-Python-Sugery-Robot +++ b/example/wrapper/xarm6/Xarm-Python-Sugery-Robot @@ -57,7 +57,7 @@ def increment_position(): if counter == 1 : arm.set_position(Rx, Ry, Rz, Rr, Rp, RYaw, speed=80, wait=True) time.sleep(1) - arm.set_position(x1=91.2, y1=-291.4, z1=214.1, roll_1=-176.5, pitch_1=-23.2, yaw_1=-79.4, speed=80, wait=True) + arm.set_position(x=91.2, y=-291.4, z=214.1, roll=-176.5, pitch=-23.2, yaw=-79.4, speed=80, wait=True) elif counter == 2: arm.set_position(Rx, Ry, Rz, Rr, Rp, RYaw, speed=80, wait=True) time.sleep(1) From def08538a872e9ae9ab537104df6de9dfef21929 Mon Sep 17 00:00:00 2001 From: saladman780 Date: Mon, 8 Jan 2024 20:20:27 -0600 Subject: [PATCH 07/16] Surgery_MustRead --- Surgery_MustRead | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Surgery_MustRead diff --git a/Surgery_MustRead b/Surgery_MustRead new file mode 100644 index 00000000..e69de29b From 0eb8ef76b7385bcd82a937de520c833219837c76 Mon Sep 17 00:00:00 2001 From: saladman780 Date: Mon, 8 Jan 2024 20:21:51 -0600 Subject: [PATCH 08/16] Surgery_MustRead.txt --- Surgery_MustRead => Surgery_MustRead.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Surgery_MustRead => Surgery_MustRead.txt (100%) diff --git a/Surgery_MustRead b/Surgery_MustRead.txt similarity index 100% rename from Surgery_MustRead rename to Surgery_MustRead.txt From aaa54d3aac283e23a09077b7f80761b7a9c6206a Mon Sep 17 00:00:00 2001 From: saladman780 Date: Tue, 9 Jan 2024 14:52:39 -0600 Subject: [PATCH 09/16] deleted: Surgery_MustRead.txt --- Surgery_MustRead.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Surgery_MustRead.txt diff --git a/Surgery_MustRead.txt b/Surgery_MustRead.txt deleted file mode 100644 index e69de29b..00000000 From eb486f8cf1042fadd02384dab414a46e053f509c Mon Sep 17 00:00:00 2001 From: saladman780 Date: Tue, 9 Jan 2024 14:53:42 -0600 Subject: [PATCH 10/16] Surgery_MUSTREAD --- Surgery_MUSTREAD | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Surgery_MUSTREAD diff --git a/Surgery_MUSTREAD b/Surgery_MUSTREAD new file mode 100644 index 00000000..e69de29b From 1dc35ec4012d292f641b4e74cc99055451338091 Mon Sep 17 00:00:00 2001 From: saladman780 <146802973+saladman780@users.noreply.github.com> Date: Tue, 9 Jan 2024 14:56:50 -0600 Subject: [PATCH 11/16] Create Surgery_MustRead --- Surgery_MustRead | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 Surgery_MustRead diff --git a/Surgery_MustRead b/Surgery_MustRead new file mode 100644 index 00000000..c0cbd3a2 --- /dev/null +++ b/Surgery_MustRead @@ -0,0 +1,3 @@ +For the Xarm Sugery program go into example/wrapper, then the xarm6 file + +The program is called Xarm-Python-Sugery-Robot From 9d41b263b11ad2c9a55b843f6be53f6a29f0b604 Mon Sep 17 00:00:00 2001 From: saladman780 <146802973+saladman780@users.noreply.github.com> Date: Tue, 9 Jan 2024 15:01:22 -0600 Subject: [PATCH 12/16] Delete Surgery_MUSTREAD --- Surgery_MUSTREAD | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Surgery_MUSTREAD diff --git a/Surgery_MUSTREAD b/Surgery_MUSTREAD deleted file mode 100644 index e69de29b..00000000 From dcdcb1fc0cc2fe96242f1db75c13f0701398cd4e Mon Sep 17 00:00:00 2001 From: saladman780 <146802973+saladman780@users.noreply.github.com> Date: Wed, 10 Jan 2024 16:40:08 -0600 Subject: [PATCH 13/16] Delete Surgery_MustRead --- Surgery_MustRead | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 Surgery_MustRead diff --git a/Surgery_MustRead b/Surgery_MustRead deleted file mode 100644 index c0cbd3a2..00000000 --- a/Surgery_MustRead +++ /dev/null @@ -1,3 +0,0 @@ -For the Xarm Sugery program go into example/wrapper, then the xarm6 file - -The program is called Xarm-Python-Sugery-Robot From 39c42a751bffb5e8d5978356b28098915a70ce14 Mon Sep 17 00:00:00 2001 From: saladman780 <146802973+saladman780@users.noreply.github.com> Date: Wed, 10 Jan 2024 16:45:52 -0600 Subject: [PATCH 14/16] Create Surgery_MustRead --- Surgery_MustRead | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 Surgery_MustRead diff --git a/Surgery_MustRead b/Surgery_MustRead new file mode 100644 index 00000000..c0cbd3a2 --- /dev/null +++ b/Surgery_MustRead @@ -0,0 +1,3 @@ +For the Xarm Sugery program go into example/wrapper, then the xarm6 file + +The program is called Xarm-Python-Sugery-Robot From b0150ba12adea18186647de022317b1ac6ba8847 Mon Sep 17 00:00:00 2001 From: saladman780 Date: Wed, 10 Jan 2024 16:48:26 -0600 Subject: [PATCH 15/16] Xarm-Python-Sugery-Robot --- .../wrapper/xarm6/Xarm-Python-Sugery-Robot | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/example/wrapper/xarm6/Xarm-Python-Sugery-Robot b/example/wrapper/xarm6/Xarm-Python-Sugery-Robot index 5f99ee82..1f85b10f 100644 --- a/example/wrapper/xarm6/Xarm-Python-Sugery-Robot +++ b/example/wrapper/xarm6/Xarm-Python-Sugery-Robot @@ -1,4 +1,5 @@ from cgitb import reset +from logging import root import os import sys import time @@ -44,10 +45,14 @@ Rr = -173.9 Rp = 1.5 RYaw = -89.4 +#Equation Variables +Pr = 0 +R = 0 +Pxyz = 0 +d = 0 +xyz_list = [arm.position] - - - +#print(xyz_list) def increment_position(): global counter @@ -58,6 +63,8 @@ def increment_position(): arm.set_position(Rx, Ry, Rz, Rr, Rp, RYaw, speed=80, wait=True) time.sleep(1) arm.set_position(x=91.2, y=-291.4, z=214.1, roll=-176.5, pitch=-23.2, yaw=-79.4, speed=80, wait=True) + find_position = tk.Label(window, text=str("Go to the UFACTORY Studio and go into live control and turn the robot into manual mode and move it to the exact point of the feducial"), font=("Helvetica", 16)) + find_position.pack(pady=5) elif counter == 2: arm.set_position(Rx, Ry, Rz, Rr, Rp, RYaw, speed=80, wait=True) time.sleep(1) @@ -88,12 +95,12 @@ def quit(): exit() def getPosition(): - print('* position:', arm.position) - - display_position = tk.Label(window, text=str(arm.position), font=("Helvetica", 16)) + display_position = tk.Label(position_window, text=str(arm.position), font=("Helvetica", 16)) display_position.pack(pady=5) - +def calculate_pr(R, Pxyz, d): + Pr = R * Pxyz + d + return Pr window = tk.Tk() window.title("Subject Registration") @@ -106,7 +113,10 @@ reset_button.pack(pady=40) quit_button = tk.Button(window, text="Quit Program",command=quit) quit_button.pack(pady=50) +position_window = tk.Toplevel(window) +position_window.title("List of positions") + test_button = tk.Button(window, text="position",command=getPosition) test_button.pack(pady=70) -window.mainloop() \ No newline at end of file +window.mainloop() From 55a8fdf84bf462c5e79f3ef1433172eae8149708 Mon Sep 17 00:00:00 2001 From: saladman780 Date: Fri, 12 Jan 2024 15:22:21 -0600 Subject: [PATCH 16/16] Xarm-Python-Surgery-Robot --- .../wrapper/xarm6/Xarm-Python-Sugery-Robot | 122 --------- .../wrapper/xarm6/Xarm-Python-Sugery-Robot.py | 241 ++++++++++++++++++ 2 files changed, 241 insertions(+), 122 deletions(-) delete mode 100644 example/wrapper/xarm6/Xarm-Python-Sugery-Robot create mode 100644 example/wrapper/xarm6/Xarm-Python-Sugery-Robot.py diff --git a/example/wrapper/xarm6/Xarm-Python-Sugery-Robot b/example/wrapper/xarm6/Xarm-Python-Sugery-Robot deleted file mode 100644 index 1f85b10f..00000000 --- a/example/wrapper/xarm6/Xarm-Python-Sugery-Robot +++ /dev/null @@ -1,122 +0,0 @@ -from cgitb import reset -from logging import root -import os -import sys -import time -import math -from tracemalloc import stop -import keyboard -import tkinter as tk - -sys.path.append(os.path.join(os.path.dirname(__file__), '../../..')) - -from xarm.wrapper import XArmAPI - -#Figure out how to stop it from asking for IP later -##################################################################################### - -if len(sys.argv) >= 2: - ip = sys.argv[1] -else: - try: - from configparser import ConfigParser - parser = ConfigParser() - parser.read('../robot.conf') - ip = parser.get('xArm', 'ip') - except: - # ip = input('Please input the xArm ip address:') - ip = "192.168.1.200" - if not ip: - print('input error, exit') - sys.exit(1) - -##################################################################################### -counter = 0 -speed = 50 -arm = XArmAPI(ip) -arm.motion_enable(enable=True) -arm.set_mode(0) -arm.set_state(state=0) -#Reset Variables: -Rx = 40.9 -Ry = -350.6 -Rz = 279.3 -Rr = -173.9 -Rp = 1.5 -RYaw = -89.4 - -#Equation Variables -Pr = 0 -R = 0 -Pxyz = 0 -d = 0 -xyz_list = [arm.position] - -#print(xyz_list) - -def increment_position(): - global counter - counter += 1 - print(counter) - #while True: - if counter == 1 : - arm.set_position(Rx, Ry, Rz, Rr, Rp, RYaw, speed=80, wait=True) - time.sleep(1) - arm.set_position(x=91.2, y=-291.4, z=214.1, roll=-176.5, pitch=-23.2, yaw=-79.4, speed=80, wait=True) - find_position = tk.Label(window, text=str("Go to the UFACTORY Studio and go into live control and turn the robot into manual mode and move it to the exact point of the feducial"), font=("Helvetica", 16)) - find_position.pack(pady=5) - elif counter == 2: - arm.set_position(Rx, Ry, Rz, Rr, Rp, RYaw, speed=80, wait=True) - time.sleep(1) - arm.set_position(x=89.6, y=-395.6, z=217.7, roll=-177.4, pitch=20, yaw=-79.6, speed=80, wait=True) - elif counter == 3: - arm.set_position(Rx, Ry, Rz, Rr, Rp, RYaw, speed=80, wait=True) - time.sleep(1) - arm.set_position(x=21.2, y=-263.6, z=185.2, roll=-150.5, pitch=20.3, yaw=-168.1, speed=80, wait=True) - elif counter == 4: - arm.set_position(Rx, Ry, Rz, Rr, Rp, RYaw, speed=80, wait=True) - time.sleep(1) - arm.set_position(x=6.7, y=-413.5, z=182.5, roll=-165.7, pitch=27.8, yaw=-102.6, speed=80, wait=True) - elif counter == 5: - arm.set_position(Rx, Ry, Rz, Rr, Rp, RYaw, speed=80, wait=True) - time.sleep(1) - arm.set_position(x=-41.1, y=-277.1, z=145.3, roll=-153.7, pitch=37.6, yaw=-164, speed=80, wait=True) - enable() - -def enable(): - register_button.config(state=tk.NORMAL, text="Register Subject") #Enable the button and set its text - -def reset_position(): - global counter - counter = 0 - arm.set_position(Rx, Ry, Rz, Rr, Rp, RYaw, speed=80, wait=True) - -def quit(): - exit() - -def getPosition(): - display_position = tk.Label(position_window, text=str(arm.position), font=("Helvetica", 16)) - display_position.pack(pady=5) - -def calculate_pr(R, Pxyz, d): - Pr = R * Pxyz + d - return Pr - -window = tk.Tk() -window.title("Subject Registration") -register_button = tk.Button(window, text="Register Subject",command = increment_position) -register_button.pack(pady=20) - -reset_button = tk.Button(window, text="Reset XArm",command=reset_position) -reset_button.pack(pady=40) - -quit_button = tk.Button(window, text="Quit Program",command=quit) -quit_button.pack(pady=50) - -position_window = tk.Toplevel(window) -position_window.title("List of positions") - -test_button = tk.Button(window, text="position",command=getPosition) -test_button.pack(pady=70) - -window.mainloop() diff --git a/example/wrapper/xarm6/Xarm-Python-Sugery-Robot.py b/example/wrapper/xarm6/Xarm-Python-Sugery-Robot.py new file mode 100644 index 00000000..613a2e59 --- /dev/null +++ b/example/wrapper/xarm6/Xarm-Python-Sugery-Robot.py @@ -0,0 +1,241 @@ +from cgitb import reset +from logging import root +import os +import sys +import time +import math +from tracemalloc import stop +import keyboard +import tkinter as tk + +sys.path.append(os.path.join(os.path.dirname(__file__), '../../..')) + +from xarm.wrapper import XArmAPI + +#Figure out how to stop it from asking for IP later +##################################################################################### + +if len(sys.argv) >= 2: + ip = sys.argv[1] +else: + try: + from configparser import ConfigParser + parser = ConfigParser() + parser.read('../robot.conf') + ip = parser.get('xArm', 'ip') + except: + # ip = input('Please input the xArm ip address:') + ip = "192.168.1.200" + if not ip: + print('input error, exit') + sys.exit(1) + +##################################################################################### + +counter = 0 +posCounter = 0 +SurgeryPos = 0 +speed = 50 +arm = XArmAPI(ip) +arm.motion_enable(enable=True) +arm.set_mode(0) +arm.set_state(state=0) +#Reset Variables: +Rx = 71.8 +Ry = -355.8 +Rz = 320.8 #290 +Rr = -173.8 +Rp = -0.2 +RYaw = -90.9 + +#Equation Variables +dx = 0 +dy = 0 +dz = 0 +dR = 0.0 +dP = 0.0 +dY = 0.0 + +#Starting Variables +f1 = [101.576, -316.251, 209.116, -175.62754973008145, -13.643901271229808, -85.68566637447609] +f2 = [87.847, -400.419, 208.735, -175.3408989451775, 19.076515197321733, -95.66195020751445] +f3 = [51.469, -297.305, 189.965, -176.05898694981497, -14.620737016148349, -91.83035224835659] +f4 = [6.408, -430.872, 163.482, -162.0227241804796, 41.34429072196313, -111.83929896147423] +f5 = [-42.856, -302.035, 129.169, -158.26962143925462, 52.37699413766372, -168.08003399060263] +t1 = [137.1,-357.5,213.9,170.8,8.9,-70] +t2 = [-20.3,-398.6,160,-165.2,28.5,-127.2] + +zoffset = 10 # units of mm + + +def confirmPosition(): + global dx + global dy + global dz + global dY + global newPos + if counter == 1 : + newPos = arm.position + dx += newPos[0] - f1[0] + dy += newPos[1] - f1[1] + dz += newPos[2] - f1[2] + f1[0] = newPos[0] + #dy += newPos[1] - f1[1] + f1[1] = newPos[1] + #dz += newPos[2] - f1[2] + f1[2] = newPos[2] + f1[3] = newPos[3] + #dR = newPos[3] - f1[3] + f1[4] = newPos[4] + #dP = newPos[4] - f1[4] + f1[5] = newPos[5] + #dY += newPos[5] - f1[5] + print(newPos) + #print(dx,dy,dz) + + if counter == 2 : + newPos = arm.position + dx += newPos[0] - f2[0] + dy += newPos[1] - f2[1] + dz += newPos[2] - f2[2] + f2[0] = newPos[0] + f2[1] = newPos[1] + f2[2] = newPos[2] + f2[3] = newPos[3] + f2[4] = newPos[4] + f2[5] = newPos[5] + + print(newPos) + + if counter == 3 : + newPos = arm.position + dx += newPos[0] - f3[0] + dy += newPos[1] - f3[1] + dz += newPos[2] - f3[2] + f3[0] = newPos[0] + f3[1] = newPos[1] + f3[2] = newPos[2] + f3[3] = newPos[3] + f3[4] = newPos[4] + f3[5] = newPos[5] + print(newPos) + + if counter == 4 : + newPos = arm.position + dx += newPos[0] - f4[0] + dy += newPos[1] - f4[1] + dz += newPos[2] - f4[2] + f4[0] = newPos[0] + f4[1] = newPos[1] + f4[2] = newPos[2] + f4[3] = newPos[3] + f4[4] = newPos[4] + f4[5] = newPos[5] + print(newPos) + + if counter == 5 : + newPos = arm.position + dx += newPos[0] - f5[0] + dy += newPos[1] - f5[1] + dz += newPos[2] - f5[2] + f5[0] = newPos[0] + f5[1] = newPos[1] + f5[2] = newPos[2] + f5[3] = newPos[3] + f5[4] = newPos[4] + f5[5] = newPos[5] + print(newPos) + + #displacement averages + dx = dx + dy = dy + dz = dz + print(dx,dy,dz) + + +def increment_position(): + global counter + counter += 1 + print(counter) + + if counter == 1 : + arm.set_position(Rx, Ry, Rz, Rr, Rp, RYaw, speed=80, wait=True) + time.sleep(1) + arm.set_position(f1[0],f1[1],f1[2]+zoffset,f1[3],f1[4],f1[5], speed=80, wait=True) + find_position = tk.Label(window, text=str("Go to the UFACTORY Studio and go into live control and turn the robot into manual mode and move it to the exact point of the feducial"), font=("Helvetica", 16)) + find_position.pack(pady=5) + elif counter == 2: + arm.set_position(Rx, Ry, Rz, Rr, Rp, RYaw, speed=80, wait=True) + time.sleep(1) + arm.set_position(f2[0],f2[1],f2[2]+zoffset,f2[3],f2[4],f2[5], speed=80, wait=True) + elif counter == 3: + arm.set_position(Rx, Ry, Rz, Rr, Rp, RYaw, speed=80, wait=True) + time.sleep(1) + arm.set_position(f3[0],f3[1],f3[2]+zoffset,f3[3],f3[4],f3[5], speed=80, wait=True) + elif counter == 4: + arm.set_position(Rx, Ry, Rz, Rr, Rp, RYaw, speed=80, wait=True) + time.sleep(1) + arm.set_position(f4[0],f4[1],f4[2]+zoffset,f4[3],f4[4],f4[5], speed=80, wait=True) + elif counter == 5: + arm.set_position(Rx, Ry, Rz, Rr, Rp, RYaw, speed=80, wait=True) + time.sleep(1) + arm.set_position(f5[0],f5[1],f5[2]+zoffset,f5[3],f5[4],f5[5], speed=80, wait=True) + enable() + +def BeginSurgery(): + arm.set_position(Rx, Ry, Rz, Rr, Rp, RYaw, speed=80, wait=True) + time.sleep(1) + arm.set_position(t1[0]+(dx/5),t1[1]+(dy/5),t1[2]+(dz/5),t1[3],t1[4],t1[5], speed=80, wait=True) + +def nextSurgeryPos(): + arm.set_position(Rx, Ry, Rz, Rr, Rp, RYaw, speed=80, wait=True) + time.sleep(1) + arm.set_position(t2[0]+(dx/5),t2[1]+(dy/5),t2[2]+(dz/5),t2[3],t2[4],t2[5], speed=80, wait=True) + +def enable(): + register_button.config(state=tk.NORMAL, text="Register Subject") #Enable the button and set its text + +def reset_position(): + global counter + global zoffset + counter = 0 + zoffset = 0 + arm.set_position(Rx, Ry, Rz, Rr, Rp, RYaw, speed=80, wait=True) + +def quit(): + exit() + +def getPosition(): + #posCounter += 1 + #print("posCounter: ",posCounter) + display_position = tk.Label(position_window, text=str(arm.position), font=("Helvetica", 16)) + display_position.pack(pady=5) + + +window = tk.Tk() +window.title("Subject Registration") +register_button = tk.Button(window, text="Register Subject",command = increment_position) +register_button.pack(pady=20) + +reset_button = tk.Button(window, text="Reset XArm",command=reset_position) +reset_button.pack(pady=40) + +quit_button = tk.Button(window, text="Quit Program",command=quit) +quit_button.pack(pady=50) + +position_window = tk.Toplevel(window) +position_window.title("List of positions") + +position_button = tk.Button(window, text="position",command=getPosition) +position_button.pack(pady=70) + +changePos_button = tk.Button(window, text="Confirm fine tune position",command=confirmPosition) +changePos_button.pack(pady=72) + +StartSurgery_button = tk.Button(window, text="Start Surgery",command=BeginSurgery) +StartSurgery_button.place(x=30, y=20) + +ContinueSurgery_button = tk.Button(window, text="Continue Surgery",command=nextSurgeryPos) +ContinueSurgery_button.place(x=30, y=100) + +window.mainloop()