pyuarm API

Classes

class pyuarm.uarm.UArm(port_name=None, logger=None, debug=False)

Bases: object

connect()

This function will open the port immediately. Function will wait for the READY Message for 5 secs. Once received READY message, Function will send the Version search command. :return:

disconnect()

disconnect will release/close the uarm port :return:

firmware_version = None
get_analog(pin)

Get Analog Value from specific PIN :param pin: :return:

get_digital(pin)
get_firmware_version()

Get the firmware version. Protocol Cmd: protocol.GET_FIRMWARE_VERSION :return: firmware version, if failed return False

get_hardware_version()

Get the Product version. Protocol Cmd: protocol.GET_HARDWARE_VERSION :return: firmware version, if failed return False

get_position()

Get Current uArm position (x,y,z) mm :return: Returns an array of the format [x, y, z] of the robots current location

get_rom_data(address, data_type=1)

Get DATA From EEPROM :param address: 0 - 2048 :param data_type: EEPROM_DATA_TYPE_FLOAT, EEPROM_DATA_TYPE_INTEGER, EEPROM_DATA_TYPE_BYTE :return:

get_servo_angle(servo_number=None)

Get Current uArm Servo Angles include offset :param servo_number: if None, Return 4 servos Current Angles :return: Returns an angle in degrees, of the servo

get_simulation(x, y, z)

validate the coordinate (x,y,z) if it can be reached or not. :param x: :param y: :param z: :return:

get_sn_number()

Get Serial Number :return:

get_tip_sensor()

Get Status from Tip Sensor :return: True On/ False Off

hardware_version = None
is_connected()

is_connected will return the uarm connected status :return: connected status

is_moving()

Detect is uArm moving :return: Returns a 0 or a 1, depending on whether or not the robot is moving.

is_ready()
set_buzzer(frequency, duration)

Turn on the uArm Buzzer :param frequency: The frequency, in Hz :param duration: The duration of the buzz, in seconds :return:

set_gripper(catch)

Turn On/Off Gripper :param catch: True On/ False Off :return:

set_position(x, y, z, speed=300, relative=False, wait=False)

Move uArm to the position (x,y,z) unit is mm, speed unit is mm/sec :param x: :param y: :param z: :param speed: :return:

set_pump(ON)

Control uArm Pump On or OFF :param ON: True On, False OFF :return: succeed True or Failed False

set_rom_data(address, data, data_type=1)

Set DATA to EEPROM :param address: 0 - 2048 :param data: Value :param data_type: EEPROM_DATA_TYPE_FLOAT, EEPROM_DATA_TYPE_INTEGER, EEPROM_DATA_TYPE_BYTE :return:

set_servo_angle(servo_number, angle)

Set uArm Servo Angle, 0 - 180 degrees, this Function will include the manual servo offset. :param servo_number: lease reference protocol.py SERVO_BOTTOM, SERVO_LEFT, SERVO_RIGHT, SERVO_HAND :param angle: 0 - 180 degrees :return: succeed True or Failed False

set_servo_attach(servo_number=None)

Set Servo status attach, Servo Attach will lock the servo, You can’t move uArm with your hands. :param servo_number: If None, will attach all servos, please reference protocol.py SERVO_BOTTOM, SERVO_LEFT, SERVO_RIGHT, SERVO_HAND :return: succeed True or Failed False

set_servo_detach(servo_number=None)

Set Servo status detach, Servo Detach will unlock the servo, You can move uArm with your hands. But move function won’t be effect until you attach. :param servo_number: If None, will detach all servos, please reference protocol.py SERVO_BOTTOM, SERVO_LEFT, SERVO_RIGHT, SERVO_HAND :return: succeed True or Failed False

set_wrist(angle)

Set uArm Hand Wrist Angle. Include servo offset. :param angle: :return:

pyuarm.uarm.get_uarm(logger=None)

It will return the first uArm Port detected by pyuarm.tools.list_uarms, If no available uArm ports, will print There is no uArm port available

>>> import pyuarm
>>> uarm = pyuarm.get_uarm()
There is no uArm port available
Returns:uArm() Instance

Exception

class pyuarm.util.UArmConnectException(errno, message=None)

Constants

TO-DO

Module Functions and attributes

pyuarm.tools.list_uarms

pyuarm.tools.list_uarms.check_port_plug_in(serial_id)
pyuarm.tools.list_uarms.get_port_property(port_name)
pyuarm.tools.list_uarms.get_uarm_port_cli()
pyuarm.tools.list_uarms.uarm_ports()

pyuarm.tools.firmware.flash_firmware

class pyuarm.tools.firmware.flash_firmware.FlashFirmware
download_firmware()
flash_firmware()
pyuarm.tools.firmware.flash_firmware.download(url, filepath)
pyuarm.tools.firmware.flash_firmware.exit_fun()
pyuarm.tools.firmware.flash_firmware.flash(port, firmware_path, avrdude_path=None)
pyuarm.tools.firmware.flash_firmware.gen_flash_cmd(port, firmware_path, avrdude_path=None)
pyuarm.tools.firmware.flash_firmware.get_uarm_port_cli()
pyuarm.tools.firmware.flash_firmware.resourcePath(relative_path)

Get absolute path to resource, works for dev and for PyInstaller

pyuarm.tools.firmware.flash_firmware.uarm_ports(hardware_id='USB VID:PID=0403:6001')

pyuarm.tools.calibration.calibrate

pyuarm.tools.calibration.calibrate.calibrate(port_name)
pyuarm.tools.calibration.calibrate.exit_fun()
pyuarm.tools.calibration.calibrate.get_serial_line(sp)
pyuarm.tools.calibration.calibrate.read_completed_flag(uarm, flag_type)
pyuarm.tools.calibration.calibrate.read_linear_offset(uarm)
pyuarm.tools.calibration.calibrate.read_manual_offset(uarm)

pyuarm.tools.miniterm

class pyuarm.tools.miniterm.SerialMode(uarm)

Bases: cmd.Cmd

default(line)
do_EOF(args)
do_quit(args)
intro = 'Welcome to Serial Mode.'
prompt = 'Serial >>> '
uarm = None
class pyuarm.tools.miniterm.UArmCmd(port=None, debug=False, *args, **kwargs)

Bases: cmd.Cmd

FIRMWARE = ['version', 'force', 'upgrade']
ON_OFF = ['on', 'off']
SERVO_STATUS = ['attach', 'detach']
complete_pump(text, line, begidx, endidx)
complete_servo(text, line, begidx, endidx)
connect(port=None, debug=False)

connect uArm. :param port: :return:

do_EOF(args)

Quit, if uarm is connected, will disconnect before quit

do_alert(arg)

alert control buzzer format: alert frequency duration eg. alert 1 1

do_connect(arg)

connect, Open uArm Port, if more than one uArm Port found, will prompt options to choose. Please connect to uArm before you do any control action

do_disconnect(arg)

disconnect, Release uarm port.

do_get_angle(arg)

get_angle Read current servo angle. format: read_angle servo_number servo_number:

0 bottom servo, 1 left servo, 2 right servo,

if no servo_number provide, will list all servos angle eg. >>> get_angle Current Servo Angles: b:17.97, l:112.72, r:17.97, h:151.14

do_get_position(arg)

get_position get current coordinate

do_help(arg)
do_pump(arg)

pump turn on/off pump

do_quit(args)

Quit, if uarm is connected, will disconnect before quit

do_serial(arg)

Raw Serial Mode You could direct input the communication protocol here.

do_servo(arg)

Servo status format: servo attach servo_number

servo detach servo_number
servo_number:
0 bottom servo, 1 left servo, 2 right servo, 3 hand servo all
eg. servo attach all
servo detach all
do_set_angle(arg)

set_angle format: write_angle servo_number angle servo_number:

0 bottom servo, 1 left servo, 2 right servo, 3 hand servo

eg. >>> set_angle 0 90 succeed

do_set_position(arg)

set_position, move to destination coordinate. format: set_position X Y Z or move_to X Y Z S X,Y,Z unit millimeter, S means Speed, unit mm/s eg. set_position 100 200 150

do_sim(arg)

sim format: sim X Y Z validate the coordinate. eg. sim 100 200 100 succeed

do_sp(args)

same with set_position

help_msg = 'Shortcut:\nQuit: Ctrl + D, or input: quit\nClear Screen: Ctrl + L'
intro = 'Welcome to use uArm Command Line - v0.1.4\nShortcut:\nQuit: Ctrl + D, or input: quit\nClear Screen: Ctrl + L\n\nInput help for more usage'
prompt = '>>> '
ruler = '-'
uarm = None