見出し画像

myCobot 入門 (2) - Pythonによる操作

「myCobot」のPythonによる操作方法をまとめました。 (2022年版)

・myCobot-280
・pymycobot 2.7.1
・AtomMain v4.1
・minirobot v1.0

前回

1. pymycobot

「myCobot」をPythonで操作するには、「pymycobot」を使います。

2. Python側の準備

今回は、ローカルマシン上にPythonの仮想環境を作成して、そこでPythonスクリプトを実行します。

(1) ローカルマシン上にPythonの仮想環境を準備。
(2) Pythonの仮想環境に「pyserial」と「pymycobot」をインストール。

$ pip install pyserial
$ pip install pymycobot

3. myCobot側の準備

(1) 「M5Stack Basic」とPCをUSBケーブルで繋ぐ。
(2)  「minirobot」で「Transponder」を選択して、「Transponder」を開始。

4. LEDの色の変更

myCobotのAtomのLEDの色を変更するコードを作成します。

(1) ここからport_setup.pyを取得。
USBの接続先を選択して、MyCobotオブジェクトを生成するコードになります。

・port_setup.py

import serial
import serial.tools.list_ports

from pymycobot.mycobot import MyCobot



def setup():
    print("")

    plist = list(serial.tools.list_ports.comports())
    idx = 1
    for port in plist:
        print("{} : {}".format(idx, port))
        idx += 1

    _in = input("\nPlease input 1 - {} to choice:".format(idx - 1))
    port = str(plist[int(_in) - 1]).split(" - ")[0].strip()
    print(port)
    print("")

    baud = 115200
    _baud = input("Please input baud(default:115200):")
    try:
        baud = int(_baud)
    except Exception:
        pass
    print(baud)
    print("")

    DEBUG = False
    f = input("Wether DEBUG mode[Y/n]:")
    if f in ["y", "Y", "yes", "Yes"]:
        DEBUG = True
    # mc = MyCobot(port, debug=True)
    mc = MyCobot(port, baud, debug=DEBUG)
    return mc

(2) led.pyを作成し、以下のように編集。

・hello_mycobot.py

from pymycobot.mycobot import MyCobot
from port_setup import setup
mycobot = setup()
mycobot.set_color(255, 0, 255)

 (3) hello_mycobot.pyの実行。
USBの接続先、ボーレート、デバッグモードかどうかをCUIで入力します。成功すると、Atomが赤く光ります。

$  python hello.py

1 : /dev/cu.debug-console - n/a
2 : /dev/cu.wlan-debug - n/a
3 : /dev/cu.Bluetooth-Incoming-Port - n/a
4 : /dev/cu.usbserial-020FB1ED - CP2104 USB to UART Bridge Controller
5 : /dev/cu.SLAB_USBtoUART - CP2104 USB to UART Bridge Controller

Please input 1 - 5 to choice:5
/dev/cu.SLAB_USBtoUART

Please input baud(default:115200):
115200

Wether DEBUG mode[Y/n]:Y

◎ LEDの色
LEDの色の変更は、set_color(r, g, b)を使います。

set_color(r, g, b) : LEDの色の変更。
・r : 赤 (0~255)
・g :緑 0~255)
・b : 青 (0~255)

◎ USBの設定
USBの設定は、以下のように直接指定することもできます。

・Mac : mycobot = MyCobot("/dev/cu.SLAB_USBtoUART")
・Linux (Ubuntu) : mycobot = MyCobot('/dev/ttyUSB0')

5. 関節の角度の変更

関節の角度を変更するコードは、次のとおりです。

from pymycobot.mycobot import MyCobot
from pymycobot.genre import Angle
from port_setup import setup
mycobot = setup()
mycobot.send_angle(Angle.J2.value, 0, 80)

関節の角度の変更は、send_angle(id, degree, speed)を使います。

send_angle(id, degree, speed) : 関節の角度の変更
・id : 関節ID (genre.Angle, int, 1〜6)
・degree : 関節の角度 (float, -170~170)
・speed : 速度 (int, 0~100)

成功すると、第2関節が真っ直ぐになります。

6. 複数の関節の角度の変更

複数の関節の角度を変更するコードは、次のとおりです。

from pymycobot.mycobot import MyCobot
from pymycobot.genre import Angle
from port_setup import setup
mycobot = setup()
mycobot.send_angles([0,0,0,0,0,0], 80)

複数の関節の角度の変更は、send_angles(degrees, speed)を使います。

send_angles(degrees, speed) : 複数の関節の角度の変更
・degree : 関節の角度のリスト ([float], -170~170, 長さ6)
・speed : 速度 (int, 0~100)

成功すると、第2関節が真っ直ぐになります。

7. その他のAPI

その他のAPIは、次のとおりです。

◎ 電源とフリーモード

power_on() : 電源ON
power_off() : 電源OFF
is_power_on() : 電源ONかどうか
・戻り値 : 電源ONかどうか
 ・1 : 電源ON
 ・0 : 電源OFF
 ・-1 : エラー
set_free_mode() : フリーモードに変更。

◎ MDIモード
「MDI」は、関節の角度または座標の目標値を入力して、位置と姿勢を教える操作です。

send_angle(id, degree, speed) : 関節の角度(度)の変更
・id : 関節ID (genre.Angle, int, 1〜6)
・degree : 関節の角度 (float, -170~170, 度)
・speed : 速度 (int, 0~100)

send_angles(degrees, speed)
: 複数関節の角度(度)の変更
・degree : 関節の角度のリスト ([float], -170~170, 度, 長さ6)
・speed : 速度 (int, 0~100)

get_radians() : 関節の角度(ラジアン)の取得
・戻り値 : 関節の角度 ([float], ラジアン, 長さ6)

send_radians(degrees, speed) : 関節の角度(ラジアン)の変更
・degrees : 関節の角度 ([float], ラジアン, 長さ6)
・speed : 速度 (int, 0~100)

get_coords() : 座標の取得
・戻り値 : 座標のリスト ([x, y, z, rx, ry, rz])

send_coord(id, coord, speed) : 座標の変更
・id : 座標ID (genre.Coord)
・coord : 座乗値 (float)
・speed : 速度 (int, 0~100)

send_coords(coords, speed, mode) : 複数の座標の変更
・coords : 座標のリスト ([float])
・speed : 速度 (int, 0~100)
・mode : モード (int)
 ・0 : angluar
 ・1 : linear

sync_send_angles(degrees, speed) : 同期による複数関節の角度(度)の変更。目標点に到達するまで戻らない
・degree : 関節の角度のリスト ([float], -170~170, 度, 長さ6)
・speed : 速度 (int, 0~100)

sync_send_coords(coords, speed, mode) : 同期による複数の座標の変更。目標点に到達するまで戻らない
・coords : 座標のリスト ([float])
・speed : 速度 (int, 0~100)
・mode : モード (int)
 ・0 : angluar
 ・1 : linear

pause() : 動作の一時停止
resume() : 動作の再開
stop() : 動作の停止

is_paused() : 動作の一時停止中かどうか
・戻り値 : 動作の一時停止中かどうか
 ・1 : True
 ・0 : False
 ・-1 : エラー

is_in_position(data, flag) : その位置にいるかどうか
・data : 角度または座標のリスト ([float])
・flag : 角度または座標 (0:angles, 1:coords)
・戻り値 : その位置にいるかどうか
 ・1 : True
 ・0 : False
 ・-1 : エラー

◎ JOGモード
「JOG」は、関節の角度または座標を少しずつ動かして、目標の位置と姿勢を教える操作です。

jog_angle(joint_id, direction, speed) : 関節の角度を一方向に移動
・joint_id : 関節ID (int, 1~6)
・direction : 方向 (0:decrease, 1:increase)
・speed : 速度 (0~100)

jog_coord(coord_id, direction, speed) : 関節の座標を一方向に移動
・coord_id : 座標ID (int, 1~6)
・direction : 方向 (0:decrease, 1:increase)
・speed : 速度 (0~100)

jog_stop() : JOG動作の停止

◎ 速度と最大・最小移動角度

get_speed() : 速度の取得
・戻り値 : 速度 (int)

set_speed(speed) : 速度の指定
・speed : 速度 (int, 0~100)

get_joint_min_angle(joint_id) : 関節の最小移動角度の取得
・joint_id : 関節ID (int)
・戻り値 : 関節の最小移動角度 (float)

get_joint_max_angle(joint_id) : 観察最大移動角度の取得
・joint_id : 関節ID (int)
・戻り値 : 関節の最大移動角度 (float)

◎ サーボコントロール

is_servo_enable(servo_id) : ステアリングギアが接続されているかどうか
・servo_id : サーボID (int, 1~6)
・戻り値 : ステアリングギアが接続されているかどうか
 ・0 : disable
 ・1 : enbale
 ・-1 : エラー

is_all_servo_enable() : 全てのステアリングギアが接続されているかどうか
・戻り値 : 全てのステアリングギアが接続されているかどうか
 ・0 : disable
 ・1 : enbale
 ・-1 : エラー

release_servo(servo_id) : Description : サーボの電源OFF
・servo_id : サーボID (1~6)

focus_servo(servo_id) : Description : サーボの電源ON
・servo_id : サーボID (1~6)

◎ Atom IO

set_pin_mode(pin_no, pin_mode) : ピンモードの指定
・pin_no : ピンNo (int)
・pin_mode : ピンモード (int)
 ・0 : input
 ・1 : output
 ・2 : input_pullup

set_digital_output(pin_no, pin_signal)
: デジタル出力の指定
pin_no : ピンNo (int)
・pin_signal : ピンシグナル (int, 0 / 1)

get_digital_input(pin_no) : デジタル入力の取得
・pin_no : ピンNo (int)
・戻り値 : シグナル値

◎ LED

set_color(r, g, b) : LEDの色の変更・r : 赤 (0~255)・g :緑 0~255)・b : 青 (0~255)

◎ グリッパー

set_gripper_ini() : グリッパーの開いてる状態を覚える。

set_gripper_state(flag, speed) : グリッパー状態の指定
・flag : フラグ (int, 0:open, 1:close)
・speed : 速度 (int, 0~100)

set_gripper_value(value, speed) : グリッパー値の指定
・value : グリッパー値 (int, 0~4096)
・speed : 速度 (int, 0~100)

get_gripper_value() : グリッパー値の取得
・戻り値 : グリッパー値 (int, 0~4096)

is_gripper_moving() : グリッパーが動いているかどうか
・戻り値 : グリッパーが動いているかどうか
 ・0 : false
 ・1 : true
 ・-1 : エラー

参考

次回



この記事が気に入ったらサポートをしてみませんか?