Closed22

myCobotの動かし方・ROS対応まで

karaage0703karaage0703

Pythonでの通信 1回目(失敗)

成功しました。以下参照。

https://zenn.dev/karaage0703/scraps/aa8f0e62d6a5db#comment-e58b97ec0ee441

ファームウェア書き込み

myCobotROSのリポジトリMake sure that Atom2.1alpha is flashed into the top Atom and Transponder is flashed into the base Basic .と書いてあるので、myCobotのM5 StackにTransponder.inoを書き込んでみる。

以下記事を参考に実施。

https://karaage.hatenadiary.jp/entry/2018/09/10/073000

書き込み自体は成功した。

シリアル通信

mycobot.py過去の自分のブログ記事を参考にシリアル通信のプログラムを書く。Python3で動かす。pyserialをあらかじめインストール。

$ pip install pyserial

コードはとりあえず以下

import serial
import time

ser = serial.Serial('/dev/tty.usbserial-0203B064', 115200, timeout=0.1)
time.sleep(2)


def power_on():
    ser.write(bytes.fromhex('fefe0210fa'))


def get_angles():
    command = bytes.fromhex('fefe0220fa')
    ser.write(command)
    if ser.inWaiting() > 0:
        data = ser.read(1024)
        data_list = parse_data(data, 'get_angles')
        print(data_list)
    else:
        print('error')

これでシリアルを送信してみるも、反応が感じられない。何か違う気がする、ひょっとしたら、これは別のArduinoからmyCobotに通信するときのもの??

いったん、最新のファームウェアで初期化する。

karaage0703karaage0703

ファームウェアの初期化

Windows PCが必要です。

GitHubの以下から、最新のソフトをダウンロード

https://github.com/elephantrobotics/myCobot/tree/main/Software

2020/12/27時点では「myCobot固件烧录器V1.2.zip」

ソフトは解凍しておく。中の「myCobot.exe」というソフトがファームウェアを焼くソフト。

USB-CでPCとmyCobotのM5 Stackをつなぐ。初回だと、ドライバのインストールが始まるので、完了するまで待つ。

「myCobot.exe」を実行します。以下のように選択すれば初期ソフトに戻せます。

karaage0703karaage0703

myCobot関係情報

公式リンク

https://www.elephantrobotics.com/en/myCobot-en/

https://github.com/elephantrobotics/myCobot

https://github.com/elephantrobotics/myCobotROS

ツイートページのURLを指定してください

参考記事

https://karaage.hatenadiary.jp/entry/2020/12/09/073000

https://note.com/_5884/n/n305595d2d719

Twitterアカウント

myCobotを入手済み、これから入手して何かやっている、やりそうな人たち

アカウント名 説明
higrademe@EL2031watson myCobot先行入手して、既に2台持っている人
@robonchu myCobot購入済み
小林竜太@CH1H160 myCobotを自作している激ヤバな人
Shigekazu Ishihara@shigekzishihara myCobot購入済み
nisshan にっしゃん@nisshan_ myCobot購入してグリッパなど作っている方
karaage0703karaage0703

レゴで制作する簡易台座

RobonchuRobonchu

myCobotの土台への固定の仕方(Robonchu version)を記載しました↓

<必要なもの>

  1. myCobotの土台となる15mm以上の厚さの板
  2. 70-75mmの長さ、4mm径、頭8mm経の(コーススレッド)ネジ
  3. クランプ
  4. プラスドライバ
    ネジの情報は写真を添付しています。

<設置手順>

  1. プラスドライバで土台となる板にネジで固定
  2. 土台を作業する環境(たとえば机)とクランプで固定
    クランプ固定後の写真を添付しています。

karaage0703karaage0703

シリアル通信2回目(成功!)

いったん、mycobot.pyではなく、Arduinoのファームウェアのコード(以下のディレクトリ以下)を読み解くことに。

https://github.com/elephantrobotics/myCobot/tree/main/Arduino

とりあえず以下のコードでrgbを制御。 test.pyで保存

import serial
import time

ser = serial.Serial('/dev/tty.SLAB_USBtoUART', 115200, timeout=0.1)
time.sleep(2)

HEADER = 'FA'
FOOTER = 'FE'

def set_rgb(red, green, blue):
    command = bytes.fromhex(HEADER + HEADER + '0533' + red + green + blue + FOOTER)
    print(command)
    ser.write(command)

以下のように制御する。

$ python -i test.py
>>> set_rgb('FF', '00', '00')  # red
>>> set_rgb('FF', '00', '00')  # green
>>> set_rgb('00', '00', 'FF')  # blue

制御する様子

https://twitter.com/karaage0703/status/1343758728537862144

karaage0703karaage0703

アーム制御している様子です。6軸同時に動かしています。

karaage0703karaage0703

ソフトアップデート(V1.3)

大幅にソフトがアップデートしています。ここから、公式のPython APIがまともに使えそうな雰囲気になってきました。

ファームウェアアップデート

まずは、M5 Stack BaseとAtomの両方のファームウェアをアップデートします(詳細は別途記載)。

Python APIの動かし方

リポジトリをダウンロードします。

$ git clone https://github.com/elephantrobotics/myCobot
$ cd myCobot/API/Python/pymycobot

パッケージとしてセットアップできるようですが、とりあえずはお試しで動かしてみます。

以下のような要領で動かせます。

$ python
>>> import mycobot3 as mycobot
>>> mycobot = mycobot.MyCobot()
>>> mycobot.set_color('ff0000')
>>> mycobot.set_color('00FF00')
>>> mycobot.set_color('0000FF')

とりあえず以下が気になったところ。

シリアルポートの名前

/dev/ttyUSB*を想定しているっぽいが、全然名前が違うので_prot = '/dev/tty.SLAB_USBtoUARTに変更

Pythonのやつ

mycobot.pyがpython2用のソフトっぽいです。ただ、以下のところでエラー。

def _write(self, data):
        # print(data)
        data = data.decode('hex')
        self.serial_port.write(data)
        time.sleep(0.05)

mycobot3.pyがPython3用のソフトのようです。

karaage0703karaage0703

Jetson Nanoでの動作

基礎的なセットアップは以下参照ください。ディープラーニングの環境構築は不要です。

https://karaage.hatenadiary.jp/entry/2019/04/29/073000

pyserialをインストールします。

$ sudo apt-get -y install python3-pip
$ pip3 install pyserial
$ sudo apt-get -y install python-pip
$ pip install pyserial

USBでmyCobotに接続します。 /dev/ttyUSB0 といったデバイスファイルが追加されます。

以下でパーミッション設定します。

$ sudo chmod 666 /dev/ttyUSB0

あとは、Pythonで普通に制御できます。ROSはまだこれから。

ROS

ROSは以下でインストールします。
https://qiita.com/karaage0703/items/aa54e086f0a2f165d3e9

$ sudo apt install -y ros-melodic-serial
karaage0703karaage0703

Jetson NanoでROSチャレンジ

以下参考

https://qiita.com/OTL/items/258ff311cbd8d9ba3b6e

https://qiita.com/nisshan_/items/de06464dbac84408d188

$ sudo apt install -y ros-melodic-moveit
$ sudo apt install -y ros-melodic-serial
$ cd ~/catkin_ws/src
$ git clone https://github.com/elephantrobotics/myCobotROS.git
$ cd myCobotROS
$ catkin bt

nisshanさんのmoveitパッケージ

https://github.com/nisshan-x/mycobot_moveit

$ sudo apt install -y python-pip
$ pip install pymycobot==2.1.2

以下は、rosdep installすればよいのでいらないかも

$ sudo apt install -y ros-melodic-jsk-visualization
$ sudo apt install -y ros-melodic-gazebo-ros
$ sudo apt install -y ros-melodic-hardware-interface
$ sudo apt install -y ros-melodic-transmission-interface
$ sudo apt install -y ros-melodic-ros-control ros-melodic-ros-controllers ros-melodic-joint-state-controller ros-melodic-effort-controllers ros-melodic-position-controllers
$ cd ~/catkin_ws/src
$ git clone https://github.com/Tiryoh/mycobot_ros
$ git clone https://github.com/nisshan-x/mycobot_moveit
$ rosdep update
$ rosdep install -i --from-paths mycobot_moveit
$ catkin build
このスクラップは2021/02/07にクローズされました