MyCobotをROSで動かす

f:id:robohase01:20220207192514p:plain

はじめに

高専の卒業研究でMyCobot280を使っていていましたが、最初にROSで動かすまで時間がかかってしまったので、自分がやったROSでの動かし方を紹介します。

環境

  • Ubuntu 18.04
  • ROS Melodic Morenia
  • MyCobot280
  • windows10(ファームウェア更新時のみ)
  • MyCobot280

    1.ファームウェアの更新

    MyCobotはm5stack coreとATOM Matrixの2つのマイコンが使われています。工場出荷時にはm5stack coreにmainControlATOM MatrixにatomMainと呼ばれるファームウェアがインストールされており、ティーチング動作を行うことができます。しかしこのファームウェアのままだとROSで動かすことができません。詳しいファームウェアの種類は公式ページのSoftware Platform & APIのところに対応表が載っています。GitHubにある「myCobot固件烧录器」を使ってファームウェアを更新しましょう。ファームウェアの更新にはwindows10を使用します。(MacOSubuntuの環境でも大丈夫です。たまたまwindows10の方が都合が良かったので使っています。)現在公式ではMyStudioと呼ばれる最新のファームウェアの更新ソフトを推奨されていますが、何故か僕の環境だとMyStudioがうまく使えなかったので、「myCobot固件烧录器」を使用しました。GitHubから「myCobot固件烧录器」をダウンロードします。クリックして進むとmyCobot_windows_x64.zipがあるのでこれをダウンロードします。 github.com f:id:robohase01:20220207010420p:plain ダウンロードしている間にm5stack用のUSBドライバをダウンロードします。m5stackは少しUSBドライバー周りがややこしく、適切なドライバが入っていないとファームウェアを更新できません。 dev.classmethod.jp このサイトを参考にするとm5stack BasicはCP210x or CP2104 driverAtomにはFTDI driverが必要なのであることがわかります。それぞれを公式のページからダウンロードします。 docs.m5stack.com 公式のサイトを元にしてそれぞれのドライバをインストールしましょう。インストール方法がわからない時は「ドライバー名 windows10」のように調べれば出てきます。 インストールが終わったら、myCobot_windows_x64.zipを解凍して、myCobot固件烧录器を実行させてください。 その後m5stack coreにtransponderATOM Matrixにatom mainファームウェアを焼き付けてください。ここでPortに「No Port」と表示される場合はUSBドライバがうまく動いていません。

m5stack Basicに「Transponder」をburn f:id:robohase01:20220207010926p:plain

m5Atomに「AtomMain」をburn f:id:robohase01:20220207010954p:plain ここまで出来たら準備完了です。

2.ROSで動かす

ここからはubuntu機を使ってROSで動かします。 ROSのインストールができていない方はこちらを参考にしてみてください。 qiita.com まずはMyCobotのPythonAPIライブラリをインストールします。

$ pip install pymycobot --upgrade

catkin_wsのsrcフォルダにelephantrobotics公式のパッケージをインストールします。

$ cd ~/catkin_ws/src
$ git clone https://github.com/elephantrobotics/myCobotROS.git
$ catkin build
$ source ~/catkin_ws/devel/setup.bash

その後m5stack BasicとPCを接続して以下を実行します。

$ sudo chmod 666 /dev/ttyUSB0
$ rosrun mycobot_280 slider_control.py

ttyUSB0はUSBを差し戻したりすると名前が変わるので、TABキーの補完機能を使って直してください。 公式のサイトやgithubではパッケージ名の表記がmycobot_rosとなっていることが多いですが、自分が使っているmycobotの型番を入れてください。 今回の場合はmycobot_280です。 別タブでlaunchファイルを実行してください。

$ roslaunch mycobot_280 slider_control.launch

そうするとGUIのスライダーを用いて各ジョイントを動かせるようになります。

myCobotROSのパッケージの中にいろんなROSの実行ファイルがあるのでいろいろ実行してみると面白いです!

小ネタ

記事の一番最初にある動画はMyCobotのPythonAPIを使って逆運動学的動作をしている様子です。get_coords()で現在のロボット手先先端位置の座標を取得し、その後send_coords(coords, speed, mode)を実行すると先ほど取得した座標系の差分だけ動いてくれます。詳しいPythonAPIの情報は以下のサイトが参考になります。それでは! note.com

参考

docs.elephantrobotics.com

qiita.com