Exemple #1
0
 def __init__(self, port, *args, **kwargs):
     if port not in self._instances:
         self._arm = XArmAPI(port, *args, **kwargs)
     else:
         instance = self._instances[port]
         if not hasattr(instance, '_arm'):
             instance._arm = XArmAPI(port, *args, **kwargs)
         else:
             self._arm = instance._arm
Exemple #2
0
 def connnect_thread(self, addr, report_type):
     try:
         self.addr = addr
         self.xarm = XArmAPI(port=addr,
                             enable_heartbeat=True,
                             enable_report=True,
                             report_type=report_type, do_not_open=True)
         self.xarm.register_maable_mtbrake_changed_callback(self.report_brake_callback)
         self.xarm.register_state_changed_callback(self.report_state_callback)
         self.xarm.register_connect_changed_callback(self.report_connected_callback)
         self.xarm.register_report_location_callback(self.report_location_callback, report_cartesian=True, report_joints=True)
         self.xarm.register_error_warn_changed_callback(self.report_warn_error_callback)
         self.xarm.register_cmdnum_changed_callback(self.report_cmdnum_callback)
         self.xarm.connect()
         if not self.xarm.connected:
             time.sleep(0.5)
         # threading.Timer(1, self.init_robot).start()
         self.report_type = report_type
         return True
     except Exception as e:
         self.report_que.put({
             'type': 'connect',
             'item': {
                 'mainConnected': False,
                 'reportConnected': False
             }
         })
Exemple #3
0
def initialiseArms(ip):
    arm = XArmAPI(ip, do_not_open=True, is_radian=False)
    arm.register_error_warn_changed_callback(handle_err_warn_changed)
    arm.connect()
    # enable motion
    arm.motion_enable(enable=True)
    # set mode: position control mode
    arm.set_mode(0)
    # set state: sport state
    arm.set_state(state=0)
    return arm
    def __init__(self):
        """ Virtually private constructor. """
        if XArmWrapperSingleton.__instance is not None:
            raise SingletonException("This class is a singleton!")
        else:
            self.params = {
                'speed': 100,
                'acc': 2000,
                'angle_speed': 20,
                'angle_acc': 500,
                'events': {},
                'variables': {},
                'callback_in_thread': True,
                'quit': False
            }
            XArmWrapperSingleton.__instance = self
            self.arm = XArmAPI('192.168.1.229', do_not_open=True)
            self.end_effector = ArduinoUdp('192.168.1.230')
            self.arm_is_busy = False
            self.arm.connect()
            self.arm.clean_warn()
            self.arm.clean_error()
            self.blower(0)
            self.vacuum_granular(0)
            self.vacuum_solid(0)
            print(self.move_granular(0))
            print(self.move_syringe(0))
            print(self.move_cylinder(0))

            time.sleep(1)
            self.arm.motion_enable(True)
            self.arm.set_mode(0)
            self.arm.set_state(0)
            self.initial_position()
            time.sleep(1)
            self.arm.register_error_warn_changed_callback(
                self.error_warn_change_callback)
            self.arm.register_state_changed_callback(
                self.state_changed_callback)
            self.arm.register_report_location_callback(
                self.location_change_callback)

            if hasattr(self.arm, 'register_count_changed_callback'):

                def count_changed_callback(data):
                    pprint('counter val: {}'.format(data['count']))

                self.arm.register_count_changed_callback(
                    count_changed_callback)
            self.arm.register_connect_changed_callback(
                self.connect_changed_callback)
Exemple #5
0
def xarm_init():
    arm = XArmAPI("192.168.31.100")
    time.sleep(0.5)

    if arm.warn_code != 0:
        arm.clean_warn()
    if arm.error_code != 0:
        arm.clean_error()

    arm.motion_enable(enable=True)
    arm.set_mode(0)
    arm.set_state(state=0)

    return arm
Exemple #6
0
    def __init__(self):
        ip = '192.168.1.217'
        self.arm = XArmAPI(ip, do_not_open=False)
        self.arm.register_error_warn_changed_callback(self.hangle_err_warn_changed)
        print('xArm Version: {}'.format(self.arm.version))
        self.arm.motion_enable(enable=True)
        self.arm.set_mode(0)
        self.arm.set_state(state=0)
        self.arm.set_state(state=0)
        print('arm.last_used_tcp_acc:',self.arm.last_used_tcp_acc)
        # self.arm.reset(wait=True)
        
        self.xx_init = 422.4
        self.yy_init = -216.9
        self.zz_init = 30
        self.tcp_roll = 17.8
        self.tcp_pitch = 77.4
        self.tcp_yaw = 47.3
        self.init_pos()

        self.zz_init_move = 100
        self.zz_play = 0
        self.hand = InspireHandR()
        self.arm.set_tcp_jerk(10000)
Exemple #7
0
def callback_connect_changed(item):
    print('connect changed:', item)


def callback_error_warn_changed(item):
    print('error warn changed:', item)


def callback_mtable_mtbrake_changed(item):
    print('maable mtbrake changed:', item)


def callback_report_location(item):
    print('location report:', item)

arm = XArmAPI('192.168.1.113', do_not_open=True)
arm.register_cmdnum_changed_callback(callback=callback_cmdnum_changed)
arm.register_state_changed_callback(callback=callback_state_changed)
arm.register_connect_changed_callback(callback=callback_connect_changed)
arm.register_error_warn_changed_callback(callback=callback_error_warn_changed)
arm.register_mtable_mtbrake_changed_callback(callback=callback_mtable_mtbrake_changed)
arm.register_report_location_callback(callback=callback_report_location)

arm.connect()
arm.motion_enable(enable=True)
arm.set_mode(0)
arm.set_state(state=0)

time.sleep(5)
arm.disconnect()
Exemple #8
0
#
# Copyright (c) 2018, UFACTORY, Inc.
# All rights reserved.
#
# Author: Vinman <*****@*****.**> <*****@*****.**>

import os
import sys
import time

sys.path.append(os.path.join(os.path.dirname(__file__), '../..'))

from xarm.wrapper import XArmAPI
from xarm.core import ControllerError, ControllerWarn

xarm = XArmAPI('192.168.1.113', do_not_open=True, is_radian=False)


def hangle_err_warn_changed(item):
    if item['error_code'] != 0:
        controller_error = ControllerError(item['error_code'])
        print('ControllerError[code: {}, desc: {}]'.format(
            controller_error.code, controller_error.description))
        if 10 <= item['error_code'] <= 17 or item['error_code'] == 28:
            xarm.get_servo_debug_msg(show=True)
            # TODO handle error
        else:
            pass
            # TODO handle error
            # # clean error
            # xarm.clean_error()
Exemple #9
0
# Author: Vinman <*****@*****.**> <*****@*****.**>

import os
import sys
import time
sys.path.append(os.path.join(os.path.dirname(__file__), '../..'))

from xarm.wrapper import XArmAPI
"""
Move line(linear motion)
    1. explicit setting is_radian=True, set the default unit is radians
    set_position: 
        1. explicit setting wait=True to wait for the arm to complete
"""

xarm = XArmAPI('192.168.1.113', is_radian=True)
xarm.motion_enable(enable=True)
xarm.set_mode(0)
xarm.set_state(state=0)

xarm.reset(wait=True)

xarm.set_position(x=300,
                  y=0,
                  z=150,
                  roll=-3.1415926,
                  yaw=0,
                  pitch=0,
                  speed=100,
                  wait=True)
print(xarm.get_position())
Exemple #10
0
# Copyright (c) 2019, UFACTORY, Inc.
# All rights reserved.
#
# Author: Vinman <*****@*****.**> <*****@*****.**>
"""
Example: Getting infomation
"""

import os
import sys
import time
sys.path.append(os.path.join(os.path.dirname(__file__), '../../..'))

from xarm.wrapper import XArmAPI

arm = XArmAPI(port='192.168.1.113')
arm.motion_enable(enable=True)
arm.set_mode(0)
arm.set_state(state=0)

print('=' * 50)
print('version:', arm.get_version())
print('state:', arm.get_state())
print('cmdnum:', arm.get_cmdnum())
print('err_warn_code:', arm.get_err_warn_code())
print('position(°):', arm.get_position(is_radian=False))
print('position(radian):', arm.get_position(is_radian=True))
print('angles(°):', arm.get_servo_angle(is_radian=False))
print('angles(radian):', arm.get_servo_angle(is_radian=True))
print('angles(°)(servo_id=1):', arm.get_servo_angle(servo_id=1,
                                                    is_radian=False))
Exemple #11
0
sys.path.append(os.path.join(os.path.dirname(__file__), '../../..'))

from xarm.wrapper import XArmAPI
from configparser import ConfigParser

parser = ConfigParser()
parser.read('../robot.conf')
try:
    ip = parser.get('xArm', 'ip')
except:
    ip = input('Please input the xArm ip address[192.168.1.194]:')
    if not ip:
        ip = '192.168.1.194'

arm = XArmAPI(ip, check_robot_sn=False)
time.sleep(0.5)
if arm.warn_code != 0:
    arm.clean_warn()
if arm.error_code != 0:
    arm.clean_error()

print('set IO0 high level')
arm.set_tgpio_digital(0, 1)
time.sleep(2)
print('set IO1 high level')
arm.set_tgpio_digital(1, 1)
time.sleep(2)
print('set IO0 low level')
arm.set_tgpio_digital(0, 0)
print('set IO1 low level')
import sys
import os
sys.path.append(os.path.join(os.path.dirname(__file__), '../../..'))
'''
sys.path.append()将不在同一目录下模块的路径添加到程序中
os.path.join()将多个路径组合后返回
os.path.dirname(__file__)返回该脚本所在的完整路径
'''
from xarm.wrapper import XArmAPI
from voice_recognition import Msp
from voice_feedback import Voice_feedback

from pour_tea_01 import Pour_tea_01
from pour_tea_02 import Pour_tea_02

arm_left = XArmAPI('192.168.1.151')
arm_right = XArmAPI('192.168.1.209')  # 连接控制器

arm_left.motion_enable(enable=True)
arm_right.motion_enable(enable=True)  # 使能

arm_left.set_mode(0)
arm_right.set_mode(0)  # 运动模式:位置控制模式

arm_left.set_state(state=0)
arm_right.set_state(state=0)  # 运动状态:进入运动状态

voice = Msp()
voice_feedback = Voice_feedback()

pt_01 = Pour_tea_01(arm_left, arm_right)
Exemple #13
0
# Author: Vinman <*****@*****.**> <*****@*****.**>

import os
import sys
import time
import functools
sys.path.append(os.path.join(os.path.dirname(__file__), '../..'))

from xarm.wrapper import XArmAPI
from xarm.core.utils.log import logger

# logger.setLevel(logger.DEBUG)

xarm = XArmAPI(port='192.168.1.113',
               enable_heartbeat=True,
               enable_report=True,
               report_type='normal',
               is_radian=True)
xarm.motion_enable(True)
xarm.set_state(0)
xarm.clean_error()
xarm.set_state(0)
time.sleep(5)

# print(xarm.get_servo_angle())
# print(xarm.get_position(is_radian=False))

# print(time.time())
# print(xarm.get_position())
# print(xarm.get_servo_angle())
# print(xarm.is_tcp_limit([300, 0, 100, 180, 0, 0]))
Exemple #14
0
    print('connect changed:', item)


def callback_error_warn_changed(item):
    print('error warn changed:', item)


def callback_maable_mtbrake_changed(item):
    print('maable mtbrake changed:', item)


def callback_report_location(item):
    print('location report:', item)


arm = XArmAPI(ip, do_not_open=True)
arm.register_cmdnum_changed_callback(callback=callback_cmdnum_changed)
arm.register_state_changed_callback(callback=callback_state_changed)
arm.register_connect_changed_callback(callback=callback_connect_changed)
arm.register_error_warn_changed_callback(callback=callback_error_warn_changed)
arm.register_mtable_mtbrake_changed_callback(
    callback=callback_maable_mtbrake_changed)
arm.register_report_location_callback(callback=callback_report_location)

arm.connect()
arm.motion_enable(enable=True)
arm.set_mode(0)
arm.set_state(state=0)

time.sleep(20)
arm.disconnect()
    "t": letters_v3.T,
    "u": letters_v3.U,
    "v": letters_v3.V,
    "w": letters_v3.W,
    "x": letters_v3.X,
    "y": letters_v3.Y,
    "z": letters_v3.Z,
    " ": letters_v3.space,
    "Invalid": letters_v3.Invalid
}

arm = "dummy"
connected = False
while not connected:
    try:
        arm = XArmAPI('172.21.72.250', do_not_open=True)
        arm.connect()
        connected = True
    except:
        print("arm is not online. trying again in 3 seconds...")
        time.sleep(3)

# arm.set_world_offset([0, 0, 0, 0, 0, 0])
arm.set_world_offset([0, 0, 0, 180, 0.6, -150.8])
time.sleep(0.5)

print(arm.position)
time.sleep(1)

arm.motion_enable(enable=True)
arm.set_mode(0)
Exemple #16
0
#!/usr/bin/env python3
# Software License Agreement (BSD License)
#
# Copyright (c) 2019, UFACTORY, Inc.
# All rights reserved.
#
# Author: Vinman <*****@*****.**> <*****@*****.**>
"""
Example: Connect the robot arm through the serial port
    Note: Need to use a dedicated 485 cable to connect the PC to the control box
"""

import os
import sys
import time
sys.path.append(os.path.join(os.path.dirname(__file__), '../../..'))

from xarm.wrapper import XArmAPI

arm = XArmAPI('COM5')
arm.motion_enable(enable=True)
arm.set_mode(0)
arm.set_state(state=0)

time.sleep(5)
arm.disconnect()
sys.path.append(os.path.join(os.path.dirname(__file__), '../../..'))

from xarm.wrapper import XArmAPI
from configparser import ConfigParser
parser = ConfigParser()
parser.read('../robot.conf')
try:
    ip = parser.get('xArm', 'ip')
except:
    ip = input('Please input the xArm ip address[192.168.1.196]:')
    if not ip:
        ip = '192.168.1.196'


# arm = XArmAPI(ip)
arm = XArmAPI('192.168.1.196')
arm.motion_enable(True)
arm.clean_error()
arm.set_mode(0)
arm.set_state(0)
time.sleep(1)

code = arm.set_linear_track_back_origin(wait=True)
print('set linear track back origin, code={}'.format(code))

# status = 1 is go back on zero successful,
code, status = arm.get_linear_track_on_zero()
print('get linear track on zero point, code={}, status={}'.format(code, status))

code = arm.set_linear_track_enable(True)
print('set linear track enable, code={}'.format(code))
#!/usr/bin/env python3
# Software License Agreement (BSD License)
#
# Author: Liuyaxin <*****@*****.**>

import os
import sys
import time
sys.path.append(os.path.join(os.path.dirname(__file__), '../../..'))

from xarm.wrapper import XArmAPI

arm = XArmAPI('192.168.1.209')
# arm = XArmAPI('192.168.1.151')

arm.motion_enable(enable=True)
arm.set_mode(0)
arm.set_state(state=0)

# arm.reset(wait=True)

arm.set_position(x=214.1,
                 y=18.9,
                 z=101.6,
                 roll=-117.6,
                 pitch=88.8,
                 yaw=-27.5,
                 speed=50,
                 is_radian=False,
                 wait=True)
# arm.set_position(x=223.9, y=18.9, z=101.6, roll=-117.6, pitch=88.8, yaw=-27.5, speed=50, is_radian=False, wait=True)
import os
import sys
import time
sys.path.append(os.path.join(os.path.dirname(__file__), '../../..'))
from xarm.wrapper import XArmAPI

arm = XArmAPI('192.168.1.201')
arm.motion_enable(enable=True)
arm.set_mode(0)
arm.set_state(state=0)
time.sleep(1)
# arm.set_state(4)
offset1 = [100, 0, 0, 0, 0, 0]
offset2 = [150, 0, 0, 0, 0, 0]

arm.set_position(207, 0, 112, 180, 0, 0, wait=True, is_radian=False)
arm.set_tcp_offset(offset=offset1)
arm.save_conf()
time.sleep(1)
print(arm.get_position())
arm.set_tcp_offset(offset=offset2)
arm.save_conf()
print(arm.get_position())
Exemple #20
0
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:')
        if not ip:
            print('input error, exit')
            sys.exit(1)
########################################################

arm = XArmAPI(ip)
arm.motion_enable(enable=True)
arm.set_mode(0)
arm.set_state(state=0)

arm.reset(wait=True)

speed = 50
arm.set_servo_angle(angle=[90, 0, 0, 0, 0], speed=speed, wait=True)
print(arm.get_servo_angle(), arm.get_servo_angle(is_radian=True))
arm.set_servo_angle(angle=[90, 0, -60, 0, 0], speed=speed, wait=True)
print(arm.get_servo_angle(), arm.get_servo_angle(is_radian=True))
arm.set_servo_angle(angle=[90, -30, -60, 0, 0], speed=speed, wait=True)
print(arm.get_servo_angle(), arm.get_servo_angle(is_radian=True))
arm.set_servo_angle(angle=[0, -30, -60, 0, 0], speed=speed, wait=True)
print(arm.get_servo_angle(), arm.get_servo_angle(is_radian=True))
Exemple #21
0
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:')
        if not ip:
            print('input error, exit')
            sys.exit(1)
########################################################

arm = XArmAPI(ip, enable_report=True)
arm.motion_enable(enable=True)
arm.ft_sensor_enable(0)

arm.clean_error()
arm.clean_warn()
arm.ft_sensor_enable(1)
time.sleep(0.5)
arm.ft_sensor_set_zero()

while arm.connected and arm.error_code == 0:
    # ft_raw_force and ft_ext_force will update by reporting socket
    print('raw_force: {}'.format(arm.ft_raw_force))
    print('exe_force: {}'.format(arm.ft_ext_force))

    # # get_ft_sensor_data() will get the last ext_force
Exemple #22
0
import threading
"""
# xArm-Python-SDK: https://github.com/xArm-Developer/xArm-Python-SDK
# git clone [email protected]:xArm-Developer/xArm-Python-SDK.git
# cd xArm-Python-SDK
# python setup.py install
"""
from xarm import version
from xarm.wrapper import XArmAPI
from xarm.core.utils.log import logger

logger.setLevel(logger.VERBOSE)

print('xArm-Python-SDK Version:{}'.format(version.__version__))

arm = XArmAPI('192.168.1.15', timed_comm=False)
arm.clean_warn()
arm.clean_error()
arm.motion_enable(True)
arm.set_mode(0)
arm.set_state(0)
time.sleep(1)

params = {
    'speed': 100,
    'acc': 2000,
    'angle_speed': 20,
    'angle_acc': 500,
    'events': {},
    'variables': {},
    'quit': False
#!/usr/bin/env python3
# Software License Agreement (BSD License)
#
# Copyright (c) 2018, UFACTORY, Inc.
# All rights reserved.
#
# Author: Vinman <*****@*****.**> <*****@*****.**>

import os
import sys
import time
sys.path.append(os.path.join(os.path.dirname(__file__), '../..'))

from xarm.wrapper import XArmAPI

xarm = XArmAPI('192.168.1.113')
xarm.motion_enable(enable=True)
xarm.set_mode(0)
xarm.set_state(state=0)

time.sleep(5)
xarm.disconnect()
Exemple #24
0
# Copyright (c) 2019, UFACTORY, Inc.
# All rights reserved.
#
# Author: Vinman <*****@*****.**> <*****@*****.**>
"""
Example: Getting attributes
"""

import os
import sys
import time
sys.path.append(os.path.join(os.path.dirname(__file__), '../../..'))

from xarm.wrapper import XArmAPI

arm = XArmAPI(port='192.168.1.113', is_radian=False)
arm.motion_enable(enable=True)
arm.set_state(state=0)

print('=' * 50)
print('default_is_radian:', arm.default_is_radian)
print('version:', arm.version)
print('state:', arm.state)
print('cmdnum:', arm.cmd_num)
print('err_code:', arm.error_code)
print('warn_code:', arm.warn_code)
print('position(°):', arm.position)
print('angles(°):', arm.angles)
print('last_used_position:', arm.last_used_position)
print('last_used_angles:', arm.last_used_angles)
Exemple #25
0
# Author: Vinman <*****@*****.**> <*****@*****.**>

import os
import sys
import time
sys.path.append(os.path.join(os.path.dirname(__file__), '../..'))

from xarm.wrapper import XArmAPI
"""
Move joint,
    1. explicit setting is_radian=False, set the default unit is degree (°) (not radian)
    set_servo_angle: 
        1. explicit setting wait=True to wait for the arm to complete
"""

xarm = XArmAPI('192.168.1.113', is_radian=False)
xarm.motion_enable(enable=True)
xarm.set_mode(0)
xarm.set_state(state=0)

xarm.reset(wait=True)

xarm.set_servo_angle(angle=[60, 0, 0, 0, 0, 0, 0], speed=30, wait=True)
print(xarm.get_servo_angle(is_radian=False))
xarm.set_servo_angle(angle=[60, -45, 0, 0, 0, 0, 0], speed=30, wait=True)
print(xarm.get_servo_angle(is_radian=False))
xarm.set_servo_angle(angle=[60, -45, 0, -60, 0, 0, 0], speed=30, wait=True)
print(xarm.get_servo_angle(is_radian=False))
xarm.set_servo_angle(angle=[45, -45, -30, -60, 0, 0, 0], speed=30, wait=True)
print(xarm.get_servo_angle(is_radian=False))
xarm.set_servo_angle(angle=[-45, -45, 0, 0, 0, 0, 0], speed=30, wait=True)
Exemple #26
0
# Camera pipelines
pipeline = rs.pipeline()
config = rs.config()
config.enable_stream(rs.stream.depth, 1280, 720, rs.format.z16, 30)
config.enable_stream(rs.stream.color, 1280, 720, rs.format.bgr8, 30)

pipeline.start(config)

sys.path.append(os.path.join(os.path.dirname(__file__), '../../..'))

from xarm.wrapper import XArmAPI

#xARM control Interface

arm = XArmAPI('192.168.1.244')
arm.motion_enable(enable=True)
arm.set_mode(0)
arm.set_state(state=0)
speed = 50
arm.set_servo_angle(angle=[0, 0, -10, 0, 0], speed=speed, wait=True)

# Camera pipelines
pipeline = rs.pipeline()
config = rs.config()
config.enable_stream(rs.stream.depth, 1280, 720, rs.format.z16, 30)
config.enable_stream(rs.stream.color, 1280, 720, rs.format.bgr8, 30)

pipeline.start(config)

try:
Exemple #27
0
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:')
        if not ip:
            print('input error, exit')
            sys.exit(1)
########################################################

arm = XArmAPI(ip, is_radian=True)
arm.motion_enable(enable=True)
arm.set_mode(0)
arm.set_state(state=0)

arm.reset(wait=True)

speed = 50
arm.set_servo_angle(servo_id=1,
                    angle=90,
                    speed=speed,
                    is_radian=False,
                    wait=True)
print(arm.get_servo_angle(), arm.get_servo_angle(is_radian=True))
arm.set_servo_angle(servo_id=2,
                    angle=-60,
Exemple #28
0
#!/usr/bin/env python3
# Software License Agreement (BSD License)
#
# Copyright (c) 2018, UFACTORY, Inc.
# All rights reserved.
#
# Author: Vinman <*****@*****.**> <*****@*****.**>

import os
import sys
import time
import functools
sys.path.append(os.path.join(os.path.dirname(__file__), '../..'))

from xarm.wrapper import XArmAPI
from xarm.core.utils.log import logger

# logger.setLevel(logger.DEBUG)

arm = XArmAPI(port='192.168.1.113',
              enable_report=True,
              report_type='rich',
              is_radian=False)

print(arm.get_gpio_digital())
print(arm.get_gpio_analog())

arm.disconnect()