myCobotをROSで動かしてみる

## myCobotとは
[myCobot](https://elephantrobotics.com/en/myCobot-en/)は６万円くらいで買えるロボットアームです。サイズは小さいけどプログラムして楽しむためには十分なじゃないでしょうか？

メインコンピュータとしてM5Stackがくっついているというぶっ飛んだ構成であることも特徴です。

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

なにはともあれファームをアップデートしましょう。
↓からダウンロード出来ます。私はLinux版にしようとしましたが、Not Foundで見つかりませんでした。そもそもHPからリンクされているもののバージョンが古そう(0.0.1)なので、↓ではなく

https://www.elephantrobotics.com/myCobot/#myStudio

↓こっちからDLしたほうがよさそうです。こちらは0.0.2です。

https://github.com/elephantrobotics/MyStudio/releases

DLして解凍して実行してみたのですが、GLIBCのエラーが出て、ちょっと危険な香りがしました。

```bash

$ ./MyStudio 
[23996] Error loading Python lib '/home/ogura/Downloads/MyStudio/libpython3.8.so.1.0': dlopen: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by /home/ogura/Downloads/MyStudio/libpython3.8.so.1.0)
```

なのでMacOS版にすることにしました。
頭（ATOM）のファームとボディーのファーム（BASIC）Transponderを焼きました。

### Transponder is 何？

https://github.com/elephantrobotics/myCobot/blob/main/Arduino/MycobotBasic/examples/Transponder/Transponder.ino

コード見ればわかるように内部のコンピューターに司令をそのまま送っているだけで、M5Stackの無駄遣い、という感じのプログラムですね。

内部仕様についてはREADMEがあるのでこれ読めばわかりますね。（分からない）

https://github.com/elephantrobotics/myCobot/tree/main/Arduino/MycobotBasic/examples/Transponder

## ROSで動かす

Ubuntu 18.04, ROS melodicで動かしてみたいと思います。

公式にコードがあるのでこれをやってみます。

https://github.com/elephantrobotics/myCobotROS

### Pre-Requriements

まずPythonAPIをインストールしろ、ということなので、pip (ROSとの兼ね合いがあるので今時python2)でインストール。

```bash
$ pip install pymycobot --upgrade
```

2021/01/18の時点で壊れていてインストールできなかったのですが、2021/01/19ではすでに修正されていました。


### ROSのコードビルド

```bash

$ cd ~/catkin_ws/src
$ git clone https://github.com/elephantrobotics/myCobotROS.git
$ catkin b
```

エラー発生。

```bash

Errors     << myCobotROS:cmake /home/ogura/catkin_ws/logs/myCobotROS/build.cmake
.000.log                                                                        
CMake Error at /opt/ros/melodic/share/catkin/cmake/catkinConfig.cmake:83 (find_p
ackage):                                                                        
  Could not find a package configuration file provided by "serial" with any     
  of the following names:                                                       
                                                                                
    serialConfig.cmake                                                          
    serial-config.cmake                                                         
                                                                                
  Add the installation prefix of "serial" to CMAKE_PREFIX_PATH or set           
  "serial_DIR" to a directory containing one of the above files.  If "serial"   
  provides a separate development package or SDK, be sure it has been           
  installed.                                                                    
Call Stack (most recent call first):                                            
  CMakeLists.txt:6 (find_package)                                               

```

serialというライブラリが足りないようなので、ググった結果以下を実行。

```bash
sudo apt install ros-melodic-serial
```

rosdepでインストール出来るようにするために[PR投げておきました。](
https://github.com/elephantrobotics/myCobotROS/pull/7)

USBでロボットと接続し、

```bash
sudo chmod 666 /dev/ttyUSB0
```

```bash
rosrun myCobotROS control_slider.py
```

```bash
roslaunch myCobotROS control.launch
```

```bash
rosrun rviz rviz
```

<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> 遅ればせながらROSで動いたぞー <a href="https://t.co/zWf4F6erYl">pic.twitter.com/zWf4F6erYl</a></p>&mdash; OTL (小倉崇) @Smile Robotics スマイルロボティクス (@OTL) <a href="https://twitter.com/OTL/status/1351345117697695744?ref_src=twsrc%5Etfw">January 19, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

という感じでいまだに荒削りな感じですが、このスピード感というか、できていなくても出しちゃう感はさすが、というか非常に好感が持てました。