VS-RC003を搭載した"KUMACO"をROSで動かす(前編)「PCとKUMACOを繋ぐ話」

#概要

VS-RC003というVstone社のロボット用制御ボードを搭載したロボットをROSと接続して利用するお話を投稿させていただきます。
課題としては、"KUMACO(クマコ)"という名前のぬいぐるみ型のホビーロボットを用いて、"いないいないバァ(顔が見えたら喜ぶ)"させたいと思います。

完成形はこんな感じです。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">ぬいぐるみロボット、KUMACOに目が付いて、息子と”いないいないバァ”で遊べるように進化しました！<br><br>枯れたVS-RC003プラットフォームの二足ロボも、ROS化すれば命が宿ります(*⁰▿⁰*) <a href="https://t.co/EdMui2YzxN">pic.twitter.com/EdMui2YzxN</a></p>&mdash; みっちー (@Dream_Drive) <a href="https://twitter.com/Dream_Drive/status/1205626987265421312?ref_src=twsrc%5Etfw">December 13, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

VS-RC003(およびRobovieMaker2)がROSから制御出来れば、たぶんROBO-ONE Autoなどの競技には有用なのではないかなーと目論んでいます。

まずは、PC(ubuntuマシン)にロボットを接続するところまでのお話です。

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

<b>ROSのPC</b>

| 項目 | 値 |
|:-:|:-:|
| CPU | Core i7-9750H |
| Ubuntu | 18.04 |
| ROS | Melodic |

<b>Robovie Maker2を動かすPC (Windowsなら、ほぼなんでもOK)</b>

#KUMACOってどんなロボット？

クマのぬいぐるみ型の二足歩行ロボットです。
![top01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/231185/db4764fa-07ec-62f4-f669-04f9a5524ac6.jpeg)
2007年に、ROBO-ONEの規格で作成し、そこから10年以上開発しています。
とはいえ、そんなに特殊なことはやっておらず、ホビーロボットとしては10年以上枯れたシステムで、構成は下記の通りです。
<img width="800" alt="kousei.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/231185/99c3a400-c0f7-5361-165a-b8298de025d0.png">
見た目こそぬいぐるみですが、中身はごくごく一般的な構成のホビーロボットですね。

| 項目 | 値 |
|:-:|:-:|
| CPU | VS-RC003(LPC2148FBD64) 60MHz |
| アクチュエータ | Hitech HSR8498 x 16個 |
| センサ | 9軸IMU VS-IX012 |

# KUMACO(VS-RC003)をPCに接続する

PCとVS-RC003を繋ぐケーブルは、Amazonで見つけた300円のUSBシリアルTTL(3.3V)の変換ケーブルを用いました。
RaspberryPi用のものであれば、何でもOKかと思います。
また、専用にヴィストンから「VS-RC003用 シリアル通信接続ボード 「VS-IX003」」という製品も発売されています。

接続すると下記のような構成になります。
<img width="800" alt="setsuzoku.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/231185/0fc105bf-ac3c-908d-2621-d0b7980c5316.png">

VS-RC003のピンアサインはこちらです。(取り扱い説明書より抜粋)
<img width="800" alt="setsuzoku2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/231185/7d04ba60-898d-8e02-6615-682a6badf68c.png">

実際に300円USBシリアルケーブルと接続するとこんな感じです。
<img width="480" alt="IMG_6030.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/231185/dc3b77a2-9699-d58f-ca6c-07f438777e8b.jpeg">

# KUMACO(VS-RC003)のソフトウェア設定

VS-RC003を使ったことがある前提になってしまいますが、ロボット側はRobovie-Maker2の既存のプロジェクトファイルにちょこっと手を加えるだけです。
まず、VS-RC003には、シリアルポートが2chあるため、CN6を使うか、CN7を使うか、VS-RC003の設定ソフトRobovie-Maker2の「CPU設定」で設定可能です。
![siriaru.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/231185/87b50e0d-f220-d2a6-863e-80aa28b9cc0b.png)

また、今回、"いないいないバァ"に使うモーションは「やったぁ.txt」を使います。
割り当てされていない「R3」ボタンに設定しました。
![yatta.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/231185/fba81e48-6cb2-d583-99ed-a19990097ee2.png)

ボタン操作をしないときは、アイドリングモーションが実行され、コントローラーのR3ボタンが押されると、「やったぁ.txt」のモーションが実行されるよう設定します。
通常のコントローラー(VS-C1)の設定と変わりません。
R3以外のモーションもコントローラーのボタンに割り当てられたモーションはすべて、ROSから実行可能です。

# PC(ROS)側の準備

VS-RC003が接続されたUSBシリアルケーブルをPC(ubuntu)にUSBで接続すると、/dev/ttyUSB0にシリアルポートのデバイスファイルが生成されます。
シリアルポートのデバイスファイル"/dev/ttyUSB0"は、dialoutのグループにアクセス権が与えられているため、ログインユーザーをdialoutのグループに登録します。

```
$ sudo usermod -a -G dialout $USER
```

これで、PCとKUMACO(VS-RC003)との接続は完了です！

次は、いよいよROSからKUMACOを制御します。


# 一連の記事へのリンク

- [VS-RC003を搭載した"KUMACO"をROSで動かす(前編)「PCとKUMACOを繋ぐ話」](https://qiita.com/Dream_Drive/items/15b09fc0d6581f9f4192)
- [VS-RC003を搭載した"KUMACO"をROSで動かす(中編)「VS-RC003を制御するROSノード」](https://qiita.com/Dream_Drive/items/4a28119d1275f6e3dcad)
- [VS-RC003を搭載した"KUMACO"をROSで動かす(後編)「KUMACOを画像処理から制御する」](https://qiita.com/Dream_Drive/items/0216af27f0c9394f5513)