def run(self): while self.alive: try: ports = get_ports(filters={'hwid': 'USB VID:PID=2341:0042'}) for port in ports: if port['device'] not in swifts.keys(): new_swift = SwiftAPI(port=port['device']) new_swift.waiting_ready() device_info = new_swift.get_device_info() print(new_swift.port, device_info) firmware_version = device_info['firmware_version'] if firmware_version and not firmware_version.startswith( ('0.', '1.', '2.', '3.')): new_swift.set_speed_factor(0.00001) new_swift.set_mode(mode=0) with lock: swifts[port['device']] = new_swift else: swift = swifts[port['device']] if not swift.connected: with lock: swifts.pop(port['device']) except Exception as e: pass time.sleep(0.001)
def Arm_Init(): """Robotic arm initiation""" swift = SwiftAPI(filters={'hwid': 'USB VID:PID=2341:0042'}, cmd_pend_size=2, callback_thread_pool_size=1) swift.waiting_ready() 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.00005) swift.set_mode(0) return swift
def run(self): while self.alive: try: ports = get_ports(filters={'hwid': 'USB VID:PID=2341:0042'}) for port in ports: if port['device'] not in swifts.keys(): new_swift = SwiftAPI(port=port['device']) new_swift.waiting_ready() device_info = new_swift.get_device_info() print(new_swift.port, device_info) firmware_version = device_info['firmware_version'] if firmware_version and not firmware_version.startswith(('0.', '1.', '2.', '3.')): new_swift.set_speed_factor(0.00001) new_swift.set_mode(mode=0) with lock: pos = [150, 0, 150] for swift in swifts.values(): swift.flush_cmd() if len(swifts.values()) > 0: time.sleep(1) for swift in swifts.values(): pos = swift.get_position() if isinstance(pos, list): # print('sync pos:', pos) break # new_swift.reset(speed=speed) swifts[port['device']] = new_swift for swift in swifts.values(): swift.set_position(x=pos[0], y=pos[1], z=pos[2], speed=speed, wait=False) for swift in swifts.values(): if swift.connected: swift.flush_cmd(wait_stop=True) # if len(swifts) > 1: # time.sleep(3) else: swift = swifts[port['device']] if not swift.connected: with lock: swifts.pop(port['device']) except Exception as e: pass time.sleep(0.001)
class uarm: def __init__(self): logger.setLevel(logger.VERBOSE) self.swift = SwiftAPI(filters={'hwid': 'USB VID:PID=2341:0042'}, callback_thread_pool_size=1) self.swift.waiting_ready() self.swift.set_speed_factor(factor=20) self.swift.set_position(x=239.43, y=0, z=170) def jump(self, press_time): self.swift.set_position(x=239.43, y=0, z=-30) print("robot:%f" % press_time) time.sleep(press_time) self.swift.set_position(x=239.43, y=0, z=170) # if __name__ == '__main__': # arm = uarm() # arm.jump(0.75) # time.sleep(5) # arm.jump(0.75)
#!/usr/bin/env python3 import time from uarm.wrapper import SwiftAPI swift = SwiftAPI(filters={'hwid': 'USB VID:PID=2341:0042'}) 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()
class uArmSwift: def __init__(self): self.swift = SwiftAPI(filters={'hwid': 'USB VID:PID=2341:0042'}, cmd_pend_size=2, callback_thread_pool_size=1) if not self.swift.connected: print('lose connect') self.swift.waiting_ready() device_info = self.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.')): self.swift.set_speed_factor(0.00005) self.swift.set_mode(0) self.speed = 500000 self.swift.set_wrist(angle=90) self.wristAngle = self.swift.get_servo_angle(0, timeout=10) def set_position(self, x=100, y=0, z=100, wait=False): self.swift.set_position(x, y, z, speed=self.speed, wait=wait) def set_polar(self, stretch, rotation, height, wait=False): self.swift.set_polar(stretch, rotation, height, speed=self.speed, wait=wait) def set_servo_angle(self, num, angle, wait=False): if num < 0 and num > 3: print("num is wrong") self.swift.set_servo_angle(num, angle, wait, speed=self.speed, wait=wait) def set_wrist(self, angle=90, wait=False): # 第四电机 self.swift.set_wrist(angle, wait) def set_pump(self, on=False): self.swift.set_pump(on) def set_buzzer(self, freq=1000, duration=1, wait=False): self.swift.set_buzzer(freq, duration, wait) def get_position(self): return self.swift.get_position() def get_servo_angle(self, id=0): return self.swift.get_servo_angle(id, timeout=10) def is_moving(self): return self.swift.get_is_moving() def disconnect(self): self.swift.disconnect()
from uarm.wrapper import SwiftAPI import random swift1 = SwiftAPI(filters={'hwid': 'USB VID:PID=2341:0042'}) swift2 = SwiftAPI(filters={'hwid': 'USB VID:PID=2341:0042'}) swift1.waiting_ready() device_info = swift1.get_device_info() print(swift1.port, device_info) firmware_version = device_info['firmware_version'] if firmware_version and not firmware_version.startswith( ('0.', '1.', '2.', '3.')): swift1.set_speed_factor(0.00001) swift2.waiting_ready() device_info = swift2.get_device_info() print(swift2.port, device_info) firmware_version = device_info['firmware_version'] if firmware_version and not firmware_version.startswith( ('0.', '1.', '2.', '3.')): swift2.set_speed_factor(0.00001) X = 0 Y = 1 Z = 2 R = 3 swift1.set_servo_detach() swift1.register_report_position_callback(lambda position: swift2.set_position( x=position[X], y=position[Y], z=position[Z], speed=100000000, timeout=1))
from uarm.wrapper import SwiftAPI print("アームロボットと接続を開始...") swift = SwiftAPI(filters={'hwid': 'USB VID:PID=2341:0042'}) swift.waiting_ready(timeout=3) swift.set_speed_factor(100) swift.set_mode(0) print("アームロボットと接続完了 \n")
place_B3() return if lst[2][2] == 0 : place_C1() return if lst[2][1] == 0 : place_C2() return if lst[2][0] == 0 : place_C3() return from uarm.wrapper import SwiftAPI swift = SwiftAPI() swift.set_speed_factor(3) swift.waiting_ready() root = tk.Tk() insert = tk.Tk() text = tk.Label(insert, text="choose the color of the beginner then close the window") text.pack() bb1 = tk.Button(insert, text='blue', command=entry_blue, width = 25) bb1.pack(side = tk.BOTTOM) r1 = tk.Button(insert, text='red', command=entry_red, width = 25) r1.pack(side = tk.BOTTOM) insert.mainloop() #define menu options menu = tk.Menu(root)
class uarmRobotClass(object): def __init__(self): self.x_pos = 0 self.y_pos = 0 self.tcp_rot = 0 self.z_pos = 0 self.pick = 0 self.connect = 0 self.swift = SwiftAPI(filters={'hwid': 'USB VID:PID=2341:0042'}) self.swift.waiting_ready(timeout=3) self.swift.set_speed_factor(0.5) self.swift.waiting_ready(timeout=3) self.swift.disconnect() def openPort(self): self.swift.connect() #swift = SwiftAPI(filters={'hwid': 'USB VID:PID=2341:0042'}) self.swift.waiting_ready(timeout=3) self.swift.set_speed_factor(0.5) self.swift.waiting_ready(timeout=3) self.swift.set_position(150, 0, 50, wait=True) def closePort(self): self.swift.disconnect() self.swift.waiting_ready(timeout=3) def move(self): Index = 0 pick = 0 connect = 0 while True: if (dummy == False) and (connect == 0) and (self.connect == 1): self.openPort() ret = self.swift.get_position(wait=True) print("ret values %d, %d, %d" % (ret[0], ret[1], ret[2])) x_pos = ret[0] y_pos = ret[1] tcp_rot = ret[2] print("connected") connect = 1 if (dummy == False) and (connect == 1) and (self.connect == 0): self.closePort() connect = 0 print("disconnnected") if (self.x_pos != 0) or (self.y_pos != 0) or (self.tcp_rot != 0) or (self.z_pos != 0) or (self.pick != 0) or (self.connect != 0): if logLevel > 1: print("index = %d: x_pos = %d; y_pos = %d; z_pos = %d; tcp_rot = %d; pick = %d; connect = %d" % (Index, self.x_pos, self.y_pos, self.z_pos, self.tcp_rot, self.pick, self.connect)) Index = Index + 1 if (dummy == False) and (connect == 1) and ((self.x_pos != 0) or (self.y_pos != 0) or (self.tcp_rot != 0) or (self.z_pos != 0)): self.swift.set_position(x=self.x_pos, y=self.y_pos, z=self.z_pos, wait=True, relative=True); ret = self.swift.get_position(wait=True) if logLevel > 0: print("ret values %d, %d, %d" % (ret[0], ret[1], ret[2])) if (dummy == False) and (pick == 0) and (self.pick != 0): self.swift.set_pump(on=True) pick = 1 if (dummy == False) and (pick == 1) and (self.pick == 0): self.swift.set_pump(on=False) pick = 0 time.sleep(0.001);
from uarm.wrapper import SwiftAPI swift = SwiftAPI() swift.waiting_ready(timeout=10) swift.set_position(140, 0, 10, wait=True) swift.set_position(320, 0, 10, wait=True) swift.set_position(140, 0, 10, wait=True) swift.set_speed_factor(4) input( "now the speed of the arm has been multiply by 4, it will move faster. press enter to continue" ) swift.set_position(140, 0, 10, wait=True) swift.set_position(320, 0, 10, wait=True) swift.set_position(140, 0, 10, wait=True) swift.set_speed_factor(1)
T = 2 dt = 0.01 # best we can get: 0.01 N = int(T / dt) #swift.set_servo_angle(servo_id=0, angle=90) ##time.sleep(3) #swift.set_servo_angle(servo_id=1, angle=90) ##time.sleep(3) #swift.set_servo_angle(servo_id=2, angle=0) ##time.sleep(3) #swift.set_servo_angle(servo_id=3, angle=90) swift.reset() time.sleep(3) swift.set_speed_factor(2) '''generate configs''' joint_angles = np.zeros((N, 5)) for i in range(N): joint_angles[i, :] = np.array( [90, 90 - 90 / T * dt * i, 90 / T * dt * i, 90, 0]) # step motor step? for i in range(N): swift.set_servo_angle(servo_id=0, angle=joint_angles[i, 0]) # time.sleep(dt/4) swift.set_servo_angle(servo_id=1, angle=joint_angles[i, 1]) # time.sleep(dt/4) swift.set_servo_angle(servo_id=2, angle=joint_angles[i, 2]) # time.sleep(dt/4)
class MinionArm: def __init__(self): self.swift = SwiftAPI(filters={'hwid': 'USB VID:PID=2341:0042'}) self.swift.waiting_ready() device_info = self.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.')): self.swift.set_speed_factor(0.0005) self.speed = 110000 self.test() self.board = "right" def test(self): # self.swift.set_buzzer(frequency=1000, duration=0.5, wait=True) self.swift.reset(wait=True, speed=self.speed) self.move(1250, 0, 150, self.speed) print(self.swift.get_position()) # self.swift.set_buzzer(frequency=1000, duration=0.5, wait=True) def home(self): print("going home") self.swift.set_position(x=150, y=0, speed=self.speed * 0.5, wait=True) self.move(145, 0, 100, self.speed * 1.5) time.sleep(2) # self.swift.set_buzzer(frequency=1000, duration=0.5, wait=True) def rest(self): print("going to rest position") self.swift.set_position(x=150, speed=self.speed * 0.5, wait=True) self.swift.set_position(x=125, y=0, speed=self.speed * 0.5, wait=True) self.move(125, 0, 40, self.speed * 0.5) time.sleep(2) self.swift.set_buzzer(frequency=1000, duration=0.5) def move(self, x, y, z, speed): self.swift.set_position(x, y, z, speed, wait=True) def flip(self): print("flipping") # self.home() self.swift.set_buzzer(frequency=1000, duration=0.5, wait=True) if self.board == "right": self.flip_left() self.board = "left" else: self.flip_right() self.board = "right" self.home() self.swift.set_buzzer(frequency=500, duration=1.0, wait=True) def flip_left(self): self.move(180, 0, 150, self.speed) self.move(240, 0, 150, self.speed) # self.move(220, 10, 140, self.speed*.2) self.move(220, 40, 150, self.speed * .2) # self.move(220, 40, 110, self.speed*.2) # self.move(220, 60, 100, self.speed*.2) self.move(220, 50, 30, self.speed * .2) time.sleep(1) self.move(180, 50, 20, self.speed * .2) time.sleep(2) def flip_right(self): self.move(180, 0, 150, self.speed) self.move(240, -10, 150, self.speed) # self.move(220, -20, 140, self.speed*.2) self.move(220, -40, 150, self.speed * .2) # self.move(220, -50, 110, self.speed*.2) # self.move(220, -60, 100, self.speed*.2) self.move(220, -60, 20, self.speed * .2) self.move(180, -50, 20, self.speed * .2) time.sleep(2) def move_to_galton_cal_pos(self): self.move(180, 0, 150, self.speed) self.move(240, 0, 150, self.speed) wait = input("waiting") self.home() def disconnect(self): self.swift.disconnect()