[ロボ実験記録] Dobot magicianをpythonで動かす(シリアル通信ver&重要用語集)

Dobot magicianとは?
15万円程度で購入できる、お勉強用のロボットアームです。
ちょっと可動域が狭いですが、色々と遊ぶには十分な性能です。
Afrelという会社から購入しました。

ロボットの様子。Arucoマーカーをアームの先につけています

関連サイト

代理店

ライブラリ

動かした例

制御ライブラリのインストール

追記: 以下の手法だと、シリアル通信に失敗し、うまくクラスを初期化できないできないことがあります。理由がまだ良くわかっていません。公式APIを使った方が、安定でしたので、こちらがおすすめです。


非公式ですが、dobotの操作をシリアル通信で行う、便利なライブラリが公開されています。
アームの簡単な操作をするだけなら、これを入れればOKです。

pip3 install pydobot

ロボットとの接続
ロボットとPCを接続後、ポートを探して、接続するだけです。

import pydobot
from serial.tools import list_ports

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=False)


現在の姿勢の取得

(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}')

各変数の意味は以下の通り

x,y,zはアームの位置
rはエンドエフェクタの回転状態
j1-j4は関節の回転状態

アームの移動
move_toで簡単に動かせます。
可動域外に座標を設定した時は、何も応答しないようです。

device.move_to(x+2 , y, z, r, wait=False)

移動速度を調整したり、エンドエフェクタのON/OFFを調整する機能もあるようです。


用語集

ロボットの勉強していて、ちょっと詰まった単語のメモを記します

  • エンドエフェクタ

    • ロボットの手先のこと。ものを掴んだりする部分

  • 把持

    • 掴むこと

  • Arucoマーカー

    • QRコードのようなもの。画素数が低く、認識がしやすい

  • N軸ロボット

    • ロボットアームの可動部の数。Nが大きいほど、基本的にハイスペック

      • 6軸くらいあると、かなり自由度が高いようです

      • dobot magicianは4軸

  • 自己位置推定

    • 自分がどこにいるのかを推定すること

  • ROS (Robot Operating System)

    • ロボット制御のためのライブラリ群

    • 非同期通信などをいい感じに行ってくれるようで、業界のデファクトスタンダードの模様

  • 深度カメラ

    • 奥行き方向も計測できるカメラ

  • 点群

    • 点の集まり

    • 物体を3Dで認識したときに、物体を点の集まりとして認識する

    • 点群に主成分分析(PCA)をかけて、掴む場所を決めたりするようです


次のタスク(予定)

Arucoマーカーを用いた位置推定


いいなと思ったら応援しよう!