myCobotのセットアップスクリプトです。
UbuntuでmyCobotにファームウェアを書き込み、PythonのAPIからmyCobotを動かすことができます。
以下の環境で動作確認をしています。
- Ubuntu 18.04.5 LTS
- Docker 20.10.1
手動で実行したときのログはこちらです。
https://zenn.dev/tiryoh/scraps/c6800edd909817
elephantrobotics/myCobotをダウンロードしてきます。
ファイルサイズが大きいバイナリも多数アップロードされているので時間がかかります。
./scripts/00-clone-source.sh
M5Stackの中身はESP32なので、ESP32の書き込みに使うespressif/esptoolをセットアップします。
Python製ソフトウェアでPythonのバージョン違いで動いたり動かなかったりするのでDockerイメージを作成します。
DockerfileはTiryoh/docker-esptoolを用います。
./scripts/01-prepare-flash-tool.sh
Tiryoh/docker-esptoolを用い、M5Stack Basicにelephantrobotics/myCobotのファームウェアを書き込みます。
myCobot -500 User Manualによると、各M5Stackのデバイスは以下のように分かれています。
- 手先についているM5Stack ATOM Matrixがサーボの制御
- 基本的に書き換えることはあまりないもよう
- 根本についてるM5Stack BasicがM5Stack ATOM Matrixと通信
- UI Flowや通信ソフトウェアなどファームウェアを入れ替えて使う
今回はM5Stack BasicのファームウェアをTransponder(PCとM5Stack ATOM Matrixの通信のためのブリッジ)にします。
まず、dmesg
コマンドで接続されているM5Stackのデバイス名を確認します。
以下の場合はttyUSB0
(/dev/ttyUSB0
)として認識されていることが確認できます。
[82402.097693] usb 1-14: new full-speed USB device number 13 using xhci_hcd
[82402.247350] usb 1-14: New USB device found, idVendor=10c4, idProduct=ea60, bcdDevice= 1.00
[82402.247356] usb 1-14: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[82402.247359] usb 1-14: Product: CP2104 USB to UART Bridge Controller
[82402.247362] usb 1-14: Manufacturer: Silicon Labs
[82402.247365] usb 1-14: SerialNumber: XXXXXXXX
[82402.249285] cp210x 1-14:1.0: cp210x converter detected
[82402.251242] usb 1-14: cp210x converter now attached to ttyUSB0
./scripts/02-flash-m5stack-firmware.sh
にUSB_PORT
が定義されている箇所があるので書き換えます。
書き換え後、以下のコマンドでスクリプトを実行します。
./scripts/02-flash-m5stack-firmware.sh
Tiryoh/docker-esptoolを用い、M5Stack ATOM Matrixにelephantrobotics/myCobotのファームウェアを書き込みます。
2021年1月12日現在、ファームウェアは頻繁にアップデートがあるようなので、念のためTransponderと同じバージョンのファームウェアを書き込みます。
M5Stack Basicのときと同様に./scripts/03-flash-atom-matrix-firmware.sh
にUSB_PORT
が定義されている箇所があるので書き換えます。
書き換え後、以下のコマンドでスクリプトを実行します。
./scripts/03-flash-atom-matrix-firmware.sh
pymycobotはmyCobot制御用Pythonライブラリです。
Python製ソフトウェアでPythonのバージョン違いで動いたり動かなかったりするのでDockerイメージを作成します。
以下のコマンドでDockerfileからDockerイメージを作成し、実行します。
./scripts/04-build-and-run-pymycobot.sh
なおpymycobotは後方互換製が失われる変更が頻繁にあるようです。必要に応じて適宜修正してください。
例えば少し前まではmycobot3
という名前でした。
2021年1月11日の時点での最新のc2d4acd
では以下のコマンドでATOM Matrixを赤色表示にできました。
from pymycobot.mycobot3 import MyCobot
mycobot = MyCobot('/dev/ttyUSB0')
mycobot.set_color('ff0000')