swift.waiting_ready(timeout=3) device_info = swift.get_device_info() print(device_info) firmware_version = device_info['firmware_version'] if firmware_version and not firmware_version.startswith( ('0.', '1.', '2.', '3.')): swift.set_speed_factor(0.0005) swift.set_mode(0) swift.reset(wait=True, speed=10000) swift.set_position(x=200, speed=10000 * 20) swift.set_position(y=100) swift.set_position(z=100) swift.flush_cmd(wait_stop=True) swift.set_polar(stretch=200, speed=10000 * 20) swift.set_polar(rotation=90) swift.set_polar(height=150) print(swift.set_polar(stretch=200, rotation=90, height=150, wait=True)) swift.flush_cmd() # time.sleep(1) # print('mv 1') # swift.set_position(x=0, y=0, z=0, speed=10000*20) # swift.flush_cmd(wait_stop=True) # time.sleep(1) # print('mv 2')
count = 0; while True: count = count + 1 seq = seqs[count % len(seqs)] print(seq); print(time.time()) # move swift.set_position(x=pos[X], y=pos[Y] + (-d[seq] * bias), z=pos[Z] + 5, speed=10000000) # push swift.set_position(x=pos[X], y=pos[Y] + (-d[seq] * bias), z=pos[Z] - 15, speed=10000000) # return swift.set_position(x=pos[X], y=pos[Y] + (-d[seq] * bias), z=pos[Z] + 5, speed=10000000) swift.flush_cmd() # while True: # for seq in seqs: # # move # swift.set_position(x=pos[X], y=pos[Y] + (-d[seq] * bias), z=pos[Z] + 5, speed=10000000) # swift.flush_cmd() # # push # swift.set_position(x=pos[X], y=pos[Y] + (-d[seq] * bias), z=pos[Z] - 15, speed=10000000) # swift.flush_cmd()
class Arm: def __init__(self): self.arm = SwiftAPI() self.arm.reset() sleep(2) def rest(self): self.arm.set_position(x=0, y=180, z=146, wait=True, timeout=10, speed=10000) print("moving to rest pos!") def correction(self): print("=================check start!=================\n") self.arm.set_position(x=227, y=0, z=60, wait=True, speed=10000) sleep(1) self.arm.set_position(x=227, y=0, z=47, wait=True, timeout=10, speed=10000) print("check center\n") sleep(1) input() self.arm.set_position(x=292, y=75, z=60, wait=True, speed=10000) sleep(1) self.arm.set_position(x=292, y=75, z=47, wait=True, timeout=10, speed=10000) print("check left-up\n") sleep(1) input() self.arm.set_position(x=293, y=-75, z=60, wait=True, speed=10000) sleep(1) self.arm.set_position(x=293, y=-75, z=47, wait=True, timeout=10, speed=10000) print("check right-up\n") sleep(1) input() self.arm.set_position(x=160, y=75, z=60, wait=True, speed=10000) sleep(1) self.arm.set_position(x=160, y=75, z=47, wait=True, timeout=10, speed=10000) print("check left-down\n") sleep(1) input() self.arm.set_position(x=160, y=-75, z=60, wait=True, speed=10000) sleep(1) self.arm.set_position(x=160, y=-75, z=47, wait=True, timeout=10, speed=10000) print("check right-down\n") sleep(1) input() self.arm.set_position(x=0, y=180, z=146, wait=True, timeout=10, speed=10000) print("=================check finish!=================\n") def move(self, color, coords): global count count += 1 if coords == "pass" or coords == "resign": return None y, x = coords y = int(ord(y) - ord('A')) x = int(x) - 1 if count == 1: x_take = 309 elif count == 2: x_take = 280 elif count == 3: x_take = 254 elif count == 4: x_take = 223 elif count == 5: x_take = 200 elif count == 6: x_take = 170 elif count == 7: x_take = 144 count = 0 if color == "B": xp = x_take yp = -145 zp = 100 elif color == "W": xp = x_take yp = 157 zp = 100 else: print("Wrong color input!") self.arm.set_position(x=xp, y=yp, z=zp, wait=True, speed=10000) self.arm.flush_cmd(wait_stop=True) self.arm.set_position(z=54, wait=True, speed=10000) sleep(1.5) self.arm.set_pump(True) sleep(2) self.arm.set_position(z=100, wait=True, speed=10000) self.arm.set_position(x=294 - x * 22, y=-66 + y * 24, z=100, wait=True, speed=10000) self.arm.flush_cmd(wait_stop=True) print("moving to:", coords) self.arm.set_position(z=54, wait=True, speed=10000) # original z is -26 sleep(1) self.arm.set_pump(False) sleep(0.5) self.arm.set_position(z=100, wait=True, speed=10000) sleep(0.5) self.arm.flush_cmd() def remove(self, coords, remove_list): self.arm.set_position(x=1, y=2, z=45, wait=True, speed=10000) x, y = coords remove_list def remove_chess(self, color, coords): y, x = coords y = int(y) - 1 x = int(x) - 1 self.arm.set_position(x=294 - x * 22, y=-66 + y * 24, z=100, wait=True, speed=10000) self.arm.flush_cmd(wait_stop=True) self.arm.set_position(z=54, wait=True, speed=10000) sleep(1.5) self.arm.set_pump(True) sleep(2) print("removing :", coords) self.arm.set_position(z=100, wait=True, speed=10000) self.arm.set_position(x=342, y=0, z=90, wait=True, speed=10000) self.arm.flush_cmd(wait_stop=True) self.arm.set_pump(False) sleep(0.5) def take_photo(self): self.arm.set_position(x=166, y=4, z=220, wait=True, timeout=10, speed=10000) print("Take Picture place!") def game_over(self): self.arm.set_position(x=0, y=170, z=100, wait=True, timeout=10, speed=10000) print("Game over!")
class uArm(): def __init__(self): self.scope = 10 self.x0 = 160 self.y0 = 0 self.swift = SwiftAPI(filters={'hwid':'USB VID:PID=2341:0042'}) self.swift.waiting_ready(timeout=3) # self.swift.set_speed_factor(0.005) # if you change this, be prepared for different movements! self.swift.set_mode(mode=0) time.sleep(0.5) self.swift.set_servo_angle(angle=90) self.swift.set_wrist(angle=90) self.swift.set_position(x=200,y=0,z=20) # start it off with a salute self.swift.set_buzzer(frequency=1000, duration=1) # signal ready self.lstValidCharSet = ['?','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',\ '-','0','1','2','3','4','5','6','7','8','9'] self.lstLetter = [self.QuestionMark, self.LetterA, self.LetterB, self.LetterC, self.LetterD, self.LetterE, self.LetterF,\ self.LetterG, self.LetterH, self.LetterI, self.LetterJ, self.LetterK, self.LetterL, self.LetterM, self.LetterN,\ self.LetterO, self.LetterP, self.LetterQ, self.LetterR, self.LetterS, self.LetterT, self.LetterU, self.LetterV,\ self.LetterW, self.LetterX, self.LetterY, self.LetterZ, self.Hyphen, self.Number0, self.Number1, self.Number2,\ self.Number3, self.Number4, self.Number5, self.Number6, self.Number7, self.Number8, self.Number9] def __del__(self): input("PLEASE SUPPORT uARM ARM!!, then strike ENTER to continue ...") self.swift.set_buzzer(frequency=600, duration=2) self.swift.set_position(x=200,y=0,z=20) self.swift.flush_cmd() self.swift.disconnect() del self.swift self.swift = None def arm(self): """ Using this method to allow raw access to the uArm if required """ return self.swift def insert_pen(self): self.swift.set_buzzer(frequency=1000, duration=0.5) # signal ready self.swift.set_servo_angle(angle=90) time.sleep(0.5) self.swift.set_wrist(angle=90) time.sleep(0.5) self.swift.set_position(x=200,y=0,z=0) while (self.swift.get_is_moving()): continue input("Set pen in universal holder, then strike ENTER to continue ...") self.swift.set_position(x=200,y=0,z=10) return def pen_up(self): while (self.swift.get_is_moving()): continue x, y, z = self.swift.get_position() self.swift.set_position(x, y, 10) time.sleep(0.5) return 10 def pen_down(self): while (self.swift.get_is_moving()): continue x, y, z = self.swift.get_position() self.swift.set_position(x, y, 0) time.sleep(0.5) return 0 def setScope(self, strName): """ based upon the length of strName, determine the scope (char width) and starting X, Y positions assuming that the center of the page is 160,0 x extent is 110 - 210, y extent 80 - (-80) (x axis is PARALLEL to the arm, short edge of the paper) """ if type(strName) == str: strName = strName[:26] # going to truncate user input to a 26 characters max intLenName = len(strName) if (intLenName < 4): self.scope = 40.0 # keeping it real else: self.scope = math.floor(160.0/(intLenName * 1.1)) self.x0 = 160 - (0.5 * self.scope) self.y0 = self.scope * intLenName * 1.1 / 2 return def LetterSelect(self, c): """ given char c, return the plotting function index 0 resolves to the question mark character """ index = 0 if type(c) == str: if c == ' ': return self.SpaceBar else: c = c.upper() if c in self.lstValidCharSet: index = self.lstValidCharSet.index(c) - self.lstValidCharSet.index('A') + 1 # 0th item is '?' # if c in ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']: # index = ord(c) - ord('A') + 1 # using question mark as the 0th index item return self.lstLetter[index] # return the function to use
('0.', '1.', '2.', '3.')): swift.set_speed_factor(0.0005) swift.set_mode(0) ''' swift.reset(wait=True, speed=100000) swift.set_position(x=200, speed=100000) swift.set_position(y=100) swift.set_position(z=100) swift.flush_cmd(wait_stop=True) ''' #set_digital_output(pin=None, value=None, wait=True, timeout=None, callback=None) swift.set_digital_output(pin=50, value=1) # red led swift.set_digital_output(pin=49, value=0) # green led swift.flush_cmd() i = 0 while i < 5: swift.set_polar(stretch=150, speed=100000) swift.set_polar(rotation=90) swift.set_polar(height=80) print(swift.set_polar(stretch=150, rotation=90, height=80, wait=True)) swift.flush_cmd() swift.set_polar(stretch=150, speed=100000) swift.set_polar(rotation=90) swift.set_polar(height=120) print(swift.set_polar(stretch=150, rotation=90, height=120, wait=True)) swift.flush_cmd()