LoginSignup
2

More than 1 year has passed since last update.

DobotMagicianをpythonで動かす

Last updated at Posted at 2021-10-25

こちらのライブラリを使用して,PythonからDobot Magicianを動作させたいと思います.

環境

$ lscpu
Architecture: x86_64

$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.3 LTS (Focal Fossa)"

install

以下コマンドでpipからインストールします.

pip3 install pydobot

自分の環境では以下のバージョンがインストールされました.

$ pip3 show pydobot

Name: pydobot
Version: 1.3.2
Summary: Python library for Dobot Magician
Home-page: https://github.com/luismesas/pydobot
Author: Luis Mesas
Author-email: luismesas@gmail.com
License: UNKNOWN
Location: /home/hoshina/.local/lib/python3.8/site-packages
Requires: pyserial
Required-by: 

実行

まずdobotに電源を入れPCとUSBで接続し,dmesgコマンドでデバイス名を確認します.確認するとcp210x converterttyUSB0に割り当てられたと最終行に書いてあります.Linuxでは,デバイスは/dev/ディレクトリ内に割り当てられるので(参考:https://qiita.com/nys9302/items/a8ddeedd3cd9d0deb332)
/dev/ttyUSB0がDobotMagicianの割り当てられたファイル名となります.ちなみにPCから見るとDobotMagicianはProduct: CP2102 USB to UART Bridge Controllerという内容からCP2102 USB to UART Bridge Controllerという製品名として認識されていることが分かります.そして,基板上にUSB-UART変換コントロールCP2102チップ(参考:秋月電子 CP2102使用 USBシリアル変換モジュール https://akizukidenshi.com/catalog/g/gK-14993/ )が搭載されておりPCとのインターフェイスの役割をしているということが分かります.

$ dmesg
[43589.052023] usb 1-2: new full-speed USB device number 9 using xhci_hcd
[43589.232192] usb 1-2: New USB device found, idVendor=10c4, idProduct=ea60, bcdDevice= 1.00
[43589.232207] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[43589.232213] usb 1-2: Product: CP2102 USB to UART Bridge Controller
[43589.232219] usb 1-2: Manufacturer: Silicon Labs
[43589.232223] usb 1-2: SerialNumber: 0001
[43589.241480] cp210x 1-2:1.0: cp210x converter detected
[43589.242146] usb 1-2: cp210x converter now attached to ttyUSB0

pydobotのサンプルをもとに作成した以下のプログラムを実行します.port名にはDobotMagicianのCP2102が割り当てられたファイル名を記載します.

basic_example.py
from serial.tools import list_ports

import pydobot

available_ports = list_ports.comports()
print(f'available ports: {[x.device for x in available_ports]}')
port = available_ports[0].device

device = pydobot.Dobot(port=port, verbose=True)

(x, y, z, r, j1, j2, j3, j4) = device.pose()
print(f'x:{x} y:{y} z:{z} j1:{j1} j2:{j2} j3:{j3} j4:{j4}')

device.move_to(x + 20, y, z, r, wait=False)
device.move_to(x, y, z, r, wait=True)  # we wait until this movement is done before continuing

device.close()

まずデバイスの読み書きを許可します.(参考:chmodコマンド https://atmarkit.itmedia.co.jp/ait/articles/1605/23/news020.html)

sudo chmod 666

そして実行します.

実行
python3 basic_example.py

実行するとDobotMagicianが現在位置からx方向に20mm移動し,もとの位置に戻るという動作を2回繰り返します.

suction cup(ポンプ) の on/off

配線はポンプのシール記載の通り,ポンプGP1をMagician背面のGP1に,ポンプのSW1にGP1を接続

3秒ポンプを起動,し停止

from serial.tools import list_ports
import time

import pydobot

available_ports = list_ports.comports()
print(f'available ports: {[x.device for x in available_ports]}')
port = available_ports[0].device

device = pydobot.Dobot(port=port, verbose=True)

device.suck(True)

time.sleep(3)

device.suck(False)

エラー対処

通信がうまく行かない

image.png

  • usb device '/dev/ttyUSB*'が認識されていて以下のエラーが出た場合リセットボタンを押す

  • リセットや再起動をしても治らない。DobotStudioに接続もできない場合。以下の記事を参考にFirmwareを書き直す。

  • あとDobotMagicianのファームウェアバージョンが最新(現時点ではv3.7.0)でないとうまく動作しない。v1.0.0では通信部分が不安定に。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2