示例#1
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
             }
         })
示例#2
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
    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)
示例#4
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)
示例#5
0
import sys
import time
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)
arm.motion_enable(True)
arm.clean_error()
arm.set_mode(0)
arm.set_state(0)
time.sleep(1)

code = arm.set_bio_gripper_enable(True)
print('set_bio_gripper_enable, code={}'.format(code))

code = arm.set_bio_gripper_speed(300)
print('set_bio_gripper_speed, code={}'.format(code))

while arm.connected and arm.error_code == 0:
    code = arm.open_bio_gripper()
    print('open_bio_gripper, code={}'.format(code))
示例#6
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
示例#7
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()
示例#8
0
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)
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

angles = [[0, 14, -25, 0, 12.9, 0], [-14, 40, -75, 0, 33.4, -13.8],
          [21.9, 50, -80, 50, 37, 29]]
arm.set_pause_time(1)

for _ in range(10):
    for angle in angles:
        code = arm.set_servo_angle(angle=angle,
# Copyright (c) 2019, UFACTORY, Inc.
# All rights reserved.
#
# Author: Vinman <*****@*****.**> <*****@*****.**>
"""
Description: Servo cartesian
"""
import os
import sys
import time
import datetime

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)

arm.reset(wait=True)

#set start point by joint motion
# arm.set_position(*[200, 0, 200, 180, 0, 0], wait=True)
arm.set_servo_angle(angle=[0, -42.6, 3.2, 0, 39.4, 0], speed=60, wait=True)
print(arm.get_position())

arm.set_mode(1)
arm.set_state(0)
time.sleep(0.1)
示例#11
0
class XArmHandler(object):
    def __init__(self, ui):
        super(XArmHandler, self).__init__()
        self.ui = ui

        self.xarm = None
        self.addr = None
        self.report_type = 'normal'
        self.cmd_que = queue.Queue(100)

        self.cmd_thread = XArmThread(self.cmd_que)
        self.cmd_thread.signal.connect(self.run_cmd)
        self.cmd_thread.start()
        # threading.Thread(target=self._handle_cmd_thread, daemon=True).start()

        self.report_que = queue.Queue()
        self.report_thread = XArmThread(self.report_que)
        self.report_thread.signal.connect(self.update_ui)
        self.report_thread.start()

    def run_cmd(self, item):
        try:
            if self.xarm and self.xarm.connected:
                func = getattr(self.xarm, item['cmd'])
                # log(item['cmd']+':', func(*item.get('args', []), **item.get('kwargs', {})))
                ret = func(*item.get('args', []), **item.get('kwargs', {}))
                if isinstance(ret, int) and ret == TCP_OR_JOINT_LIMIT:
                    self.ui.reset_flag()
                logger.debug('cmd: {}, ret:{}, args: {}, kwargs: {}'.format(item['cmd'], ret, item.get('args', []),
                                                                            item.get('kwargs', {})))
            else:
                self.cmd_que.queue.clear()
                logger.debug('cmd: {}, ret: xArm is not connected'.format(item['cmd']))
        except:
            pass

    def connect(self, addr, report_type='normal'):
        try:
            logger.debug('try connect to {}, report: {}'.format(addr, report_type))
            if self.xarm and self.xarm.connected:
                logger.info('disconnect from {}'.format(self.addr))
                self.xarm.disconnect()
        except Exception as e:
            print(e)
        threading.Thread(target=self.connnect_thread, args=(addr, report_type), daemon=True).start()

    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 disconnect(self):
        try:
            if self.xarm and self.xarm.connected:
                self.xarm.disconnect()
                # logger.info('diconnect from {}'.format(self.addr))
        except Exception as e:
            print(e)

    def update_ui(self, data):
        item = data['item']
        if data['type'] == 'brake':
            maable, mtbrake = item['maable'], item['mtbrake']
            self.ui.axis_ui.brake_changed_callback(list(map(lambda x: bool(x[0] & x[1]), zip(mtbrake, maable))))
            maable_value = 0
            for i, v in enumerate(maable):
                if v is True:
                    maable_value += pow(2, i)
            mtbrake_value = 0
            for i, v in enumerate(mtbrake):
                if v is True:
                    mtbrake_value += pow(2, i)
            self.ui.update_maable_mtbrake(maable_value, mtbrake_value)

            # self.ui.update_maable_mtbrake(maable, mtbrake)
            # mtbrake = [mtbrake & 0x01, mtbrake >> 1 & 0x01, mtbrake >> 2 & 0x01, mtbrake >> 3 & 0x01,
            #            mtbrake >> 4 & 0x01, mtbrake >> 5 & 0x01, mtbrake >> 6 & 0x01, mtbrake >> 7 & 0x01]
            # maable = [maable & 0x01, maable >> 1 & 0x01, maable >> 2 & 0x01, maable >> 3 & 0x01,
            #           maable >> 4 & 0x01, maable >> 5 & 0x01, maable >> 6 & 0x01, maable >> 7 & 0x01]
            # self.ui.axis_ui.brake_changed_callback(list(map(lambda x: bool(x[0] & x[1]), zip(mtbrake, maable))))

        elif data['type'] == 'error':
            self.ui.update_warn_error([item['warnCode'], item['errorCode']])
            if item['errorCode'] != 0 or item['warnCode'] != 0:
                if item['warnCode'] != 0:
                    logger.warn('warn: code: {}, desc: {}'.format(item['warnCode'], ControlWarn(item['warnCode']).description))
                if item['errorCode'] != 0:
                    logger.error('error: code: {}, desc: {}'.format(item['errorCode'], ControlError(item['errorCode']).description))
            else:
                logger.info('warn: {}, error: {}'.format(item['warnCode'], item['errorCode']))
            if item['errorCode'] != 0:
                try:
                    self.get_servo_debug_msg()
                except Exception as e:
                    logger.error(str(e))
        elif data['type'] == 'state':
            state = item['state']
            self.ui.update_state(state)
        elif data['type'] == 'connect':
            self.ui.update_connect_status([item['mainConnected'], item['reportConnected']])
        elif data['type'] == 'location':
            pos = item['position']
            angles = item['angles']
            self.ui.axis_ui.update_joints(angles)
            self.ui.cartesian_ui.update_cartesians(pos)
        elif data['type'] == 'cmdnum':
            cmdnum = item['cmdnum']
            self.ui.update_cmd_count(cmdnum)

    def report_state_callback(self, item):
        self.report_que.put({
            'type': 'state',
            'item': item
        })

    def report_cmdnum_callback(self, item):
        self.report_que.put({
            'type': 'cmdnum',
            'item': item
        })

    def report_connected_callback(self, item):
        self.report_que.put({
            'type': 'connect',
            'item': item
        })

    def report_location_callback(self, item):
        try:
            pos = item['cartesian']
            angles = item['joints']
            location = {
                'position': [float('{:.1f}'.format(p * RAD_DEGREE)) if 2 < i < 6 else float('{:.1f}'.format(p)) for i, p in enumerate(pos)],
                'angles': [float('{:.1f}'.format(angle * RAD_DEGREE)) for angle in angles],
            }
            self.report_que.put({
                'type': 'location',
                'item': location
            })
        except Exception as e:
            print(e)
            pass

    def report_brake_callback(self, item):
        self.report_que.put({
            'type': 'brake',
            'item': item
        })

    def report_warn_error_callback(self, item):
        self.report_que.put({
            'type': 'error',
            'item': item
        })

    def get_servo_debug_msg(self, only_log_error_servo=True):
        if self.ui.main_ui.window.log_window.isHidden():
            self.ui.main_ui.window.log_window.show()
            self.ui.main_ui.logAction.setText('Close-Log')
        try:
            if self.xarm and self.xarm.connected:
                ret = self.xarm.get_servo_debug_msg()
                if ret[0] in [0, x2_config.UX2_ERR_CODE, x2_config.UX2_WAR_CODE]:
                    logger.log('=' * 50)
                    for i in range(1, 8):
                        servo = '机械臂第{}轴'.format(i)
                        log_servo_error(servo, ret[i * 2 - 1], ret[i * 2], only_log_error_servo=only_log_error_servo)
                    log_servo_error('机械爪', ret[15], ret[16], only_log_error_servo=only_log_error_servo)
                    logger.log('=' * 50)
                elif ret[0] == 3:
                    logger.debug('cmd: get_servo_debug_msg, ret: 通信错误')
            else:
                logger.debug('cmd: get_servo_debug_msg, ret: xArm is not connected')
        except Exception as e:
            print(e)

    def init_robot(self):
        global on_init
        with lock:
            on_init = True
        if self.xarm and self.xarm.connected:
            if self.xarm.warn_code != 0:
                logger.debug('clean warn:', self.xarm.clean_warn())
            if self.xarm.error_code != 0:
                logger.debug('clean error:', self.xarm.clean_error())
                time.sleep(0.3)
            logger.debug('motion enable:', self.xarm.motion_enable(enable=True))
            time.sleep(0.5)
            logger.debug('set state:', self.xarm.set_state(0))
            time.sleep(0.2)
            self.xarm.get_version()
            logger.info('xarm_version:', self.xarm.version)
        with lock:
            on_init = False

    def put_cmd_que(self, item):
        self.cmd_que.put(item)
示例#12
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)
time.sleep(1)
# go to "Zero Position"
arm.move_gohome()
# go to start position
print(arm.set_position(300, 0, 300, 180, 0, 0, wait=True))
time.sleep(0.5)

# set to mode 1
arm.set_mode(1)
arm.set_state(state=0)
time.sleep(1)
# test move pitch continually, roll+90
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 = math.radians(50)

while (p.isConnected()):
    p.stepSimulation()
    targetPositions = arm.get_servo_angle(is_radian=True)[1]
    #print("targetPositions=",targetPositions)
    for i in range(len(paramIds)):
        targetPos = targetPositions[i]
        p.setJointMotorControl2(xarm,
示例#14
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)
time.sleep(1)

arm.reset(wait=True)

# set cartesian velocity control mode
arm.set_mode(5)
arm.set_state(0)
time.sleep(1)

arm.vc_set_cartesian_velocity([100, 0, 0, 0, 0, 0])
time.sleep(2)
arm.vc_set_cartesian_velocity([0, -100, 0, 0, 0, 0])
示例#15
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()
import os
import sys
import time
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)
time.sleep(0.5)
if arm.warn_code != 0:
    arm.clean_warn()
if arm.error_code != 0:
    arm.clean_error()

code, states = arm.get_cgpio_state()
print('get_cgpio_state, code={}'.format(code))
print('state: {} {}'.format(states[0], states[1]))
print('digit_io: {:x} {:x} {:x} {:x}'.format(*states[2:6]))
print('analog: {:f} {:f} {:f} {:f}'.format(*states[6:10]))
print('input_conf: {}'.format(states[10]))
print('output_conf: {}'.format(states[11]))
示例#17
0
import sys
import time
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)
time.sleep(0.5)
if arm.warn_code != 0:
    arm.clean_warn()
if arm.error_code != 0:
    arm.clean_error()

last_digitals = [-1, -1]
while arm.connected and arm.error_code != 19 and arm.error_code != 28:
    code, digitals = arm.get_tgpio_digital()
    if code == 0:
        if digitals[0] == 1 and digitals[0] != last_digitals[0]:
            print('IO0 input high level')
        if digitals[1] == 1 and digitals[1] != last_digitals[1]:
            print('IO1 input high level')
        last_digitals = digitals
示例#18
0
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())
示例#19
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.clean_error()
arm.set_mode(0)
arm.set_state(0)
time.sleep(0.1)

# set pid parameters for force control
Kp = 0.005  # range: 0 ~ 0.05
Ki = 0.00006 # range: 0 ~ 0.0005
Kd = 0.000  # range: 0 ~ 0.05
v_max = 100.0 # max adjust velocity(mm/s), range: 0 ~ 200
arm.set_force_control_pid([Kp]*6, [Ki]*6, [Kd]*6, [v_max]*6)

ref_frame = 1        # 0 : base , 1 : tool
force_axis = [0, 0, 1, 0, 0, 0] # only control force along z axis
示例#20
0
if len(sys.argv) >= 2:
    ip = sys.argv[1]
else:
    try:
        from configparser import ConfigParser
        parser = ConfigParser()
        parser.read('./robot1.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)

poses = [[300, 0, 100, -180, 0, 0], [300, 100, 100, -3.1416, 0, 0],
         [400, 100, 100, -3.1416, 0, 0], [400, -100, 100, -3.1416, 0, 0],
         [300, 0, 300, -3.1416, 0, 0]]

ret = arm.set_position(*poses[0], speed=50, wait=True, is_radian=False)

print('set_position, ret: {}'.format(ret))

arm.set_position(x=300,
#!/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()
示例#22
0
import sys
import time
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)
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')
    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)
arm.set_mode(1)
arm.set_state(state=0)
speed = math.radians(5)


while (p.isConnected()):
  p.stepSimulation()
  targetPositions=[]
  for i in range(len(paramIds)):
    c = paramIds[i]
    targetPos = p.readUserDebugParameter(c)
示例#24
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))
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)

Z_GROUND = 91.05

arm.set_position(x=300,
                 y=-50,
                 z=Z_GROUND,
                 roll=-180,
                 pitch=0,
                 yaw=0,
                 speed=100,
示例#26
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)

paths = [
    [300, 0, 150, -180, 0, 0],
    [300, 200, 250, -180, 0, 0],
    [500, 200, 150, -180, 0, 0],
    [500, -200, 250, -180, 0, 0],
    [300, -200, 150, -180, 0, 0],
    [300, 0, 250, -180, 0, 0],
    [300, 200, 350, -180, 0, 0],
    [500, 200, 250, -180, 0, 0],
sys.path.append(os.path.join(os.path.dirname(__file__), '../../..'))

from xarm.wrapper import XArmAPI

#######################################################
"""
Just for test example
"""
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.load_trajectory('test.traj')
arm.playback_trajectory()
示例#28
0
Move joint
    set_servo_angle:
        1. explicit setting is_radian=True, the param roll/yaw/pitch unit is radians
        2. explicit setting wait=True to wait for the arm to complete
    get_servo_angle:
        1. explicit setting is_radian=True, the returned value(roll/yaw/pitch) unit is radians
"""

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

from xarm.wrapper import XArmAPI

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

arm.reset(wait=True)

speed = math.radians(30)

arm.set_servo_angle(angle=[math.radians(60), 0, 0, 0, 0],
                    speed=speed,
                    is_radian=True,
                    wait=True)
print(arm.get_servo_angle(is_radian=True))
arm.set_servo_angle(angle=[math.radians(60),
                           math.radians(-45), 0, 0, 0],
示例#29
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,
示例#30
0
import sys
import time
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)
time.sleep(0.5)
if arm.warn_code != 0:
    arm.clean_warn()
if arm.error_code != 0:
    arm.clean_error()

value = 1
for i in range(8):
    code = arm.set_cgpio_digital(i, value)
    print('set_cgpio_digital({}, {}), code={}'.format(i, value, code))

value = 2.6
code = arm.set_cgpio_analog(0, value)
print('set_cgpio_analog(0, {}), code={}'.format(value, code))