小型6軸ロボットアーム myCobot 280 Pi for 2023 ~ セットアップ編

はじめに

Elephant Robotics社(中国深セン)のロボットアーム、myCobot 280シリーズは小型かつ軽量の6軸ロボットアーム。ペイロードは250gで、重量は860gと6軸ロボットアームとしてはかなり軽量なのが特徴。280はアームの可動半径が280mmを表しており、もう少し可動半径の大きい320mmのラインナップもある。

アームを制御するボードの違いで、M5Stack社(中国深セン)のマイコンモジュールM5Stackを使用したモデル、Raspberry Pi 4Bを使用したモデル、他にもJetson NanoやArduinoを使用したモデルがある。何れのモデルも共通でアームの先端部分(左の写真の緑色に光っている部分)にM5Stack ATOM Matrixが搭載されており、主にmyCobotマニピュレータの運動アルゴリズムを制御しているとのこと(公式のQ&A の “Questions about the Structure” の “A3” より)。

Raspberry Piの最初のモデルは2021年にリリース、その後2023年版がリリースされている。最初のモデルとの違いは筐体部品の仕様やJ1~J3関節部のサーボモーターの変更で、カタログ上のスペックとしては変化はないとのこと。M5版も同様に2023年版がリリースされている。
myCobot 280 Raspberry Pi 2023(以降のページではmyCobot) の仕様などの詳細については こちら を参照。

公式ドキュメントがあるものの、実はM5版向けでRaspberry Pi版の内容ではなかったり、色々と調べてもM5版の内容が多いこともあり、Raspberry Pi版での最新(2024/7/7)の環境やサンプルプログラムをまず動かしてみるところまでの手順をめとめてみることに。

セットアップ

詳細手順は 公式ページ にまとめられているので、ここでは実際に試してみた際に気づいた点やなどを中心にまとめてみた。
myCobotを動かすのに必要な最低限の接続は以下の通り。

  • 付属のACアダプタDCプラグの接続:対応するACアダプタとしては、12V(3-5A)、DCプラグは外形5.5mm/内径2.1mmに対応
  • モニターとの接続:Raspberry Pi 4Bの映像出力端子はMicro HDMIが2ポートのどちらかに接続する
    ※Micro HDMIケーブルを別途購入する場合、Micro HDMIポート周辺の高さが約8mmと狭いため注意が必要
  • キーボード・マウスの接続:一般的なUSBキーボード・マウスを接続
  • 有線LAN:有線での接続が必要な場合イーサネットケーブルを接続
  • myCobotを固定するベース:
    • myCobot 280用Gベース(クランプ):テーブルの端などにクランプで固定
      ※販売終了 ⇒ 今回はこちらを使用
    • myCobot 280用Gシェイプベース:テーブルの端などにクランプで固定
    • myCobot 280用フラットベース:吸盤でテーブルの上に固定
      ※ガラスや大理石など吸盤が付きやすいテーブル用

工場出荷時の状態でOS(Ubuntu Mate 20.04)や各種ソフトウェアなどがインストールされているため、起動後すぐに動作確認や開発を始めることが可能。
もし初期環境に戻したい場合、こちら のページの “Image Download – Product: myCobot 280 PI – Ubuntu Mate 20.04” からイメージのダウンロードが可能。イメージサイズは4.9GBほど。

今回は、2024/10/14時点で上記よりダウンロードしたイメージファイル(myCobot_280_ubuntu_V20230222_20.04Pi_aarch64_shrunk.img.gz)を使用。
ダウンロードファイル解凍後のOSイメージファイル(myCobot_280_ubuntu_V20230222_20.04Pi_aarch64_shrunk.img)を、SDカードへの書き込みアプリ(balenaEtcherなど)でmicro SDに書き込んで使用。

myCobot背面の電源をオンにしてしばらくすると、ユーザー名”er”(Elephant Robotics)で自動ログインされ、Ubuntu Mateのデスクトップ画面が表示される。

最低限必要な設定としては以下の通り。
WiFiなどネットワークの設定やWindowsからのVNC接続手順などについては こちら を参照。

  • WiFiの設定:システムデフォルトの接続先が”ElephantRobotics_AP”となっているので”Disconnect”すると、自動検索でアクセスポイントが出て来るので適切なアクセスポイントを設定
    今回は毎回”ElephantRobotics_AP”が有効となってしまうため、以下手順で[Menu]->[Preferences]->[Startup Applications]、[Startup Programs]タブの[WiFi_AP]のチェックを外し無効に設定
    画面右上のWiFiアイコンをクリック、[Edit Connections…]をクリックし、使用するWiFi設定の[General]タブの[Connect automatically with priority]をチェックしpriorityは1を設定
  • キーボードの設定:デフォルトは英字配列のため、日本語キーボードを使用する場合は日本語配列を指定、具体的な手順は以下の通り
    [Menu]->[Preferences]->[Keyboard]、[Layouts]タブの[Add]、[By Language]タブのLanguage: Japanese を選択して[Add]、追加されたJapaneseを選択して[Move Up]をクリックして一番上にする

続いて、ATOMのFW(AtomMain)を更新。myCobot 背面のUSBポートとアームの先端のATOMをUSB Type-A to Cケーブルで接続し、デスクトップやDockまたはMenuの[Elephant Robotics]から[myStudio]を起動。
myCobot 280の写真をクリックし、[Type]にmyCobot 280 for Pi、[USB Port]はATOMと接続されていれば M5 Stack-atom が選択されていることを確認し[LOGIN]をクリック。

左側のメニューから[Basic]を選択し、FW(AtomMain)バージョンは v6.2 を選択し[Flash]で書き込みを実行。

その他のFWバージョン v6.4 はデフォルトでインストールされている pymycobot v3.0.1 (2022-12-9)では動作しなかったり、 v6.5以降は書き込みに失敗(終わらない)してしまうので今回はとりあえずFWバージョン v6.2 を使用。もし v6.5以降のFWバージョンの書き込みに失敗した場合、書き込みに成功するFWバージョン(v6.2など)を書き込んでおかないと挙動がおかしくなるので注意が必要。

動作確認

myCobotは以下の様々な環境/ソフトウェアに対応している。

環境/ソフトウェア名
(公式ページへのリンク)
説明
myBlocklymyblocklyというグラフィカルなブロックベースでプログラミングが可能なソフトウェア。
ROS1/ROS2ROSベースの環境。
PythonPythonベースのpymycobotパッケージによる環境。
MyCobot ControllerAndroidスマホからBluetooth接続で制御するためのアプリ。iOS向けは今後リリース予定?

Joint ControlまたはCoords Controlで軸/座標の数値を個別に変更が可能、長押しで連続で数値の変更が可能なものの動きはかなり遅め。
Gamepad controlオプションのゲームパッドによる制御。
※国内は未発売?こちらは入手出来ていないので動作は未確認。
myCobot 280-Pi の動作環境

以下に、各環境/ソフトウェアでの実行手順をまとめてみた。

myBlockly

既にインストールされているので、デスクトップやDock、Menuの[Elephant Robotics]->[myBlockly]から起動。詳細については、公式ページ の “myBlockly View” の手順を参照。
以下は動作テストのプログラム。

  • Initブロックには、”MyCobot”、Port “/dev/ttyAMA0″、Baud “1000000” を指定
  • 左側の[MDI Control]のSet AngleブロックをInitブロックに接続し、J1~J6に0を、Speedに10を指定
  • 左側の[Tme]のSeepブロックをSet Angleブロックに接続
  • 左側の[MDI Control]のSet AngleブロックをSleepブロックに接続し、J2に90を、J3に-90を、Speedに10を指定
  • 右上の[Run]をクリック

サンプルプログラムについては “How to run the sample code” にまとめられている。

ROS1/ROS2

既に環境はセットアップ済みで、デスクトップやMenuの[Elephant Robotics]->[ROS1 Shell]または[ROS2 Shell]から起動。いくつかサンプルも用意されている。詳細については 公式ページ を参照。

ここでは、ROS2での動作を確認する。デスクトップやDock、Menuの[Elephant Robotics]から[ROS2 Shell]を起動後、以下コマンドを実行。

ros2 launch mycobot_280pi slider_control.launch.py

Joint State Publisherウィンドウのスライダーをマウスで増減させることで制御が可能。
※スライダー操作は少し動かすだけで大きく動くので注意が必要

Python(pymycobot)での動作確認

既に環境はセットアップ済み(リンク先の “Environment Building” の手順は不要)のため、MenuやDockの[Mate Terminal]から実行が可能。各APIを使ったサンプルも用意されている。
詳細については 公式ページ を参照。

pymycobotのサンプルプログラム(basic.py)を実際に動かした際の様子は以下の通り。

Python環境pymycobotのサンプルプログラム(basic.py)での動作確認の様子

動作確認時の手順、及びログは以下の通り。

er@er:~/pymycobot/demo$ python3 basic.py 

--------------------------------------------
| This file will test basic option method: |
|     set_led_color()                      |
|     send_angles()                        |
|     get_angles()                         |
|     send_angle()                         |
|     send_radians()                       |
|     get_radians()                        |
|     send_coords()                        |
|     get_coords()                         |
|     send_coord()                         |
--------------------------------------------
          

1 : /dev/ttyAMA0 - ttyAMA0

Please input 1 - 1 to choice:1
/dev/ttyAMA0

Please input baud(default:115200):1000000
1000000

Wether DEBUG mode[Y/n]:n

Start check basic options

::set_color() ==> color 255 255 0

::send_angles() ==> angles [0, 0, 0, 0, 0, 0], speed 100

::get_angles() ==> degrees: [0.52, 0.26, -0.52, 0.7, 0.79, 0.52]

::send_angle() ==> angle: joint1, degree: 90, speed: 50

::send_radians() ==> set radians [1, 1, 1, 1, 1, 1], speed 100

::get_radians() ==> radians: [1.005, 1.011, 0.996, 0.986, 0.983, 0.982]

::send_coords() ==> send coords [160, 160, 160, 0, 0, 0], speed 70, mode 0

::get_coords() ==> coords [160.8, 162.6, 152.1, -0.87, 3.4, 1.7]

::send_coord() ==> send coord id: X, coord value: -40, speed: 70

::set_free_mode()

=== check end ===

er@er:~/pymycobot/demo$ 

MyCobot Controllerでの動作確認

詳細は 公式ページ の”2 MyCobot Controller” を参照。2024/10/14時点でGoogle Store上には無いため、”Download Installation package”からapkファイルをダウンロードしてインストールが必要。アプリのバージョンは1.0.1で、Android 14で起動した際には “このバージョンに対応していない” とのメッセージが出たものの、一応動作することを確認。
以下は実際にアプリで動かしている様子。

MyCobot Controller “2.4 How to use MyCobot Controller” の “MyCobot PI” の場合の手順を参考に、以下内容を実行。

er@er:~$ cd pymycobot/demo/mycobot_pi_bluetooth/
er@er:~/pymycobot/demo/mycobot_pi_bluetooth$ sudo systemctl restart bluetooth
er@er:~/pymycobot/demo/mycobot_pi_bluetooth$ python3 uart_peripheral_serial.py 
Skip adapter: /org/bluez
GATT application registered
GetAll
returning props
Advertisement registered

続いて、スマホのBluetoothを有効にしてMyCobot Controllerアプリを起動。

BluetoothアイコンをタッチしてMyCobot Piに接続後、手のアイコン(Bluetoothアイコンの右)をタッチして制御可能な状態にすると各Jointの値が反映される。続いて、ホームアイコンをタッチするとホームポジションに移動。
あとはJoint ControlまたはCoords Controlタブを切り替え、軸/座標の数値を各数値のカーソルアイコンをタッチすることで制御が可能。カーソルアイコンをタッチし続けると連続動作も可能、ただ数値の増減が小さいため動きはかなりゆっくり。

まとめ

以上、myCobot 280 Piのセットアップについて、起動用micro SDの準備から各環境/ソフトウェアでの動作確認までを簡単にまとめてみた。

今回のmyCobot 280 Pi 2023を含めmyCobot 280シリーズは小型で重量も1kg未満と気軽に持ち運べる点、様々な環境/ソフトウェアにも対応しているので気軽にロボットアームを動かしてみたい、学習用途としても導入の敷居が低い。
一方、セットアップ手順や環境/ソフトウェアに関するドキュメントも整備されているものの、なかなか必要な情報に辿り着けなかったり、全般的にmyCobot PiではなくM5Stack版の情報が多いので、その辺りは色々と調べたり・試してみる必要がある点は注意が必要。

今後、実際に色々と使ってみた様子や、ピコプロジェクターと組み合わせたプロジェクトの紹介などについてまとめてみる予定。

コメントを残す