10
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ラズパイ版MESHを使って、Apple Watchで操作するおしゃべりロボットを作る

Last updated at Posted at 2018-08-08

ソニーMESH + ラズパイ + Google + Apple Watch

ソニーのMESHは、iPadなどのアプリで、指でつなぐだけプログラムする事なく、色々なIoTガジェット、ロボットなどが作れる簡単なセンサー、タグ群です。
そんなMESHを使ってロボットを作ってみたいと思います!(こちらはMaker Faire Tokyo 2018のMESH作ってみた友の会で展示したものです)
MESH Robot

まずMESHに、みんな大好きラズベリーパイ版のアプリMESH Hubがあるの知ってました?
IMG_8316.jpg

これがあれば、簡単なインターフェースで動きが変えられるのはそのままに、iPadやiPhoneなどを近くに置いておかなくても(ラズパイがあれば)MESHが動くようになります。
もちろんラズパイ上で動くので、みなさんが普段使われているウェブサーバや、先進的なGoogle、AmazonのAPIと共に、MESHが動く事になります。
MeshHub1.jpg

ラズパイ版MESHにGoogle APIを入れて、更にAppleWatchから操作できるロボットを作って行きます!

IMG_4344.jpg

MESH SDKとラズパイのPythonを駆使して、見て(Google Vision)、聞いて(Google AIY、Assistant)、しゃべる(Google Translate、AquesTalk)、そしてIFTTTと組み合わせてAppleWatchから動かす(つまりMESH無しでも!ボソ)ロボットになります!
raspimesh.jpg

少し長いですが、内容はこんな感じ。既にラズパイや、Google APIに詳しい方は適当に読み飛ばして、見てみて下さいね。とりあえずGithubのプログラムもあります。

MESHロボットの作り方ステップ

  1. ラズパイ準備、MESH Hubのインストール
  2. MESH SDKとBottleによるMESHカスタム・ファンクションの追加
  3. ラズパイでのGoogle AIY、Assistant、Translate、Visionなどの導入
  4. MESHアプリからラズパイ機能を呼び出す
  5. ロボットの外形作り、モーターとの連動
  6. 全部組み合わせて、AppleWatchで操作

必要な部品など

それではステップ・バイ・ステップで見ていきましょう。

1. ラズパイ準備、MESH Hubのインストール

今回はラズパイ3を使いました。ロボット組み込みの為、小さいZeroを使ってやってみたのですが、カメラ、モーター、Google APIなど盛りだくさんなので、なかなかパフォーマンスが出ませんでした。

実はこのラズパイのセットアップ、MESH Hubのインストールはこちらのサイトで詳細に説明しています。

2. MESH SDKとBottleによるMESHカスタム・ファンクションの追加

次にラズパイの中で動くプログラムと、MESH Hubを連動させる仕組みを作ります。
それにはMESH SDKのカスタム・ファンクションを作ります。
MESH SDKへのリンク

MESH SDKでのファンクションの作り方

MESH SDK(Web)作業:

ここでラズパイのローカルプログラムをキックする簡単なカスタムファンクションを作ります。こちらにJSON形式のプログラムもあるので、それをインポートすると簡単に作れます。
MESH SDK localファンクション JSON
sdk1.JPGsdk2.jpg

MESHファンクションが出来たので、この図のように指定したパスの機能を呼び出せるように、ラズパイにBottleというPythonベースのウェブサーバーを立ち上げます。/camera/faceなどのラズパイ内で動くプログラムは次の#4で書いていきます。
raspimesh.jpg

Bottleのインストール

ラズパイ側作業:

こちらのコマンドで、Bottleを入れます。
またmeshなどのプログラムフォルダーを作っておきます。

command.line
$ pip3 install bottle
$ sudo mkdir mesh
$ cd mesh

そしてここに、サーバー機能となるPythonプログラムを作ります。ここでは小林さんのQiita記事を大変参考にさせてもらいました。こちらはサンプルプログラムserver.pyの一部です。

server.py
from bottle import route, run, template
@route('/stopwatch/<command>')
def stopwatch(command):
    if command == 'start':
        # /stopwatch/startに対応する処理
    elif command == 'lap':
        # /stopwatch/lapに対応する処理
    elif command == 'stop':
        # /stopwatch/stopに対応する処理
run(host='localhost', port=8080)

ラズパイ内のプログラムをキックできるサーバーを作ったところで、MESHアプリのレシピから動くか確かめてみます。

MESHアプリ作業:

まずMESHアプリから、“Add a new hub”を選び、ラズパイ側のMESH Hubを設定します。
mesh_app1.png

アプリからMESH Hubにつなぐ事ができたら、これまで通りタグをペアリングさせたり、一通りの動作をする事ができます。
mesh_app2.png

次にIFTTTの設定を行います。MESHアプリ上で自分のIFTTTアカウントつなげるようにしておきます。
IFTTT1.png

その後、先ほどのLocalファンクションをカスタムタグから呼び出します。
IFTTT2.png

これで後は、server.pyをラズパイ側で流しておいて、IFTTT経由(Button Widgetなどで)でラズパイの機能を実行する事ができるようになります。

3. ラズパイでのGoogle AIY、Assistant、Translate、Visionなどの導入

せっかくラズパイを使っているので、カメラをつなげて画像認識したり、OK Googleなどのおしゃべり機能を付けたいですよね!?

Google AIY/Assistantのセットアップ

Googleから会話機能のAssistantのSDKが出ていますが、より簡単なGoogle AIYという工作キットのラズパイ・イメージが配布されています。
もう既に#1で導入しているとは思いますが、こちらでGoogle AIY込みのラズパイになっているはずです。

この時点でhotwordコマンドなどでOK Googleができるようになります。(↑記事にしたがってマイクやスピーカーなどの設定をして下さい。project_idやmodel_idは各自のものを使用してくださいね。)
$ ./bin/AIY-projects-shell.sh
$ googlesamples-assistant-hotword –project_id aiy-prj –device_model_id aiy-prj-device1

また日本語発話機能のAquesTalkをダウンロードしておきます。
$ wget https://www.a-quest.com/archive/package/aquestalkpi-20130827.tgz
$ tar xzvf aquestalkpi-*.tgz

Google Visionのセットアップ

カメラを付けた画像解析のために、Google Visionを導入します。これにより顔解析や文字検出が出来るようになります。
$ sudo nano ~/.bashrc
(.bashrcの中程に) GOOGLE_APPLICATION_CREDENTIALS="/home/pi/visionxxx.json
$ echo $GOOGLE_APPLICATION_CREDENTIALS

画像解析結果は英語(文字検出以外)で返ってくるのでそれを日本語にするGoogle Translateも入れておきます。
$ pip install --upgrade oauth2client
$ pip install --upgrade google-cloud-translate

ここではMESH Githubの中のvisiontalk.pyというプログラムで、笑顔検出や文字読み取りを行っています。

4. MESHアプリからラズパイ機能を呼び出す

ではやっとMESH SDKとラズパイのPythonプログラムがそろったので、それをMESHアプリでつなげていきます。
先ほどから何度も出ているように、MESHアプリ上では、SDKで作ったLocalファンクションに/camera/faceのようにコマンドを指定するだけで、既に作ったプログラムをアプリ上から簡単に呼び出せるようにしています。
raspimesh.jpg

実際のGoogle APIなどを実行するプログラムはmesh_func.pyになります。
MESH Github

これらを使ってMESHアプリで、ロボットの動きを設定していきます。

5. ロボットの外形作り、モーターとの連動

ここまで来てやっと、ロボットとして二足歩行するようにする部分になりました。
ボディにはタミヤの工作フレームとモーターを使いました。
頭部分に、パイカメラとスピーカー、マイクは下から出しています。
モーターにモータードライバーをセットします。
モーターには単三電池で電源供給しています。
かなりグロテスクですが、このようになりました。
IMG_4587.jpg

モーターを動かすプログラムは、MESH Githubのmotor.pyになっています。

6. 全部組み合わせて、AppleWatchで操作

最後に中身の上にペーパークラフトなどで外見を付け(この時は、Maker FaireのマスコットMakeyくんにしています)、ロボットっぽくします。
IMG_4591.jpg

またApple Watchから操れるようにIFTTTを設定します。

これでなんとなく完成!もう一つ、ベイマックスくんも作って、対決させるのも面白いですね!
IMG_4639.jpg

こちらが動いている動画になります。
MESH Robot

いかがだったでしょうか?ここまで読んで、なぜMESHを使って??という疑問が湧く方もいるかもしれませんが、ロボットを動かすトリガー(ボタンや動きタグなど)として簡単に使えるのと、ラズパイ内の動きを変えるのにアプリの簡易なインターフェースでその場で変えれるのが魅力だと思います。
全体ではおそらく1万円くらい(MESH、AppleWatch含まず)で作れるのではないかと思います。

以上、ラズパイとGoogleとAppleWatch、そしてMESHで作ったロボットでした!
その他のMESHで作った便利グッズなどはこちらのMESHBOOKでずらずらと並べています。そちらも見てみてください!!

10
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?