myCobotでとりあえずmoveitする

# なぜmyCobotなのか？

* 6自由度のアームなのに安い。実質無料。
* M5StackとM5Atomを搭載してて、色々いじれそう
* アタッチメントの形式がレゴテクニック式なので、レゴテクニック勢の私が買わない理由がない。
* 白くシュッとしたデザイン

moveitできる実機が欲しくて自作に挑戦したことがあったのですが、ある程度高性能なサーボを買う必要があり「コスト的に気軽に踏み込めないないなぁ」と絶望してたところにmyCobotの先行販売があったので、さっと飛び付きました。

(なお、myCobotのリポジトリは日々更新されています。2021/01/06時点での情報なので、今後の変化についてはご了承ください)

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr"><a href="https://twitter.com/hashtag/mycobot?src=hash&amp;ref_src=twsrc%5Etfw">#mycobot</a> が到着！　とりあえず、バンドグリッパーと土台を付けた。<br>myCobot has just arrived! I attached my hand gripper and base to it. <a href="https://t.co/fxCCkJCxyp">pic.twitter.com/fxCCkJCxyp</a></p>&mdash; nisshan にっしゃん (@nisshan_) <a href="https://twitter.com/nisshan_/status/1346665470498275329?ref_src=twsrc%5Etfw">January 6, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

# 環境

この記事は以下の環境で動いています。

| 項目 | 値 |
|:-:|:-:|
| Ubuntu | 18.04 |
| ROS | Melodic |

# moveitの準備

1. moveitのインストール `sudo apt install ros-melodic-moveit`
1. catkin_ws/srcの下で myCobotROSリポジトリのclone `git clone https://github.com/elephantrobotics/myCobotROS.git`
1. catkin_ws下で `catkin_make`
1. moveitのsetup_assistantを使って設定します。やり方は[公式](http://docs.ros.org/en/melodic/api/moveit_tutorials/html/doc/setup_assistant/setup_assistant_tutorial.html)が一番詳しいので読んで順番に設定しましょう(私は不安だったので一度公式の通りpanda_moveit_configで練習しました)。最初に Create New MoveIt するときに落としてきた myCobotROS/urdf/mycobot_urdf.urdf を指定します。最後に Generate Package するときは Create New Folder してください。ここでは「 catkin_ws/src の下に mycobot_moveit として作った」として説明を進めます。

# M5StackとM5Atomのファーム更新

1. myCobotリポジトリのclone `git clone https://github.com/elephantrobotics/myCobot.git`
1. ローダのインストール `pip3 install esptool`
1. ファームのフォルダへ移動 `cd myCobot/Software/myCobot固件烧录器V1.3/ino`
1. PCとM5Stack（根っこの方）をUSBケーブルでつないでファームを焼く。 `esptool.py --chip esp32 --port /dev/ttyUSB0 write_flash --flash_mode dio -z  0xe000 boot_app0.bin 0x1000 bootloader_qio_80m.bin 0x10000 Transponder.ino.bin 0x8000 Transponder.ino.partitions.bin`
1. PCとM5Atom（先っちょの方）をUSBケーブルでつないでファームを焼く。 `esptool.py --port /dev/ttyUSB0 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もM5Atomも何も表示されない＆光らない状態になるので、不安になります(笑) でも中身は動いてるので安心してください。

# moveitの起動

1. USBケーブルをM5Stack側に接続し直す。
1. ターミナルを2つ開く。
1. ターミナル1 `roslaunch mycobot_moveit demo.launch`
1. ターミナル2 `rosrun myCobotROS control_slider.py` ※

あとは、rvizでグリグリと動かすだけです。rviz上の操作方法は[公式](http://docs.ros.org/en/melodic/api/moveit_tutorials/html/doc/quickstart_in_rviz/quickstart_in_rviz_tutorial.html)に説明がありますので読みましょう。

なお、表示されるスライドバーを動かすと各関節を曲げることができます。急激に変化させると激しく動くためかなり危険です。気を付けて少しずつ動かしましょう。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">myCobotをROSのmoveit!で制御することに成功！<a href="https://twitter.com/hashtag/mycobot?src=hash&amp;ref_src=twsrc%5Etfw">#mycobot</a> <a href="https://twitter.com/hashtag/ros?src=hash&amp;ref_src=twsrc%5Etfw">#ros</a> <a href="https://twitter.com/hashtag/moveit?src=hash&amp;ref_src=twsrc%5Etfw">#moveit</a> <a href="https://t.co/T2UIMSRYWV">pic.twitter.com/T2UIMSRYWV</a></p>&mdash; nisshan にっしゃん (@nisshan_) <a href="https://twitter.com/nisshan_/status/1346793576345210882?ref_src=twsrc%5Etfw">January 6, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

# myCobotを持ってないけどPC内で動かしたい！

という方も大丈夫、できます。↑の手順をすべて実行し、※の部分だけ実行しなければOkです。rviz内でmyCobotが動きます。

# すいません
この記事で書いた方法は「とりあえず簡単にmoveitを使ってmyCobotを動かす」やり方になります。本当はros_controlに接続できるかたちでmyCobot側のハードウェアインタフェースを記述してあげる必要があります。勉強して、正式対応版の記事を書きたいと思います。

→　[myCobotでほんとうにmoveitする](https://qiita.com/nisshan_/items/304cc8e1a2da7c2bebad) にまとめました。

# 参考 & Thanks

1. ファームのロード方法は [とよし](https://twitter.com/toyoshi)さんの[esptool – ESP8266およびESP32シリアルブートローダユーティリティ – GitHubじゃ！Pythonじゃ！](https://githubja.com/espressif/esptool)を参考にしました。
2. 色々迷ったら[からあげ](https://twitter.com/karaage0703)さんの[myCobotのすべて](https://zenn.dev/karaage0703/books/3be6bad93b0c8e/viewer/3b3b5a)を参考にしました。