RoBoHoNで 『手旗信号版 嵐が丘』 もどきの実装

モバイル型ロボット電話 RoBoHoN で、イギリスBBCのコメディ『空飛ぶモンティ・パイソン』のコントのひとつ

![mp.jpg](https://qiita-image-store.s3.amazonaws.com/0/121307/492d17d6-d144-6be3-dca6-80331bf9519e.jpeg)


「手旗信号版 嵐が丘」- The Semaphore Version of Wuthering Heights- 
の RoBoHoN 実装を試みました。

<img width="183" alt="img.png" src="https://qiita-image-store.s3.amazonaws.com/0/121307/35af209b-2f55-dd8f-e069-80cfcd08a641.png">

（本家コントでは、発語せずに字幕＋手旗信号なところがミソですし、後述しますが、各種仕様制約により ”もどき" となりました…）

# 環境です
Windows 7 SP1 64bit
Android Studio 2.3.1
RoBoHoN_SDK 1.2.0

# ロボホンアプリのアイディア出しについて
以前、RoBoHoNと「**触覚**」というお題で、[RoBoHoNと一緒におおきなかぶを抜く](http://qiita.com/n_ueh/items/949c7275510653d0562b) アプリを実装しました。
今回は（新SDKの評価と同時に）RoBoHoNと「**視覚**」というお題でアプリを考えました。

#「視覚」とロボホン
ロボホンが視覚へもっとも訴えかけるのは、それが『動く人型』である、ということです。

ロボホンアプリのアイディア出しをするときに沸き上がる、

　「そのアイディア、スマホ実装で十分では…？」

の問いに克つには、スマホ / タブレット が持っていない『動く本体』『頭と手足』を活用するのがスタートラインかと思いました。

そこで、今回は『動く』『手』を前提とするコミュニケーション『手旗信号』を検討しました。

![tebata.jpg](https://qiita-image-store.s3.amazonaws.com/0/121307/2e1fbb0d-c613-2970-3871-b8f4ed8abe66.jpeg)

#ロボホンのモーションと手旗信号
ロボホンの公開SDKモーションは動きが限定されていて、開発者が自分でモーションを作り込むことはできません。

ロボホン公式ドキュメントのショートモーションリスト[^1]から、手旗信号に流用できそうなモーションを選別しました。
（ショートでないモーションリスト[^2]もありますが、より、シチュエーション特化の記述なのでドキュメントだけでは選別難しく…（逆引きか動画があるとありがたいです））

![robogif.gif](https://qiita-image-store.s3.amazonaws.com/0/121307/f01e612c-996c-aeff-5327-442338d849df.gif)


結果…　現状、以下の [2文字](https://en.wikipedia.org/wiki/Flag_semaphore) しか、表現できなそうだということが判りました。


| アルファベット       |ロボホン動作 |旗位置 |
|:-----------------:|:--------------------|:--------------------|
|D| 右手を上げる　 | <img width="54" alt="dflg.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/121307/06906c24-c995-1920-07a0-c3b5367dbc65.png">|
|U| 両手を上に上げる　 | <img width="95" alt="uflg.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/121307/dd2c93de-bc0f-a228-89a6-e57f2e841dc6.png">　 |

D と U で何が表現できるかなと調べると、不発弾を意味する **dud** という英単語があり、
「不発弾（がここにあるぞ！）」
という緊迫した状況でロボホンに旗を振ってもらうもよし、不発弾転じて、

>((口))役立たず［期待外れ］のもの［人］(http://ejje.weblio.jp/content/dud)

という意味もあるそうで、なんというオチ……。
　
今回は…英語を発語しながらそれらしく旗を振り回す「もどき」アプリ実装へ、着地することにしました！

# 実装
ざくざくと下記の事前手順を踏みます。

- RoBoHoN_SDK_1_2_0 ダウンロード
- SDKフォルダ直下の README.txt 記載の更新ドキュメントをひととおり読む
- Android Studio のバージョンを確認（>= 2.3.1）して終了。pluguin フォルダをオリジナルに戻してから、0803_SR01MW_RoBoHoN_Template_V01_02_00 を上書きコピーしてロボホンテンプレート更新
- 公式ドキュメント 801 の「6.1 テンプレートを利用した新規プロジェクト作成」でロボホン発声まで実行し、テンプレート更新完了を確認

実装します。

```hvml:tebata.hvml
<?xml version="1.0" ?>
<hvml version="2.0">
    <head>
        <producer>com.dev.robohon.tebata</producer>
        <description>tebata(英語)</description>
        <scene value="com.dev.robohon.tebata.scene_common" />
        <version value="1.0" />
        <accost priority="75" topic_id="t1" word="com.dev.robohon.tebata.tebata" />
    </head>
    <body>
        <topic id="t1" listen="false">
            <action index="1">
                <behavior id="0x06005a" type="normal"/>
            </action>
            <action index="2">
                <behavior id="0x060001" type="normal"/>
                <speech><emotion type="sadness" level="3">oh....</emotion><wait ms="6000"/></speech>
            </action>
            <action index="3">
                 <behavior id="0x06000f" type="normal"/>
                <speech><emotion type="sadness" level="3">....cathe</emotion></speech>
            </action>
            <action index="4">
                <behavior id="0x060027" type="normal"/>
            </action>
            <action index="5">
                <behavior id="0x06002c" type="normal"/>
            </action>
            <action index="6">
                <behavior id="0x06002d" type="normal"/>
            </action>
            <action index="7">
                <behavior id="0x060001" type="normal"/>
            </action>
            <action index="8">
                <behavior id="0x060057" type="normal"/>
                <speech><emotion type="sadness" level="3">....rin</emotion><wait ms="3000"/></speech>
            </action>
            <action index="9">
                <behavior id="0x060023" type="normal"/>
            </action>
        </topic>
    </body>
</hvml>
```
#（おまけ）本家コントの旗信号解析

動画を適宜 [スライス](http://qiita.com/n_ueh/items/8b458a3c24f27afe81a8) して、眺めました。
（※ OpenCVの記述が長くなったので別記事にして投稿しました）

- テリージョーンズ（ヒースクリフ役）は、顔アップや遠景で紛らわせているかんじで…
- キャサリン役の方はエモーショナルに旗を振り回しているので、ポジション判別が難しい（はじめの　O　H　以後がeuij?）！
- エドガー役、乳母役、老人役の方は旗信号感を表現していました


| 役柄      |文字 |旗 |
|:-----------------:|:--------------------:|:--------------------|
|![3259.jpg](https://qiita-image-store.s3.amazonaws.com/0/121307/46796926-54e0-c1b0-24a7-42c053c8948b.jpeg)| Rのところ　 |<img width="104" alt="R.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/121307/bdcd36ab-f999-5140-594f-e97701e60f16.png">|
|![3762.jpg](https://qiita-image-store.s3.amazonaws.com/0/121307/f05ea2da-c66c-8775-cd04-cb1a03b99378.jpeg)| S　 |<img width="93" alt="S.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/121307/1a968293-2bef-ac95-41d3-2dce73fc60cc.png">|
|![3888.jpg](https://qiita-image-store.s3.amazonaws.com/0/121307/4621837d-9806-2dd2-f784-2b5e864c5ea7.jpeg)| Z　 | <img width="59" alt="z.PNG" src="https://qiita-image-store.s3.amazonaws.com/0/121307/cfeb8873-5897-78e1-e028-5c4f62b13fbf.png"> |



----
[^1]: 公式SDK ドキュメント 603 (HVML2.0 Specification AppendixB (Motion List))
[^2]: 公式SDK ドキュメント 602 (HVML2.0 Specification AppendixA (Motion List))