Skip to main content

Python API for serial communication of MyCobot.

Project description

This is Python API for myCobot

Python 2.7 Python 3 pypi_version

This is a python API for serial communication with mycobot and controlling it.

home

Installation

Notes:

Make sure that Atom is flashed into the top Atom, Transponder is flashed into the base Basic.
The firmware Atom and Transponder download address: https://github.com/elephantrobotics/myCobot/tree/main/Software
You also can use myStudio to flash them, myStudio address: https://github.com/elephantrobotics/myStudio/releases

Pip

pip install pymycobot --upgrade

Source code

git clone https://github.com/elephantrobotics/pymycobot.git <your-path>
cd <your-path>/pymycobot
# Install
[sudo] python2 setup.py install
# or
[sudo] python3 setup.py install

Or the more modern form:

# Install
pip install .
# Uninstall
pip uninstall .

## Usage:

```python
from pymycobot import MyCobot, Angle, Coord
from pymycobot import PI_PORT, PI_BAUD # For raspberry pi version of mycobot.

The demo directory stores some test case files.

You can find out which interfaces pymycobot provides in pymycobot/README.md.

Please go to here.

pymycobot

This is python API for mycobot.

We support Python2, Python3.5 or later.

Catalogue:

MyCobot

Import to your project:

# for mycobot
from pymycobot import MyCobot

# for mypalletizer
# from pymycobot import MyPalletizer

Note: If no parameter is given, there is no parameter; if no return value is given, there is no return value

Overall status

power_on

  • Prototype: power_on()

  • Description:Atom open communication (default open).

power_off

  • Prototype: power_off()

  • Description: Atom turn off communication.

is_power_on

  • Prototype: is_power_on()

  • Description: Adjust robot arm whether power on.

  • Returns

    • 1: power on
    • 0: power off
    • -1: error

release_all_servos

  • Prototype: release_all_servos()

  • Description: Set robot arm into free moving mode.

is_controller_connected

  • Prototype: is_controller_connected()

  • Description: Check if connected with Atom.

  • Returns

    • 1: connected
    • 0: not connected
    • -1: error

MDI mode and operation

get_angles

  • Prototype: get_angles()

  • Description: Get the degree of all joints.

  • Returns: list: A float list of all degree.

send_angle

  • Prototype: send_angles(id, degree, speed)

  • Description: Send one degree of joint to robot arm.

  • Parameters

    • id: Joint id(genre.Angle) / int 1-6
    • degree: degree value(float) (about -170 ~ 170)
    • speed: (int) 0 ~ 100
  • Example

    from pymycobot.mycobot import MyCobot
    from pymycobot.genre import Angle
    
    
    mycobot = MyCobot('/dev/ttyUSB0')
    mycobot.send_angle(Angle.J2.value, 10, 50)
    

send_angles()

  • Prototype: send_angles(degrees, speed)

  • Description: Send the degrees of all joints to robot arm.

  • Parameters

    • degrees: a list of degree value(List[float]), length 6.

    • speed: (int) 0 ~ 100

  • Example

    from pymycobot.mycobot import MyCobot
    from pymycobot.genre import Angle
    
    
    mycobot = MyCobot('/dev/ttyUSB0')
    mycobot.send_angles([0,0,0,0,0,0], 80)
    

get_radians

  • Prototype: get_radians()

  • Description: Get the radians of all joints.

  • Returns: list: A float list of radian.

send_radians

  • Prototype: send_radians(radians, speed)

  • Description: Send the radians of all joint to robot arm.

  • Parameters:

    • radians: a list of radian value(List[float]), length 6.
    • speed: (int) 0 ~ 100
  • Example

    from pymycobot.mycobot import MyCobot
    from pymycobot.genre import Angle
    
    
    mycobot = MyCobot('/dev/ttyUSB0')
    mycobot.send_angles_by_radian([1,1,1,1,1,1], 70)
    

get_coords

  • Prototype: get_coords()

  • Description: Get the Coords from robot arm, coordinate system based on base.

  • Returns: list: A float list of coord - [x, y, z, rx, ry, rz]

send_coord

  • Prototype: get_coords(id, coord, speed)

  • Description: Send one coord to robot arm.

  • Parameters

    • id: coord id(genre.Coord) / int 1-6
    • coord: coord value(float)
    • speed: (int) 0 ~ 100
  • Example

    from pymycobot.mycobot import MyCobot
    from pymycobot.genre import Coord
    
    
    mycobot = MyCobot('/dev/ttyUSB0')
    mycobot.send_coord(Coord.X.value, -40, 70)
    

send_coords

  • Prototype: send_coords(coords, speed, mode)

  • Description: Send all coords to robot arm.

  • Parameters

    • coords: a list of coords value(List[float]), length 6.
    • speed: (int) 0 ~ 100
    • mode: (int): 0 - angular, 1 - linear
  • Example

    from pymycobot.mycobot import MyCobot
    from pymycobot.genre import Coord
    
    
    mycobot = MyCobot('/dev/ttyUSB0')
    mycobot.send_coords([160, 160, 160, 0, 0, 0], 70, 0)
    

sync_send_angles

  • Prototype: sync_send_angles(degrees, speed, timeout=7)

  • Description: Send the angle in synchronous state and return when the target point is reached

  • Parameters

    • degrees: a list of degree value(List[float]), length 6.
    • speed: (int) 0 ~ 100
    • timeout: default 7s.

sync_send_coords

  • Prototype: sync_send_coords(coords, speed, mode, timeout=7)

  • Description: Send the coord in synchronous state and return when the target point is reached

  • Parameters

    • coords: a list of coords value(List[float])
    • speed: (int) 0 ~ 100
    • mode: (int): 0 - angular, 1 - linear
    • timeout: default 7s.

is_in_position

  • Prototype: is_in_position(data, flag)

  • Description: Judge whether in the position.

  • Parameters

    • data: A data list, angles or coords, length 6.
    • flag: Tag the data type, 0 - angles, 1 - coords.
  • Returns

    • 1 - true
    • 0 - false
    • -1 - error

JOG mode and operation

jog_angle

  • Prototype: jog_angle(joint_id, direction, speed)

  • Description: Jog control angle

  • Parameters

    • joint_id: (int) 1 ~ 6
    • direction: 0 - decrease, 1 - increase
    • speed: 0 ~ 100

jog_coord

  • Prototype: jog_coord(coord_id, direction, speed)

  • Description: Jog control coord.

  • Parameters

    • coord_id: (int) 1 ~ 6
    • direction: 0 - decrease, 1 - increase
    • speed: 0 ~ 100

jog_stop

  • Prototype: jog_stop()

  • Description: Stop jog moving.

pause

  • Prototype: pause()

  • Description: Pause movement.

resume

  • Prototype: resume()

  • Description: Recovery movement.

stop

  • Prototype: stop()

  • Description: Stop moving.

is_paused

  • Prototype: is_paused()

  • Description: Judge whether the manipulator pauses or not.

  • Returns :

    • 1 - paused
    • 0 - not paused
    • -1 - error

set_encoder

  • Prototype: set_encoder(joint_id, encoder)

  • Description: Set a single joint rotation to the specified potential value.

  • Parameters

    • joint_id: (int) 1 ~ 6
    • encoder: 0 ~ 4096

get_encoder

  • Prototype: get_encoder(joint_id)

  • Description:Obtain the specified joint potential value.

  • Parameters: joint_id: (int) 1 ~ 6

  • Returns: encoder: 0 ~ 4096

set_encoders

  • Prototype: set_encoders(encoders, sp)

  • Description: Set the six joints of the manipulator to execute synchronously to the specified position.

  • Parameters:

    • encoders: A encoder list, length 6.
    • sp: speed 0 - 100

get_encoders

  • Prototype: get_encoders()

  • Description: Get the six joints of the manipulator.

  • Returns: the list of encoder (list)

Running status and Settings

get_speed

  • Prototype: get_speed()

  • Description: Get speed.

  • Returns: speed: (int)

set_speed

  • Prototype: set_speed(speed)

  • Description: Set speed.

  • Parameters: speed: (int) 0 ~ 100

get_joint_min_angle

  • Prototype: get_joint_min_angle()

  • Description: Gets the minimum movement angle of the specified joint

  • Parameters: joint_id: (int)

  • Returns: angle value (float)

get_joint_max_angle

  • Prototype: get_joint_max_angle()

  • Description: Gets the maximum movement angle of the specified joint

  • Parameters: joint_id: (int)

  • Returns: angle value (float)

Servo control

is_servo_enable

  • Prototype: is_servo_enable(servo_id)

  • Description: Determine whether all steering gears are connected

  • Parameters: servo_id (int) 1 ~ 6

  • Returns

    • 0: disable
    • 1: enable
    • -1: error

is_all_servo_enable

  • Prototype: is_all_servo_enable()

  • Description: Determine whether the specified steering gear is connected

  • Returns

    • 0: disable
    • 1: enable
    • -1: error

set_servo_data

  • Prototype: set_servo_data(servo_no, data_id, value)

  • Description: Set the data parameters of the specified address of the steering gear.

  • Parameters:

    • servo_no: Serial number of articulated steering gear, 1 - 6.
    • data_id: Data address.
    • value: 0 - 4096

get_servo_data

  • Prototype: get_servo_data(servo_no, data_id)

  • Description: Read the data parameter of the specified address of the steering gear.

  • Parameters:

    • servo_no: Serial number of articulated steering gear, 1 - 6.
    • data_id: Data address.
  • Returns: value: 0 - 4096

    • 0: disable
    • 1: enable
    • -1: error

set_servo_calibration

  • Prototype: set_servo_calibration(servo_no)

  • Description: The current position of the calibration joint actuator is the angle zero point, and the corresponding potential value is 2048.

  • Parameters:

    • servo_no: Serial number of articulated steering gear, 1 - 6.

release_servo

  • Prototype: release_servo(servo_id)

  • Description: Power off designated servo

  • Parameters: servo_id: 1 ~ 6

focus_servo

  • Prototype: focus_servo(servo_id)

  • Description: Power on designated servo

  • Parameters: servo_id: 1 ~ 6

Atom IO

set_color

  • Prototype: set_color(r, g, b)

  • Description: Set the color of the light on the top of the robot arm.

  • Parameters

    • r: 0 ~ 255
    • g: 0 ~ 255
    • b: 0 ~ 255

set_pin_mode

  • Prototype: set_pin_mode(pin_no, pin_mode)

  • Description: Set the state mode of the specified pin in atom.

  • Parameters

    • pin_no (int): Pin number.
    • pin_mode (int): 0 - input, 1 - output, 2 - input_pullup

set_digital_output()

  • Parameters

    • pin_no (int):
    • pin_signal (int): 0 / 1

get_digital_input()

  • Parameters: pin_no (int)

  • Return: signal value

set_pwm_output()

  • Prototype: set_pwm_output(channel, frequency, pin_val)

  • Description: PWM control.

  • Parameters

    • channel (int): IO number.
    • frequency (int): clock frequency
    • pin_val (int): Duty cycle 0 ~ 256; 128 means 50%

get_gripper_value

  • Prototype: get_gripper_value()

  • Description: Get gripper value

  • Return: gripper value (int)

set_gripper_state

  • Prototype: set_gripper_state(flag, speed)

  • Description: Set gripper switch state

  • Parameters

    • flag (int): 0 - open, 1 - close
    • speed (int): 0 ~ 100

set_gripper_value

  • Prototype: set_gripper_value(value, speed)

  • Description: Set gripper value

  • Parameters

    • value (int): 0 ~ 100
    • speed (int): 0 ~ 100

set_gripper_ini

  • Prototype: set_gripper_ini()

  • Description: Set the current position to zero, set current position value is 2048.

is_gripper_moving

  • Prototype: is_gripper_moving()

  • Description: Judge whether the gripper is moving or not

  • Returns

    • 0 : not moving
    • 1 : is moving
    • -1: error data

Basic

get_basic_input

  • Prototype: get_basic_input(pin_no)

  • Description: Get bottom pin.

  • Parameters

    • pin_no (int) Pin number.
  • Return: pin_signal (int) 0 / 1

set_basic_output

  • Prototype: set_basic_output(pin_no, pin_signal)

  • Description: Set bottom pin.

  • Parameters

    • pin_no (int) Pin number.
    • pin_signal (int): 0 / 1

set_ssid_pwd

  • Prototype: set_ssid_pwd(account, password)

  • Description: Change connected wifi.(Apply to m5 or seeed)

  • Parameters

    • account (str) new wifi account.
    • password (str): new wifi password.

get_ssid_pwd

  • Prototype: get_ssid_pwd()

  • Description: Get connected wifi account and password.(Apply to m5 or seeed)

  • Return: (account, password).

set_server_port

  • Prototype: set_server_port(port)

  • Description: Change the connection port of the server.

  • Parameters

    • port (int) The new connection port of the server.

get_tof_distance

  • Prototype: get_tof_distance()

  • Description: Get the detected distance (Requires external distance detector).

  • Return: int The unit is mm.

Raspberry pi -- GPIO

gpio_init

  • Prototype: gpio_init()

  • Description: Init GPIO module, and set BCM mode.

gpio_output

  • Prototype: gpio_output(pin, v)

  • Description: Set GPIO port output value.

  • Parameters

    • pin (int) Pin number.
    • v (int): 0 / 1

Angle

from pymycobot import Angle

Description

Instance class of joint. It's recommended to use this class to select joint.

Coord

from pymycobot import Coord

Description

Instance class of coord. It's recommended to use this class to select coord.

utils (Module)

This module support some help method.

Usage:

from pymycobot import utils

get_port_list

  • Prototype: get_port_list()

  • Description: Get the all serial port list.

  • Return: serial port list (list)

detect_port_of_basic

  • Prototype: detect_port_of_basic()

  • Description: Returns the serial port string of the first detected M5 Basic. If it is not found, it returns None.

  • Return: detected port (str) or None

  • Example:

    from pymycobot import MyCobot, utils
    
    port = utils.detect_port_of_basic()
    if port is None:
     raise Exception('Detection failed.')
    mycobot = MyCobot(port, 115200)
    

MyCobotSocket

Note: Only supports python3 The robotic arm that uses this class of premise has a server and has been turned on.

Use TCP/IP to control the robotic arm

Client

# demo
from pymycobot import MyCobotSocket
# Port 9000 is used by default
mc = MyCobotSocket("192.168.10.10","9000")

mc.connect("/dev/ttyAMA0","1000000")

res = mc.get_angles()
print(res)

mc.send_angles([0,0,0,0,0,0],20)
...

Server

Server file is in the demo folder

socket control

Note: Most of the methods are the same as the class mycobot, only the new methods are listed here.

connect

  • Prototype: connect(serialport, baudrate, timeout)

  • Description: Connect the robot arm through the serial port and baud rate

  • Parameters

    • serialport: (str) default /dev/ttyAMA0.
    • baudrate: default 1000000.
    • timeout: default 0.1.

set_gpio_mode

  • Prototype: set_gpio_mode(mode)

  • Description: Set pin coding method.

  • Parameters

    • mode (str) "BCM" or "BOARD".

set_gpio_out

  • Prototype: set_gpio_out(pin_no, mode)

  • Description: Set the pin as input or output.

  • Parameters

    • pin_no (int) pin id.
    • mode (str) "in" or "out"

set_gpio_output

  • Prototype: set_gpio_output(pin_no, state)

  • Description: Set the pin to high or low level.

  • Parameters

    • pin_no (int) pin id.
    • state (int) 0 or 1

get_gpio_in

  • Prototype: get_gpio_in(pin_no)

  • Description: Get pin level status.

  • Parameters

    • pin_no (int) pin id.
# Set up the demo of the suction pump
import time
from pymycobot import MyCobotSocket
# connect server
m = MyCobotSocket("192.168.10.10", '9000')
# default serialport:/dev/ttyAMA0 Baudrate:1000000
m.connect()

m.set_gpio_mode("BCM")
m.set_gpio_out(20, "out")
m.set_gpio_out(21, "out")
# open
m.set_gpio_output(20, 0)
m.set_gpio_output(21, 0)
time.sleep(3)
# close
m.set_gpio_output(20, 1)
m.set_gpio_output(21, 1)

More demo can go to here.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pymycobot-2.7.2.tar.gz (23.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pymycobot-2.7.2-py3-none-any.whl (22.6 kB view details)

Uploaded Python 3

File details

Details for the file pymycobot-2.7.2.tar.gz.

File metadata

  • Download URL: pymycobot-2.7.2.tar.gz
  • Upload date:
  • Size: 23.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.8.7

File hashes

Hashes for pymycobot-2.7.2.tar.gz
Algorithm Hash digest
SHA256 15328b3007c53ee7523cf3cd0a6863e2ad1c768826bf59e614b8bb59b2a26c5f
MD5 1254ca5f5b4a9ccd276f32607a1d6dfb
BLAKE2b-256 5bb259aa53a8d50e4b6b95b44cf27de6685716869d9ce44e1a08722ea956198e

See more details on using hashes here.

File details

Details for the file pymycobot-2.7.2-py3-none-any.whl.

File metadata

  • Download URL: pymycobot-2.7.2-py3-none-any.whl
  • Upload date:
  • Size: 22.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.8.7

File hashes

Hashes for pymycobot-2.7.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d8b7d67ad14699ea2f68c3194165dbdbb1fca9db91807dce1b8b139239a7d064
MD5 b923e8922019a1e22cb9ff684a212326
BLAKE2b-256 59c0a77a1c57b2cd0d292bf058d3da4974a4aa99ee03e07e86c2b7061ee96727

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page