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
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 } })
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)
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
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)
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()
# # 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()
# 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())
# 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))
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)
# 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]))
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)
#!/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())
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))
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
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()
# 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)
# 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)
# 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:
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,
#!/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()