Raspberry Pi をゼスチャーセンサーで操作する【GrovePi】

トイロボットを操作するのに使えそうだなと思っていた、ゼスチャーセンサーをRaspberryPiに取り付けてみました。こんな感じです。

![gesture.gif](https://qiita-image-store.s3.amazonaws.com/0/47128/9a26fb5a-9249-6770-d483-c45646588a15.gif)

結構いろんなゼスチャーに対応していて、９種類のゼスチャーに対応しています。Pythonで試してみたかったので、RaspberryPiにGroveシステムを接続出来る拡張ボード「GrovePi+」も合わせて購入してみました。

## 環境

![IMG_9094.jpg](https://qiita-image-store.s3.amazonaws.com/0/47128/a6b570b0-a32d-9a82-e8f5-294af260f0c5.jpeg)

- Raspberry Pi3 (RASPBIAN JESSIE WITH PIXEL 4.4　/ Python 3.4.2)
- GrovePi
- GROVE - ジェスチャー
- GROVE - RGBバックライト液晶モジュール

## GrovePiのセットアップ

結構古い情報が多いのですが、公式アカウントのGitHubよりライブラリをクローンし、インストールスクリプトを実行するだけで利用出来ます。

[DexterInd/GrovePi - GitHub](https://github.com/DexterInd/GrovePi)

公式サイトのソフトウェアインストールのページに沿って実行します。

[Setting Up The Software - Dexter Industries ](https://www.dexterindustries.com/GrovePi/get-started-with-the-grovepi/setting-software/)

```bash
$ cd /home/pi/Desktop
$ sudo git clone https://github.com/DexterInd/GrovePi
$ cd /home/pi/Desktop/GrovePi/Script
$ sudo chmod +x install.sh
$ sudo ./install.sh
```

インストールが完了したら、電源を落としてGrovePi+を取り付け、再度電源を入れます。ホームディレクトリよりI2C接続を確認します。

```bash
$ sudo i2cdetect -y 1
 0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- 04 -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- -- 
```

## Pythonライブラリ（Python3対応）を使う

公式ページの[こちら](https://www.dexterindustries.com/GrovePi/supported-sensors/?PageSpeed=noscript)でテスト済みのGroveモジュールが確認出来ますので事前に確認すると良いと思います。Pythonライブラリは

[DexterInd/GrovePi/Software/Python - GitHub](https://github.com/DexterInd/GrovePi/tree/master/Software/Python)

こちらにあるのでサンプルコードを加工して利用することが出来ます。Python3系で利用出来ます。

今回はゼスチャーセンサと

![IMG_9096.jpg](https://qiita-image-store.s3.amazonaws.com/0/47128/7a7324cc-7559-9acb-fe1a-4e755e937ea6.jpeg)

[Grove - Gesture Sensor v1.0 Python library and examples - GitHub](https://github.com/DexterInd/GrovePi/tree/master/Software/Python/grove_gesture_sensor)

RGBバックライト液晶モジュールを使います。

![IMG_9095.jpg](https://qiita-image-store.s3.amazonaws.com/0/47128/6df4cb00-76d4-5f46-6721-4e8a335337f1.jpeg)

[grove_rgb_lcd - GitHub](https://github.com/DexterInd/GrovePi/tree/master/Software/Python/grove_rgb_lcd)

## ゼスチャーの種類

ゼスチャーセンサーを利用する際は、上記のサンプルコードより`grove_gesture_sensor.py`を読み込みインポートして使います。

[gesture.py - Gist](https://gist.github.com/PonDad/8f4b18f1b530d2ab48ecaa07da52855b)

思ったより反応も良いので各ゼスチャーを紹介します。

### UP（上）

![UP.gif](https://qiita-image-store.s3.amazonaws.com/0/47128/62de37c1-7ab9-fd0e-3db5-82a0b9fe01bf.gif)

### DOWN（下）

![DOWN.gif](https://qiita-image-store.s3.amazonaws.com/0/47128/5584c9cb-74f0-3099-5d57-f4e501f9e9cc.gif)

### RIGHT（右）

![RIGHT.gif](https://qiita-image-store.s3.amazonaws.com/0/47128/6cc402b7-be9c-67bd-a9f0-1b083df47263.gif)

### LEFT（左）

![LEFT.gif](https://qiita-image-store.s3.amazonaws.com/0/47128/8324a5af-8252-f39a-588e-30c7c5279e15.gif)

ちょっと面白いゼスチャーも対応しています。

### CLOCKWISE（時計回り）

![CW.gif](https://qiita-image-store.s3.amazonaws.com/0/47128/591026e2-aec8-ed36-779b-93a15047e984.gif)

### ANTI_CLOCKWISE（反時計回り）

![ACW.gif](https://qiita-image-store.s3.amazonaws.com/0/47128/6e7856c6-5384-ca39-2077-b2ee3511316a.gif)

### WAVE（波）

![WAVE.gif](https://qiita-image-store.s3.amazonaws.com/0/47128/5168ff75-10a9-06a6-fc3d-b66dbf3fad13.gif)

### FORWARD（接近）

![FW.gif](https://qiita-image-store.s3.amazonaws.com/0/47128/b3d7dba7-c72b-ca9e-5fcc-265e61c26498.gif)

あとは　BACKWARD　を入れて９種類のゼスチャーに対応しています。

## まとめ

センサーが反応する距離は大体30cm位なので、デスク周りに設置して、音楽再生などをしたりするのに向いているかもしれません。

ちょっと未来っぽい気分になれますね。