[MG400] ROSでMG400を動かす方法~Python編~

[MG400] ROSでMG400を動かす方法~Python編~

1. はじめに



本稿では、ROS を使ったプログラムでMG400を実際に動かす方法をご案内します。ここでは、例としてPythonを使って書いたプログラムをご紹介します。
WindowsにROSをインストールする方法は、以前の記事をご参照ください。




2. 環境



以下の環境にて、この手順が有効であることを確認しています。

OS: Windows 10 (64bit)
WSL: version 2
Ubuntu: 20.04
ROS: Noetic


3. 手順



3.1 MG400_ROS パッケージのインストール

ROSでMG400の実機を動かすためには、弊社のMG400_ROSのパッケージを使用する必要があります。

以前の 記事 でDobot社のMG400_ROS のパッケージをインストールしていた場合は競合してしまうため、以前のパッケージを削除するか、新しいワークスペースを作りそこに新たなパッケージをダウンロードしてください。

(1) ワークスペースにソースコードを展開する。

(2)ビルドする。
  1. cd ~/catkin_ws
  2. catkin_make

(3)環境設定をする。
  1. echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
  2. source ~/.bashrc

3.2 プログラムを書く


(1)ファイルを作成し、ノードを実行可能にする。ここでは、sample.pyにプログラムを書いていきます。
  1. cd ~/catkin_ws/src/MG400_ROS/mg400_bringup/
  2. mkdir scripts
  3. touch scripts/sample.py
  4. chmod +x scripts/sample.py

(2)Pythonでプログラムを書く。

ROSでMG400を操作するために、MG400_ROS/mg400_bringup/srv、/msg 内のファイルで定義されているさまざまなサービスおよびトピックを利用することができます。ここで利用するサービスは以下の通りです。

・MovJ(引数 – float64 x y z r、戻り値 – int32 res): 与えた直交座標系の点まで動かす。成功したら 0 を返す。
・EnableRobot(引数 – なし、戻り値 – int32 res): ロボットを有効化させる。
・DisableRobot(引数 – なし、戻り値 – int32 res): ロボットを無効化させる。
・ClearError(引数 – なし、戻り値 – int32 res): エラーを取り除く。

各サービスの情報を表示させたい場合、ターミナルで以下のコマンドを実行します。

  1. rosservice info <サービス名>

たとえば、サービス名にmg400_bringup/srv/MovJ を入れると、
  1. rosservice info mg400_bringup/srv/MovJ
  2. Node: /mg400_bringup
  3. URI: rosrpc://VortexNote-03:50085
  4. Type: mg400_bringup/MovJ
  5. Args: x y z r

サービスの引数、戻り値を確認したい場合は、以下を実行します。
  1. rossrv show <サービスの型> 

たとえば、
  1. rossrv show mg400_bringup/MovJ
  2. float64 x
  3. float64 y
  4. float64 z
  5. float64 r
  6. ---
  7. int32 res

各サービスの説明は、Dobot社のTCP-IP Protocolをご参照ください (英語)。サービスの種類や引数などは異なる場合があります。 

sample.py には、MG400が3点を移動するサイクルが10回繰り返されるプログラムを書きます。サービス MovJ を利用して指定した点へMG400を動かしています。前の動きが完了してから次の動きのリクエストを送るため、トピック RobotStatus を購読し、ロボットのステータスに応じて待つか次の動きに進むかを判断しています。

ロボットの動作を変更するためには move() 関数内を変更します。wait() や sleep() 関数等を使用して各動作を反映させます。


pythonプログラム


3.3 プログラムを実行する

(1)MG400 の LAN1とPCをケーブルで繋げ、電源を入れる。

(2)PC のイーサネットのIPアドレスを固定する。[MG400, M1Pro] DobotStudioPro セットアップ方法の 3-2. IPアドレスの固定をご参照ください。

(3)MG400のIPアドレスを指定しながら mg400_bringup パッケージを起動する。
            ※MG400のコントロールファームウェアがv.1.5.9.0以上の場合、DobotStudioProからモードの変更を行う必要がございます。
              DobotStudioProを接続後、設定>>リモコン>>現在のモードにて、"TCP/IP二回開発"へ変更いただくと正常に接続することができます。

  1. roslaunch mg400_bringup mg400_bringup.launch robot_ip:=192.168.1.6

3.4 うまく動作しない場合

・ プログラムを実行してもMG400が動かない
解決方法:mg400_bringupを起動させながら、別ターミナルで

  1. rosservice call /mg400_bringup/srv/ResetRobot

を呼んだ後、再度プログラムを実行する。他にも、サービスをターミナルから直接呼ぶには「rosservice call <サービス名>」コマンドが使用できる。

・ エラーでLEDライトが赤くなり停止する
解決方法:MovJ などで指定した座標が可動域外でないか確認する。一時的なエラーの場合は、

  1. rosservice call /mg400_bringup/srv/ClearError

でエラーを取り除き、再度プログラムを実行する。
繰り返しエラーが起こるならば、DobotStudio Pro をつなぎながらエラーが発生するプログラムを実行し、エラー内容を確認してください。DobotStudioPro セットアップ方法はこちら

・ 「/usr/bin/env: 'python\r': No such file or directory」と表示される
解決方法:改行コードを「LF」に変更する。

変更しても「/usr/bin/env: 'python': No such file or directory」と出る場合は、「python -V」でpython 3がインストールされていることを確認してから、実行するファイルの最上部にある「#!/usr/bin/env python」を「#!/usr/bin/env python3」に変更する。


3.5 プログラムの実行結果

今回作成したsample.py を実行させると、MG400が以下のように動くのが確認できます。




本稿では、ROSを利用したPythonのプログラムでMG400の実機を動かす方法をご紹介しました。




ご不明点等ございましたら、お気軽に dobot@techshare.co.jp までお問い合わせください。

    • Related Articles

    • [MG400] WindowsのWSL2にROSをインストールし、MG400をrviz上で動かす方法

      1. はじめに rvizはRobot Operating System (ROS) の3次元可視化ツールです。ロボットの位置や姿勢を表示することができ、センサーから取得した距離データやカメラからの映像を表示することもできます。 本稿では、 Windows の Windows Subsystem for Linux (WSL) を利用してROSをインストールし、MG400をrviz上で動かす方法についてご案内します。 2. 環境 以下の環境にて、この手順が有効であることを確認しています。 OS: ...
    • [Magician] Dobot Labセットアップ方法

      1.はじめに 本稿ではDobot Magician, Magician Liteを制御するための専用ソフトウェアであるDobotLabのセットアップ方法について解説します。 DOBOT MAGICIANは、制御ソフトウェアDobot Labを使用する事で、Blockly、Scriptによる制御を行うことができます。 『DobotLabはMagician, Magician Lite用のソフトウェアです。MG400や他協働ロボットシリーズをご利用の際には「DobotStudio ...
    • [Magician] Dobot Labセットアップ方法

      1.はじめに 本稿ではDobot Magician, Magician Liteを制御するための専用ソフトウェアであるDobotLabのセットアップ方法について解説します。 DOBOT MAGICIANは、制御ソフトウェアDobot Labを使用する事で、Blockly、Scriptによる制御を行うことができます。 『DobotLabはMagician, Magician Lite用のソフトウェアです。MG400や他協働ロボットシリーズをご利用の際には「DobotStudio ...
    • [Magician] Dobot Magicianのホームポジションを変更するには?

      1.はじめに DOBOT Magicianには、操作の後に自動的にアームが向かう移動先が、2箇所あります。 1つは、DOBOT Magicianの電源ボタンを操作して本体の電源を落したときに、電源が切れる前に自動的にアームが向かう「格納位置」で、もう1つは、Homingと呼ぶキャリブレーション動作を行った後に、自動的にアームが向かう「ホームポジション」です。 「格納位置」は変更できませんが、「ホームポジション」は設定により変更できます。 ...
    • [MG400, M1Pro] DobotStudioPro セットアップ方法

      1. はじめに DOBOT製品(MG400, M1Pro, CR, Nova)は、制御ソフトウェアDobotStudio Proを使用する事で、Blockly、Scriptによる制御を行うことができます。本稿では、上記製品のうち、MG400, M1Proの設置からDobotStudio Proに接続するまでの方法をご案内します。 2. 環境 以下の環境にて、このセットアップ手順が有効であることを確認しています。 OS: Windows 10(64bit) ソフトウェア: ...