Open1
MacでmyCobotにファームウェアの書き込みをして動かすまで
MacBook Pro (13-inch, M1, 2020), MacOS Big Surで確認。
myCobotのすべて を読みながらMacだけで完結できるようにしました。
ソースコードなどを取得
elephantrobotics/myCobot: myCobot is the World's Smallest Collaborative Robot Arm.をクローンする
git clone https://github.com/elephantrobotics/myCobot.git <your-path>
cd <your-path>/myCobot/API/Python
python3 setup install
を実行。python3 setup.py install
で実行しました。
USBドライバーをいれる
CP210x USB to UART Bridge VCP Drivers - Silicon Labs
これでtty.SLAB_USBtoUART
として認識されるようになります。
ファームウェアの消去と書き込み(この手順は不要)
/myCobot/Software/myCobot_firmware/ino
にあるbin
ファイルを書き込みます。
% pip3 install esptool
#ファームウェアの削除
% esptool.py --chip esp32 --port /dev/cu.SLAB_USBtoUART erase_flash
#出荷時のファームウェア(ダイレクトティーチング)の書き込み
esptool.py --chip esp32 --port /dev/cu.SLAB_USBtoUART write_flash --flash_mode dio -z 0xe000 boot_app0.bin 0x1000 bootloader_qio_80m.bin 0x10000 MainControl.ino.bin 0x8000 MainControl.ino.partitions.bin
シリアル通信のためのファームウェアをいれる(Pythonで制御に必要)
ATOM Matrix(アーム先端のもの)
esptool.py --port /dev/cu.usbserial-1152503DF3 write_flash --flash_mode dio -z 0xe000 boot_app0.bin 0x1000 bootloader_qio_80m.bin 0x10000 AtomMain2.3.ino.bin 0x8000 AtomMain2.3.ino.partitions.bin
M5Stack
esptool.py --chip esp32 --port /dev/cu.SLAB_USBtoUART write_flash --flash_mode dio -z 0xe000 boot_app0.bin 0x1000 bootloader_qio_80m.bin 0x10000 Transponder.ino.bin 0x8000 Transponder.ino.partitions.bin
ファイルの書き換え
mycobot3.pyでデバイス名が指定されているので私の場合は書き換えが必要でした。Pythonに詳しくないのでオーバーライドの仕方などがわからず_prot
を直に上書きしました。
--- a/API/Python/pymycobot/mycobot3.py
+++ b/API/Python/pymycobot/mycobot3.py
@@ -26,9 +26,10 @@ class MyCobot():
'''
def __init__(self):
- _prot = subprocess.run(['echo -n /dev/ttyUSB*'],
- stdout=subprocess.PIPE,
- shell=True).stdout.decode('utf-8')
+ _prot = '/dev/cu.SLAB_USBtoUART'
_boudrate = '115200'
テスト動作する
REPL環境で動かしてみます。
$ipython3
In [2]: import mycobot3 as mycobot
In [3]: mycobot = mycobot.MyCobot()
In [4]: mycobot.power_on()
In [5]: mycobot.get_angles() #全サーボの角度を取得
Out[5]:
[-37.89171974522293,
132.64968152866243,
152.25477707006368,
-56.00636942675159,
-94.92993630573248,
46.031847133757964]
In [6]: mycobot.send_angles([0, 0, 0, 0, 0, 0], 10) #全サーボの角度を設定、速度は10。
これでアームが地面と垂直に真っ直ぐ伸びればOKです。
トラブルシュート
下記のようなメッセージが出る場合は権限が足りません
SerialException: [Errno 2] could not open port -n /dev/cu.SLAB_USBtoUART
: [Errno 2] No such file or directory: '-n /dev/cu.SLAB_USBtoUART\n'
下記のようにしましょう
$ sudo chmod 666 /dev/cu.SLAB_USBtoUART