myCobotの動かし方・ROS対応まで
試行錯誤のメモです。あとでブログかQiitaかZennにまとめます。
追記:Zennの本にしました。
初期動作確認方法
とりあえず動作確認した方法。デモモードでの動かし方の動画です。
公式にもほぼ同じ動画がありました。
Pythonでの通信 1回目(失敗)
成功しました。以下参照。
ファームウェア書き込み
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を書き込んでみる。
以下記事を参考に実施。
書き込み自体は成功した。
シリアル通信
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に通信するときのもの??
いったん、最新のファームウェアで初期化する。
ファームウェアの初期化
Windows PCが必要です。
GitHubの以下から、最新のソフトをダウンロード
2020/12/27時点では「myCobot固件烧录器V1.2.zip」
ソフトは解凍しておく。中の「myCobot.exe」というソフトがファームウェアを焼くソフト。
USB-CでPCとmyCobotのM5 Stackをつなぐ。初回だと、ドライバのインストールが始まるので、完了するまで待つ。
「myCobot.exe」を実行します。以下のように選択すれば初期ソフトに戻せます。
myCobot関係情報
公式リンク
ツイートページのURLを指定してください
参考記事
Twitterアカウント
myCobotを入手済み、これから入手して何かやっている、やりそうな人たち
| アカウント名 | 説明 |
|---|---|
| higrademe@EL2031watson | myCobot先行入手して、既に2台持っている人 |
| @robonchu | myCobot購入済み |
| 小林竜太@CH1H160 | myCobotを自作している激ヤバな人 |
| Shigekazu Ishihara@shigekzishihara | myCobot購入済み |
| nisshan にっしゃん@nisshan_ | myCobot購入してグリッパなど作っている方 |
ROSパッケージ疑問点のメモ
- ROS1なのにPython3、どういう環境構築??本当に動くのだろうか…
- 座標を送ってアームを動かせそうなので、逆運動学のソフトは実装されている?
応用例
購入情報
公式ショップ
公式のショップで買えます。普通にクレジットカードと住所を入力すれば買えました。約6万円です。
日本での購入
スイッチサイエンスさんが2月以降頃に扱う予定らしいです。
レゴで制作する簡易台座
myCobotの土台への固定の仕方(Robonchu version)を記載しました↓
<必要なもの>
- myCobotの土台となる15mm以上の厚さの板
- 70-75mmの長さ、4mm径、頭8mm経の(コーススレッド)ネジ
- クランプ
- プラスドライバ
ネジの情報は写真を添付しています。
<設置手順>
- プラスドライバで土台となる板にネジで固定
- 土台を作業する環境(たとえば机)とクランプで固定
クランプ固定後の写真を添付しています。
ROS対応のアップデートが近いですよという朗報
応用例 2
シリアル通信2回目(成功!)
いったん、mycobot.pyではなく、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
制御する様子
Pythonで制御できるソフトをGitHubにアップしました。
アーム制御している様子です。6軸同時に動かしています。
ソフトアップデート(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用のソフトのようです。
ROS対応に関する情報
スマホ対応もするらしいです。
Jetson Nanoでの動作
基礎的なセットアップは以下参照ください。ディープラーニングの環境構築は不要です。
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は以下でインストールします。
$ sudo apt install -y ros-melodic-serial
ロボットの順運動学・逆運動学
ソフト
DHパラメータ
関係資料
参考書
Jetson NanoでROSチャレンジ
以下参考
$ 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パッケージ
$ 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