Пример #1
0
 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
Пример #3
0
    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)
Пример #4
0
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)
Пример #5
0
#!/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()
Пример #6
0
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()
Пример #7
0
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))
Пример #8
0
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)
Пример #10
0
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);
Пример #11
0
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)
Пример #12
0
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)
Пример #13
0
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()